Аннотация: Лекция дает основное представление о встроенном языке системы «1С:Предприятие 8.0»: особенности встроенного языка, виды программных модулей и их взаимное расположение, основные операторы, системные перечисления, встроенные функции, соотношение глобального и локального контекста. Кроме того, в лекции приведены базовые приемы написания программных модулей на встроенном языке системы, приведен порядок работы с системой помощи, контроля, отладки и проверки конфигурации.
Общее описание встроенного языка
Встроенный язык является важной частью технологической платформы 1С:Предприятия 8.0, поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal , Java Script , Basic , что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
Вот лишь некоторые, наиболее значимые особенности встроенного языка:
Вредоносные расширения Microsoft VSCode, Вакансии с ИИ в Apple, Вживление чипа в человека
- предварительная компиляция; перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация — тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации; разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка. Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8.0 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования — создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью. Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм , который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
5 ХУДШИХ языков программирования, которые не стоит учить!
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т.е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Предопределенные типы данных
Платформа 1С:Предприятия 8.0 позволяет разработчику использовать различные типы данных.
Существует большое количество типов данных, которые определены на уровне самой платформы. Например, это примитивные типы данных , такие как строка, число, дата и пр.
Описание примитивных типов данных :
- NULL — отсутствующее значение. Используется, например, в запросах.
- Неопределено — пустое, неопределенное значение. Используется, например, при оценке передачи параметров, в том случае, если при вызове процедуры или функции данный параметр опущен. Реквизиты, имеющие составной тип данных, по умолчанию имеют тип «Неопределено».
- Булево — содержит два значения: Истина или Ложь. Используется, например, в логических выражениях — логическое выражение имеет тип «Булево».
- Дата — содержит дату и время. По умолчанию имеет значение — 01.01.01 00:00:00 дата начала нашей эры. Время измеряется от начала дня. Запись выражения, имеющего литерал типа «дата», осуществляется следующим образом — ‘00010101000000’. Сначала записывается год, потом месяц, потом число и потом время. Возможна следующая запись: ‘20041031’. Время по умолчанию — начало дня.
- Строка — бывает переменной, фиксированной и неограниченной длины. В общем случае рекомендуется использовать строки переменной длины.
- Число — увеличена разрядность числа до 38 разрядов.
- Тип — служит для определения типов значений. Используется, например, для сравнения типов данных. Не имеет литералов и возвращается функциями Тип() или ТипЗнч().
Также, существуют более сложные типы данных . Например, платформа поддерживает целый ряд типов, которые представляют собой универсальные коллекции значений: массив , структура, список значений, дерево значений и т.д.
Типы данных «Универсальные коллекции» — список (набор) объектов данных любых типов, к значениям которого можно обратиться перебором или по указанному индексу (ключу). Нумерация элементов коллекций начинается с 0. Все указанные типы данных создаются только программно.
Массив. Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Структура. Представляет собой поименованную коллекцию, состоящую из пар Ключ — Значение . Ключ может быть только строковым, значение — произвольного типа. К элементу структуры можно обращаться по значению его ключа, т.е. по имени. Обычно используется для хранения небольшого количества значений, каждое из которых имеет некоторое уникальное имя.
Соответствие. Также как и Структура, представляет собой коллекцию пар Ключ — Значение . Однако, в отличие от Структуры, ключ может быть практически любого типа.
Список значений. Используется, как правило, для решения интерфейсных задач. Позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может содержать значения любого типа, кроме того, в одном списке типы хранимых значений могут быть разными.
Таблица значений. Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Дерево значений. Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь , также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка , получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
COMSafeArray. Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM . Позволяет создавать и использовать SAFEARRAY для обмена данными между COM -объектами.
ФиксированныйМассив. Неизменяемый массив . Массив заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Кроме этого в платформе реализованы специфические типы данных, реализующие ту или иную функциональность прикладных решений: текстовый документ, табличный документ, ХранилищеЗначения, ПостроительОтчета, ПостроительЗапроса и пр.
Остановимся подробнее на типе данных «ХранилищеЗначений». Хранилища предназначены для хранения значений, тип которых не может быть выбран в качестве типа поля, например: картинки, двоичные данные. При помещении значения в хранилище значений можно сжимать данные, указав требуемую степень сжатия. Данный метод позволяет уменьшить размер хранимого значения в информационной базе.
К значению, хранящемуся в хранилище, нельзя обращаться напрямую. Перед использованием значения его необходимо извлечь. Не рекомендуется хранить ссылки на объекты, т.к. в системе не поддерживается контроль ссылочной целостности по объектам, сохраненным в полях типа «Хранилище значения».
Операции помещения в хранилище и извлечения из него могут занимать продолжительное время, что необходимо учитывать при проектировании структур объектов.
Пример использования хранилища значения на примере справочника «Картинки»:
Процедура ОтобразитьКартинку() ЗначениеКартинки = Картинка.Получить(); Если ЗначениеКартинки <> Неопределено Тогда ЭлементыФормы.ПолеКартинки.Картинка = ЗначениеКартинки; Иначе ЭлементыФормы.ПолеКартинки.Картинка = Новый Картинка(Неопределено); КонецЕсли; КонецПроцедуры
Процедура ВыбратьИзФайлаНажатие(Элемент) // Выбор файла с просмотром ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Каталог = «»; ДиалогВыбораФайла.ПредварительныйПросмотр = Истина; ДиалогВыбораФайла.ИндексФильтра = 0; Если ДиалогВыбораФайла.Выбрать() Тогда Файл = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла); Картинка = Новый ХранилищеЗначения(Новый Картинка(ДиалогВыбораФайла.ПолноеИмяФайла)); ОтобразитьКартинку(); КонецЕсли; КонецПроцедуры
Источник: intuit.ru
Встраиваемые языки: почему Lua?
Этот материал продолжает серию публикаций, основанных на докладах, которые мы сделали на конференции Games Gathering 2017 в декабре прошлого года. В одном из докладов была затронута тема выбора встраиваемого скриптового языка.
Что такое и зачем нужны скриптовые языки
Как уже упоминалось в предыдущем посте нашего блога, в нашей компании написан собственный движок. Сегодня речь пойдёт о том, чем мы руководствовались во время выбора скриптового языка для этого движка.
Почему вообще возникает потребность в скриптовых языках? Как говорится, «в игровой индустрии нет сложных проблем, незачем требовать сложных решений» . Помимо опытных (и дорогих!) программистов, решающих сложные задачи, нам нужны люди (много людей!), которые будут заниматься, скажем, квестами. И, если честно, нам бы хотелось, чтоб эти программисты были не такие дорогие, а в идеале и вовсе не программисты, а непосредственно геймдизайнеры и сценаристы.
Таким образом, есть потребность в средстве для описания несложной, но всё-таки логики, без привлечения тяжёлой артиллерии программистов. Сделаем вывод — что такое для нас скриптовый язык? Это средство, которое позволит сделать разработку игр быстрее и дешевле.
Сразу возникает вопрос, а почему бы нам просто не использовать что-то вроде XML? Дело в том, что для наших целей нам часто нужны управляющие конструкции — ветвление и циклы, в то время как XML это декларативное описание.
Ещё одно преимущество скриптовых языков в том, что скрипты в проекте могут быть как кодом, так и ресурсом. И, соответственно, обновлять скриптовую часть игры можно не только вместе с кодом, то есть в ходе обычных обновлений через механизмы магазинов приложений. Но и вместе с ресурсами — то есть вместе с графическими и прочими материалами, с использованием CDN.
Требования к идеальному скриптовому языку
Сформулируем требования к идеальному скриптовому языку.
- Динамический. В нашем понимании идеальный скриптовый язык должен быть динамическим.
- Популярность. Под популярностью языка мы понимаем наличие у него достаточно большого сообщества, готового отвечать на вопросы на специализированных ресурсах наподобие StackOverflow.
- Пологая кривая обучения. Мы хотим взять, условно говоря, практически любого человека, и быстро обучить его до уровня, который позволит этому человеку продуктивно работать над нашими задачами.
- Широкие возможности. Язык должен быть мощным и обладать достаточно широкими возможностями, должен поддерживать разные парадигмы программирования. Профессиональный программист, которому предложат писать на таком языке, сможет делать это с комфортом и с удовольствием.
- Высокая производительность. Производительность — это один из краеугольных камней игровой индустрии.
- Большое количество библиотек. Очень часто мы, в ходе решения встающих перед нами задач, не создаём принципиально новый код, а пользуемся тем, что уже кто-то написал. Чем больше стабильных, хорошо поддерживаемых библиотек мы можем задействовать, применяя некий язык — тем лучше.
- Лёгкость встраивания. Речь идёт о встраиваемых языках, поэтому при выборе скриптового языка возможность его встраивания играет важную роль.
Python
Python — динамический язык, который пользуется немалой популярностью. Он характеризуется достаточно пологой кривой обучения, его довольно просто выучить. Однако изучить его как следует уже не так-то просто. Как результат, хорошие Python-программисты встречаются редко и дорого стоят. Это противоречит нашему желанию ускорить и удешевить разработку игровой логики.
Python обладает широкими возможностями, отличается хорошей производительностью. Его проблемой является неконсистентная система библиотек. Ещё одна его проблема, которая играет для нас важную роль, заключается в том, что он, на самом деле, не является встраиваемым языком. Это язык, из которого удобно вызывать библиотеки, написанные на C или C++.
По поводу возможностей по встраиванию Python можно сказать, что, например, существует Maya, где используется именно Python. Но тот, кто видел изнутри плагины для Maya, написанные на Python, согласится с нами в том, что выглядят они не очень хорошо.
В итоге можно сказать, что Python, при всех его сильных сторонах, нам не подходит. Теперь рассмотрим JavaScript.
JavaScript
JavaScript — это, без преувеличений, великий язык, который буквально захватил мир.
JavaScript — это популярный динамический язык, отличающийся пологой кривой обучения, обладающий широкими возможностями, хорошей производительностью и обширным набором библиотек.
Если нам, для построения игрового движка, нужен какой-нибудь интерпретатор языка — мы можем найти множество таких интерпретаторов. В реальности же придётся выбирать из двух подобных проектов — V8 и WebKit. И тот и другой имеют достаточно большие размеры. Как результат, если речь идёт о настольных играх, можно было бы рискнуть и включить в игру весь интерпретатор, но в случае мобильных игр нас такой вариант не устраивает.
В компании SocialQuantum есть собственный интерпретатор JavaScript, который проходит 98% тестов, мы планируем перевести этот проект в разряд опенсорсных.
В результате оказывается, что JavaScript выглядит сильным кандидатом на роль встраиваемого языка, но нам он тоже не подходит.
Haxe
Тут надо отметить, что когда заходит разговор о JavaScript, следующим обычно вспоминают Haxe. Но, на самом деле, о возможности использования этого языка в качестве встраиваемого говорить нет смысла, так как Haxe, по сути, является не столько языком, сколько транс-компилятором в другие языки. А это не то, что нам нужно.
Может быть, нас устроит ActionScript или какой-нибудь другой скриптовый язык?
ActionScript
Если формально проанализировать ActionScript на соответствие вышеозначенным требованиям, то может показаться, что идеальный скриптовый язык найден. На его стороне динамическая природа, популярность, лёгкость изучения, хорошие возможности, производительность, наличие библиотек, лёгкость встраивания. Этот язык любят и помнят в игровой индустрии, на нём написано огромное количество замечательных Flash-игр. Главная проблема ActionScript заключается в том, что язык этот почти мёртв. Поэтому нас он тоже не устраивает.
AngelScript, Squirrel и другие
Помимо ActionScript существует множество скриптовых языков, таких, как AngelScript, Squirrel и другие. Среди них можно найти такие, которые, формально, почти полностью удовлетворяют нашим требованиям, но обычно это — языки, которые привязаны к их разработчику, в них бывают какие-то застарелые проблемы, которые годами не исправляются. Они, скорее всего, не слишком популярны, недостаточно хорошо документированы, по ним мало учебных материалов, у них не очень большие сообщества. Одним из следствий такого положения дел является тот факт, что их сложно изучать — хотя бы потому, что не до конца ясно — что они собой представляют и как работают.
Как видно, идеального встраиваемого языка мы пока не нашли. Что если создать собственный язык?
Создание собственного языка
Вполне возможно, что язык, разработанный внутри компании, будет идеально соответствовать её нуждам и его будет легко изучать. Но, скорее всего, такой язык не станет популярным. У такого языка либо будет минимальное количество библиотек, либо их не будет вовсе. Кроме того, сложно поверить, что в современных условиях можно создать нечто такое, что будет работать лучше, что будет обладать большей производительностью и будет проще встраиваться чем что-то, что уже есть на рынке.
Есть компании, которые разрабатывают и используют собственные языки, среди них есть и успешные игроки игрового рынка, но, скорее всего, это — не очень хорошая идея.
Рассмотрев существующие языки программирования, претендующие на роль встраиваемых и обсудив идею разработки собственного языка, перейдём к Lua.
Lua — встраиваемый язык, который выбрали мы
Lua — динамический язык. Он довольно-таки популярен, вокруг него сложилось большое сообщество, особенно — в сфере разработки игр. Он отличается весьма пологой кривой обучения. Например, в нашей компании сценарии для автотестов пишут на Lua. Стандартный вводный курс для автотестеров занимает примерно два часа, после чего человек в состоянии использовать этот язык.
При этом Lua — мультипарадигменный язык. Он поддерживает функциональный стиль программирования и ООП. В результате он подходит не только для решения каких-то простейших задач, но и для более серьёзных дел, которыми занимаются профессиональные программисты.
Lua обладает хорошей производительностью и у него довольно много библиотек. Не так много, как у JavaScript, но, тем не менее, на сайте LuaForge можно найти практически всё, что может понадобиться. И, наконец, Lua очень просто встраивается, более того — он создан для того, чтобы его использовали как встраиваемый язык.
Например, вот как выглядит наша рабочая среда на основе IDE CLion от JetBrains. Здесь можно видеть созданный нами механизм автодополнения для Lua, который планируется сделать опенсорсным. Опенсорсным мы собираемся сделать и отладчик.
Рабочая среда
СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 преподаватель кафедры ТМСИ Губин Максим Владимирович ВВЕДЕНИЕ. — презентация
Презентация на тему: » СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 преподаватель кафедры ТМСИ Губин Максим Владимирович ВВЕДЕНИЕ.» — Транскрипт:
1 СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 преподаватель кафедры ТМСИ Губин Максим Владимирович ВВЕДЕНИЕ
2 Скрипт? Сценарий – исполняемая процедура или набор исполняемых процедур. Язык сценариев – высокоуровневый язык программирования для написания сценариев – кратких описаний действий, выполняемых системой. Динамический язык – язык программирования, который позволяет определять типы данных, осуществлять синтаксический анализ и компиляцию «на лету», на этапе выполнения программы. Удобен для быстрой разработки приложений. К динамическим языкам относятся: Perl, Tcl, Python, PHP, Ruby, Smalltalk, JavaScript.PerlTclPythonPHPRubySmalltalkJavaScript Некоторыми динамическими чертами обладает также Visual Basic.Visual Basic 2
3 Классификация По применению языки можно разделить: командно-сценарные; прикладные сценарные; языки разметки; универсальные сценарные. 3
4 Командно-сценарные языки Появились в 1960-х годах для управления заданиями в операционных системах. Эти языки чаще всего используются в пакетном режиме обработки. JCL (Job Control Language) JCL Sh (Bourne shell) Sh Bash (Bourne again shell) Bash Csh (C shell) Csh Ksh (Korn shell) Ksh Pilot REXX (REstructured eXtended eXecutor) REXX AppleScript (для Mac OS X) AppleScript COMMAND.COM и cmd.exe COMMAND.COMcmd.exe VB Script PowerShell 4
5 Прикладные сценарные языки Сценарные языки этого типа начали появляться в 1980-е годы, когда на персональных компьютерах стало возможным интерактивное общение с ОС. В клиент- серверной архитектуре такие языки работали как клиент. AutoLISP (для AutoCAD) AutoLISP Emacs Lisp ERM Game Maker Language MQL4 script MQL4 UnrealScript VBA LotusScript К этой категории можно отнести ECMAScript и его диалекты (JScript, JavaScript).JavaScript 5
6 Языки разметки Главная характерная черта этих языков встраивание специальных кодов (тегов) в обычный текст не только для целей структурирования и форматирования, но и для определения динамического поведения. GML TeX SGML XML (eXtensible Markup Language) XML Родственны этим языкам PostScript и RTF.PostScriptRTF 6
7 Универсальные языки Этот тип сценарных языков наиболее известен, особенно в применении к программированию для веба. Языки этого типа стали возникать с 1990-х годов. Tcl (Tool command language) Tcl Lua Perl PHP Python REBOL Ruby Следует заметить, что многие языки этой категории имеют более широкое применение, чем в качестве просто языков сценариев. 7
8 Место скриптовых языков Скриптовые языки позволяют разработчикам сцеплять вместе различные пакеты программ, и согласовывать полученные в результате системы. Используются в качестве полноценных базовых инструментальных платформ. Например, многие крупные коммерческие Интернет- приложения сейчас программируются преимущественно на языках Perl, Python или PHP. Скриптовые языки используются для автоматизации задач системного администрирования. 8
9 Недостатки скриптовых языков 1. Время исполнения больше чем в компилируемых языках программирования. Если скорость выполнения важна, то часть кода можно выполнить на языке низкого уровня (таком, как C или C++) и вставить такой код в скрипт. 2. Отсутствие хорошей интегрированной среды разработки (IDE).
Конечно, какие-то интегрированные среды разработки существуют, однако в них недостает мощности, как у Visual Studio. 3. Отсутствие маркетингового бюджета. Многие динамические языки идеально подходят для многих проектов, однако им тяжело конкурировать с такими локомотивами маркетинга, как Sun (Java) и Microsoft (C#), которые продолжают продвигать свои технологии как единственно возможные. 9
10 Привлекательность скриптовых языков 1. Скриптовые языки обладают более сложным инструментарием и поддерживают более прогрессивные техники программирования. Например, возможности сортировки данных в Perl встроены прямо в язык.
Это означает что в язык встроены все основные инструменты программирования, что избавляет от необходимости создавать их самостоятельно, т.е. нужно писать меньше кода, что увеличивает производительность разработчика. 2. Скриптовые языки позволяют быстро выполнять доработку кода без потери времени на ожидание окончания компиляции. 3. Программированию на скриптовых языках проще научиться. Чтобы стать средним программистом на C++, необходим больший опыт работы, чем для того, чтобы стать средним программистом на PHP. 10
11 VBScript Visual Basic Scripting Edition (VBScript) – это язык программирования от компании Microsoft, предназначен для создания сценариев (скриптов), является подмножеством языка Visual Basic и широко используется при создании административных сценариев в системе Windows. VBScript поддерживается в Windows Script Host (WSH), который устанавливается вместе с почти любой версией Windows. Синтаксис VBScript является несколько упрощенной версией стандартного синтаксиса Visual Basic. Например, в VBScript не поддерживается типизация: все переменные имеют тип Variant. Сценарии на языке VBScript используются в следующих областях: автоматизация администрирования систем Windows; серверный программный код на страницах ASP в Web-приложениях; клиентские сценарии на Web-страницах. 11
12 JScript JScript – это язык программирования от компании Microsoft, предназначен для создания сценариев и является реализацией стандарта ECMAScript. Синтаксис JScript во многом аналогичен языку JavaScript от компании Netscape. JScript по умолчанию поддерживается в Windows Script Host (WSH), который в свою очередь по умолчанию устанавливается вместе с почти любой версией Windows. Сценарии на языке JScript используются в следующих областях: клиентские сценарии на Web-страницах; автоматизация администрирования систем Windows; серверный программный код на страницах ASP в Web-приложениях; язык JScript получил дальнейшее развитие в виде языка JScript.NET, который ориентирован на работу в рамках платформы Microsoft ASP.NET. 12
13 Python Python (питон) – интерпретируемый, объектно-ориентированный язык программирования высокого уровня. Поддерживает классы, модули (которые могут быть объединены в пакеты), обработку исключений, а также многонитевую обработку. Python относится к классу языков с динамической типизацией, предоставляет программисту автоматическую «сборку мусора» и удобные высокоуровневые структуры данных, такие как словари, списки, кортежи и др. Интерпретатор языка Python распространяется свободно на основании лицензии Python Software Foundation (PSF) Licence, которая в некотором роде даже более демократична, чем GNU. Официальный сайт проекта языка Python располагается по адресу В стандартный комплект поставки Python входит интегрированная среда разработки IDLE. 13
14 Если не достаточно возможностей стандартной библиотеки, то существует множество библиотек, предоставляющих интерфейс ко всем мыслимым системным вызовам на разных платформах; в частности, на платформе Win32 поддерживаются все вызовы Win32 API, а также COM в объёме не меньшем, чем у Visual Basic или Delphi. Количество прикладных библиотек для Python в самых разных областях без преувеличения огромно (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы, и т. д.). Python легко расширяется языками C и C++, а на платформе Windows – также с помощью COM. Библиотека Numeric Python для работы с многомерными массивами позволяет достичь производительности научных расчётов, сравнимой с MATLAB. Существует специальная библиотека psyco ( позволяющая оптимизировать выполнение некоторых программ, после чего скорость их выполнения можно сравнивать с программами на Си. 14
15 Tcl Tcl (Tool Command Language) – интерпретируемый язык программирования высокого уровня. Официальный сайт языка — Tcl ориентирован преимущественно на автоматизацию рутинных процессов ОС и крупных программных систем, состоит из мощных команд, ориентированных на работу с абстрактными нетипизированными объектами. Принципиальное отличие Tcl от командных языков ОС состоит в независимости от типа системы (когда не надо утруждать себя изучением нового командного языка) и, самое главное, он позволяет создавать переносимые программы с графическим интерфейсом (GUI). Существует оболочка Visual Tcl, которая позволяет разрабатывать кроссплатформенное ПО для UNIX, Windows и Macintosh. 15
16 Ruby Ruby – интерпретируемый скриптовый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Ruby имеет большое количество средств для обработки текстов, для решения системных задач. Ruby является полностью свободным языком программирования с возможностью копирования, модификации и распространения. Ruby перенесён на множество платформ.
Он разрабатывался на Linux, но работает на многих версиях Unix, DOS, Windows 95/98/Me/NT/2000/XP, Mac OS, BeOS, OS/2, и т.д. Целью создания Ruby был настоящий объектно-ориентированный интерпретируемый язык программирования. 16
17 Perl Perl – интерпретируемый скриптовый язык программирования, один из самых распространённых в области веб- программирования. По одной из версий, Perl аббревиатура, которая расшифровывается как «Practical Extraction and Report Language» (практический язык извлечений и отчётов). Существует также ряд других вариантов. Согласно самому красивому из них, название «perl» произошло от слова «pearl» (жемчужина). Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений. Перл также знаменит огромной коллекцией дополнительных модулей CPAN, находящейся по адресу 17
18 PHP PHP (пи-эйч-пи) – интерпретируемый скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В области веб-программирования PHP является на сегодняшний день одним из самых распространённых технологий (наряду с Perl, ASP/.NET и Python) благодаря простоте, скорости выполнения и богатой функциональности. PHP распространяется свободно.
Синтаксис языка похож на синтаксис С++. PHP поддерживается подавляющим большинством представителей сетевого хостинга. PHP был создан в качестве надстройки над Perl для облегчения разработки веб-страниц. За свою жизнь PHP значительно изменялся. Одной из сильнейших сторон PHP является возможность расширения ядра.
Интерфейс написания расширений привлек к PHP множество сторонних разработчиков, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. PHP поддерживает ООП (деструкторы, открытые, закрытые и защищённые члены и методы, final-члены и методы, интерфейсы и клонирование объектов). PHP поддерживает XML. 18
19 Плагин или скрипт? 19
20 Скрипт удобен 1. Программируемость без риска дестабилизировать систему, т.к. скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху. 2. Если важен выразительный код. Чем сложнее система, тем больше кода приходится писать «потому, что это нужно».
А в скриптовом языке может быть совсем другая концепция программирования. 3. Скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. 4. Как следствие, на скриптовом языке может писать программист очень низкой квалификации например, геймдизайнер своими руками, не полагаясь на программистов, может корректировать правила игры.геймдизайнер 5. Если требуется кроссплатформенность. Хорошим примером является JavaScript – его исполняют браузеры под самыми разными ОС.JavaScript 20
21 Преимущества у плагинов 1. Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Поэтому скриптовые языки не применяются для написания программ, требующих оптимальности и быстроты исполнения.
Из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ. 2. Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать написанный на машинном коде API). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами. 3. Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, то для плагина его обеспечить проще. 21
Источник: www.myshared.ru