Воспоминания о языках программирования в авиации (и не только)

Ближе всего к PDP-11 -- это Электроника-60
Да, было время, когда приходилось самому изображать компилятор из Ассемблера в эту, не к ночи будет упомянута, систему команд и архитектуру
А что там было не так с системой команд и архитектурой?
Насколько я помню, там был довольно удобный восьмеричный машинный код, на котором можно даже было писать напрямую, без использования ассемблера.
 
Реклама
Паскаль - это не только один язык, это целая группа языков, включая специализированные (типа Ада) для написания критических устойчивых систем. Развивается до сих пор (Delphi, Object Pascal). Там всё чётко и структурировано - все что надо есть для быстрого и грамотного написания программ.
Есть анекдот - опытный программист напишет простой код на С++ без ошибок и глюков за несколько часов, а такой же код на Паскале начинающий студент напишет за пол часа :)
1) насчёт Ада не знаю, так как не сталкивался с ним, но ведь Ада ещё при Тьюринги создали, а Паскаль гораздо позже. Если честно не знаю, какая между ними связь.
2) Касаемо delphi/object pascal, ну по сути это расширение pascal до полноценного ООП, нет там какого-то принципиально го отличия. Да и после ухода из Борланд в Эмбракадеро (или как там его, всегда язык ломал на нем), язык мязко говоря затух. В реальных проектах почти не используется, разве что в чем-то старом ещё на делфи 7м написанном
 
Ну например затем что программа написанная без всяких тредов на голом C работает примерно в 100 (СТО!!!) раз быстрее и жрет в 100 (СТО!) раз меньше памяти, чем новомодный код на питоне (пример прямо передо мной работает до сих пор, написана основа была в 1992 году еще). А код на Жабе всегда, без малейших исключений, истекает памятью, я еще ни единого исключения не встретил (даже во встроенных системах там память всегда утекает).

И были уже примеры когда хорошие программисты брали приложение которое занимало огромные объемы, писали свой вариант и он получался раз в 100 (не в 10) компактнее и быстрее. Последние примеры - код написанный когда то Бутенко и Флеровым. Так что для встроенных систем где нужна компактность - оно зачастую лучше на голом C писать и не извращаться. КОд на Вояджере до сих пор работает. Потому что его писали не быдлокодеры.

Язык Ада внедряли американские вояки решив что им нужно что то с типами. Изобрели верблюда в итоге (как известно верблюд это лошадь созданная комитетом по стандартизации). Им мало кто пользуется.
Питон сам по себе тормознутый скриптовой язык для автоматизации - но у него есть шустрые и многообразные библиотеки для математиков. Рабочий софт делающий что-то тяжелое без помощи библиотек на нем имеет смысл писать только если будет запущен ровно один раз.
JAVA/C#-языки со сборкой мусора, они сорят памятью на ссылочных типах, боксинге, вызовах делегатов и части системных функций. Если сотня MB мусорной памяти и легкие подфризы недопустимы то лучше вообще не связываться.
Производительность на типовом коде достаточная, но не блещет.
Самое производительное что есть - C++ в варианте "C с классами" - но им пользоваться чисто физически больно.
Паскаль - язык студентов-математиков, и все.
Rust - что-то такое изображал, но из комьюнити полезли такие ктулхи что сейчас народ от него держится подальше.Во избежание.
Напишите за полчаса-час какой-нибудь простой REST-Webservice на голом С, который будет обрабатывать HTTP-запросы от клиента, а для работы с данными использовать БД. На Яве я Вам такой напишу. И ничего там утекать не будет, просто сборщик мусора работает циклически, и между циклами может что-то накапливаться, но всё в итоге нормально убирается. Да и это процесс управляемый.
Забавно - но можно, одна библиотека для HTTP, еще одна для sql, парочка келлбаков. Как и везде.
 
PL/SQL от Oracle тоже на базе Ады создан. Это если кто непосредственно в базе данных Oracle процедуры пишет, а таких много. Я, например, иногда.🙂
О как. Век живи, век учись. PL/SQL это прям кусок моей жизни, а про то, что в основе Ада не знал :)
 
А если устройства отвечают не мгновенно, а с задержками, допустим по 5 секунд? Один тред будет последовательно опрашивать 1000 устройств 5000 секунд, т.е. примерно полтора часа. А 100 параллельных тредов управятся за 50 секунд, т.е. меньше минуты. Ну, а 1000 тредов так и вообще за 5 секунд.
А один который умеет в асинхронность - за 5.001 секунду. Треды не для ожидания периферии предназначены.
 
А что там было не так с системой команд и архитектурой?
Насколько я помню, там был довольно удобный восьмеричный машинный код, на котором можно даже было писать напрямую, без использования ассемблера.
Работа с переферией через "дупло старого дуба", то есть окна в памяти -- был сущий ад
 
1) насчёт Ада не знаю, так как не сталкивался с ним, но ведь Ада ещё при Тьюринги создали, а Паскаль гораздо позже.
Не так, посмотрите хотя бы в Вики.
Ада был создан в 1979-80 МО США специально для написания ПО для бортового оборудования.
2) Касаемо delphi/object pascal... В реальных проектах почти не используется, разве что в чем-то старом ещё на делфи 7м написанном
Несколько лет назад делал проект на SimpleSCADA, там в качестве внутреннего скриптового языка встроен Object Pascal. Так что, как оказалось, используется.
 
В обсуждении на полном серьезе сравниваются по скорости исполнения компилируемые и интерпретируемые языки 🤦

Мужики, не смешите вселенную. Вам ведь не придет в голову написать - "самолет летит быстрее вертолета, значит он круче". А здесь всерьез пишут "он быстрее, значит это круче". Как так можно?
 
Реклама
А один который умеет в асинхронность - за 5.001 секунду. Треды не для ожидания периферии предназначены.
Асинхронно тоже можно. Вопрос в том, за какое время обработаются 5000 коллбаков и не будет ли для каждого коллбака в итоге всё равно создан отдельный тред.
 
Кстати, не далее, как вчера получил рассылку с приглашением на Delphy Coding Camp или что-то типа того. Так что жив курилка.
 
Ну и, раз уж вспоминаем забытые языки: помнится в конце 80-х была волна Модулы-2. Самому его трогать не приходилось, но разговоров среди тогдашних студентов было много.
 
Всё правильно, языки высокого уровня затем и нужны, скрывать от программиста рутину.
Что "правильно"? Я пишу, что не скоростью кодирования простеньких задач нынче определяется скорость разработки. Нынешний программист вообще тратит на написание кода от силы процентов 10 своего рабочего времени.

Эти три строки, вполне возможно, транслируются в сотни тысяч строк на ассемблере,
Вообще не транслируются. Это интерпретируемый код.

"Жопа есть, а слова нет")
Допускаю, что паскалеподобные языки одновременно являются алголоподобными (с Алголом не знаком по причине его полной невостребованности, но знаю, что Паскаль основан на Алголе-60).
Жопа тут - в непонимании того, что Паскаль - во-первых, умышленная дебилизация Алгола-60 "для первоначального обучения", во-вторых, унаследовал те ошибки дизайна Алгола-60, которые уже были исправлены в Алголе-68. "Прародитель" современных "алголоподобных" языков программирования - Алгол-68, а не Паскаль.
 
Ну и, раз уж вспоминаем забытые языки: помнится в конце 80-х была волна Модулы-2. Самому его трогать не приходилось, но разговоров было много.
Я участвовал в написании на неё компилятора. На Алголе-68.

Но сам к тому времени предпочитал Си.

Модула-2 был более разумным по дизайну языком, чем Паскаль. Но не взлетел, поскольку к тому времени уже были лучшие альтернативы, в том числе и для первоначального обучения.
 
Асинхронно тоже можно. Вопрос в том, за какое время обработаются 5000 коллбаков и не будет ли для каждого коллбака в итоге всё равно создан отдельный тред.
Время обработки зависит только от функции обработчика, сам коллбак в этих условиях ничего не стоит. Если код тяжелый - оптимально выкинуть его на пул в виде задач - будет потоков по числу ядер и перезапускаться часто они не будут.
Ну разве что порядок обработки и поступления данных будет произвольным
Для тех кто запускает потоки тысячами в аду есть отдельный круг.
 
Модула-2 был более разумным по дизайну языком, чем Паскаль. Но не взлетел, поскольку к тому времени уже были лучшие альтернативы, в том числе и для первоначального обучения.
А какие доступные альтернативы в то время обеспечивали многопоточность под DOS?
 
Я участвовал в написании на неё компилятора. На Алголе-68.

Но сам к тому времени предпочитал Си.

Модула-2 был более разумным по дизайну языком, чем Паскаль. Но не взлетел, поскольку к тому времени уже были лучшие альтернативы, в том числе и для первоначального обучения.
Ну, значит, второй подход Никлауса Вирта к штанге был более удачным.:)
 
Реклама
Время обработки зависит только от функции обработчика, сам коллбак в этих условиях ничего не стоит. Если код тяжелый - оптимально выкинуть его на пул в виде задач - будет потоков по числу ядер и перезапускаться часто они не будут.
Ну разве что порядок обработки и поступления данных будет произвольным
Для тех кто запускает потоки тысячами в аду есть отдельный круг.
Весело может стать, когда рано или поздно они все ответят одновременно.
 
Назад