Российский СОФТ

Автор Lunatik-k, 09.06.2022 01:21:30

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lunatik-k

Неизвестное импортозамещение.
В свое время в восьмидесятые годы на разных предприятиях шли неафишируемые разработки программных компиляторов в том числе и в космической отрасли.
Думаю они ведутся и сейчас.
При этом уже точно были в достаточном количестве компиляторы других импортных фирм.
Делалось это только потому, что разработчики не доверяли котам в мешке от зарубежных фирм и пытались создавать свои более оптимизированные компиляторы для БЦВМ.
Знаю точно, что разрабатывались даже урезанные оптимизированные компиляторы Паскаля.
При уже существовавших компиляторах для СМ-1420 и для персональных компьютеров.

Интересно какие из древних компиляторов существовали и существуют ныне, чисто для истории.
Ростки правды похоронят империю лжи.

ZOOR

Цитата: Lunatik-k от 09.06.2022 01:21:30Делалось это только потому, что разработчики не доверяли котам в мешке от зарубежных фирм и пытались создавать свои более оптимизированные компиляторы для БЦВМ.
Вы точно уверенны, что зарубежные фирмы разрабатывали компиляторы для отечественных БЦВМ?
Я зуб даю за то что в первом пуске Ангары с Восточного полетит ГВМ Пингвина. © Старый
Если болит сердце за народные деньги - можно пойти в депутаты. © Neru - Старому

Ну-и-ну

#2
Написание компилятора с известного, полноценного, но "обозримого" языка программирования (С без плюсов, Паскаль и т.п.) - описанная в учебниках задача умеренной сложности, на человекогод, плюс-минус. Оптимизирующие они все, вопрос - насколько, ну пусть особо оптимизирующий втрое сложнее. Далее нужны либы и хотя бы базовый отладчик. Тут можно легко потратить десять человеколет или даже пятнадцать. Итого, 20-30 программеров за год должны слепить Паскаль с либами и отладчиком "под ключ" пользуясь технологиями из конца 80-х - начала 90х.

Как-то это немасштабно совсем. Круче клона Пакмана, конечно, но всё равно нечем особо гордиться.

dmitryskey

Цитата: Ну-и-ну от 10.06.2022 02:47:09Как-то это немасштабно совсем. Круче клона Пакмана, конечно, но всё равно нечем особо гордиться.

Была история от Евгения Зимина как писали в 90-ых свой компилятор C++ на C, меньше 10 человеко-лет ушло для монструозного языка. Сейчас при наличии LLVM должно быть ещё быстрее, я не вижу причин придумывать своё промежуточное представление IR. Хочешь - пиши front end для своего уникального языка, хочешь - кодогенерацию для собственной аппаратной платформы для стандартных языков. В указанной истории использовали P-code. LLVM проект как академический, так и OSS, причём под BSD-like и Apache лицензией, я уж не знаю, по каким причинам безопасности такое нельзя использовать.

Дмитрий Виницкий

Знакомые писали плагины для корела в конце 90-х.
+35797748398

Lunatik-k

#5
Цитата: ZOOR от 09.06.2022 21:22:26
Цитата: Lunatik-k от 09.06.2022 01:21:30Делалось это только потому, что разработчики не доверяли котам в мешке от зарубежных фирм и пытались создавать свои более оптимизированные компиляторы для БЦВМ.
Вы точно уверенны, что зарубежные фирмы разрабатывали компиляторы для отечественных БЦВМ?

Ну для конкретной БЦВМ зарубежные фирмы не писали, но предварительную отладку многих прикладных программ проводилась на СМ-1420.
На стенд имитационного моделирования программа не могла попасть если её  досконально не обкатают на СМ-1420.
Само ядро для БЦВМ писалось на Ассемблере. А прикладные программы предполагалось писать на собственном компиляторе Паскаля, разработка которого велась. Окончания проекта не застал наступила эпоха Гайдара, на космос забили, пришлось уволиться.

Предварительную проработку имитационных моделей различных датчиков и устройств пытались создавать на обычных персоналках.
Ростки правды похоронят империю лжи.

Nitro

У нас на базе хотели Модулу-2 за полгода одним человеком написать, и это считалось само-собой разумеющимся...
Кстати не вышло ;(

Олег

Был такой компилятор СтранниК . Даже пытался пользоваться когда-то.
Типа вместо Canvas.Pen. .. там было Холст.Перо. .. Потом бросил, поставил не совсем легальную Дельфы , потом бесплатный Лазарус.
А в советское время начинал на Наири-2 ( транзисторная еще ЭВМ, 36-разрядная ), там свой язык, доморощенный.

Lunatik-k

#8
В то интересное время когда самого разрабатываемого компилятора Паскаля ещё не существовало, а велась только его разработка, чтобы не тормозить процесс разработки основного проекта, было принято решение.
Вести предварительную разработку и отладку прикладной математики на персональных компьютерах. Велась она на Turbo Pascal 5.0, хотя был уже 5.5 .
Разрабатываемые подпрограммы и модули писались с использованием строго ограниченного набора операторов, процедур и функций  TP 5.0 , которые должны были быть реализованы в собственном компиляторе Паскаля для БЦВМ.
Предполагалось, что разработанные таким образом функциональные части проекта,  с минимальными изменениями перенесутся на CМ-1420 , там пройдут  отладку и потом эти коды будут переноситься на стенд имитационного моделирования разрабатываемого проекта в котором была полноценная БЦВМ с интерфейсами управления и сбора информации с подключенными к ним имитаторами бортовых систем.

В качестве имитаторов бортовых систем были компьютерные математические модели. В этих к компьютерных математических моделях могли задаваться как штатная работа объекта так и создаваться нештатные ситуации.
Ростки правды похоронят империю лжи.

dmitryskey

#9
Ну по нынешним временам для такой задачи нужно просто тот же FPC собрать с поддержкой кодогенерации LLVM IR и потом написать генератор из IR в родные коды БЦВМ. Запускать сам компилятор на БЦВМ резона нет, проще и быстрее кросс-компиляцию делать, покрыв хорошим набором тестов кодогенератор для этой машины. Плюс можно тупо сравнивать результаты расчётов одной и той же программы на Паскале, выполненной на этой БЦВМ и обычной машине, своего рода интеграционные тесты получаются. Все это на порядок проще и надёжнее реализации компилятора даже такого довольно простого языка как Паскаль.

Тогда спокойно ведёшь полноценную разработку на рядовой персоналке с той же AstraLinux в Lazarus и потом просто переносишь код. А по мере того, как генератор из LLVM IR стабилизируется и получит всю нужную функциональность, можно использовать другие фронтенды LLVM - clang, flang, да хоть новомодный Rust.

softdev

Непосредственно с компиляторами я не работаю, но вот помню год назад переносил код с древнего компилятора от HP на gcc, в исходниках кажется 98 или 95 год стоял. От коллег слышу, что сейчас все современные компиляторы настолько стали совершенны, что это буквально надо быть специалистом экстра класса, что бы их перегнать. Мир буквально за последние 10 лет быстро изменился, есть даже нейромодули, которые на основе алгоритмо чтения могут на 50% ускорить скорость обработки данных (например последовательное чтение массива с итеративным увеличением по адресам, нейромодуль видит это и сразу подгружает крупными блоками), не знаю на каких процессорах эту технологию уже внедрили.

softdev

Цитата: Lunatik-k от 11.06.2022 12:38:43В качестве имитаторов бортовых систем были компьютерные математические модели. В этих к компьютерных математических моделях могли задаваться как штатная работа объекта так и создаваться нештатные ситуации.
Безумно интересная тема. Что такое компьютерная математическая модель? Программа которая по заранее заданному алгоритму скидывает в какой-то порт данные? Как тогда программные модули данными между собой обменивались?

ОАЯ

Ирония? Энтузиазм людей в построении мат. моделей подпитывала новизна и абстрактность общения с ЭВМ. Сама по себе такая деятельность в реальности была нудной и рутинной. Брали входные параметры, описывали предварительную обработку (для двоичных сигналов не требовалась), вычислялись формулы преобразования и пороговые переключатели выходных данных. Мат. модели были простые, не совершенные. И тем более сделать с ними можно было только не сложные отклонения в нормальной работе.
   Самый доходчивый пример анализ цифровых схем при помощи функций булевой алгебры и времязависимых регистров.

softdev

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

Lunatik-k

#14
Цитата: softdev от 11.06.2022 21:21:12
Цитата: Lunatik-k от 11.06.2022 12:38:43В качестве имитаторов бортовых систем были компьютерные математические модели. В этих к компьютерных математических моделях могли задаваться как штатная работа объекта так и создаваться нештатные ситуации.
Безумно интересная тема. Что такое компьютерная математическая модель? Программа которая по заранее заданному алгоритму скидывает в какой-то порт данные? Как тогда программные модули данными между собой обменивались?
Конечно эти математические модели были не совершенны, но попытки их создать были.
Могли строиться различные математические модели.
Эти модели строились на принципе условной многозадачности с разделением во времени и плоской области общего поля данных. Когда за конкретным модулем строго закрепляется определенный интервал времени, либо выделяется интервал времени планировщиком заданий. И работы процедур обработки прерываний.
1) Модель без задействования БЦВМ, когда один программный модуль мог поместить эти данные в общее поле данных и установить флаг поля, что данные готовы, а другой программный модуль в другой интервал времени мог считать эти данные при условии, что стоит флаг готовности данных.
2) Модель с задействованием БЦВМ, когда один программный модуль помещает эти данные в поле порта вывода данных на БЦВМ. БЦВМ обрабатывает эти данные и
 результаты возвращает в другой порт. Результат опроса которого помещается в общее поле данных, которое может опросить программный модуль математической модели исполнительного устройства.
Процесс имитации происходил примерно так.
Ростки правды похоронят империю лжи.

ОАЯ

Это больше похоже на сигнатурный анализ.

Lunatik-k

#16
Цитата: ОАЯ от 12.06.2022 16:20:45Это больше похоже на сигнатурный анализ.
Как бы это не назвалось, но эти программные модели позволяли имитировать физически отсутствующие датчики и устройства и хоть как-то проверять логику работы разрабатываемого программного обеспечения.
Ростки правды похоронят империю лжи.

softdev

Цитата: Lunatik-k от 12.06.2022 00:13:20
Цитата: softdev от 11.06.2022 21:21:12
Цитата: Lunatik-k от 11.06.2022 12:38:43В качестве имитаторов бортовых систем были компьютерные математические модели. В этих к компьютерных математических моделях могли задаваться как штатная работа объекта так и создаваться нештатные ситуации.
Безумно интересная тема. Что такое компьютерная математическая модель? Программа которая по заранее заданному алгоритму скидывает в какой-то порт данные? Как тогда программные модули данными между собой обменивались?
Конечно эти математические модели были не совершенны, но попытки их создать были.
Могли строиться различные математические модели.
Эти модели строились на принципе условной многозадачности с разделением во времени и плоской области общего поля данных. Когда за конкретным модулем строго закрепляется определенный интервал времени, либо выделяется интервал времени планировщиком заданий. И работы процедур обработки прерываний.
1) Модель без задействования БЦВМ, когда один программный модуль мог поместить эти данные в общее поле данных и установить флаг поля, что данные готовы, а другой программный модуль в другой интервал времени мог считать эти данные при условии, что стоит флаг готовности данных.
2) Модель с задействованием БЦВМ, когда один программный модуль помещает эти данные в поле порта вывода данных на БЦВМ. БЦВМ обрабатывает эти данные и
 результаты возвращает в другой порт. Результат опроса которого помещается в общее поле данных, которое может опросить программный модуль математической модели исполнительного устройства.
Процесс имитации происходил примерно так.
Понял вас. Но я уже таких терминов как "поле данных" не встречал/не застал. Сейчас кстати это все активно во всех самых захудалых коммерческих компаниях используется, наработана огромная методологическая база за последние лет 20. Так что на многих проектах, особенно связанных с финансами, инженеров занимающихся созданием среды для тестирования, моделей и т.д. гораздо больше чем инженеров занимающихся созданием самой системы. Мне доводилось видеть когда и конечные автоматы строят и верифицируют потоки прохождения данных и даже такую экзотику как "поиск аномалий" автоматический. Т.е. система работает, выдает потоки данных. а автоматизированные системы уже производят анализ в поисках где есть какие-то выбивающиеся из нормального распределения показатели, что-то вроде за последний год например у нас в среднем кол-во соединений было x, а тут за последнюю неделю вдруг идет прирост соединений, хотя все в норме, значит возможно идет атака на устройство из сети.

Lunatik-k

#18
Цитата: softdev от 13.06.2022 12:30:31
Цитата: Lunatik-k от 12.06.2022 00:13:20
Цитата: softdev от 11.06.2022 21:21:12
Цитата: Lunatik-k от 11.06.2022 12:38:43В качестве имитаторов бортовых систем были компьютерные математические модели. В этих к компьютерных математических моделях могли задаваться как штатная работа объекта так и создаваться нештатные ситуации.
Безумно интересная тема. Что такое компьютерная математическая модель? Программа которая по заранее заданному алгоритму скидывает в какой-то порт данные? Как тогда программные модули данными между собой обменивались?
Конечно эти математические модели были не совершенны, но попытки их создать были.
Могли строиться различные математические модели.
Эти модели строились на принципе условной многозадачности с разделением во времени и плоской области общего поля данных. Когда за конкретным модулем строго закрепляется определенный интервал времени, либо выделяется интервал времени планировщиком заданий. И работы процедур обработки прерываний.
1) Модель без задействования БЦВМ, когда один программный модуль мог поместить эти данные в общее поле данных и установить флаг поля, что данные готовы, а другой программный модуль в другой интервал времени мог считать эти данные при условии, что стоит флаг готовности данных.
2) Модель с задействованием БЦВМ, когда один программный модуль помещает эти данные в поле порта вывода данных на БЦВМ. БЦВМ обрабатывает эти данные и
 результаты возвращает в другой порт. Результат опроса которого помещается в общее поле данных, которое может опросить программный модуль математической модели исполнительного устройства.
Процесс имитации происходил примерно так.
Понял вас. Но я уже таких терминов как "поле данных" не встречал/не застал. Сейчас кстати это все активно во всех самых захудалых коммерческих компаниях используется, наработана огромная методологическая база за последние лет 20. Так что на многих проектах, особенно связанных с финансами, инженеров занимающихся созданием среды для тестирования, моделей и т.д. гораздо больше чем инженеров занимающихся созданием самой системы. Мне доводилось видеть когда и конечные автоматы строят и верифицируют потоки прохождения данных и даже такую экзотику как "поиск аномалий" автоматический. Т.е. система работает, выдает потоки данных. а автоматизированные системы уже производят анализ в поисках где есть какие-то выбивающиеся из нормального распределения показатели, что-то вроде за последний год например у нас в среднем кол-во соединений было x, а тут за последнюю неделю вдруг идет прирост соединений, хотя все в норме, значит возможно идет атака на устройство из сети.
Такие имитационные модели уже создавались в 1989 году, думаю что в каких-то фирмах они были созданы значительно раньше.
Ростки правды похоронят империю лжи.