Компилятор Ада83 на FPC

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Сообщение STAKANOV » 28.08.2006 09:10:16

GrayEddy писал(а):http://home.perm.ru/~strannik/
Я думаю, тебе это поможет. Компилятор Modula-2 (Паскаля и Си), написанный на самой Модуле-2. Исходники прилагаются. Вещь невероятно полезная. Помимо этого, есть тесты компилятора.
Плохо то, что компилятор зашит в IDE.

Уже было изучено и протестированно. Интересная вещица. Но ...
Основная проблема - "компилятор создан с целью проверки гипотез автора". Это определяет его идеологию. А вот тесты из него это да! Советую любому кто пишет свой компилятор. :lol:
mr.denton писал(а):Вот уже войны пошли

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

О каких двух проектах идет речь? В Аде все требования задокументированы - "Steelman" (хотя сам это не читал). Где прописана идеология других проектов? Опять же, надежность это понятие очень растяжимое (и сжимаемое). В частности одним из факторов надежности Ады можно счиитать удобочитаемость. Т.е. требования к языку это, чтоб ПО было удобней читать чем писать (в отличии от Си, где все наооборот). Считается, что софт нписанный на Аде не нуждается в дополнительной документации. Я год назад пробовал что-то написать на Аде в порядке эксперемента и, действительно, за ответами на вопросы я полез куда-то в исходники и разобраться там оказалось действительно легче чем где-то еще (вот бы где раотал пропагандируемый debi12345 linux-подход). Конечно это субъективно. Но, опять же, Ада это результат коллективного творчества - "одна голова хорошо, а ...".
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение mr.denton » 28.08.2006 10:55:16

STAKANOV писал(а):О каких двух проектах идет речь?

Об Ада и Оберон естественно.
Идеология Оберона в плане надежности нигде не прописана (хотя может я вру, я только начинаю интересоваться этой темой), но она есть. И если почитать статьи Вирта и сотоварищи о том, почему при проектировании было принято то или иное решение, становится понятным, что для этих людей надежность если не на первом месте, то уж точно не на последнем. Причем надежность в плане предотврашения ошибок программиста при написании программы. А не так, как это делают многие другие. ( Сейчас в требованиях при приеме на работу очень популярен пункт "умение работать с Bounds Checker" :) )
А удобочитаемость вообще субъективная штука, и я бы не сказал, что программы даже на паскале тяжело читать. Все зависит от того, кто их писал. Хотя согласен, что если это предусмотреть, то писать легкочитаемые программы будет легче, чем писать нечитаемые.
Аватара пользователя
mr.denton
новенький
 
Сообщения: 23
Зарегистрирован: 30.04.2006 03:23:07

Сообщение STAKANOV » 28.08.2006 14:18:27

mr.denton писал(а):Идеология Оберона в плане надежности нигде не прописана (хотя может я вру, я только начинаю интересоваться этой темой), но она есть

оберон был доработан и сейчас есть Компонентный Паскаль

mr.denton писал(а):Причем надежность в плане предотврашения ошибок программиста при написании программы.

У разработчиков Ада то же требование. Есть идеи и теории, но как они проверены на практике? Ада язык применяемый и активно используемый. Оберон и его потомок КП не могут похвастаться такими успехами. Единственная большая проблема Ады это то, что она расчитана на создание больших и сложных систем. Прменения ее в меньших проектах чем "управление метро" пока не обнаружено. Этот вопрос меня немного беспокоит. Оберно и КП даже такими успехами похвастстья не могут. В принципе метод естественного отбора работает и здесь (где сейчас Fortran?).

Сейчас в основом пишут на С++,а среди шарварщиков популярен Дельфи (Паскаль от Борланд). МО США пишет на С++(вроде) и Ада. Все остальное единичные случаи. ... Хотя все это субъективно. Может кому попадалось настоящее исследование на эту тему?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение mif » 28.08.2006 14:46:39

Фортран жив и умирать не собирается... Существует Интел фортран (компилятор) обновляется и тп. В науке фортран еще долго жить будет. есть весьма серьезные вещи на нем написанные, правда очень специфические.
А вот управление метро это не каждый писать будет и не так часто меняется "управление" в метро (может и ошибаюсь), так что необходимость в компиляторе ады мизерная.
Надо посматривать в сторону Компонентного паскаля.
mif
новенький
 
Сообщения: 71
Зарегистрирован: 14.12.2005 10:09:27

Сообщение STAKANOV » 28.08.2006 22:04:26

mif писал(а):Фортран жив и умирать не собирается...

да, просто его задвинули куда-то в глубокие лаборатории


mif писал(а):А вот управление метро это не каждый писать будет и не так часто меняется "управление" в метро (может и ошибаюсь), так что необходимость в компиляторе ады мизерная.

Не думаю, что тот факт, что Ада предназанчена изначально для больших проектов помешает создавать маленькие. Пока что просто нет компилятора для этого. Точнее есть только один коммерческий - ObjectAda.

mif писал(а):Надо посматривать в сторону Компонентного паскаля.
Изначально я на него и смотрел, но после рассмотрения выбрал Ада. Как и везде в этой жизни повлиял личный субъективный фактор - "end;end;end;end;". Все остальное было потом.

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

Ставки сделаны! Компилятор пишется. Кто прав покажет время. :lol:
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение GrayEddy » 29.08.2006 10:44:26

> К тому же Ада заявлен как язык подходящий для системного программирования (кроме Си и Ада на это больше никто вроде не рискнул).

Не совсем корректно. Я не хочу быть дятлом, но та же Модула-2 тоже считается системным языком и с успехом применялась для написания ОС (к примеру, отечественная Кронос - ее сделала небезысвестная фирма XDS).

У Компонентного Паскаля весьма своеобразная трактовка обработки ошибок - он сам выставляет ловушки. И это, в трактовке BlackBox'a, требует специального окружения - фреймворка, в которой КП вращается. Одним из назначение фреймворка является обработка трапов (ошибок) таким образом, чтобы это не коснулось ОС и не остановило программу. По мне - это не очень, для меня Exception - самое оно для обработки ошибок.
Что еще не нравится в реализации КП в Блэкбоксе - здесь сделана сама прорисовка компонентов. И это работает медленно.

В GNAT, по моему, то же самое. Интерфейс строится на GTK. Поправьте меня, если я ошибаюсь.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение ev » 29.08.2006 18:44:17

оберон был доработан и сейчас есть Компонентный Паскаль

а потом он стал Active Oberon
и параллельная ветка ведется под .NET - Zonnon

и не будем забывать, что предназначение у языков похожее - скорость, надежность, удобство.... остальное - просто успешный пиар разработчиков... если завтра софт для истребителей на вижуал-бейсике напишут мы все дружно будет считать его гипер надежным языком? :)
ev
долгожитель
 
Сообщения: 1764
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение yeo » 30.08.2006 14:22:37

To:
STAKANOV писал(а):Вот затеял авнтюру. Пишу компилятор Ада, стандарта 83 на FreePascal


Предлагаю ознакомиться с проектом Gela:
http://www.ten15.org/wiki/AdaRu

Это тоже попытка создания компилятора Ада, но не на Паскале, а на Аде. Я вобщем-то приследую теже цели (авантюра, переносимость, эфективность и пр.). Отличие - не хочется мне влазить в генерацию кода. Думаю, что качественный генератор кода - задача сама по себе не тривиальная. А тут с самой Адой работы пахать - не перепахать. :D Занимаюсь этим уже более 3х лет. Кое что уже работает :D.

Поделил проект на две части, фронтенд - независимый от целевой системы и бакенд. Бакенд (он же генератор кода) пытаюсь прикрутить от проекта [url=http://www.ten15.org/]TenDRA (который сам по себе вещь интересная). Что собственно не мешает иметь несколько бакендов, например еще и такой, какой хочешь ты. Интерфейс к фронтенду четко определен, я реализовал (почти :)) ASIS (Ada Semantic Interface Specification) стандарт.

Собственно, предлагаю присоединиться к моему проекту. Уверяю, что написать синтаксис к yacc, это еще не все :shock:
yeo
незнакомец
 
Сообщения: 3
Зарегистрирован: 30.08.2006 13:57:57

Сообщение yeo » 30.08.2006 15:14:38

несколько комментариев.
STAKANOV писал(а):В настоящий момент существует лишь два живых компилятора Ada - ObjectAda и GNAT.


STAKANOV писал(а):Точнее есть только один коммерческий - ObjectAda.


Господь с Вами, компиляторов языка Ада, очень много. Просто большинство из них не дают на халяву. Их выпускают серьезные компании для серьезных клентов. http://www.adaic.com/compilers/comp-tool.html чтоб не быть голословным.

unC0Rr писал(а):Имхо всё же нет смысла заморачиваться над каждым процессором... проще генерировать код на си, который кто под какой хочет процессор скомпилирует.


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

GrayEddy писал(а):но отечественных пользователей Ada намного меньше, чем круг юзающих FPC. Wink


Позвольте спросить, откуда такая информация? :wink:

debi12345 писал(а):Надежность - это Assembler, ибо определяется сугубо надежностью транзисторов в процессоре, чипсете и памяти.


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

GrayEddy писал(а):Отечественый светоч в деле просвещения Ады потух - сайт www.ada-org.ru не работает Shocked


Расслаблялся за городом, а дома инет упал. Светоч не потух, просто небыл доступен :D

mr.denton писал(а):На самом деле у обоих проектов идеология одно - надежность любой ценой. И похоже оба основной массе народа не нужны, кроме горстки чудаков. Обидно.


IMHO во многих случаях выбор языка программирования остается за программистом. И если кому-то нравиться сидеть в отладчике больше чем писать программу, это его выбор.
yeo
незнакомец
 
Сообщения: 3
Зарегистрирован: 30.08.2006 13:57:57

Сообщение GrayEddy » 30.08.2006 16:46:47

> yeo

Да позитивно я настроен к старшим братьям :D
Что касаемо огранниченности круга пользователей - то так оно есть.
1. Это следует из ваших слов, что на халяву компиляторов не дают. Следовательно, ограничивает потенциальный выбор Ады как языка программирования. В этом плане компиляторы Паскаля находятся в более выгодном положении (есть и свободные, если и коммерческие - то ценовая политика вполне приемлема).
2. Живых отечественных форумов по Аде я видел маловато - самый оживленный был в фидо.

Нехорошо, однако, заниматься прозелетизмом :D
Хотя одного нашего товарища вы сбили с пути истинного (или наставили на истинный) :o
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение STAKANOV » 30.08.2006 18:47:25

yeo писал(а):Господь с Вами, компиляторов языка Ада, очень много. Просто большинство из них не дают на халяву. Их выпускают серьезные компании для серьезных клентов. http://www.adaic.com/compilers/comp-tool.html чтоб не быть голословным.

Я имел ввиду компилятор для IBM-совместимых ПК. Конечно есть множество компиляторов для множества платформ, но проблема в том, что я эти платформы возможно никогда не увижу даже. :roll: Я нацелился во вполне конкретный осязаемый сектор.
yeo писал(а):Собственно, предлагаю присоединиться к моему проекту

моя цель не так глобальна, она более проста и возможно по-этому шансов получить результат у меня больше :wink:
yeo писал(а):Уверяю, что написать синтаксис к yacc, это еще не все

я пошел другим путем - метод рекурсивного спуска (кажется это так называется)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение yeo » 31.08.2006 14:32:50

GrayEddy писал(а):Что касаемо огранниченности круга пользователей - то так оно есть.
1. Это следует из ваших слов, что на халяву компиляторов не дают.


Как-то не вижу связи между "халявными" компиляторами и кругом пользователей. Взять, к примеру, Delphy - бесплатным он никогда не был, а круг пользователей у него отнють не маленький. Или я ошибаюсь?

Да и Адских компиляторов хватает разных. Последний GNAT GPL - бери бесплатно. Не нравиться GPL, свободно бери GNAT из GCC, или gnat-3.15p. Хотите недорогой - есть такие: Janus/Ada 95 Personal Edition for Win NT/95 - 95 баксов.

STAKANOV писал(а):Я имел ввиду компилятор для IBM-совместимых ПК.

Так самая распространенная платформа, я думаю. Под Винду на PC, есть кроме GNAT-а, компиляторы ddci, Green Hills, Aonix, Janus. Под Linux - Rational Ada, Power Ada, это так, на вскидку, далеко не исчерпывающий перечень.

STAKANOV писал(а):моя цель не так глобальна, она более проста и возможно по-этому шансов получить результат у меня больше :wink:

Ответ принят, хоть и не понятен. Чем же ваш проект проще? Тем что я использую готовый кодогенератор, а вы будете писать свой?

Только не нужно обольщаться, как мои шансы, так и ваши стремяться к нулю, пока проектом занимается 1 человек. Оценачная трудоемкость разработки Ада компилятора около 50 человеко*лет. Люди столько не живут :twisted:
yeo
незнакомец
 
Сообщения: 3
Зарегистрирован: 30.08.2006 13:57:57

Сообщение STAKANOV » 31.08.2006 16:35:21

yeo писал(а):Ответ принят, хоть и не понятен. Чем же ваш проект проще? Тем что я использую готовый кодогенератор, а вы будете писать свой?

Моя цель одна аппаратная платформа (i386) и 3 ОС (Windows, Linux, FreeBSD). Я не пытаюсь сделать переносимый компилятор. (Я вообще считаю, что для Ады это бессмысленно.) Поэтому мой результат более осизаем и менее абстрактен. Т.е. я явно хочу синцу в руки. :wink: В Gela очень много мудренных вещей - ASIS, TenDRA и т.д. По-моему все намного проще. Проект Gela выглядит как научное исследование, а я всеголишь пишу компилятор. К тому же я пошел более простым и эффективнм путем - я не использую средств типа yacc. Я строю компилятор так, как это описано у Креншоу.

Но на рассылки проекта Gela я всеравно подписался :wink:

yeo писал(а):Только не нужно обольщаться, как мои шансы, так и ваши стремяться к нулю, пока проектом занимается 1 человек. Оценачная трудоемкость разработки Ада компилятора около 50 человеко*лет. Люди столько не живут

Спокойно! :lol: Это очевидно считал тот, кто деньги на это выбивал. Мне попадались в инете старые(под ДОС) компиляторы и интерпретаторы Ады написанные ОДНИМ автором. Я планирую закончить первую версию менее чем за год.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение pda » 31.08.2006 18:11:11

yeo писал(а):К примеру, как реализовать на Си контроль переполнения целочисленной арифметики?

Ада умеет насыщенную математику? М... Уважаю. :)
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение GrayEddy » 31.08.2006 23:16:47

> yeo
> Как-то не вижу связи между "халявными" компиляторами и кругом пользователей. Взять, к примеру, Delphy - бесплатным он никогда не был, а круг пользователей у него отнють не маленький. Или я ошибаюсь?

Все очень просто. Delphi является потомком Turbo Pascal. А стоил последний еще меньше, чем Delphi. Наследие Паскаля (а у Фортрана - еще поболее), знаете ли, очень внушительное, тем более что TP фактически стал стандартом де факто в мире Паскаля конца 80-начала 90. И Free Pascal, и Virtual Pascal первоначально создавались с оглядкой на TP. У первого в LCL много общего по именам классов и методов с VCL (реализация другая). У второго VCL просто портирован.
Плюс, стоит еще сказать спасибо нашим пиратам в деле популяризации Паскаля :lol:
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Пред.След.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru