вторник, 26 мая 2015 г.

[prog.flame] Любопытная презентация про использование Java в авиации

В связи с 20-летием Java захотелось поискать примеров использования Java в софтовой начинке для самолетов. Наткнулся на slideshare.net вот на эту презентацию:

Любопытные ощущения :)

Отдельно доставил пример С-шного кода на слайде 8. Помнится, когда я только начал изучать C, а затем и C++ в 1991-ом, такой стиль был довольно распространен. Правда, году к 1994-ому он него удалось полностью избавиться. Теперь с таким сталкиваешься только в страшных снах в чужих библиотеках времен очаковских... :) Впрочем, есть категория C-шиков, которая с удовольствием говнокодит в таком стиле до сих пор -- это обучившиеся программированию железячники. Не все, конечно, но среди тех, кто погряз в суровом embedded-е, таких много :)

Однако, пример этот показателен в другом смысле. Если писать в таком стиле, то проблем в C/C++ коде будет не просто много, а очень много. Настолько много, что кроме как на отладку и поиск дыр времени больше ни на что не останется. Причем пофигу, что вменяемые C-шники и уж тем более C++ники так давным-давно не пишут. Репутация уже подмочена и от ярлыка "софт на С/C++ течет и падает" не избавиться. То, что уже лет 20-ть как можно писать ну совсем по другому, никого не волнует :)

Еще позабавило, как люди приняли решение о том, что производительности Java хватит:

Реализовали тестовый пример на C и Java. Java-вский вариант работал почти в 2 раза медленнее. На железе с 1GHz процессором. Но в целевом компьютере должен был быть процессор с частотой 1.6GHz, да и памяти в два раза больше -- 1Gb против 512Mb. Ну а раз так, значит и Java тормозить не будет :)

Правда, первая реализация на Java не укладывалась в 50Hz-ый темп работы. Один такт на Java занимал 40ms, вместо положенных 20ms.

Ну так фигня война. Несколько месяцев(!) оптимизации и в 20Hz-ый такт удалось вместиться. Правда при этом отказались от использования виртуальных методов. Атрибуты final и static пришлось ставить везде, где только можно. Ну и еще какое-то колдовство с опциями компилятора.

При этом, напомню, реализация тестовой программы на Java была как раз в два раза медленнее C-шной. Т.е. те самые 40ms вместо 20ms.

И есть у меня, почему-то, смутные подозрения, что после такого двухкратного разгона кода на Java, по качеству он ушел совсем недалеко от C-шного кода, представленного на восьмом слайде презентации.

Отправить комментарий