Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий




Скачать 172.22 Kb.
Название Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий
Дата публикации 21.09.2014
Размер 172.22 Kb.
Тип Документы
literature-edu.ru > Информатика > Документы
Степулёнок Денис Олегович

Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий

Аннотация


В статье обсуждается вопрос, как наиболее эффективно разделить деятельность по созданию качественного программного продукта между системным программистом и предметным программистом (методистом).

Для решения задачи предлагается следующий подход: программист и методист на начальном этапе работы согласовывают синтаксис и основные конструкции предметно-ориентированного языка (ПОЯ), далее системный программист реализует ПОЯ на выбранной платформе, а методист использует ПОЯ для описания методической части системы. Таким образом, оба работают параллельно, а результаты их работы объединяются в готовый продукт при помощи разработанного ПОЯ.

Рассмотрение будет вестись на примере проекта по популяризации научных знаний «Журнал в журнале» (программное приложение на диске к журналу «Компьютерные инструменты в образовании»), при работе с которым читатель параллельно с изучением статей может посмотреть по теме статьи наглядную компьютерную модель, демонстрацию, поработать с обсуждаемыми в статье инструментами и т.д.

Ключевые слова


Предметно-ориентированные языки (Domain Specific Languages), дистанционное обучение (Distance Learning), использование компьютера в обучении, языково-ориентированное программирование (Language Oriented Programming), информатизация образования.

Актуальность


Существенная проблема при создании качественных образовательных программных продуктов состоит в различном понимании (видении) будущего продукта методистом и программистом. Как правило, взаимоотношения между ними сводятся либо к навязыванию программистом его видения предметной области и структуры  будущего программного продукта, либо к дословному выполнению требований методиста. Оба подхода неэффективны. В первом случае программист склонен не учитывать психологию процесса обучения. Во втором – в создаваемом компьютерном инструменте, скорее всего, многие возможности платформы попросту не будут использованы.

Теоретически, методист мог бы составить точное описание системы с методической стороны, игнорируя техническую, а затем программист точно исполнил бы задание методиста, проявив своё мастерство в технической части, однако в реальных условиях методисту очень трудно точно описать сложную систему, ни разу не запустив её, не “пощупав” – нужна обратная связь. Многие ошибки технического задания становятся видны только когда система уже работает.

Поскольку методисту сложно составить полное и точное техническое задание, в начале работы целесообразно согласовать только ключевые решения по проекту, чтобы создать возможность работать параллельно, детальные требования к системе будут удовлетворяться по мере их формулирования методистом.

В качестве ключевых решений предлагается следующий: в начале работы согласовать синтаксис и базовые библиотеки предметно-ориентированного языка, затем программист может заняться реализацией ПОЯ, а методист – описанием на ПОЯ методической части.

При этом если методисту не хватает каких-то конкретных функций, классов, свойств и т.д. – он просто пишет пример как он хотел бы их использовать – а программист реализует недостающие возможности.

Постановка проблемы и задач


Конечной целью развития языков программирования, по-видимому, станет их слияние с естественными языками предметных областей. На текущем этапе развития информационных технологий эта цель не достигнута, а предметно-ориентированные языки можно рассматривать как промежуточную ступень на пути от широко используемых сейчас универсальных языков программирования к языкам описания предметной области будущего, которые будут использовать специалисты в будущем.

В настоящее время под интуитивно-понятным интерфейсом обычно понимают интерфейс на базе меню, выпадающих списков, окон, полей ввода. Эти интерфейсы просты в освоении, но по мере роста числа выполняемых функций, сопровождаемого ростом дерева меню, мастеров и т.д., порождают настолько сложные в использовании системы, что для их освоения требуется квалификация сравнимая с квалификацией программиста.

В этой ситуации предлагается снабдить пользователя предметно-ориентированным языком с меньшим количеством базовых конструкций, но теми же возможностями. Эффективность такого решения проявляется в том, что созданный язык можно использовать для разных целей, а не только для тех, для которых он изначально предназначался.

Использование ПОЯ будет наиболее эффективно для аудитории обладающей достаточной компьютерной грамотностью в области языков программирования, например, для инженеров, занимающихся созданием программных имитаторов технических устройств, обработкой сигналов и т. д. Заметим, что для создания систем, подобным системам поддержки товарооборота в магазине, целесообразно использовать технологии выбора из некоторого множества предоставляемых возможностей (меню). Но для достаточно содержательных приложений количество возможностей, из которых приходится делать выбор, становится настолько большим, что с ними становится трудно работать, примером может служить распространенное приложение Microsoft Word, большинство возможностей которого не используется пользователями.

Задача создания подходящего языка состоит в том, чтобы обеспечить пользователя средствами языка необходимыми и достаточными для решения любой задачи предметной области, причём средства языка должны быть основаны на естественных для этой предметной области операциях, а понятия языка соответствовать понятиям предметной области.

Кроме того, пользователям компьютерных систем часто приходится повторять незначительно отличающиеся последовательности действий для выполнения похожих задач, это осуществляется значительно удобнее для системы, основанной на использовании языка, чем для системы на основе полей ввода, меню и т. д. (графическом интерфейсе).

В предметно-ориентированных языках для разных предметных областей будут совпадающие части – их можно выделить в предметно-независимую “базовую” библиотеку (например, условия и вычисление выражений войдут, по всей видимости, в большинство ПОЯ).

Предметно-ориентированный язык (ПОЯ) – упрощенный, максимально приближенный к предметной области язык программирования. При разработке ПОЯ приносится в жертву универсальность и эффективность ради простоты и возможности специалиста-предметника создавать учебные материалы, используя инструментарий, естественный для его предметной области.
В работе ставится задача разработать предметно-ориентированный язык программирования, среду программирования на нем, удобный редактор кода, отладчик, профилировщик и т.д. Тут возможны следующие подходы:

  1. Использовать достаточно гибкий существующий универсальный Язык Программирования и добавить предметно-ориентированные возможности при помощи библиотеки компонентов.

  2. Использовать существующую систему для создания предметно-ориентированных языков (Meta Programming System от JetBrains или DSL от Microsoft – позволяет рисовать графические схемы и генерировать по ним код).

  3. Использовать среду программирования, в которой синтаксические конструкции языка можно модифицировать (настраивать процесс компиляции на определенную предметную область). Например, среда Phoenix – дополнение к компиляторам .Net.

  4. Создать собственный ЯП с компилятором, отладчиком и т. д. Для генерации лексического анализатора можно использовать продукты lex и yacc.

При создании “Журнала в журнале” использован 3-ий подход, а именно использовался популярный интерпретируемый скриптовый язык Lua, который изначально был спроектировать с широкими возможностями для расширения.

Проблемно-ориентированное проектирование, подходы к созданию ПОЯ и язык Lua


В настоящее время имеется ряд работ посвященных проблемно-ориентированному проектированию (см. список литературы [6]).

Основными результатами этих исследований являются:

- проблемно-ориентированные методы проектирования программного обеспечения (DDD, или Domain Driven Design), рассмотренные в книге [6],

- разработка посредством тестирования (TDD, или Test-Driven Development),

- объектно-реляционное преобразование, т.е. технологии, которые помогают программировать ориентируясь на структуру предметной области, а не на взаимодействие с инфраструктурой (работой с данным, вопросами производительности и т.д.), или пользовательский интерфейс.

- обобщены хорошие примеры практики.
ПОЯ могут быть:

  • графическими (процесс программирования – «рисование» схемы в специальном редакторе);

  • текстовыми (программирование – составление текста на некотором формальном языке).


ПОЯ можно разделить на:

  • статические – языки, в которых не важно, в каком порядке программист рисует элементы схемы или составляет текст программы;

  • динамические – имеет значение порядок действий.


Lua  – интерпретируемый язык программирования, разработанный Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil. Является свободно распространяемым, с открытыми исходными текстами на языке С.
Преимущества языка Lua:


  • Интерпретатор языка имеет открытый исходный текст сравнительно небольшого объема, что позволяет при необходимости добавлять новые возможности или вносить изменения.

  • Кроссплатформенность – программы, использующие Lua можно использовать под несколькими операционными системами (для этого нужно обеспечить кроссплатформенность хост-программы).

  • Компилятор и интерпретатор языка является свободно распространяемым программным средством, но, в то же время, широко используются в известных программных продуктах (в основном играх), и благодаря этому хорошо оттестированы (содержат малое количество ошибок).

Lua является типичным процедурным языком программирования, но предоставляет широкие возможности для объектно-ориентированной и функциональной разработки. Lua создавался как мощный и простой язык, обладающий всеми необходимыми выразительными средствами. Библиотека функций языка Lua написана на языке С (точнее на подмножестве ANSI C и C++) для обеспечения большей переносимости.

Будучи расширяемым языком, Lua не имеет понятия основной программы: он работает в среде исполнения, сокращенно называемой хост. Хост-программа позволяет запускать части кода, написанные на Lua, модифицировать переменные Lua и регистрировать функции хост-программы для использования непосредственно в коде Lua. Благодаря возможности расширения с помощью функций хост-программы, Lua может применяться для решения широкого круга задач. Можно создавать специализированные библиотеки, использование которых ничем не отличается от использования стандартных средств языка.

Все инструкции в Lua выполняются в глобальной среде. Эта среда инициализируется обращением к функции lua_open и сохраняется до обращения к lua_close или до завершения ведущей программы. В случае необходимости программист может создавать много независимых глобальных сред и свободно переключаться между ними.

Глобальная среда может управляться Lua-кодом или ведущей программой, которая может читать и писать глобальные переменные, используя функции API из библиотеки, которая предоставлена Lua.

Глобальные переменные в Lua не нужно объявлять. Любая переменная считается глобальной, пока не объявлена явно как локальная. Перед первым присваиванием, значение любой глобальной переменной nil (это значение по умолчанию может быть изменено). Чтобы хранить все глобальные имена и значения используется специальная таблица.

Построение предметно-ориентированного языка для поддержки электронного издания дисков учебного назначения на основе языка Lua (проект «Журнал в журнале»)


Электронное приложение «ЖвЖ» создано, чтобы дополнить классическое представление научно-популярных идей (в виде статей в журнале) наглядными фильмами, интерактивными моделями, инструментами. Обычно знакомство с научной идеей начинается с чтения статьи, в которой идея описана. Однако для популяризации научных идей в среде неспециалистов представляется более эффективным сначала дать читателю возможность познакомиться с идеей экспериментально, работая с моделью или инструментом, а уже затем изучить теорию по тексту статьи.

Техническая проблема состояла в том, что электронные материалы создаются авторами в различных средах (в форме исполняемых exe-файлов, Flash-анимаций, html-файлов, Java-апплетов, файлов Excel, электронных документов в формате PDF и пр.). Поэтому создаваемая оболочка должна интегрировать все эти возможные формы в одном интерфейсе с тем, чтобы читатель не занимался поиском и установкой компонентов, необходимых для просмотра отдельных продуктов.

В проекте «ЖвЖ» можно выделить следующих специалистов:

  • методист; конструирует электронные выпуски «ЖвЖ» из программных продуктов и электронных статей связанных с ними;

  • художник-дизайнер (специалист по интерфейсу); определяет внешний вид продукта, взаимодействуя с методистом, а так же описывает способы взаимодействия пользователя с учебными материалами

  • системный программист; обеспечивает методиста удобной оболочкой на основе ПОЯ, реализует, поддерживает и расширяет среду исполнения языка для различного окружения, например для различных операционных систем, на основе пожеланий методиста.

Чтобы использовать полученную систему методист должен знать:

  • Базовый синтаксис ПОЯ. Для этого синтаксис языка нужно сделать как можно проще, а отладка должна быть простой и понятной непрограммисту. Методист должен обладать навыками работы с ПОЯ, формирование которых не требует больших затрат, т.к. они моделируют естественную деятельность в знакомой ему предметной области.

  • Кроме того, методист должен понимать, что если ему не хватает какой-либо возможности, то он может заказать её у программиста. Архитектура программного обеспечения на базе ПОЯ, как правило, обеспечивает легкую расширяемость.

  • Понимать педагогическую задачу.

  • Владеть методикой использования инструментальных средств в обучении.


Работа с продуктом начинается с того, что пользователь запускает программу «ЖвЖ» (открывает файл Autorun.exe) или она запускается автоматически, когда он вставляет CD или DVD с «ЖвЖ». Далее программа «ЖвЖ»:

  • загружает библиотеку Lua.DLL – интерпретатор расширяемого языка Lua;

  • настраивает интерпретатор на предметную область (регистрирует функции, глобальные переменные, задаёт настройки и т.д.);

  • командует интерпретатору Lua загрузить и исполнить скрипт autorun.Lua, написанный на предметно-ориентированном расширении языка. Скрипт определяет дальнейшее поведение программы, какие показывать иконки, реакцию на нажатия, содержание меню и т.д.



Разберём синтаксис конфигурационного файла autorun.lua.

Синтаксис основан на синтаксисе языка Lua, а также включает набор расширяющих функций и глобальных переменных.

Всё что идёт после двух тире “--” является комментарием и пропускается интерпретатором Lua.

При выпуске нового номера «ЖвЖ» методист может сам поменять (настроить) все параметры без участия программиста. Например, может сам изменить заголовок главной формы, использовав для этого функцию.

Также можно задать кнопки, их расположение, действия при нажатии.

Пример описания кнопки-ссылки на сайт журнала КИО:
Button{

image="img\\main.bmp", -- картинка для ссылки на сайт журнала

action="http://ipo.spb.ru/journal", -- ссылка на сайт журнала

x=77, y=ButtonTop -- расположение кнопки на форме (координаты относительно угла)

}
Чтобы определить, запущен «ЖвЖ» с компакт-диска и его можно инсталлировать на жёсткий диск, или же, наоборот, запущена установленная на жёсткий диск копия и её можно деинсталлировать введена функция GetDriveType - получение типа диска, с которого запускается программа.
if (GetDriveType(GetRunDir())=="FIXED") then

-- Если ЖвЖ запустили с жёсткого диска, т.е. он уже установлен, то показать одно меню

Menu{

"Меню", {

"Установить", function() Install(); end,

"Удалить", function() Uninstall(); end,

"Выход", Exit

},

"О программе", function() AboutProgram(); end

}

else -- Иначе показать другое меню

Menu{

"Меню", {

"Выход", Exit

},

"О программе", function() AboutProgram(); end

}

end
Описание "предметно-ориентированных" функций, доступных из Lua-сценария:
Exit - Выход из программы (закрывается программа «ЖвЖ»)
GenDoc( SrcFileName, DocFile ) - Собирает текстовый файл из комментариев

в файле с исходными текстами (генерация документации).

Пример: GenDoc("src\\MainUnit.pas","help.txt")

SrcFileName (строка) - имя Pascal-файла

DocFile (строка) - имя выходного файла для записи документации

Комментарии для включения в выходной файл должны начинаться с //*

Если перед строчкой с "//*" идёт пустая строка, то в выходной файл также добавляется пустая строка. В начале строки с комментариями могут быть пробелы - они будут перенесены в выходной файл.
Button{ перечисление свойств через запятую } - создаёт кнопку

Пример: Button{ image="img\\Выход.bmp", action=Exit, x=700, y=200 }

x,y - координаты кнопки, x - Left, y - Top

image - загрузка картинки для кнопки

action - событие при нажатии на кнопку, может быть одного из 3-х типов:

1) "встроенная" функция - из Delphi

2) функция Lua - любая функция Lua без параметров и возвращаемых значений

3) строка - строка рассматривается как ссылка и открывается программой

назначенной в ОС для этого типа файлов

При нажатии на кнопку курсор становится как "рука"

Созданная кнопка помещается на форму

Сама функция Button{} возвращает указатель на созданную кнопку
Font{ свойства } - создание шрифта

size - размер шрифта

bold - true/false - жирный

italic - true/false - наклонный

strikeout - true/false - зачёркнутый

underline - true/false - подчёркнутый

color - (строка) цвет

family - (строка) тип, например: "Times New Roman"

Возвращает Font - шрифт для Delphi
Page{ параметры } - страница с описанием программы

PageImage - картинка для "Листика" (подложки)

Размер подстраивается под размер картинки

x - смещение листика (Left)

y - смещение листика (Top)

Hint - подсказка к Page

icon - имя файла с "иконкой"

IconLeft - смещение по x относительно угла "листика"

IconTop - смещение по y относительно угла "листика"

IconClick - событие - нажатие по иконке/странице
Header - заголовок (выше картинки)

LabelBorderWidth - "каёмочка вокруг Label'ов"
HeaderClick - событие при нажатии на нижнюю надпись
HeaderFont - шрифт заголовка
Bottom - подпись внизу страницы

BottomClick - событие при нажатии на нижнюю надпись
SetCaption( Заголовок )

Меняет заголовок главного окна

Ничего не возвращает
Ask( Вопрос, Варианты_ответа } - окно подтверждения

Пример: Message(Ask("Установить?","Да","Нет"))

Вопрос - (строка) первый параметр функции

Остальные параметры (строки) - варианты ответов

Возвращает один результат - строку - ответ пользователя
Menu( таблица меню } - создание главного меню программы

На вход подаётся таблица:

ключи - строки-названия пунктов меню

значения - выполняемые действия

Каждый нечётный элемент таблицы - имя пункта меню

Дальше обязательно должна быть функция или подтаблица = подменю

Функция оббегает всю переданную ей таблицу.

Ничего не возвращает, заменяет главное меню
GetRunDir() - возвращает строку - путь запуска программы cd-autorun
ShellFolder( имя_каталога ) - возвращает путь к специальной папке

Возможные имена каталогов:

"Desktop" - рабочий стол текущего пользователя

"Personal" - "Мои документы" текущего пользователя

"Start Menu" - "Главное меню"

"Programs" - "Главное меню\Программы"

"Startup" - "Главное меню\Программы\Автозагрузка"

"Fonts" - Системные шрифты
CreateIcon( - создать ярлык

"%ProgramFiles%\cd-autorun\autorun.exe" - Имя файла/каталога на который будет указывать ярлык

LinkDir, - Имя каталога, где создать ярлык

LinkName, - Имя ярлыка

Arguments ) - Параметры запуска программы

В путях можно применять переменные окружения: например: %ProgramFiles% -> C:\Program Files.

Пример:

CreateIcon( GetRunDir(), ShellFolder("Desktop"), "Каталог с Autorun", "" )

создание ярлыка на рабочем столе текущего пользователя для каталога запуска Autorun
DirExists( имя_каталога )

Возвращает одно значение - есть ли каталог
FontDialog( [шрифт_для_модификации] )

Показывает диалог выбора шрифта

Можно передать необязательный параметр - шрифт для модификации

Создать его можно с помощью процедуры Font

Если передан 1 параметр - шрифт, то он устанавливается начальным для диалога
Env( имя_переменной_окружения ) - получить значение переменной окружения
RegKeyExists( имя_ключа ) - присутствует ли ключ в реестре
RegValueExists( имя_ключа, имя_значения ) - присутствует ли значение в реестре
RegGetValue( имя_ключа, имя_значения ) - получение значения из реестра

Пример:

Message("HKEY_CLASSES_ROOT\\.pdf - Content Type = "..RegGetValue("HKEY_CLASSES_ROOT\\.pdf","Content Type"))
RegGetValue( имя_ключа, имя_значения, значение ) - получение значения из реестра
ShowText( текст или объект ) - показывает текст в

отдельном окне с возможностью копирования

Функция нужна для автоматизации разработки Lua-скрипта
NetUse( имя_диска, сетевой_путь ) - подключение сетевого диска

Получает путь сейчас ассоциированный с данной буквой

Если он не соответствует тому, что должно быть, то

- отключаем текущий сетевой путь

- подключаем новый сетевой путь
Работа с каталогами:
CopyDir( fromDir, toDir ) - скопировать дерево каталогов

fromDir - откуда копировать

toDir - в какой каталог копировать

Пример - программа копирует сама себя на жёсткий диск:

CopyDir( GetRunDir(), "%ProgramFiles%\cd-autorun" )
MoveDir( fromDir, toDir ) - перемещение каталога

fromDir - откуда копировать

toDir - в какой каталог копировать
DelDir( DirName ) - удаление каталога (дерева каталогов)

DirName - какой каталог удалять
Exec( FileName [, Params] ) - запуск файла без ожидания завершения

FileName - имя исполняемого файла

Params (необязательный 2-ой параметр) - параметры вызова
ExecWait( FileName [, Params] ) - запуск файла и ожидание его завершения

FileName - имя исполняемого файла

Params (необязательный 2-ой параметр) - параметры вызова
ExecMSI( MSI_FileName ) - запуск MSI-файла (файла инсталлятора в формате Microsoft)

Ожидается завершение файла
DeleteFile( FileName ) - удалить файл

Возвращает true - если файл удалён успешно и false в противном случае.

Мастера установки «ЖвЖ»


Внешний вид самих окон может меняться.

Пользователь щёлкает по кнопке и для вызываемой программы не хватает установленного компонента:


При щелчке на кнопку Установить обе кнопки дизэйблятся и происходит установка (лучше бы «невидимая» - т.е. не появлялось бы лишних мастеров)


Установка на жёсткий диск:

Welcome:




Step 1 (все происходит в одном и том же окне):


При щелчке на кнопку Установить обе кнопки дизэйблятся и происходит установка (лучше бы «невидимая» - т.е. не появлялось бы лишних мастеров)


После того как установка всех программ завершится


Step 2:


Может быть совместить окно выбора каталога и окно установки – т.е. пользователь выбирает каталог и сразу жмет Установить.
Step 3:


Finish:


Выводы


Разделение процесса разработки программы по специализациям экспертов оказалось эффективным. Процесс создания продукта «Журнал в журнале» стал более технологичным, а читатели получили новый удобный интерфейс для практического знакомства с новыми научными идеями.

Список литературы


  1. http://www.rsdn.ru/article/philosophy/LOP.xml - Языково-ориентированное программирование: следующая парадигма. RSDN Magazine #5-2005.

  2. http://www.maxkir.com/sd/languageWorkbenches.html - Языковой инструментарий: новая жизнь языков предметной области, Мартин Фаулер

  3. http://www.intuit.ru/department/se/vismodtp/13/  - Лекция: Знакомство с DSM-платформой Microsoft DSL TOOLS

  4. Джимми Нильссон. Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET. Вильямс, 2008 г.

  5. Статья в Википедии о Lua - http://ru.wikipedia.org/wiki/Lua

  6. Официальный сайт разработчиков Lua - http://www.lua.org

  7. http://fcior.edu.ru/ - федеральный центр информационно-образовательных ресурсов

  8. Educational Technology & Society 9(1) 2006. ISSN 1436-4522. pp. 365-396. «Описание учебных ресурсов: метаданные, стандарты, профили.». http://ifets.ieee.org/russian/depository/v9_i1/html/1.html - статья о IEEE LOM

  9. Метаданные электронных образовательных ресурсов. ГОСТ . http://www.edu.ru/db/portal/e-library/00000046/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F_%D1%87%D0%B0%D1%81%D1%82%D1%8C.pdf

  10. Дубровский В.Н. Стереометрия с компьютером // Компьютерные инструменты в образовании. - СПб.: Изд-во ЦПО "Информатизация образования", 2003, №6, С.3-11.

  11. Jon Bentley. Little languages. CACM, 29(8): 711–721, 1986.

  12. Paul Hudak. Modular domain specific languages and tools. // Fifth International Conference on Software Reuse, pages 134–142. Victoria, Canada, 1998.


Добавить документ в свой блог или на сайт

Похожие:

Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Использование предметно-ориентированных языков для повышения продуктивности...
В статье проводится обзор и анализ описанных в литературе методик применения предметно-ориентированного подхода, выявляются их общие...
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Содержание проекта по подготовке научно-популярных изданий
Классификация и оценка ренты всех видов, цивилизованное регулирование рентных отношений и формирование экономической основы гражданского...
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Дипломной практики на кафедре асоиу по теме «Применение предметно-ориентированного...
Руководителем дипломного проекта назначить ассистента кафедры асоиу степулёнка Дениса Олеговича
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Вашему вниманию предлагает свои услуги переводчик немецого языка...
С каких языков и на какие вы переводите (просьба сначала указать наиболее предпочтительную пару языков)
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Справка об итогах работы базовой площадки мбоу сош №60 за июль-ноябрь 2012 года
«Использование электронных ресурсов для повышения качества образования в условиях икт-насыщенной среды», программы муниципальной...
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Использование электронных презентаций Power Point в обучении иностранным...
Внедрением в учебный процесс компьютерных технологий и Интернета (не только на уровне поиска и подбора необходимой информации). Современные...
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Дипломная работа Скрипкина В. А. Тема: «Внедрение системы менеджмента...
«внедрение системы менеджмента качества как инструмент повышения эффективности бизнеса»
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Программа повышения квалификации «Информационные и коммуникационные...
Программа предназначена для повышения квалификации преподавателей иностранных языков в области использования современных информационных...
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Аннотированный список электронных изданий поступивших в фонд цпи. Естественные науки
! Это издание позволяет заглянуть внутрь человеческого тела, подробно изучить его строение основные системы и их функции
Денис Олегович Использование предметно-ориентированных языков для повышения эффективности создания электронных научно-популярных изданий icon Курсовой проект по курсу “Основы предпринимательской деятельности”...
«Экономическое обоснование проведения научно-исследовательской работы “Использование методов днк-анализа для диагностики моногенных...
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции