Про мови
Кілька років тому постачальник компіляторів 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 років, і немає ніяких ознак, що він йде. Він представляє найкращий вибір в даний момент. Я хотів би, щоб ми могли перейти до Ади, або, ще краще, до СПАРК. Але цього не станеться, поки не буде доступна достатня кількість навчених інженерів.
Як Ви думаєте, С і С++ з нами назавжди?
