В связи с 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-шного кода, представленного на восьмом слайде презентации.
Комментариев нет:
Отправить комментарий