LINUX.ORG.RU

История изменений

Исправление watchcat382, (текущая версия) :

Значит ли это, что на Аде можно писать коммерческий софт (в России)?

Не очень понял зачем вам экзотический вариант Гната, когда он есть в дистрибутивах линукса совершенно бесплатно. Ставите и пользуетесь. Будет только одна небольшая сложность - так как «истинно адских» готовых библиотек мало,то придется озаботиться написанием программных «переходников» для сишных библиотекам. Я писал когда-то под DOS еще,и компиляторы был закрытый - Meridian ADA.Это достаточно просто,в языке и компиляторе всё предусмотрено (pragma interface). Нет,надо не напрямую библиотечную функцию дергать из прикладного кода на Аде,надо именно переходник писать - так убережете себя от ошибок при передаче параметров за счет задействования встроенных проверок в языке. Будут некоторые сложности в тех местах где библиотека захочет вызывать ваш код (callback). Тоже нужно тщательно продумать «переходники». Но и это решаемо - нужно конечно изучить язык,что он может и умеет,и подумать как его возможности оптимально применить. Избегайте автоматически нагенерированного интерфейсного кода. Мне когда-то такое попадалось - написали скрипт,который взял сишный заголовочный файл и по нему нагенерировал адский интерфейсный пакет для библиотеки(кажется это для старого GTK было). Получилась полная фигня,абсолютно не соответствующая стилю и принципам Ады. Может слышали такую шутку,что встречаются научные работники которые на любом языке пишут как на привычном им фортране. Так вот на Аде тоже можно писать как на Си. Но не нужного этого делать,ибо к недостаткам Си добавятся сложности Ады,а достоинств того и другого не будет. Увы - понимание того как надо писать на Аде приходит только с практикой написания(и переписывания неудачно написанного). Впрочем - весьма быстро,за несколько недель.

Или есть нюансы?

Нюанс только в том,что придется потратить некоторые усилия для настройки себе рабочего места. Ну там в любимое IDE плагин с поддержкой адского синтаксиса установить так как по умолчанию его там конечно нет, разобраться с адской системой сборки - она существенно отличается от сишной, выбрать библиотеку GUI которую будет удобно использовать с Адой(я бы не брал сразу монстров типа QT). Вобщем, так чтобы что-то полностью готовое скачать,распаковать и сразу начать писать - нет,не получится. Немного повозиться надо.

Отправной точкой для понимания что для Ады есть готового свободно доступного и на основе чего можно пытаться начинать свой проект - может быть например эта страница: https://github.com/ohenley/awesome-ada Полезно для прочтения вот это: https://learn.adacore.com/courses/Ada_For_The_Embedded_C_Developer/index.html

Добвалю,что у Ады есть текст стандарта,написанный очень формальным,чуть ли не «юридическим» языком и достаточно сложный для понимания тем кто впервые переходит на Аду. Это скорее справочник для того кто уже на ней пишет. Начинать лучше с чтения книжек,в которых материал изложен более человекообразно. Есть кстати и русскоязычные,например вот: https://www.ozon.ru/product/yazyk-ada-dzhehani-nareyn-1596399678/ и вот: https://www.ozon.ru/product/yazyk-ada-v-proektirovanii-sistem-1666963796/ Там конечно первый стандарт Ада-83,но для понимания основ языка - в самый раз будет. Хотя конечно если абсолютно свободно читаете на английском то это можно и не читать,иностранных материалов хватит.

Исходная версия watchcat382, :

Значит ли это, что на Аде можно писать коммерческий софт (в России)?

Не очень понял зачем вам экзотический вариант Гната, когда он есть в дистрибутивах линукса совершенно бесплатно. Ставите и пользуетесь. Будет только одна небольшая сложность - так как «истинно адских» готовых библиотек мало,то придется озаботиться написанием программных «переходников» для сишных библиотекам. Я писал когда-то под DOS еще,и компиляторы был закрытый - Meridian ADA.Это достаточно просто,в языке и компиляторе всё предусмотрено (pragma interface). Нет,надо не напрямую библиотечную функцию дергать из прикладного кода на Аде,надо именно переходник писать - так убережете себя от ошибок при передаче параметров за счет задействования встроенных проверок в языке. Будут некоторые сложности в тех местах где библиотека захочет вызывать ваш код (callback). Тоже нужно тщательно продумать «переходники». Но и это решаемо - нужно конечно изучить язык,что он может и умеет,и подумать как его возможности оптимально применить. Избегайте автоматически нагенерированного интерфейсного кода. Мне когда-то такое попадалось - написали скрипт,который взял сишный заголовочный файл и по нему нагенерировал адский интерфейсный пакет для библиотеки(кажется это для старого GTK было). Получилась полная фигня,абсолютно не соответствующая стилю и принципам Ады. Может слышали такую шутку,что встречаются научные работники которые на любом языке пишут как на привычном им фортране. Так вот на Аде тоже можно писать как на Си. Но не нужного этого делать,ибо к недостаткам Си добавятся сложности Ады,а достоинств того и другого не будет. Увы - понимание того как надо писать на Аде приходит только с практикой написания(и переписывания неудачно написанного). Впрочем - весьма быстро,за несколько недель.

Или есть нюансы?

Нюанс только в том,что придется потратить некоторые усилия для настройки себе рабочего места. Ну там в любимое IDE плагин с поддержкой адского синтаксиса установить так как по умолчанию его там конечно нет, разобраться с адской системой сборки - она существенно отличается от сишной, выбрать библиотеку GUI которую будет удобно использовать с Адой(я бы не брал сразу монстров типа QT). Вобщем, так чтобы что-то полностью готовое скачать,распаковать и сразу начать писать - нет,не получится. Немного повозиться надо.

Отправной точкой для понимания что для Ады есть готового свободно доступного и на основе чего можно пытаться начинать свой проект - может быть например эта страница: https://github.com/ohenley/awesome-ada Полезно для прочтения вот это: https://learn.adacore.com/courses/Ada_For_The_Embedded_C_Developer/index.html