Ada_Ru форум

Обсуждение языка Ада

10 причин выучить Аду. Страница 2

Оставить новое сообщение

Сообщения

Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 12:27:08
> Пример того, как ничего страшного не случится если кто-то из динозавров внезапно вымрет.

Не уловил суть примера. Связь прецедент-антецедент не прослеживается. И хуже того, само
употребление слова "динозавр" в данном контексте является явным признаком тупого троллинга.

> А Ада таки вымирает, судя по тому же tiobe.

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

> Т.е. она безвозвратно ушла по тропе COBOL'a, и оттуда уже не вернётся. Вот С++ ещё трепыхается и
там еще есть какой-то шанс.

Бла-бла. Пока что мы видим как раз наоборот что к нам идут новые сектора индустрии, с которыми мы
раньше вообще не имели никакого дела, именно потому что они начинают утрачивать контроль за
сложностью своих систем, и хотят поучиться у авиации. Медицинские приборы, автомобили. Да
автомобили. У нас люди не вылезают из японских командировок, эта страна у нас на радаре несколько
лет назад отсутствовала вообще.

>  В наших АЭС вон, даже Оберон используют, для некоторых вещей. :-)

Ну и отлично.

> А в марсоходе нет Го ровно по той же причине, почему в Вояджере нет Ады :-) 

Понимаю вас. В каком году предлагаете вернуться к этой теме?

> Но напомню, что речь шла о том, что мол любой современный индустриальный язык невозможно знать
полностью.

Это просто старый дед-пасечник кошмарил молодёжь.

> Я просто показал контрпример - Go это современный промышленный язык программирования. Он обозрим.

Ну так и индустриальная ада прекрасно обозрима, и представляет из себя малююююсенькое подмножество
полной ады. Это же верно и для С++. Кто же будет полный язык высокого уровня использовать в
сертифицированных системах. Дураков нет.

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

Я ничего такого не считаю. Ада и С++ вполне взаимозаменяемы. Но статистика показывает, что проекты
на С++ имеют серьезные проблемы с обеспечением качества, и имеют более высокую стоимость жизненного
цикла на строку кода. Язык С++ выбирается теми, кто посмотрел tiobe. А так в целом - ССЗБ, были бы
деньги.

Повторюсь только, что у нас проблем нет, пока не вымираем)))
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 12:30:41
2017-01-19 15:15 GMT+03:00 Vadim Godunko vgodunko@gmail.com [ada_ru] <
ada_ru@yahoogroups.com>:

>
>
> On 01/19/2017 11:34 AM, Alexey Veselovsky alexey.veselovsky@gmail.com
> [ada_ru] wrote:
> >
> > Что такое "индустриальный язык"?
> >
> Наверное это то, что используется для проектов живущих не одно
> десятиление.
>
При такой постановке вопроса, "современные языки" - это языки которые были
20 лет назад и более. Эти современные языки не очень современны :-)


> И любой язык - проживший десятилетия - обрастёт таким
> количеством фигни...
>
Или не обрастает. Зависит же от того, как именно он эти годы жил и жил ли.
Если у нас уникальный язык под этот проект, и проект живет десятки лет и в
эти десятки лет ничего в проекте менять не нужно (встроенка, всё написано
без ошибок и так далее - так бывает), то он за эти десятки лет и не
изменится никак. Вон, язык на котором писано ПО (и которое обновлялось
относительно недавно, кстати) Вояджера отличненько сохранился с 77 года, и
ничем не оброс. Эталон!

Если же язык постоянно используют в новых проектах, то вот тогда он
начинает обрастать свежими тенденциями из софтверной индустрии, вон стало
модно в конце 80-х начале 90-х ООП в той самой современной программной
индустрии в С++ и других ЯП из за широкого распространения GUI и революции
в пользовательских интерфейсах для ПК - в Аду рраз, и завезли ООП, и
внедрили как получилось.


>
> В современной программной индустрии, которую наблюдают все, ничто не
> живет, скажем, больше трёх лет. Через три года (а всё чаше и чаще это
> шесть месяцев) хотите-ли или не хотите-ли, но Вас вынудят обновиться,
> улучшиться, проапдейтиться, проапгрейдиться и т.д. При такой "спешке"
> логично что ставятся иные задачи и цели. Тут не важно на чём писать,
> очень скоро это всё будет в помойке. Тут важно насколько быстро можно
> наструячить, снять бабки и забыть.
>
Эмм.. Нет. Обычно нужно еще и поддерживать и развивать. Кодовая база обычно
да, постоянно меняется (см. те же браузеры), но очень редко переписывается
полностью с нуля (см. например servo - как раз попытка переписать).

>
> В какой-то мере это относится и к марсоходам. Это единичное изделие.
> Второго такого не будет - да оно и не нужно.
>

Относительно марсоходов замечание - там (по крайней мере когда они по марсу
активно ползали) ПО обновлялось ежедневно. При этом любая ошибка в ПО могла
обернуться потерей марсохода.

Т.е. марсоход единичный, штучный, ПО - нет.
ksiby
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 12:33:20
Коллеги, мне бы хотелось услышать Ваше мнение почему надо изучать/осваивать язык программирования
Ada, а не наоборот. Как вариант – почему лично Вы применяете язык Ada. Если не удобно в публично –
напишите мне напрямую ksiby@... . Очень нужна “помощь  зала”.

С уважением, Сергей.
Email: ksiby<A>mediascan.by 
http://www.mediascan.by

From: Alexey Veselovsky alexey.veselovsky@... [ada ru] 
Sent: Thursday, January 19, 2017 2:56 PM
To: ada ru@yahoogroups.com 
Subject: Re: [ada ru] 10 причин выучить Аду

  

  А какая принципиальная разница между С++ и адой? вы их вроде через запятую как динозавров
перечислили, нет? 


Пример того, как ничего страшного не случится если кто-то из динозавров внезапно вымрет. А Ада таки
вымирает, судя по тому же tiobe. Т.е. она безвозвратно ушла по тропе COBOL'a, и оттуда уже не
вернётся. Вот С++ ещё трепыхается и там еще есть какой-то шанс. 
  В АЭС - напополам. Если система управления от ATOS то будет Ада, не сомневайтесь. Не знаю что на
марсоходах, но перед тем как по марсу ходить туда следовало долететь, и это вы будете смеяться тоже
ада. 


В наших АЭС вон, даже Оберон используют, для некоторых вещей. :-)

  Чего не просматривается от слова никак - так это всяких растов и го. Но когда у марсохода будет
своя страница в твиттере - это напишут на го, уверен)))

А в марсоходе нет Го ровно по той же причине, почему в Вояджере нет Ады :-) 

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

Если конечно вы считаете что промышленный язык программирования это только такой язык, который
используется в точности той же нише (а все другие ниши - это не промышленное использование вовсе),
что и Ада, и обладает всеми качествами присущими Аде, то да, увы, там только Ада, и тогда тезис
верен, ибо выраждается в тезис, что "любую современную Аду невозможно знать полностью".
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 12:40:42
>
>
> Бла-бла. Пока что мы видим как раз наоборот что к нам идут новые сектора
> индустрии, с которыми мы раньше вообще не имели никакого дела, именно
> потому что они начинают утрачивать контроль за сложностью своих систем, и
> хотят поучиться у авиации. Медицинские приборы, автомобили. Да автомобили.
> У нас люди не вылезают из японских командировок, эта страна у нас на радаре
> несколько лет назад отсутствовала вообще.
>

Японцы вообще оченно странные ребята. Особенно если вспомнить как они
программируют свои машины, ту же западающую педаль газа в Toyota вспомнить.
Хотя может они у вас на горизонте как раз и появились после того, как 16
миллиардов баксов выплатили... Ибо, блин, ну нельзя же НАСТОЛЬКО рукожопо
писать. Так даже вебщики на жабаскрипте не пишут. Вот на PHP - да, могут.

Кстати, о птичках, т.е. медицине - я бы может и рад бы попробовать Аду в
мед. приборе нашем, но увы, она туда никаким боком не влезет, ибо 8051 с
каплями ОЗУ и жесткими ограничениями по питанию. Так что только Си. Только
хардкор!
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 12:48:53
Ада неплохо подходит для расширения кругозора, чтобы узнать, что,
оказывается, в императивщине еще и вот так бывает. Возможность
задавать/создавать числовые типы в Аде хороша, ну и вообще, видно что
включали мозг при проектировании языка.

Другое дело, что изучать все нюансы Ады 2012 не нужно. Для расширения
кругозора может быть достаточно даже просто Ады 83.

Да, и еще из ценного - около Ады есть SPARK.

И еще одна штука, на которую в современных ЯП ну совсем уж забили - это
разделение модуля/пакета на спецификацию и реализацию. А ведь это сильно
помогает при чтении/навигации по исходникам прямо через скажем вебморду
гитхаба, без всяких IDE. Подобная штука есть только ещё в Modula (но оно уж
совсем малодоступно простому люду) ну и что-то похожее есть в ocaml (но там
это всё значительно хуже, и вообще, опционально. там с организацией кода
внутри модуля вообще есть некоторые странности из за изначальной
repl-ориентированной природы языка, вроде того, что можно в одном scope
переопределить функцию или переменную на что угодно еще, любого типа).

2017-01-19 15:33 GMT+03:00 ksiby@tut.by [ada_ru] <ada_ru@yahoogroups.com>:
Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 14:24:02
> При такой постановке вопроса, "современные языки" - это языки которые были 20 лет назад и более.
Эти современные языки не очень современны :-)

Да как это не современны? Когда значительной части ключевой инфраструктуры по 50 лет и более? Как
раз то, что построено "всего" 20 лет это по масштабам тамошних жизненных циклов - еще новое с
иголочки!

> Если же язык постоянно используют в новых проектах, то вот тогда он начинает обрастать свежими
тенденциями из софтверной индустрии, вон стало модно в конце 80-х начале 90-х ООП в той самой
современной программной индустрии в С++ и других ЯП из за широкого распространения GUI и революции
в пользовательских интерфейсах для ПК - в Аду рраз, и завезли ООП, и внедрили как получилось.

Вот только использование ООП в сертифицированных системах было запрещено до самого недавнего
времени, и наши клиенты только-только начинают изучать вопросы применимости "чуть-чуточки" ООП в
своих проектах. Потому что при сертификации там вылезают вопросы, о которых 99,99% людей, считающих
что знают ООП, не то что не задумывались, но вообще не слыхали. Весь этот СОЛИД и прочее
умереть-невстать. 

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

> Японцы вообще оченно странные ребята.

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

> Хотя может они у вас на горизонте как раз и появились после того, как 16 миллиардов баксов
выплатили...

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

> Ибо, блин, ну нельзя же НАСТОЛЬКО рукожопо писать.

Ну вот понимаете ли, - можно. Не думайте, что тойота уникальна. Оговорюсь, что именно *написанного*
кода в машинах относительно немного, в основном он сгенерированный. Так что пресловутая рукожопость
- она на уровне генераторов и на уровне моделей. В результате фактический код никто не знает и не
понимает. Собственно и эксперты в том судебном процессе на конкретную строчку кода со словами "тут
ошибка" после пяти месяцев копания указать так и не смогли, все что они сказали - это что код
абсолютно чудовищный, тестами не покрытый, контроль ошибок отсутствует, и там может водиться все
что угодно.

> Так даже вебщики на жабаскрипте не пишут.

Да ладно, я думаю количество дефектов в программе на джаваскрипт длиной 10 миллионов строк (да, 10
миллионов!) будет тоже будьте здоровы. Просто джаваскрипт никто в здравом уме не пустит жизнями
людей управлять.

> Кстати, о птичках, т.е. медицине - я бы может и рад бы попробовать Аду в мед. приборе нашем, но
увы, она туда никаким боком не влезет, ибо 8051 с каплями ОЗУ и жесткими ограничениями по питанию.
Так что только Си. Только хардкор!

Я конечно извиняюсь, но компилятор ады генерирует такой же ассемблерный код, как и си. Не
"похожий", а просто такой же, вплоть до распределения регистров. И у нас есть компилятор для
устройств уровня tinyAVR и им подобных. Проблем никаких нет, ибо понятно что "if (a == b) ...;" и
"if a = b then ... end if;" на целевую платформу отображаются идентичным образом. Естественно, при
этом используется рантайм с нулевым профилем, и соответственно ряд возможностей языка, требующих
поддержки времени исполнения, отключены или как минимум обрезаны. 


Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 14:31:03
> Коллеги, мне бы хотелось услышать Ваше мнение почему надо изучать/осваивать язык программирования
Ada, а не наоборот. Как вариант – почему лично Вы применяете язык Ada. Если не удобно в публично –
напишите мне напрямую ksiby@mediascan.by . Очень нужна “помощь  зала”.

Ну, главную лично для меня причину, которую я для себя определил в 1994 году и с тех пор не
передумал, я озвучил. Аду надо изучать, потому что занимаясь Адой ты почти наверняка будешь
заниматься важным для человеческой цивилизации делом. Даже если неблагодарная человеческая
цивилизация об этом не подозревает :) 
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 14:46:00
>
> > Коллеги, мне бы хотелось услышать Ваше мнение почему надо
> изучать/осваивать язык программирования Ada, а не наоборот. Как вариант –
> почему лично Вы применяете язык Ada. Если не удобно в публично – напишите
> мне напрямую ksiby@mediascan.by . Очень нужна “помощь зала”.
>
> Ну, главную лично для меня причину, которую я для себя определил в 1994
> году и с тех пор не передумал, я озвучил. Аду надо изучать, потому что
> занимаясь Адой ты почти наверняка будешь заниматься важным для человеческой
> цивилизации делом. Даже если неблагодарная человеческая цивилизация об этом
> не подозревает :)
>
>
Ну, это при условии если ухитришься найти и устроиться на вакансию где
используется Ада, имея 0 лет работы программистом на Аде (изучение в
свободное время - не в счет).
Dmitriy Anisimkov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 15:12:01
On 2017-01-19 20:46, Alexey Veselovsky alexey.veselovsky@... > Ну,
это при условии если ухитришься найти и устроиться на вакансию где
> используется Ада, имея 0 лет работы программистом на Аде (изучение в
> свободное время - не в счет). 

Бывает так, что работодателю до фонаря на чем ты будешь делать проект.
Лично у меня были такие работодатели 2 раза.
Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 17:27:10
> Ну, это при условии если ухитришься найти и устроиться на вакансию где используется Ада, имея 0
лет работы программистом на Аде (изучение в свободное время - не в счет). 

Насчет карьеры увы не подскажу, ибо сам являюсь выпускником ВМК МГУ, работающим во Франции, и это
неспроста. Мое общее впечатление от профильных для Ады отраслей в России - это что коллективы, в
них занятые, с одной стороны молодеют а с другой стороны переформатируются, поэтому в общем для
экспериментирования с ранее не используемыми технологиями условия стали получше, а наличие
профильного опыта не обязательно критично.

Я же говорю исключительно с той позиции, что занятие Адой настроит мозги в правильном (в моем
понимании) направлении, и заставит человека задуматься о конкретной категории проблем и профессий,
что уже само по себе неплохо. Легкой жизни - обещать не могу :)
Sergey I. Rybin
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 17:47:58
ksiby@... [ada_ru] wrote:
>
>
> Коллеги, мне бы хотелось услышать Ваше мнение почему надо
> изучать/осваивать язык программирования Ada, а не наоборот. Как
> вариант – почему лично Вы применяете язык Ada. Если не удобно в
> публично – напишите мне напрямую ksiby@...
> <mailto:ksiby@...> . Очень нужна “помощь  зала”.

Вы абсолютно правы. Простите, что спровоцировал флуд, но флуд в такой теме
неизбежен, к сожалению. Попробую помочь. Простите, что буду многословен и
буду повторяться, возможно, сформулирую больше 10 причин. Как говорил классик,
нет времени писать коротко :(

На мой взгляд, вопрос "почему лично Вы применяете язык Ada". Потому что практически
у каждого, здесь присутствующего - ситуация нестандартная, со своим набором обстоятельств.
У меня так получилось, что Ада оказалась первым языком, с которым я стал серьезно
работать (причем не как программист - а как разработчик тестов для трансляторов), и
после этого все остальные языки в меня просто не полезли. Уж больно бестолковыми
и убогими они казались после Ады. В лихое время - в начало 90-х - я попал в
проект по разработке С++-ного компилятора. Ухитрился успешно отработать руководителем
команды тестировщиков, не зная практически ничего про С++. Тогда казалось, что у
проекта были хорошие перспективы (иноземный заказчик), но для их реализации надо
было таки изучить С++. Так он в меня не полез. Чисто физически. Мозг отказывался
воспринимать этот кошмар. И это - в хреновейщей личной финансовой ситуации, когда
было не до выпендривания.

Так что попробую именно про 10 причин. Не стреляйте в пианиста - играет как умеет

--------
-- 1  --
--------
Всегда полезно знать и понимать историю развития своей профессиональной области. Ада
в программной инженерии - явление уникальное. Это единственный язык, который:
- был задуман как средство решения важной проблемы, причем существование и специфика
   этой проблемы были тщательно исследованы до того;
- был разработан систематически, начиная с выработки детальных технических требований
   к языку;
- был разработан в ходе тщательно и грамотно организованного международного конкурса;
- сразу возник на свет в виде американского национального стандарта, который очень быстро
   был утвержден как стандарт ISO;
- средства контроля соответствия реализаций стандарту были готовы раньше, чем возникла
   первая реалтзация нового языка;
- в результате у Ады никогда не было, нет и не будет диалектов и версий, слово "Ада" в
   каждый момент времени обозначала для всех одно и то же - то, что написано в стандарте
   языка, и каждый компилятор реалтзовывал (с точностью до ошибок) именно это;
- Эволюция языка осуществляется путем пересмотра его международного стандарта с близкой
   к 100% процентов совместимостью (созранение работоспособности существующего кода);

Какие-то из перечисленных пунктов справедивы и для других языков, но все вместе - только
для Ады,

-------
-- 2 --  
-------
Ада - это не столько язык программирования, сколько философия и идеология прогаммирования,
краеугольным камнем которых является забота о надежности программного обеспечения на всех
этапах его жизненного цикла, включая многолетнее сопровождение и модификацию. Практика показала,
что эта философия и идеология прекрасно себя проявляют на практике - время, проводимое в отладчике,
для программиста, работающего на Аде, в разы меньше, чем для других языков.

Существенным элементом Адской философии является то, что с точки зрения Ады и Ада-программиста
разработка программы - это не создание кода, а определение набора абстракций подходящего уровня,
которые соответствовали различным компонентам и аспектам решаемой задачи, с последующим
использованием
этих абстракций. Причем Ада нацеливает программиста на создание надежных и защищенных абстракций,
то есть тех, которые обладают ровно теми и ТОЛЬКО теми свойствами, которые от них требуются,
и НЕ ПОЗВОЛЯЮТ использовать себя некорректным образом. В результате большинство проблем, которые
в случае других языков выявляются в результате мучительных часов, а то и дней, проведенных в
отладчике,
в случае Ады будут быстренько выявлены компилятором на ранних этапах создания кода.

-------
-- 3 --
-------
С технической точки зрения с момента своего возникновения и для всех последующих ревизий стандарта
Ада является уникальным объединением в рамках одного языка технических средств и возможностей,
каждое из которых само по себе уникальным не является.


-------
-- 4 --
-------
Все современные индустриальные языки программирования предоставляют более-менее сопоставимые
возможности, различаясь не столько тем, *что* они позволяют делать, сколько тем, *как именно*
они это позволяют. Изучив Аду, вы получите знания о том, как еще может быть организована система
типов, модульность и раздельная компиляция, как могут быть реализованы парадигмы ООП по сравнению
с теми языками, что вы знаете. Так, например, Ада предоставляет полноценные возможности ООП, но
вместе с тем в языке нет синтаксически оформленного понятия класса, традиционного для ООП. Ада
показывает, что виртуальные операции совершенно необязательны для обеспечения динамического
полиморфизма,
для этого вполне достаточно диспетчирезации, которая может оказаться более эффективной. И т.д.
Подобное знание (а как еще может быть сделана хорошо известная мне вещь?) никогда не будет лишним.
Языки на самом деле беззастенчиво "воруют" идеи друг у друга. Сейчас об этом практически не говорят
уже, но С++ списал свои классы с пакетов Ады-83.

-------
-- 5 --
-------
На самом деле пункт 4 (про то, что все современные языки предоставляют более-менее одинаковые
наборы возможностей) - вранье. Ада умеет все, что умеют ее прямые конкуренты (С++, Java) - и еще
много чего полезного и интересного, чего ее конкуренты не умеют в принципе. В частности:
- высокоуровневые средства управления асинхронными процессами (как конструкции языка, а не
   библиотечные вызовы!) с возможностью выбора процессом вариантов поведения в зависимости от
   ситуации;
- иерархическая модульность, позволяющая минимизировать перекомпиляции и, что еще возможно,
   развивать существующий код, не разрушая защищенные абстракции;
- система ПОДтипов и связанный с ней механизм исключений;
- исполняемые спецификации и контрактное программирование (Ада 2012 - все эти пре- и пост-условия
   и разнообразные инварианты);

-------
-- 6 --
-------
Ада позволяет легко выделять технологические подмножества в зависимости от решаемой задачи.
Например,
не нужно вам ООП - так и забудьте о нем! И это не будет вам стоить никаких дополнительных неудобств.
При этом вы по-прежнему сможете создавать и использовать в своем коде надежные защищенные абстракции
Легко ли в С++ программировать, не используя классы?

-------
-- 7 --
-------
Несмотря на то, что Ада умеет существенно больше, чем конкуренты, сам язык устроен куда проще и
понятнее
конкурентов. Достаточно сравнить объемы стандартов Ады и С++. Более того, описание Ады "замкнуто" в
том
смысле, что не использует мифических понятий, подобных "пространству имен" в С++. Все особенности
семантики
языка описаны в терминах структурных компонент кода, то есть - синтаксиса, определенного БНФ.

Все предопределенное окружение Ада-программы также описывается в терминах языка - в виде набора
спецификаций пакетов, написанных на Аде. Для Ады ответ на вопрос "А что такое Integer?" - ровно
такой
же, как и на вопрос о любом другом типе, можно пальцем показать то место, где Integer определен.
А что такое int в С++?

--------
--  8 --
--------
У Ады - простой, понятный, легко читаемый синтаксис, который существенно снижает риск ситуаций,
когда случайная
опечатка приводит к тому, что код не становится формально неправильным, но существенно меняется
его семантика (если нужны примеры таких ошибок в С - скажите)

---------
--  9  --
---------
Выбор индустрии. Да, Ада возникла по инициативе Пентагона для проектов Пентагона. Но это уже -
далекая
история. Сейчас никто никого не заставляет использовать Аду. Однако не случайно же многие проекты в
областях,
где цена ошибки может быть не просто высока, а нериемлемо высока, выбрали и продолжают выбирать Аду?

---------
--  10 --
---------

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

--------
-- 11 --
--------
Не сочтите за рекламу, но если вы собрались попробовать Аду, то в вашем распоряжении - абсолютно
бесплатно
и абсолютно легально находится GPL-версия системы программирования GNAT, которая является не
демо-версией
с обрезанной функциональностью, а практически той же версией (с точки зрения реалтзованной версии
языка и базового инструментария), что используется в то же самое время в индустрии. Более того,
забесплатно
можно попробовать даже кросс-компилятор для ... вот забыл, как правильно платформа называется!
Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 18:12:02
> Более того, забесплатно
> можно попробовать даже кросс-компилятор для ... вот забыл, как правильно платформа называется!

Есть для arm-elf (STM32F4DISCOVERY и тому подобные) и вариант адаптированный для Raspberry Pi 2.
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 18:19:02
>
> Я конечно извиняюсь, но компилятор ады генерирует такой же ассемблерный
> код, как и си. Не "похожий", а просто такой же, вплоть до распределения
> регистров. И у нас есть компилятор для устройств уровня tinyAVR и им
> подобных. Проблем никаких нет, ибо понятно что "if (a == b) ...;" и "if a =
> b then ... end if;" на целевую платформу отображаются идентичным образом.
> Естественно, при этом используется рантайм с нулевым профилем, и
> соответственно ряд возможностей языка, требующих поддержки времени
> исполнения, отключены или как минимум обрезаны.


Может быть, но компилятора под указанную мною платформу просто нет и,
видимо, не будет.
Leonid Dulman
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 18:26:47
Мне кажется, что правильная постановка вопроса - Какую цену готовы заплатить заказчики за
использование модного языка в противовес надёжному. Давайте сравним два языка Эсперанто и
Английский. Какой лучше для международного общения и каким пользуются. 


      From: "Alexey Veselovsky alexey.veselovsky@... [ada ru]" <ada ru@yahoogroups.com>
 To: "ada ru@yahoogroups.com" <ada ru@yahoogroups.com> 
 Sent: Thursday, January 19, 2017 1:56 PM
 Subject: Re: [ada ru] 10 причин выучить Аду
   
    
А какая принципиальная разница между С++ и адой? вы их вроде через запятую как динозавров
перечислили, нет?

Пример того, как ничего страшного не случится если кто-то из динозавров внезапно вымрет. А Ада таки
вымирает, судя по тому же tiobe. Т.е. она безвозвратно ушла по тропе COBOL'a, и оттуда уже не
вернётся. Вот С++ ещё трепыхается и там еще есть какой-то шанс. 
В АЭС - напополам. Если система управления от ATOS то будет Ада, не сомневайтесь. Не знаю что на
марсоходах, но перед тем как по марсу ходить туда следовало долететь, и это вы будете смеяться тоже
ада.

 В наших АЭС вон, даже Оберон используют, для некоторых вещей. :-)

Чего не просматривается от слова никак - так это всяких растов и го. Но когда у марсохода будет
своя страница в твиттере - это напишут на го, уверен)))
А в марсоходе нет Го ровно по той же причине, почему в Вояджере нет Ады :-) 
Но напомню, что речь шла о том, что мол любой современный индустриальный язык невозможно знать
полностью. Я просто показал контрпример - Go это современный промышленный язык программирования. Он
обозрим.
Если конечно вы считаете что промышленный язык программирования это только такой язык, который
используется в точности той же нише (а все другие ниши - это не промышленное использование вовсе),
что и Ада, и обладает всеми качествами присущими Аде, то да, увы, там только Ада, и тогда тезис
верен, ибо выраждается в тезис, что "любую современную Аду невозможно знать полностью". 
#yiv1462694972 #yiv1462694972 -- #yiv1462694972ygrp-mkp {border:1px solid
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv1462694972 #yiv1462694972ygrp-mkp hr
{border:1px solid #d8d8d8;}#yiv1462694972 #yiv1462694972ygrp-mkp #yiv1462694972hd
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv1462694972
#yiv1462694972ygrp-mkp #yiv1462694972ads {margin-bottom:10px;}#yiv1462694972 #yiv1462694972ygrp-mkp
.yiv1462694972ad {padding:0 0;}#yiv1462694972 #yiv1462694972ygrp-mkp .yiv1462694972ad p
{margin:0;}#yiv1462694972 #yiv1462694972ygrp-mkp .yiv1462694972ad a
{color:#0000ff;text-decoration:none;}#yiv1462694972 #yiv1462694972ygrp-sponsor
#yiv1462694972ygrp-lc {font-family:Arial;}#yiv1462694972 #yiv1462694972ygrp-sponsor
#yiv1462694972ygrp-lc #yiv1462694972hd {margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv1462694972 #yiv1462694972ygrp-sponsor
#yiv1462694972ygrp-lc .yiv1462694972ad {margin-bottom:10px;padding:0 0;}#yiv1462694972
#yiv1462694972actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv1462694972
#yiv1462694972activity
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv1462694972 #yiv1462694972activity span {font-weight:700;}#yiv1462694972 #yiv1462694972activity span:first-child {text-transform:uppercase;}#yiv1462694972 #yiv1462694972activity span a {color:#5085b6;text-decoration:none;}#yiv1462694972 #yiv1462694972activity span span {color:#ff7900;}#yiv1462694972 #yiv1462694972activity span .yiv1462694972underline {text-decoration:underline;}#yiv1462694972 .yiv1462694972attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv1462694972 .yiv1462694972attach div a {text-decoration:none;}#yiv1462694972 .yiv1462694972attach img {border:none;padding-right:5px;}#yiv1462694972 .yiv1462694972attach label {display:block;margin-bottom:5px;}#yiv1462694972 .yiv1462694972attach label a {text-decoration:none;}#yiv1462694972 blockquote {margin:0 0 0 4px;}#yiv1462694972 .yiv1462694972bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv1462694972 .yiv1462694972bold a {text-decoration:none;}#yiv1462694972 dd.yiv1462694972last p a {font-family:Verdana;font-weight:700;}#yiv1462694972 dd.yiv1462694972last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv1462694972 dd.yiv1462694972last p span.yiv1462694972yshortcuts {margin-right:0;}#yiv1462694972 div.yiv1462694972attach-table div div a {text-decoration:none;}#yiv1462694972 div.yiv1462694972attach-table {width:400px;}#yiv1462694972 div.yiv1462694972file-title a, #yiv1462694972 div.yiv1462694972file-title a:active, #yiv1462694972 div.yiv1462694972file-title a:hover, #yiv1462694972 div.yiv1462694972file-title a:visited {text-decoration:none;}#yiv1462694972 div.yiv1462694972photo-title a, #yiv1462694972 div.yiv1462694972photo-title a:active, #yiv1462694972 div.yiv1462694972photo-title a:hover, #yiv1462694972 div.yiv1462694972photo-title a:visited {text-decoration:none;}#yiv1462694972 div#yiv1462694972ygrp-mlmsg #yiv1462694972ygrp-msg p a span.yiv1462694972yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv1462694972 .yiv1462694972green {color:#628c2a;}#yiv1462694972 .yiv1462694972MsoNormal {margin:0 0 0 0;}#yiv1462694972 o {font-size:0;}#yiv1462694972 #yiv1462694972photos div {float:left;width:72px;}#yiv1462694972 #yiv1462694972photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv1462694972 #yiv1462694972photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv1462694972 #yiv1462694972reco-category {font-size:77%;}#yiv1462694972 #yiv1462694972reco-desc {font-size:77%;}#yiv1462694972 .yiv1462694972replbq {margin:4px;}#yiv1462694972 #yiv1462694972ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv1462694972 #yiv1462694972ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv1462694972 #yiv1462694972ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv1462694972 #yiv1462694972ygrp-mlmsg select, #yiv1462694972 input, #yiv1462694972 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv1462694972 #yiv1462694972ygrp-mlmsg pre, #yiv1462694972 code {font:115% monospace;}#yiv1462694972 #yiv1462694972ygrp-mlmsg * {line-height:1.22em;}#yiv1462694972 #yiv1462694972ygrp-mlmsg #yiv1462694972logo {padding-bottom:10px;}#yiv1462694972 #yiv1462694972ygrp-msg p a {font-family:Verdana;}#yiv1462694972 #yiv1462694972ygrp-msg p#yiv1462694972attach-count span {color:#1E66AE;font-weight:700;}#yiv1462694972 #yiv1462694972ygrp-reco #yiv1462694972reco-head {color:#ff7900;font-weight:700;}#yiv1462694972 #yiv1462694972ygrp-reco {margin-bottom:20px;padding:0px;}#yiv1462694972 #yiv1462694972ygrp-sponsor #yiv1462694972ov li a {font-size:130%;text-decoration:none;}#yiv1462694972 #yiv1462694972ygrp-sponsor #yiv1462694972ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv1462694972 #yiv1462694972ygrp-sponsor #yiv1462694972ov ul {margin:0;padding:0 0 0 8px;}#yiv1462694972 #yiv1462694972ygrp-text {font-family:Georgia;}#yiv1462694972 #yiv1462694972ygrp-text p {margin:0 0 1em 0;}#yiv1462694972 #yiv1462694972ygrp-text tt {font-size:120%;}#yiv1462694972 #yiv1462694972ygrp-vital ul li:last-child {border-right:none !important;}#yiv1462694972 

   
Vadim Godunko
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 18:42:39
On 01/19/2017 09:19 PM, Alexey Veselovsky alexey.veselovsky@... 
[ada_ru] wrote:
>
> Может быть, но компилятора под указанную мною платформу просто нет и,
> видимо, не будет.
>
Всегда есть альтернатива :)

1. Портировать GNAT на 8051. Есть проекты, портировавшие C/C++ из GCC, 
т.е. кодогенератор есть. Осталось пошаманить с GNAT-ом соответствующей 
версии. Может Ada 2012 он не поймёт, но для имеющихся ресурсов 
контроллера оно и не подъёмно скорее всего.

2. Поменять платформу на что-то ARM образное, сейчас это модно, и 
намного проще будет GNAT готовый для него найти.
Alexey Veselovsky
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 19:35:03
>
> >
> > Может быть, но компилятора под указанную мною платформу просто нет и,
> > видимо, не будет.
> >
> Всегда есть альтернатива :)
>
> 1. Портировать GNAT на 8051. Есть проекты, портировавшие C/C++ из GCC,
> т.е. кодогенератор есть. Осталось пошаманить с GNAT-ом соответствующей
> версии. Может Ada 2012 он не поймёт, но для имеющихся ресурсов
> контроллера оно и не подъёмно скорее всего.
>
gcc не умеет 8051. Если нужен опенсорс Си-компайлер для 8051, то это SDCC.

2. Поменять платформу на что-то ARM образное, сейчас это модно, и
> намного проще будет GNAT готовый для него найти.
>
Если поменять на ARMобразное, то это удорожание устройства в 2-3 раза. Это
неприемлемо.
Кстати, а насколько GNAT умеет кодогенерить для чего-то типа Cortex-M0 или
Cortex-M3?
Sergey I. Rybin
Re: [ada_ru] 10 причин выучить Аду
2017-01-19 19:52:16
Может, вы новую тему откроете под это?

Alexey Veselovsky alexey.veselovsky@... [ada_ru] wrote:
kazakov1961
Re: 10 ÐÒÉÞÉÎ ×ÙÕÞÉÔØ áÄÕ
2017-01-20 01:25:11
Я этот текст не читал, но судя по тому что Вы пишете, то-ли авторы, то-ли читатели не понимают о
чем идет речь. 
 
Принцип Варвары не соблюдается никогда. Не существует нетривиальных под- или выведенных типов
данных для которых подстановка Лисковой выполняется. Это относится к абсолютно любым типам.
Например, подтипы Ады 83 элементарно нарушают принцип подставки Лисковой. Тоже относится к
неограниченным массивам, дискриминантным типам с выбором и т.д. А уж про подставимость void * в Си
я вообще молчу. 
 
Подставимость всегда контекстно зависима. Принцип выполняется в каждом конкретном случае
подстановки в корректной программе и НИКОГДА абсолютно. Это никоим образом не связано с
объектным-ориентированием. Требовать надо не неисполнимых принципов а статической верификации, т.е.
SPARK-а.
Vasiliy Fofanov
Re: [ada_ru] 10 причин выучить Аду
2017-01-20 13:10:57
> Может быть, но компилятора под указанную мною платформу просто нет и, видимо, не будет.

Так это ж совсем другой ракурс. Порт компилятора на новую целевую платформу нам приходится делать
регулярно, иногда это минимальные косметические изменения, иногда - разработка с нуля всего вплоть
до части gcc-шного бэкенда (или использования совершенно другого бэкенда, скажем JVM или LLVM,
такое тоже имело место). Соответственно и стоимость финальная разработки может иметь от трех нулей
до шести. Но это уже не вина/проблема языка программирования, а чисто вопрос денег и ресурсов. В
конечном результате это будет порт на любую данную платформу, который внешне будет выглядеть как
любой другой порт, и не уступать в производительности по ключевым параметрам тому бэкенду, что
внутри будет использоваться.

> Кстати, а насколько GNAT умеет кодогенерить для чего-то типа Cortex-M0 или Cortex-M3? 

Никаких проблем, стандартная поставка arm-elf gnatgpl2016 поддерживает необходимые инструкции.
Правда рантайма подходящего там нет, так что руки запачкать немного придется. Но должно работать.

Вот этот пример возможно будет полезен -
https://github.com/AdaCore/Ada_Drivers_Library/tree/master/examples/MicroBit
Dmitriy Anisimkov
Re: [ada_ru] 10 причин выучить Аду
2017-01-20 13:26:34
On 2017-01-20 01:35, Alexey Veselovsky alexey.veselovsky@... >
Кстати, а насколько GNAT умеет кодогенерить для чего-то типа Cortex-M0
> или Cortex-M3? 

Вот статейка есть про такую комбинацию, насколько я понял
http://turishev.ru/cgi-bin/book.pl?name=soft/sam4s
Новое сообщение:
< Страницы: 1 2 3 4

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти