Мобильная версия
Войти

Все форумы
Авиационный
Сослуживцы
Авторские

Почему трудно найти программистов на Аде?

 ↓ ВНИЗ

1234

рядовой ВВС запаса
20.07.2007 14:52
Да, тема "съехала" - ничего страшного, такое частенько бывает при бурных обсуждениях... :-))) Эмоции поостынут - тема в русло войдёт. ;-)
Иванов
20.07.2007 15:26
да укакая нахрен разница - ада-не ада?
Кому суждено и есть желание - писать можно на любом языке. Можно даже на ворде с екселем макросы программировать...
Речь же идет не абстрактной аде.
Всегда для конкретного железа и для конкретных задач существуют конкретные языки и среды программирования.
Есть совместимость задач, компиляторов, типов данных, тех. поддержка.
Есть, конечно, тенденция использовать универсальные языки, универсальные подходы и тд и тп. И две эти концепции сосуществуют, но занимают разные экологические ниши.
На универсальных языках хорошо писать программы, которые могут себе позволить работать "в среднем". Т.е - не давать гарантии работать в каждом конкретном случае - Windows. большинство задач бизнеса, пользовательский интефейс.
Но если начать так писать задачи реального времени - это будет позный звездец...
А так, есть конкретное железо, конкретный компилятор, конкретный программный продукт, история создания, преемственность, версии - Да, 20 лет назад это писали на Аде и продолжают писать на ней до сих пор. Что в этом плохого?
Та же самая ситуация со многими другими системами - Z-OS, AS/400 (i-Series), Tandem..... Везде свои специфические языки. И даже если язык универсальный - все равно максимум усилий уходит на учет особенностей конкретной информационной системы и адоптацию к ним. И такая ситцация будет с любой программой, общающейся с внешним миром (I/O).
Т.е речи идет не о языке программирования, а о том, что нужны специалисты для решения вполне конкретных задач в вполне конкретной среде программирования...
Ада или не ада - это частность. Так сложилось исторически.
Not
20.07.2007 21:57
.aero:

А вот бы создать виртуальную машину реального времени для Java! Множественного наследования нет, типы приводятся как надо. А goto там есть? Сколько ни пишу - ни разу не юзал :)
=======
RTSJ (Sun Microsystems)
Поддержка систем реального времени (как жесткого так и мягкого) на Java
http://www.rtsj.org/
RTCE (HP, Microsoft) - аналогично.

Но учтите, это не совсем Java. Точнее совсем не, поскольку здесь есть полный контроль над железом, прерываниями, диспетчеризацие процессов, прямым доступом в память и стек, и т.д. Так что. не обольщайтесь и возьмите более подходящую среду разработки систем РВ.
Злой
20.07.2007 22:06
Да не платят за Аду особо денег. И работ на нее не найти днем с фонарем. Вот и не учит ея никто. Сходите на Dice.com и посмотрите сколько работ находится по ключевым словам Ada, C++, Java и сделайте выводы. Программисты в массе своей - народ прагматичный. Профессия этому способстует.
Not
20.07.2007 22:10
Интересующимся программированием надежных систем (в том числе бортового ПО) в Ada рекомендую заглянуть сюда
http://www.gnat.com
и сюда
http://www.adacore.com
Not
20.07.2007 22:16
Злой:

Да не платят за Аду особо денег. И работ на нее не найти днем с фонарем. Вот и не учит ея никто. Сходите на Dice.com
=======
Злой, работы в области mission-critical систем не публикуются на Dice. Есть специальные рекрутинговые компании, которые ищут соответствующих специалистов адресно, поскольку стоят они дорого, и отбор очень тщательный. Более того, в ряде случаев вашу кандидатуру даже не будут рассматривать, если она помещена на Dice, Monster и т.д.
Jolly Roger
20.07.2007 22:23
.aero:
# А вот бы создать виртуальную машину реального времени для Java!
Мягко говоря - бред. Ни жаба для систем РВ не подходит, ни, тем более, виртуальная машина. Так же, в общем, как и всякие там С вместе с плюсами.
Использование ADA заставляет думать, а это для большинства современных "программеров" непозволительная роскошь
.aero
20.07.2007 23:06
Jolly Rodger, а как же ссылки, которые привел Not?
Интересно, конечно, как совмещать уборку мусора и РВ, но надо почитать, что там написано - вдруг работает? Ведь для чего-то эти системы созданы, не просто так...
Chell
20.07.2007 23:12
2 Jolly Roger:
А что там пробовать, обращались. Аккурат из под F-4 на СМ'ах ;))) Другое дело - зачем это нужно?

Я работал с ФОРТРАН-ИВ на 1420 под RAFOS/TS в 1985г. так вот, чтобы прочитать что-то из CAMAC приходилось дописывать на ассемблере или йбазиком пользоваться. Теперь мне это, Сами понимаете, не упиралось. А Си понравился после того, как мы с другом (школьники были еще) заспорили - кто быстрее тетрис напишет (на той же ЭВМе). Он - на С, я - пытался его убедить, что F-IV лучше: Ессна - не убедил.

2 Unisys

Сейчас в первую очередь всем интересна скорость разработки, а не надежность.

Извините, не соглашусь! Что писАть! Я АСУ ТП занимаюсь, так вот мне надежность важнее.

С уважением!
TrapMakeR
20.07.2007 23:27
Jolly Roger,

«Использование ADA заставляет думать, а это для
большинства современных „программеров“ непозволительная
роскошь» — это для компаний роскошь, а для Великого
Программиста - бальзам на душу.
Jolly Roger
20.07.2007 23:36
2 Chell:
За давностью могу слегка наврать, но в системной библиотеке были ф-ции IPEEK/IPOKE, предназначенные для доступа к физической памяти, а, следоватедльно, и к регистрам В/В. То есть, принципиально вопрос решался, даже из-под TS (я, правда, работал с TSX+ родным). Ассемблер имел смысл только для ускорения операций, тк CAMAC имел довольно витиеватый способ обращения.
Тетрис, вестимо, быстрее пишется на С. Да и легче, пожалуй. Но и фортран бы сгодился.
2 .aero:
Немного в сторону ;) В свое время знакомился с расширениями РВ для WinNT. Продравшись сквозь описания понял, что эти "расширения" просто высаживали НТю до состояния фоновой задачи. Есть подозрение, что и в этом случае что-то подобное происходит. Плюс, некое усечение жабы.
Chell
21.07.2007 00:14
2 Jolly Roger:
но в системной библиотеке были ф-ции IPEEK/IPOKE
-----
Именно в ней! А не в синтаксисе языка!
----
OFF:
Сегодня, прочитав раздел проекта "Описание ПО" (за разработку ПО я еще не брался - но проект уже готов!) обнаружил следующую фразу (дословно):
"программа контроллера, запущенная под управлением ROM-DOS РЕШИТЕЛЬНО ОТВЕРГАЕТ ЕЁ УСЛУГИ, а так же услуги BIOS при обращении к средствам БАЗОВОЙ СИСТЕМЫ ВВОДА-ВЫВОДА...".
TrapMakeR
21.07.2007 00:18
Bread ;-)
Jolly Roger
21.07.2007 00:45
Chell:
# Именно в ней! А не в синтаксисе языка!
Так ведь в синтаксисе, скажем, Modula-2, ориентированного на работу с аппаратурой, явные конструкции для таких целей тоже отсутствуют. Все делается через модуль SYSTEM, что имхо весьма разумно.
# "программа ... РЕШИТЕЛЬНО ОТВЕРГАЕТ ЕЁ УСЛУГИ"
А что, нормально. Вот если б нерешительно отвергала, тоды ой ;)
Chell
21.07.2007 01:01
А что, нормально. Вот если б нерешительно отвергала, тоды ой ;)
-----------
Вот-вот. Если определить критерии нерешительности - можно браться за формулу любви!
Chell
21.07.2007 01:06
Иванов:
Всегда для конкретного железа и для конкретных задач существуют конкретные языки и среды программирования.
----------
Вашими устами да медку попить!
.aero
21.07.2007 18:42
Jolly Rodger, ну уборка мусора в современных JVM вроде бы и так в фоновой задаче. Учитывая, что у нас сейчас эпоха многоядерников, можно тогда уж целое ядро под сборку мусора выделить :) Правда все равно будут конфликты когда ядро-работник и ядро-дворник будут обновлять таблицу дескрипторов блоков памяти...
Jolly Roger
22.07.2007 00:55
2 .aero: РВ-задача со сборкой мусора? Нафик-нафик, пущай BG в своем доме такое ставит. Мы уж по старинке как-нить, с фиксированной памятью.
Алексей Погорелов
22.07.2007 02:23
Меня в МИФИ, на кафедре кибернетики, Аде учили. Практические занятия были на IBMообразных персоналках, какой компилятор Ады использовался - за давностью лет не помню (может, тот, кто меня учил, зайдёт в эту ветку и сможет более определённо сказать).
Считаю, что в подготовке хорошего программиста Аде непременно должно найтись место вне зависимости от того, будет он в дальнейшем работать на этом языке или нет. Потому как этот язык - наиболее последовательное выражение подхода "всё должно быть определено", самый далеко зашедший язык алголовского семейства.
Стандартом он является для работ, выполняемых по заказам правительства США. Для гражданского авиапрома тех же Штатов он необязателен. По крайней мере, известно, что существуют программные продукты Ханевелла для гражданских воздушных судов, написанные на Си (бесплюсовом).
Прелесть Ады в том, что она оставляет программисту слишком мало шансов что-нибудь наляпать. То есть в Аде максимальная вероятность того, что логическая ошибка, посаженная программистом вследствие его неаккуратности, превратится в ошибку синтаксическую, т.е. не даст превратиться программе в исполняемый код, пока ошибка не будет исправлена.
Образно говоря: на Си - работающая программа получается после третьей компиляции, а работающая как надо - после шестидесятого прогона скомпилированной программы; на Аде - работающая программа будет после тридцатой компиляции, но как надо заработает со второго раза.
Насчёт "качество или сроки разработки" - если говорить о приложениях, где работа программного обеспечения влияет на безопасность (а авиационные и космические относятся именно к таковым), то безошибочности тут должно уделяться первостепенное внимание.
рядовой ВВС запаса
23.07.2007 10:17
Интересно, а в наших авиационных и космических бортовых системах для программирования какие языки используются? И какие бортовые ОС (и есть ли вообще ОС на бортовых компьютерах)?
23.07.2007 10:27
писать можно на любом языке
Хе-хе
Нет.Сапоги должен делать сапожник, а программу писать на том языке, который приносит больше прибыли фирме.
Это все равно что сказать не врачу какая разницв чем резать больного на опервции, хорошо заточенной лопатой, маленьким топориком или скальпелем.
23.07.2007 10:27
писать можно на любом языке
Хе-хе
Нет.Сапоги должен делать сапожник, а программу писать на том языке, который приносит больше прибыли фирме.
Это все равно что сказать не врачу какая разница, чем резать больного на операции, хорошо заточенной лопатой, маленьким топориком или скальпелем.
SDL
23.07.2007 11:44
2 рядовой.....
Сейчас сйдя по Прософтовскому журналу на борту
применяются Октагоны (ПСюки). Раньше (20 лет назад)
работали на зеленоградских ПС-1000/3000.
По программтрованию на стендах: работали там аналоги
ПДП-11, писали вначале на ассемблере потом на Паскале.
В свою бытность в этой системе начинали работу по
унификации стендового ПО и переводе её на языки
верхнего уровня с приближением к объектно-ориентированным. А сейчас не знаю у нас это все
закончилось.
Not
23.07.2007 21:13
.aero:

Jolly Rodger, ну уборка мусора в современных JVM вроде бы и так в фоновой задаче. Учитывая, что у нас сейчас эпоха многоядерников, можно тогда уж целое ядро под сборку мусора выделить :) Правда все равно будут конфликты когда ядро-работник и ядро-дворник будут обновлять таблицу дескрипторов блоков памяти...
======
Вообще-то JVM реального времени отличается от JVM общего назначения как Феррари от автобуса. По отношению к сборке мусора есть следующие приемы:
1. Не собирать мусор вообще, т.е. память выделяется во время инициализации системы.
2. Существуют алгоритмы позволяющие детерменированно определить граничную стоимость сборки мусора.
3. Сборку мусора можно прерывать если основной поток в этот момент не работает с основной памятью, что вполне выполнимо на легких прерываниях.

Ну и т.д., есть много разных способов сделать держать латентность сборки мусора под контролем.
рядовой ВВС запаса
25.07.2007 10:26
Возвращаясь к главному вопросу темы: Почему трудно найти программистов на Аде?

Многие участники дискуссии склоняются к мнению, что из-за узости "ниши" программирования на Аде. Странно. Мало ли таких ОЧЕНЬ УЗКИХ ниш - не только в авиации и космонавтике, а вообще где угодно - в медицине, информационных технологиях, педагогике, инженерном деле. Но как-то естественный баланс соблюдается: специалистов очень узкой специализации (извиняюсь за каламбур) требуется очень мало, но и готовят соответственно мало, и желающих работать именно по этой специальности мало - таким образом, получается естественный баланс спроса и предложения (ну с точностью до плюс-минус в разных профессиях), и тотального дефицита специалистов не возникает. А почему-то с Адой такая дикая напряжёнка.

Может, программирование на Аде не доставляет удовольствия, как, например, на C/C++. Тут достаточно подробно обсуждался синтаксис Ады, его сравнение с другими языками. У меня лично - не знаю как назвать - претензия, соображение, мнение насчет Ады - её синтаксис как-то уж очень перегружен, причем не столько даже ИЗБЫТОЧНОСТЬЮ (которая действительно необходима для написания сверхнадёжных программ), а какими-то "финтифлюшками", синтаксическими безделушками, которые могут раздражать программиста.
TrapMakeR
25.07.2007 11:12
Нет пропаганды. Несколько лет назад я на Явовском форуме
компании Sun Microsystems в Интернете познакомился
с австралийцем, который на Аде программировал систему
УВД. Но Адой я заинтересовался только по прочтении этой
ветки, потому что австралиец мне не рассказывал про неё.
Вместо этого он хотел работать в Яве, потому что спрос
на неё больше. Когда заказчики объединятся и провернут
кампанию за использование Ады, все побегут её изучать.
Jolly Roger
25.07.2007 14:00
рядовой ВВС запаса:
# мнение насчет Ады - её синтаксис как-то уж очень перегружен
# какими-то "финтифлюшками", синтаксическими безделушками, которые могут
# раздражать программиста
А можно пример? Я не не слишком хорошо помню ее синтаксис, поэтому ничего не могу сопоставить с термином "финтифлюшки" ;) Вроде таких излишеств там не было. Многословный просто, даже на фоне той же модулы.
Меня вот раздражает синтаксис С++, особенно когда пытаешься разбирать или, что хуже, править чужие тексты.
2 TrapMakeR:
# Когда заказчики объединятся и провернут кампанию за
# использование Ады, все побегут её изучать.
Хочется верить, что такого не произойдет, иначе придется искать замену.
рядовой ВВС запаса
26.07.2007 11:08
Jolly Roger, хотел здесь привести пример кода на Аде, как раз такой "финтифлюшки" - не даёт публиковать. Типа, подозрение на вирус или на спам? ;-) Я уже сообщил в ветке "Администратору":
http://www.avia.ru/forum/1/4/9 ...
tango.golf
26.07.2007 12:28
Заинтересовал ваш вопрос потому что отчасти сам писал на Аде для систем авионики. А разве имеют место такие жалобы? IMHO освоить Аду для специалиста уже знакомого с C/C++ и ассемблером не составляет особого труда. Даже с ее диалектами.

Языки такого рода щелкаются как семечки. Здесь на мой взгляд важно не знание языка, язык можно быстро освоить, а навыки и опыт программирования для систем повышенного уровня критичности.
рядовой ВВС запаса
26.07.2007 12:33
Так жалобы не на то что "трудно освоить". Жалобы на то, что очень трудно найти программистов на Аде, по крайней мере в США. В американской компьютерной прессе постоянно об этом пишут.
tango.golf
26.07.2007 18:12
Это меня больше всего и удивляет. Потому что если искать человека то прежде всего спеца по программированию конкретных систем (или их компонентов), а не конкретно программера на Аде. Язык - это всего лишь инструмент. Хотя зная как работают HR-отделы в американских компаниях можно в принципе понять почему они себе на равном месте геморрой пытаются создать.
Not
27.07.2007 21:48
рядовой ВВС запаса:

В американской военной промышленности и авиакосмической промышленности (военной и гражданской) официальный язык программирования (ну или один из них) для бортовых систем - Ada (крайняя редакция 2005). И народ постоянно жалуется, что найти программистов на Аде - огромнейшая проблема, даже в США (в других странах их практически нет). А, собственно... почему?

Попробую объяснить со своей колокольни. Трудно найти не столько программистов на Ада, сколько программистов способных создать высоконадежное ПО реального времени работающее в военных или закрытых гражданских системах. Комбинация первых двух пунктов весьма изысканна, реальное время предполагает многопоточность, прерывания, гарантированнное время отклика. Требуемая надежность означает умение **формально** описать систему и доказать (хотя бы схематично) ее корректность, плюс культуру программирования, умение создавать алгоритмы/код понятные другим. Т.е. нужна серьезная математическая подготовка и опыт работы в большой команде. Ну и наконец, все мы знаем для чего создаются такие системы. Как правило требуется форма допуска (security clearance). Я уже говорил, что специалистов с комбинацией математики и хорошего опыта программирования вообще не так много. И все они идут на расхват. Так что военным остается не так много. Отсюда и дефицит.

И обратите внимание, я ни разу не упомянул ЯП Ада.
рядовой ВВС запаса
30.07.2007 10:53
Всё понятно. Тогда, наверное, тему было бы уместнее назвать "Почему трудно найти программистов для авиакосмической промышленности США?". Ну и обсуждать. ;-)
Мосвич115
01.08.2007 01:56
Да-с с господа авиаторы. Прочитал тему :
Теперь понимаю КАК писаются со смеха летуны, когда программеры начинают рассуждать об углах тангажа и скорости набегающего потока. Никогда не видел столько чепухи в одном месте.
Спасибо!
Начнем с простых вещей:
1. На АДУ учить программеров особо не надо это тот же Паскаль с некоторыми прибабахами. Любой нормальный программер в состоянии писать на любом языке.
2. Быстродействие вообще не проблема языка (транслятора) их все пишут неглупые люди и эффективность кода примерно одинакова. Все вопросы к процессору.
3. Видел я амерских кодеров. Кто знает винды тот не знает про дос и нортона и наоборот.
Но это выпускники хайскулов ихних. А человеку с хорошим университетским дипломом западло идти кодировщиком работать.

Теперь посложнее:
1. АДА хороша не своей хрошестью !!!! А тем, что это АНСИ стандартизованный язык . Транслятор с него работает НАДЕЖНО !!! И (насколько знаю) такие трансляторы пишутся в режиме 'открытого кода' (кто понимает ессно).
В оборнке, в авиации, в серьезных коммерческих проектах НИКОГДА не будут применяться микрософтовско-борландовские игрушки (ну может только для интерфейсной части и для не ответственных, в смысле безопасности, задач) . Потому что при разборе полетов, если люди пострадали или ракета не пошла, никто не сможет сказать: 'У нас винды зависли!'
Потому используют простые вещи: АНСИ-АДА, АНСИ-Си и.т.п.

: и забудьте про кросс-платформы - это из другой оперы.

Чуть не забыл: писал я на энтой АДЕ года полтора на Рокуэлл-Коллинз-Ильюшин в славные 90-е г.г.
С авиационным приветом.
Москвич (По четным железнодорожник).
Not
01.08.2007 04:35
Нда, давно так не смеялся. Насмешили-с. Ну что же, а теперь =разбор полетов=. Только не обижайтесь, лучше учитесь усерднее.

===
Никогда не видел столько чепухи в одном месте.
- Вот теперь ее увидят все.

===
Начнем с простых вещей:
1. На АДУ учить программеров особо не надо это тот же Паскаль с некоторыми прибабахами. Любой нормальный программер в состоянии писать на любом языке.
- Как минимумум программистов нужно учить, чтобы они не писали такую чепуху (см. ниже).

2. Быстродействие вообще не проблема языка (транслятора) их все пишут неглупые люди и эффективность кода примерно одинакова. Все вопросы к процессору.
- А про оптимизирующие компиляторы вы слышали? Про разные методы оптимизации, свойственные трансляторам с разных языков? Если следовать вашей логике, то программа оттранслированная Бейсиком будет работать с такой же скоростью как как и программа с языка Фортран или С.

3. Видел я амерских кодеров. Кто знает винды тот не знает про дос и нортона и наоборот.
Но это выпускники хайскулов ихних. А человеку с хорошим университетским дипломом западло идти кодировщиком работать.
- Т.е. для вас знание Нортона пропуск в хорошие программисты?

Теперь посложнее:
1. АДА хороша не своей хрошестью !!!! А тем, что это АНСИ стандартизованный язык .
-Серьезно? А про ANSI Basic вы слышали? Поинтересуйтесь.

Транслятор с него работает НАДЕЖНО !!! И (насколько знаю) такие трансляторы пишутся в режиме 'открытого кода' (кто понимает ессно).
- Если вы про Open Sourcе, то это не об Ада. Ада в большинстве реализаций - закрытый коммерческий продукт, что не портит ее качество, скорее наоборот. Второе, Оpen source эффективен только тогда, когда в проекте много участников. На Аде пишут очень немногие, что *автоматически* приводит к неэффективности приемов открытого кода т.к. нет критической массы программистов.

В оборнке, в авиации, в серьезных коммерческих проектах НИКОГДА не будут применяться микрософтовско-борландовские игрушки (ну может только для интерфейсной части и для не ответственных, в смысле безопасности, задач) .
- Уточняйте, о чем речь. Или по вашему сама Windows - это несерьезный коммерческий проект?

Потому используют простые вещи: АНСИ-АДА, АНСИ-Си и.т.п.
- т.е. для вас приставка ANSI синоним простоты?

Чуть не забыл: писал я на энтой АДЕ года полтора на Рокуэлл-Коллинз-Ильюшин в славные 90-е г.г.
- первые полтора-два года программист входит в курс дела. И только потом его допускают до ответственного кода. Вы там, в Ильюшине, не Тетрис гоняли, нет?

С авиационным приветом.
Москвич (По четным железнодорожник).
- Москвичам и железнодорожникам должно быть стыдно.
рядовой ВВС запаса
01.08.2007 09:52
Мосвич115, за высказанное мнение спасибо, только... АПЛОМБ - признак невоспитанности и низкого культурного уровня, вообще-то можно и без него выступать. На форумах (и вообще, и на нашем в частности, в том числе и на этой ветке) частенько идут очень жаркие споры, высказываются самые разные мнения. Есть мнение - выскажите спокойно, народ согласится или возразит. А то ведь с апломбом, особенно программистским, можно дойти до того... - вот как один, с позволения сказать, "коллега" на внутреннем корпоративном форуме ни разу никому не помог, ни на один вопрос по существу дела не ответил, зато гонору хоть отбавляй - все ответы такие:
- Ну вы как дети, честное слово!
- Впервые вижу ламера, который не знает, что такое DirectX!

И не обзывайте пожалуйста лётчиков "летунами". Летуны - это те, кто часто меняет место работы.
Алексей Погорелов
01.08.2007 16:37
"Летуны - это те, кто часто меняет место работы." - это жаргон кадровых служб.
Мне доводилось слышать слово "летун" от лётчиков по отношению к самим себе, там никакого негативного смысла в него не вкладывается.


По поводу "Ада - это тот же Паскаль". По-моему, это крайнее упрощение. Да, Ада - это язык из семьи алголоподобных и в какой-то мере наследует Паскалю. Но Модула-2 - это тоже потомок Паскаля, однако ж при этом Модула-2 - язык компактный, а Ада - громоздкий.
Насчёт скорости исполнения кода. От языка зависит, конечно. С Бейсиком некорректно сравнивать - для Бейсика транслятор всё-таки - интерпретатор, т.е. он при каждом выполнении программы пошагово разбирает её текст, тогда как для остальных обсуждаемых в этой ветке языков трансляторы - это компиляторы, один раз преобразующие программу в исполнимый код, а дальше уже этот код каждый раз выполняется.
Но что зависит от языка? Зависит то, что язык программисту позволяет и какими средствами это контролируется. Идеология языка Си: "Программист может делать всё, что угодно, и сам за это отвечает". Идеология языков паскалеподобных (наиболее концентрированно выраженная именно в Аде): "Надо не дать программисту сделать ошибку". Соответственно. Допустим, я обявляю массив из 10 элементов (номера от 0 до 9 или от 1 до 10 - кому как нравится), а где-то в ходе выполнения программы возникает обращение к 12-му элементу этого массива (это даже может быть не константа "12" в программе, а вычисляется значение некоей переменной, и при определённых условиях оно будет равно 12). Если программа на Си, то всё просто: берётся адрес первого элемента массива, прибавляется 12 умножить на размер элемента, и по получившемуся адресу идёт обращение к памяти. Автор так написал - стало быть, он знает, зачем ему это надо. На Паскале и всех подобных языках всё иначе: если есть массив из 10 элементов, то надо проверить: адрес равен единице или больше? адрес равен 10 или меньше? - если ответ на один из этих вопросов "нет", то имеет место исключительная ситуация, надо передавать управление обработчику оной. А вот если оба "да" - то тогда уж вычислять адрес, по которому обращаться...
Получается, что в языках, в которых заложены механизмы обеспечения надёжности программы, реализация этих механизмов надёжности вызывает дополнительные "накладные расходы" - памяти и быстродействия. Потому программы на Си работают быстрее и занимают меньше памяти.
рядовой ВВС запаса
01.08.2007 16:58
Тут еще один момент есть. Сверхнадёжные системы (вообще любые - языки программирования, системы управления станками или транспортом и др.) расслабляют пользователя, разучают его думать. Зачем напрягать мозги, если за тебя компилятор (устройство управления и т.д.) всё сделает? А потеря квалификации (даже с учетом повышенной надёжности техники) - это не есть хорошо.

Многие представители поколения программистов, выросших уже в эпоху сильно оптимизирующих компиляторов, пишут исходный код невысокого качества - а зачем стараться, если компилятор при кодогенерации всё равно переместит куски исполнимого кода куда надо? И неизменяемые вещи вынесет за пределы цикла, и исключительные ситуации обработает, и закроет все файлы, потоки и пр. когда надо.
Not
01.08.2007 20:41
рядовой ВВС запаса:
Зачем напрягать мозги, если за тебя компилятор (устройство управления и т.д.) всё сделает?
=======
Ну так и пишите на Ассемблере. Мозги будут радостно кипеть.
Не стоит путать несобранность (незакрытые дескрипторы, исключительные ситуации, неосвобожденная память и т.д.) с написанием читабельного кода. Иногда удобнее сформатировать тот же цикл таким образом, чтобы он хорошо читался вами и коллегами, зная при этом что транслятор все равно его развернет как ему удобно.

Думать же вам никто не запретит - размышляйете над алгоритмикой, над уменьшением вычислительной сложности, тут вам пока что ни один транслятор не поможет.
Мосвич115
01.08.2007 23:10
Не поняли значицца, обиделись :
Знаете, программист от ламера отличается тем, что первый читает то, что написано, а второй то, что ему кажется, что написано. (Не обижайтесь хоть тут, это я и к себе отношу :- ) )

++ Not: - А про оптимизирующие компиляторы вы слышали? Про разные методы оптимизации, свойственные трансляторам с разных языков? Если следовать вашей логике, то программа оттранслированная Бейсиком будет работать с такой же скоростью как как и программа с языка Фортран или С. ++
1. Вы правильно поняли мою мысль.
2. Про оптимизирующие компиляторы я слышал. Тогда же (я думаю) когда и Вы т.е. лет 20-цать назад.
И не бывает теперь НЕ оптимизирующих компиляторов.
3. Бейсик не припутывайте, а вот Паскаль, Си, Фортран таки да, будут.

++ Not: Т.е. для вас знание Нортона пропуск в хорошие программисты?++
Не передергивайте Not, не писал я этого. А писал, пытаясь объяснить, что:
1. Чел закончивший ихний колледж или хайскул (в данной теме ессно) получает очень узкое образование и при любых передрягах может сильно пострадать. В крупных фирмах их иногда сотнями увольняют, при закрытии проекта. Поэтому лучше сразу на ВЕБ-Дизайнера учиться.
2. Чел получивший приличное образование, кторому АДА как два байта об асфальт - может получить где-нить в банковской сфере денег поболее, чем в оборонке. Да и быть специалистом в очень узкой области (здесь, обратите внимание, область это не АДА, а конкретная техническая задача, м.б. ПО для авионики) ему не хочется.

++ Not: Серьезно? А про ANSI Basic вы слышали? Поинтересуйтесь++
Не буду !!!

++ Not: Если вы про Open Sourcе, то это не об Ада. Ада в большинстве реализаций - закрытый коммерческий продукт, что не портит ее качество, скорее наоборот. Второе, Оpen source эффективен только тогда, когда в проекте много участников. ++
А вот тут Вы все поняли через . . . э . . . э . . . Неправильно вобщем поняли.
Мы ведь говориле о языке программирования систем управления?
Не поленитесь перечесть лицензионное соглашение, Ваше с Билгейтсом. За что они отвечают?
Прочли? Правильно, ни за что не отвечают.
Дк вот Оpen source использутся в серьезных делах не для удобства ради, а для того чтобы можно было спросить с разрабочика ПО на разборе полетов. ДЛЯ ПРОКУРОРА!!!!
Неважно на каком языке вы пишите. Так получилось, что стандартом стала АДА (или АНСИ-Си).
Это потому что в программе не должно быть игр с объктами, COM-ами, переадресациями и разными директ-иксами. Потому - АНСИ, потому - стандарт. Чтобы можно было ГАРАНТИРОВАТЬ. Чтобы всякий (имеющий допуск) мог прочесть (а там миллионы строчек кода). Поэтому все ваши 'закрытые коммерческие продукы' ни-нах не годятся. По причине именно закрытости и неустойчивости работы кода.

++ Not На Аде пишут очень немногие, что *автоматически* приводит к неэффективности приемов открытого кода т.к. нет критической массы программистов++
Вас кто-то ввел в заблуждение.
В одном только Rockwell-Collins работали на Boeing 747 сотни людей. А с учетом других тематик, других компаний, с учетом сторонних тестировщиков и верификаторов - там много тысячь народу.

++ Not Уточняйте, о чем речь. Или по вашему сама Windows - это несерьезный коммерческий проект?
Уточнил. См. выше.

++ Not т.е. для вас приставка ANSI синоним простоты?++
Стандарта, sancta simplicitas, СТАНДАРТА. Хотя согласитесь, что язык без реализации возможностей объектного программирования слегка проще оного, но с возможностями.

++ Not первые полтора-два года программист входит в курс дела. И только потом его допускают до ответственного кода. Вы там, в Ильюшине, не Тетрис гоняли, нет? ++
Нет. Я не в Ильюшине работал, а в Rockwell-Collins под крышей ГосНИАС-а.
Тетриса под WAX/VMS не было. Не продвинулась тогда так далеко рука Россйского программиста.

++ Not Москвичам и железнодорожникам должно быть стыдно. ++
Них.
Мосвич115
01.08.2007 23:18
++ рядовой ВВС запаса
Мосвич115, за высказанное мнение спасибо, только... АПЛОМБ - признак невоспитанности и низкого культурного уровня, вообще-то можно и без него выступать. На форумах (и вообще . . . . ++
Расслабьтесь солдат, вольно. Не стоит вводить устав форумно-гарнизонной службы. Какие здесь споры бывают знаю, не первый год . . .
Апомб это когда 'учат летать самолеты', а я просто пытаюсь объяснить ситуацию.
Вот только придумывать эвфемизмы к слову 'чепуха' мне лениво.

++ рядовой ВВС запаса
Впервые вижу ламера, который не знает, что такое DirectX!++
Странная постановка. На то и ламер чтобы не знать :- )

++ рядовой ВВС запаса
И не обзывайте пожалуйста лётчиков "летунами". Летуны - это те, кто часто меняет место работы.++
А Вы не отдавайте хорошее русское слово в грязные руки.

Хотел часть, но пусть уж будет все:

Летун отпущен на свободу.
Качнув две лопасти свои,
Как чудище морское в воду,
Скользнул в воздушные струи.

Его винты поют, как струны...
Смотри: недрогнувший пилот
К слепому солнцу над трибуной
Стремит свой винтовой полет...

Уж в вышине недостижимой
Сияет двигателя медь...
Там, еле слышный и незримый,
Пропеллер продолжает петь...

Потом - напрасно ищет око:
На небе не найдешь следа:
В бинокле, вскинутом высоко,
Лишь воздух - ясный, как вода...

А здесь, в колеблющемся зное,
В курящейся над лугом мгле,
Ангары, люди, всё земное -
Как бы придавлено к земле...

Но снова в золотом тумане
Как будто - неземной аккорд...
Он близок, миг рукоплесканий
И жалкий мировой рекорд!

Всё ниже спуск винтообразный,
Всё круче лопастей извив,
И вдруг... нелепый, безобразный
В однообразьи перерыв...

И зверь с умолкшими винтами
Повис пугающим углом...
Ищи отцветшими глазами
Опоры в воздухе... пустом!

Уж поздно: на траве равнины
Крыла измятая дуга...
В сплетеньи проволок машины
Рука - мертвее рычага...

Зачем ты в небе был, отважный,
В свой первый и последний раз?
Чтоб львице светской и продажной
Поднять к тебе фиалки глаз?

Или восторг самозабвенья
Губительный изведал ты,
Безумно возалкал паденья
И сам остановил винты?

Иль отравил твой мозг несчастный
Грядущих войн ужасный вид:
Ночной летун, во мгле ненастной
Земле несущий динамит?

1910 - январь 1912 Автор ессно известен.

Москвич (по нечетным старый старший лейтенант, РВСН)

P.S.
А может таки выделить загончик такой, веточку типа
'Бортовой софт: чё и откуда'

Not
02.08.2007 01:21
И не бывает теперь НЕ оптимизирующих компиляторов.
3. Бейсик не припутывайте, а вот Паскаль, Си, Фортран таки да, будут.

- 1) Бейсик хоть и интерпретатор изначально, но давно уже преобразовывает исходную программу в байт-код виртуальной машины, равно как и например Java. Который в процессе преобразования оптимизируется. Потому и приплел.
2) производительность программ одинаково написанный на Си и Фортран отличается, и отличается существенно. Поскольку в Фортране нет указателей, и компилятор это знает. Что позволяет использовать более мощные методы оптимизации, нежели в Си. Вы конечно можете ручками все это самостоятельно сделать, переменные лишние убрать, циклы развернуть, но кто кроме вас сможет это прочесть?
=======

Чел получивший приличное образование, кторому АДА как два байта об асфальт - может получить где-нить в банковской сфере денег поболее, чем в оборонке. Да и быть специалистом в очень узкой области (здесь, обратите внимание, область это не АДА, а конкретная техническая задача, м.б. ПО для авионики) ему не хочется.
-Уточните что вы понимаете под приличным образованием. Поскольку бакалавр в Computer Science, или даже Mаster в оной еще не гарантия качества, ибо многое из того, что связано с высоконадежным ПО в реальном времени как правило дается дополнительно и опционально.
=======

Неправильно вобщем поняли.
Мы ведь говориле о языке программирования систем управления?
Не поленитесь перечесть лицензионное соглашение, Ваше с Билгейтсом. За что они отвечают?
Прочли? Правильно, ни за что не отвечают.
Дк вот Оpen source использутся в серьезных делах не для удобства ради, а для того чтобы можно было спросить с разрабочика ПО на разборе полетов. ДЛЯ ПРОКУРОРА!!!!
- Вообще термин Open Source означает свободное ПО открытое для модификации кем угодно. Видимо вы имели ввиду ПО открытое для просмотра заинтересованными и специально допущенными до этого лицам.
=======

Это потому что в программе не должно быть игр с объктами, COM-ами, переадресациями и разными директ-иксами. Потому - АНСИ, потому - стандарт. Чтобы можно было ГАРАНТИРОВАТЬ. Чтобы всякий (имеющий допуск) мог прочесть (а там миллионы строчек кода).

-Стандарт ANSI НЕ гарантирует читабельность равно как не гарантирует что вы там цепляете из своей программы. Стандарт ГАРАНТИРУЕТ, что два разных компилятора смогут оттранслировать ваш исходник и получить эквивалентные программы. И не более. Что вы там используете, какие хаки, то стандарта языка не касается.
=======

Поэтому все ваши 'закрытые коммерческие продукы' ни-нах не годятся. По причине именно закрытости и неустойчивости работы кода.
-Чепуха. Поскольку в закрытый продукт для высоконадежных систем (не приплетайте сюда закрытые продукты вообще) изначально сделан и сертифицирован исходя из жестких требований. Код закрытого продукта открывается для специально допущенных представителей заказчика.
=======

Вас кто-то ввел в заблуждение.
В одном только Rockwell-Collins работали на Boeing 747 сотни людей. А с учетом других тематик, других компаний, с учетом сторонних тестировщиков и верификаторов - там много тысячь народу.
- смотрите выше, про Open Source
02.08.2007 01:28
На мой взгляд, C# without unsafe или та же Java наиболее всего подходит для написания высоконадёжного ПО. Ada это тот же Pascal.

Чего не хватает для сверхнадёжности C#, так это объявление исключений, которые кидает метод, и отстутствие в языке требования наличия catcн-блока для каждого исключения.

Если ещё систему реального времени в язык впаять тогда как раз для авиастроения.
Not
02.08.2007 01:51
Аноним

Если ещё систему реального времени в язык впаять тогда как раз для авиастроения.
=======

В этот самый момент из Java и C# и вылезут все черти. Смотрите начало ветки для определения чертей.
фактор
02.08.2007 11:06
http://forth.gsfc.nasa.gov/ Космические применения Форта в NASA. и зря говорят что форт - неактуален
Мосвич115
03.08.2007 00:21
++- 1) Бейсик хоть и интерпретатор изначально, но давно уже преобразовывает исходную программу в байт-код виртуальной машины, равно как и например Java. Который в процессе преобразования оптимизируется. Потому и приплел.++
Блин, юзал я тот Бейсик в 98-м в виде MS VB - Не_помню_номер_. Дк это транслятор оказытся, спасибо барин, просветили.
А что такое 'байт-код виртуальной машины', откуда вы эту хрень взяли???

++ Поскольку в Фортране нет указателей, и компилятор это знает .++
Блин, вы хоть понимаете, что если процу надо перемножить 100 чисел дк он за каждым полезет в память. И пох ему - с указателями вы писали прогу или без (забудем на время про кэш) .

++ Чел получивший приличное образование . . .++
Massachusetts Institute of Technology, типа.

++ Вообще термин Open Source означает свободное ПО открытое для модификации кем угодно. Видимо вы имели ввиду ПО открытое для просмотра заинтересованными и специально допущенными до этого лицам..++
Я писал, почему открытый код, и зачем оно надо. Вы не поняли. Ваши проблемы. А за терминологию спорить лениво.

++ . Стандарт ГАРАНТИРУЕТ, что два разных компилятора смогут оттранслировать ваш исходник и получить эквивалентные программы. И не более. Что вы там используете, какие хаки, то стандарта языка не касается.++
Вы тормоз или что? Причем тут ДВА компилятора. Один!!!!
Один, не допускающий неоднозначной трансляции исходного кода!!

++Чепуха. Поскольку в закрытый продукт для высоконадежных систем (не приплетайте сюда закрытые продукты вообще) изначально сделан и сертифицирован исходя из жестких требований. Код закрытого продукта открывается для специально допущенных представителей заказчика. ++
Вопрос предыдущий: Вы тормоз? Вы поняли, что написали? Какие жесткие требования? Кем поставлены? Кто заказчик? Ктооооо сетифицирует??? Вы хоть строчку кода в жизни написали??
Jolly Roger
03.08.2007 00:50
2 Мосвич115:
# Блин, юзал я тот Бейсик в 98-м в виде MS VB - Не_помню_номер_. Дк это
# транслятор оказытся, спасибо барин, просветили.
А что, MS единственный и неповторимый? Кроме них никто секретом васика не владеет? Изделие некоего Ф.Кана даже ехе-шник варить умело. Компилятор, однако.
А версия васика для pdp-11 умела сохранять программу в виде весьма отличном от исходного текста. Байт-кодом это назвать было еще нельзя, но уже близко.
# А что такое 'байт-код виртуальной машины', откуда вы эту хрень
# взяли???
Вы всерьез уверены, что умнее Вирта, к примеру? А он даже паскаль в байт-код компилировал.
Как запущено то ...
Not
03.08.2007 02:16
Ууу, кАкАя экспрессия!
Ну держите и не обижайтесь если ногу отдавит :)
=======
Мосвич115:
Блин, юзал я тот Бейсик в 98-м в виде MS VB - Не_помню_номер_. Дк это транслятор оказытся, спасибо барин, просветили.
- Ну что вы такой упертый, батенька? Вы же двадцать лет программируете, да? Поисковыми системами пользоваться умеете? Ну так наберите в Гугле Visual Basic Compiler. Или, если лень, сходите по этой ссылке: http://support.microsoft.com/D ...
=======
А что такое 'байт-код виртуальной машины', откуда вы эту хрень взяли???
- Это язык, который управляет виртуальной машиной, которая исполняет программу, скомпилированную из вашего нелюбимого Бейсика, Java, C# и.т.д.
=======
Блин, вы хоть понимаете, что если процу надо перемножить 100 чисел дк он за каждым полезет в память. И пох ему - с указателями вы писали прогу или без (забудем на время про кэш) .
-Правильно, полезет. Вопрос лишь - надо ему туда лезть, или нет. Предположим, ваш массив набит единичками и никто его не меняет. Если компилятор сможет доказать факт его неизменности, то ему достаточно перемножить эти самые единички и в качестве исполняемого кода записать результат в левую часть присваивания. Догадались, что это будет тоже единичка? Т.е. в итоге одна операция записи константы на каждое число. Если же это Си, то ему еще нужно проверить, а не лезет ли кто нибудь в этот массив по абсолютной ссылке и не меняет-ли содержимое массива посредством прямого доступа в память. И если он этот факт доказать не сможет, то извиняйте, придется ему и в память лазать два раза, и единички перемножать.
=======
++ Чел получивший приличное образование . . .++
Massachusetts Institute of Technology, типа.
-Ага, хорошая школа, но ничего не гарантирует если студент лентяй. Я имел удовольствие интервьюировать PhD в области AI, как раз из MIT. Парень не смог мне объяснить разницу между дизъюнктивной и коньюнктиврой нормальными формами. Вас даже спрашивать не буду.
=======
Вы тормоз или что? Причем тут ДВА компилятора. Один!!!!
- при том, что СТАНДАРТ появляется тогда, когда есть больше одного производителя компилятора и потребителям оных важно знать, что их исходный текст будет исполняться одинаково вне зависимости от производителя компилятора. Если производитель говорит, что у него ANSI C, значит все в порядке, открываем спецификацию и пишем в пределах синтаксиса определенного этим стандартом.
=======
Один, не допускающий неоднозначной трансляции исходного кода!!
- Простите меня, но неоднозначность трансляции определяется не стандартом, а 1) непротиворечивой грамматикой, 2) формально корректным оптимизатором, 3) формально корректным кодогенератором. Стандарт тут не причем, взгляните на курс компиляторов, не забыв при этом повторить конечные автоматы.
=======
Вопрос предыдущий: Вы тормоз? Вы поняли, что написали? Какие жесткие требования? Кем поставлены? Кто заказчик? Ктооооо сетифицирует???
-Пример из жизни: продукт TCAS. Заказчик: FAA. Производител: MITRE. Формальное доказательство корректности алгоритма - CSAIL (MIT). Сертификация - FAA. Жесткие требования ставятся к 1) корректности алгоритмов. 2) Соответствия кода алгоритмам. 3) применением сертифицированных операционной системы и инструментов разработки.
Надеюсь что такое TCAS вам на этом форуме объяснять не нужно? И про CSAIL вы должны знать, раз упомянули MIT.
=======
Вы хоть строчку кода в жизни написали??
-Мнооого строчек кода ;-) И вам немного не повезло, я занимаюсь как раз проблемами оптимальной трансляции и формальной верификации кода. Так что задавайте ваши вопросы :)
=======
-А вы правда работали в Rockwell-Collins? ;-)
03.08.2007 02:16
Вопрос в надёжности платформы. Чем проще и старее платформа, тем выше её надежность. Вот и применяют Аду и Фортран.
Unisys
03.08.2007 11:18
-- Аноним:

-- Вопрос в надёжности платформы. Чем проще и старее платформа, тем выше её надежность. Вот и применяют Аду и Фортран.

Неоднозначный вывод. С появился раньше, чем ADA, но позже Fortran. С точки зрения вылавливания блох в программе компилятором, ADA делает значительно больше.

Пример на С, конструкция:

b-0;

С точки зрения синтаксиса все четко, с точки зрения отлавливания ошибки - мрак, от конструкции b=0; визуально не отличается, ловится только пошаговой отладкой.

Самая старая платформа на текущий момент - мэйнфрейм, не важно IBM или Unisys, который ex. Burroughs. Системы не просто сложные, а архисложные. Но надежные, хотя и дорогие. Хотя.. Мы не настолько богаты, чтобы покупать дешевые вещи.
Про Unisys, который ex. Sperry-Univac сказать ничего не могу.

1234




 

 

 

 

← На главную страницу

Чтобы публиковать комментарии, вы должны войти на сайт.
Все форумы
Авиационный
Сослуживцы
Авторские

Реклама на сайте Обратная связь/Связаться с администрацией
Рейтинг@Mail.ru