Несколько лет назад поставщик компиляторов Keil (теперь принадлежит ARM) поместил объявление в Embedded Systems Programming magazine (позже известный как Embedded Systems Design, а сейчас embedded.com) о своем новом компиляторе: COBOL для 8051.
Это была шутка, и размещена она была в апрельском номере. Какой смешная и абсурдная идея продукта! COBOL для встраиваемых систем? И COBOL для 8051! Я позвонил президенту компании и поздравил его с отличной шуткой.
А он ответил мне, что они получили запросы на поставку!
Этот пример характеризует определенные подходы в выборе языка для встраиваемых систем. Ожидания оказываются важнее реальности.
Вы не можете прочитать Slashdot или подобные веб-сайты, не увидев дискуссий о языках как есть. Является ли D новейшим отличным способом для написания кода. Или это Свифт? Я все время получаю письма от людей, желающих получить информацию о разработке микропрограммного обеспечения в C #. Не редкость услышать от кого-то, что весь мир движется в сторону Java, и те, кто этого не делают, рискуют навеки отстать.
Что же мы имеем на самом деле? В мире встроенных систем в первом приближении используются только два языка: С и С ++. Данные Embedded.com показывают основной язык, используемый его читателями (я не смог заверстать картинку, обращайтесь к оригиналу, С порядка 60%, С++ порядка 20% в период с 2005 по 2013 с незначительными отклонениями — п.п.).
Как ни удивительно, но С++ никак даже не догоняет С.
При выборе языка следует учитывать наличие разработчиков. Если вы не можете нанять инженеров, которые разбираются в языке досконально, то рассчитывайте на длительное и дорогостоящее обучение или готовьтесь к неудаче.
Меня однажды пригласили помочь с тонущим проектом в Швеции, который делали на C ++. Я думал, что язык был обоснованно выбран для данного приложения. Но почему был сделан именно этот выбор? Вице-президент компании сказал мне, что он прочитал в Business Week, что C++ позволяет ускорить разработку и облегчает повторное использование кода, так что он настоял на его применении.
В фирме было 40 разработчиков, занятых в проекте и все они, за исключением недавнего выпускника, не имели никакого опыта объектно-ориентированного программирования. Оставшиеся 39 пытались научиться по ходу работы. Это путь к катастрофе. Они получали навыки, продвигаясь сквозь проект. Все было бы в порядке, если бы продукт не предназначался для поставки.
С занял это пространство на уже 30 лет, и нет никаких признаков, что он уходит. Он представляет наилучший выбор в данный момент. Я хотел бы, чтобы мы могли перейти к Аде, или, еще лучше, к СПАРКу. Но этого не произойдет, пока не будет доступно достаточное количество обученных инженеров.
Как Вы думаете, С и С ++ с нами навсегда?
Автор: GarryC