Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Современный Паскаль (иногда стилизованный под ModernPascal ) является закрытым исходным кодом , кросс-платформенный , интерпретатор , компилятор и исполняющая система (среда) для командной строки , на стороне сервера и сетевых приложений. Приложения Modern Pascal написаны на Pascal и Object Pascal и могут быть запущены в среде выполнения Modern Pascal в операционных системах Microsoft Windows , Linux , macOS , FreeBSD , Solaris и DOS / 32.. Его работа размещается и поддерживается 3F, LLC и партнером MP Solutions, LLC.

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

Modern Pascal CodeRunner содержит встроенную библиотеку, позволяющую приложениям работать в качестве веб-сервера без программного обеспечения, такого как Apache HTTP Server или Internet Information Services (IIS).

История [ править ]

Современный Паскаль был изобретен в 2000 году Оззом Никсоном, а также разработал код DXJavaScript с Александром Бароновски. Озз был вдохновлен проектом Borland Kylix в 1999 году, где он встретился с командой Borland Pascal и поделился своим языком программирования «Modern Pascal». [1] Озз перенес свой коммерческий пакет сокетов DXSock на Kylix, а затем начал разработку Modern Pascal, поэтому он запускал скрипты на паскале в Microsoft Windows, Linux и OS X. [2]

В 2002 году вышла версия 1.1. Он мог работать с большинством синтаксиса Turbo Pascal (DOS). Это была последняя версия, в которой варианты использовались внутри как экземпляры переменных и кода. Он представил поддержку встроенных модулей RTL, что позволило расширить грамматику языка для поддержки вызовов CRT / Display и TCP / IP Socket.

В 2005 году вышла версия 1.2. Он был доступен для 64-битных платформ с собственными 64-битными двоичными файлами и внутренней поддержкой 64-битных чисел и адресов памяти.

В 2007 году вышла версия 1.3. Добавлена ​​кроссплатформенная поддержка динамических библиотек, .so, .dylib, .DLL. Это была первая версия, способная разрабатывать приложения с графическим пользовательским интерфейсом (GUI) для Windows и Linux Qt . Благодаря поддержке внешних библиотек язык больше не ограничивался ролью обработчика сценариев командной строки или веб-сервера.

В 2008 году вышла версия 1.4. У него была внутренняя вилка под названием DECisioning LANguage (DECLAN) для использования в кредитной и финансовой индустрии. Он также представил совместимость TDataset с компилятором Borland Delphi и возможность подключения к базам данных через встроенную поддержку ODBC. Это позволяет использовать почти все механизмы баз данных SQL для использования в командной строке и в Интернете.

В 2009 году вышла версия 1.5. Это был редизайн фазы синтаксического анализатора Lexicon . Это первая версия, которая включает синтаксис из других популярных языков, таких как + =, - =, * -, / = из C и JavaScript . Он был доступен как собственный модуль Apache для Windows, Linux и OS X.

В 2010 году вышла версия 1.6. Он включает в себя больше встроенных модулей RTL: шифров, сжатия, хешей. Он сосредоточился на переносе приложений в Интернет и нуждался во встроенной поддержке общих шифров, хешей и алгоритмов сжатия, используемых приложениями с репрезентативной передачей состояния (RESTful).

В 2011 году вышла версия 1.7. Это была переработка модуля Apache. Начиная с этого выпуска, Modern Pascal больше не был встроен в модуль Apache. Был представлен Modern Pascal Celerity , вдохновленный дизайном серверной части Adobe ColdFusion nTier для веб-серверов. Это означает, что в будущей версии могут быть развернуты FastCGI, ISAPI и даже старые интерфейсы CGI и NSAPI. Версия 1.7 также представила старую функцию Pascal 3.0 под названием Chaining в немного более современном стиле.

В 2013 году вышла версия 1.8. Он представил поддержку классов, подобных Delphi, интеллектуальных записей, объединений и самостоятельного создания экземпляров. Это была первая версия, в которой современный Паскаль стал диалектом Паскаля.

В 2014 году была собрана, но не выпущена версия 1.9. Он был использован для создания крупномасштабного общедоступного веб-сайта DevelopIP. [3]

В 2015 году была запущена версия 2.0. Это развилка отворота. Хотя предыдущие версии были быстрыми и эффективными, они не были достаточно быстрыми для некоторых крупных клиентов. Затем тесты показали, что версия 2.0 может обрабатывать более 100 миллионов инструкций в секунду, что примерно в 8 раз быстрее, чем версия 1.9, и намного быстрее, чем альтернативные движки сценариев Pascal. В июле 2015 года версия 2.0 вошла в последний цикл закрытого бета-тестирования. Команда перенесла фрагменты кода и старые приложения на версию 2.0 и опубликовала код на GitHub .

В 2017 году вышла версия 2.0. Он включает встроенную поддержку dBase III +, IV, V, VII, Clipper и FoxPro. За 24 месяца разработки компания 3F перенесла на GitHub, Source на 17 BBS (включая QuickBBS, TPBoard, Hermes), протокол BinkP (Fidonet), несколько Tossers, Adventure Game Studio (1984), Custom Micro Solutions, Inc. Программное обеспечение для точек продаж, веб-приложения RIA. 3F также представила прозрачную поддержку графики Extended ASCII, ANSI и UTF8.

Обзор [ править ]

Современный интерфейс командной строки Pascal позволяет создавать и запускать программы, подобные DOS , с использованием Pascal и десятилетий бесплатного исходного кода для широкого спектра бизнес-классов и командных утилит.

Modern Pascal Celerity позволяет создавать программы, подобные автономному промежуточному программному обеспечению или внутреннему движку. В сочетании с модулем Apache Celerity можно использовать для создания широкого спектра программ веб-скриптов.

Современный Pascal CodeRunner позволяет создавать автономные сетевые инструменты, включая веб-серверы , почтовые серверы и чат-серверы. CodeRunner управляет связью по протоколу управления передачей (TCP) для кода, даже безопасностью транспортного уровня (TLS, ранее - Secure Sockets Layer (SSL)). Для разработки просто сосредоточьтесь на том, что происходит после установления соединения.

Пример кода [ править ]

Вот пример кода для игры Loot : [4]

программа  Game . Лут . Пример ;использует  математику ;const MaxProbability = 1000 ;тип  LootType = ( Кровавый камень ,  медь ,  эмеральдит ,  золото ,  геронит ,  платина ,  шадунит ,  серебро ,  соранит ,  умбрарит ,  кобальт ,  железо ,  ничего ) ;  Looter  =  Класс  Probabilites : Массив [ 0 .. 12 ]  из  Longint ;  Выберите : частная  функция :LootType  из  объекта ;  AsString : частная  функция ( л : LootType ) : Строка  из  объекта ;  Конец ;функция  Мародер . Выберите : LootType ; var  Loop , randomValue : Word ;Начать  randomValue : = Random ( MaxProbability - 1 ) ;  Цикл : = 0 ;  В то время как  Probabilites [ мод цикла  13 ] < randomValue do Inc ( цикл ) ; Результат : = LootType ( мод цикла 13 ) ; Конец ;      функция  Мародер . AsString ( l : LootType ) : String ; Begin  Case  л  из  Bloodstone : Результат : = 'кровавый' ;  Медь : Результат : = «Медь» ;  Эмеральдит : Результат : = «Эмеральдит» ;  Золото : Результат : = «Золото» ;  Геронит : Результат : = «Геронит» ;  Платина : Результат : =«Платина» ;  Shadownite : Результат : = 'Shadownite' ;  Серебро : Результат : = «Серебро» ;  Соранит : Результат : = 'Соранит' ;  Умбрарит : Результат : = 'Умбрарит' ;  Кобальт : Результат : = «Кобальт» ;  Железо : Результат : = «Железо» ;  Другой  результат : = '' ;  Конец ; Конец ;процедура  Looter . Бесплатно ; Начало Конец ;// Должен быть указан после всех остальных реализаций // процедура  Looter . Init ; Начать  случайный выбор ;  with  Self  do  begin  // используется для связывания методов с экземпляром!  Вероятность [ 0 ] : = 10 ;  Probabilites [ 1 ] : = 77 ;  Вероятности [ 2 ] : = 105 ;  Вероятность [ 3 ] : = 125 ;  Вероятности [ 4 ] : =142 ;  Вероятности [ 5 ] : = 159 ;  Вероятности [ 6 ] : = 172 ;  Вероятности [ 7 ] : = 200 ;  Вероятность [ 8 ] : = 201 ;  Вероятности [ 9 ] : = 202 ;  Вероятности [ 10 ] : = 216 ;  Вероятности [ 11 ] : = 282 ;  Вероятности [12 ] : = MaxProbability ;  // чтобы избежать накладных расходов RTTI / VMT:  TMethod ( @ asstring )  : =  [ @ Looter . AsString ,  @ self ] ;  TMethod ( @ choose )  : =  [ @ Looter . Выбери ,  @ self ] ;  TMethod ( @ free )  : =  [ @ Looter . Бесплатно ,  @ self] ;  Конец ; Конец ;вар  лут : мародер ;  n : longint ;начать  добычу . init ;  для  n : = от 0  до  99  выполните  Writeln ( Loot . AsString ( Loot . choose )) ; // для n: = от 0 до 99 делаем Writeln (Loot.choose); {здесь использовался встроенный макрос для преобразования Enum в String}  добыча . бесплатно ; конец .

ВЫХОД

Показывает случайный список добычи, которую можно было найти во время игры в лабиринт / карту.

Заменен исходный образец кода на что-то, что легче читать / следовать.

Привет, мир [ править ]

Современный Паскаль может работать с синтаксисом Турбо Паскаль. Таким образом, программа Hello world должна быть написана как в обычном Pascal "Hello World".

программа  HelloWorld ; begin  Writeln ( 'Привет, мир!' ) ; конец .

Modern Pascal поддерживает Brief Pascal, поэтому операторы могут выполняться с меньшей формальностью.

Writeln ( 'Привет, мир!' ) ;

Встроенные блоки [ править ]

В номенклатуре Паскаля многократно используемый набор методов называется модулем , другие языки часто называют эти модули или библиотеки. В Modern Pascal есть встроенные модули для обработки отображения, вызовы среды, такие как ввод / вывод файловой системы (I / O), сокеты для сетевого TCP , двоичные данные (буферы), классы и объекты, криптографические функции, потоки данных , регулярное выражение , коллекции. , ведение журнала, файлы конфигурации с использованием ini , форматов значений, разделенных запятыми (CSV) или SDF (аналогично CSV), базы данных через Open Database Connectivity (ODBC), встроенный dBase, Clipper и FoxPro и другие основные функции.

Зависимости [ править ]

Modern Pascal не требует использования сторонних библиотек. При желании он может потребовать OpenSSL для работы со слушателями и клиентами TLS – SSL.

Включенные файлы [ править ]

  • Современный Pascal Коммерческая Компилятор: mpc(Windows: mpc.exe)
  • Современный Pascal Интерфейс командной строки: mp2(Windows: mp2.exe)
  • Современный Pascal RTL Engine (для скомпилированных скриптов): mpx(Windows: mpx.exe)
    • В macOS и Linux (ах) скомпилированный скрипт содержит! # / Bin / mpx для самостоятельного запуска
  • Современный Паскаль Быстрота: celerity2(Windows: celerity2.exe)
  • Модуль Современный Pascal Apache для Celerity: mod_pascal.so(Windows: mod_pascal.dll)
  • Современный Паскаль CodeRunner: coderunner2(Windows: coderunner2.exe)

Threading [ править ]

Современный Паскаль работает с использованием однопоточной модели, используя блокирующие вызовы ввода-вывода. Celerity и CodeRunner - это самопоточные движки, позволяющие Modern Pascal поддерживать десятки тысяч одновременных соединений. Дизайн одного потока для каждого экземпляра кода означает, что его можно использовать для создания надежных приложений. Цель разработки приложения Modern Pascal состоит в том, чтобы программист с любым уровнем квалификации мог работать, не опасаясь утечки памяти, конфликтов переменных между потоками и т. Д. Такой подход позволяет масштабировать с учетом количества ядер ЦП машины, на которой он запущен. . Недостатком этого подхода является увеличение контекстов переключения потоков. Modern Pascal был протестирован на базовом ноутбуке Dell, обрабатывающем более 50 000 одновременных подключений или сценариев.

Ссылки [ править ]

  1. ^ "Modern Pascal: Public Wiki" . C2.com . Уорд Каннингем . Проверено 28 марта 2016 .
  2. ^ «Эволюция современного Паскаля: публичный блог» . Все Nu.de . Проверено 28 марта 2018 .
  3. ^ "DevelopIP" .
  4. ^ «Образцы современного языка Паскаль» . Модерн Паскаль Солюшнс, ООО . Проверено 18 марта 2018 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Репозиторий образцов на GitHub