IPB

> Паскаль и Ада
Форум
Загрузка...
 
Народное кино
Учитель физики желает познакомиться
Час быка
Час быка
Карта Интернета
Internet Map
Яндекс.Метрика

pascal.toom.su посвящён только Turbo Pascal, поскольку другие версии Паскаль рассматривать нет смысла. Все учебные программы построены с учётом Turbo Pascal, и в других версиях то в одном месте, то в другом будут возникать нюансы, например, аргументы InitGraph может потребоваться переделать с Integer на SmallInt, в переменных Char нельзя хранить русскую букву на Linux и Mac OS X (кодировка на Linux, как правило, UTF-8) и прочие нюансы, из–за которых вы не забудете, что имеете дело с совершенно другой версией Паскаля.

Если же вы не ограничены рамками Turbo Pascal, имеет смысл обратить внимание на язык программирования Ада.

Несмотря на малую известность Ады в широких кругах, язык продолжает совершенствоваться и даже сейчас по многим характеристикам является более привлекательным для разработки и обучения, чем C++ и тем более Паскаль. Аду можно даже назвать C++ с человеческим лицом. C++ проектировался исходя из потребностей индустрии. То же можно сказать про Аду, но Аду не портила совместимость ни с C, ни с Паскалём.1

Ada > C++ > Pascal > C

Если вы не столь искушены в деталях разных языков программирования, вы можете думать об Аде как о следующей версии Паскаля и как о C++ с человеческим лицом. Многие конструкции Pascal (даже современных версий!) улучшены в Аде. C++ был ограничен с совместимостью с C и получился таким, какой он есть. Но ведь то же можно сказать про Delphi и Free Pascal! В ходе усовершенствования Ада стала лучше, но ценой несовместимости с Паскалём. Примеры и учебные курсы для Turbo Pascal несложно перенести на Аду, однако, совсем без изменений обойтись никак нельзя, поэтому Delphi и Free Pascal более распространены.

Заглянем внутрь

Внутри declare-begin-end можно определить внутренние переменные блока, а не только в var. При помощи так называемых агрегатов можно на месте конструировать записи и массивы, в то время как в Pascal агрегаты можно использовать только при статической инициализации глобальных переменных. Это уже не говоря о механизме межзадачного взаимодействия «рандеву» и других встроенных в язык механизмах параллельного программирования.

Что касается примитивов параллельного программирования, в Delphi, например, мьютексы реализуются через SyncObjs.TMutex, обычный класс, экземпляры которого нужно уничтожать явно в try-finally, а вот read/write lock реализуется через SysUtils.TMultiReadExclusiveWriteSynchronizer (из другого модуля!), с которым нужно работать только через интерфейс SysUtils.IReadWriteSync, а переменные интерфейсных типов явного уничтожения не требуют. Condition variables в Delphi и вовсе отсутствовали долгое время. Их реализацию нужно было скачивать отдельно. Весь этот бардак без изменений был позаимствован в Free Pascal.

FreePascal vs. Ada

FreePascal был создан для тех, кто не знает про Аду2, теми, кто не знает про Аду3. Оба эти обстоятельства необходимы для существования Free Pascal в настоящем виде. Без первого обстоятельства Free Pascal был бы не столь востребован, без второго обстоятельства Free Pascal вообще мог не состояться.

Фичи, пересаженные из C++ во Free Pascal, не работают так же хорошо, как они работали в C++ или как они работают в Аде (где они появились раньше, чем в C++, между прочим).

FreePascal одним своим существованием эффективно обедняет коммьюнити разработчиков на Аде в пользу более бедного Free Pascal, перехватывая тех, кто в поиске, на полпути к Аде. Ада, тем не менее, хорошо держится за счёт разработчиков на окладе. Как результат, мы наблюдаем раскол:

Во Free Pascal много хакеров (часто самоучек) и много хакерских прикладных библиотек, таких, как работа с CHM, с ресурсами и прочие могущие пригодиться мелочи.

В Аде, напротив, много грамотных инженеров (software engineers) с образованием. Компилятор был портирован на JVM и .NET. Частью стандартного инструментария GNAT является генератор интерфейсных пакетов для Ады на основе G++. С помощью стандартных генераторов привязок вы можете использовать почти любые библиотеки с интерфейсами на языках C и C++, а также Java.

Примечания

  1. ^ Касательно схожести Ады и C++: И в Аде, и в C++ можно сделать mix-in, унаследовав класс–аргумент в шаблоне. Попробуйте назвать хоть один другой язык программирования, в котором можно в шаблоне наследовать класс–аргумент. И в Аде, и в C++ можно использовать технику RAII.
  2. ^ но знает про Turbo Pascal или Delphi
  3. ^ не знает про Аду, но знает про C++

Ссылки

 
 К началу страницы 
Тэги:
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 


-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"