Із вбудованими системами на основі 8 та 16 біт мікроконтролерів зводиться до цього простіше розробити програмне забезпечення, яке може вписатися в обмежені ресурси цих дуже скромних обмежень на зберігання (можливо, кілька 100 байт оперативної пам'яті для 8-бітових мікроконтролерів низького класу , з 2-8 KiB ПЗУ або EPROM / Flash для зберігання коду).
У цих випадках малі мови, такі як C або збори, як правило, є найбільш часто використовуваними мовами розробки. Як дуже грубе порівняльне порівняння, повний асемблер та компілятор C99 можуть вміститися на одній дискеті, тоді як для сучасної системи розробки C ++ (зі STL тощо) вам потрібно кілька MiB .
Якщо ви дивитесь на мікросети вищого класу (16-розрядні та здебільшого 32-розрядні, із досить рідкісними 64-бітовими) та DSP у вбудованих середовищах, обмеження слабшають, а розробка програмного забезпечення може становити основну частину розробки. зусиль, тому має сенс використовувати найпродуктивніші інструменти розробки, включаючи більш вдосконалені мови з такими функціями, як об'єктно-орієнтоване програмування (OOP), такі як C ++ та новіші мови (Java, Perl, Ruby, Python).
В зборах і на C можна передбачити, скільки пам’яті використовується, так що дизайн з обмеженим простором є здійсненним, але розширені функції, такі як шаблони, обробка виключень та прив'язка часу, унеможливлюють точно знати необхідний слід пам'яті за стандартну програму C ++ заздалегідь. Я не знаю достатньо про MISRA C ++ , який є підмножиною C ++, щоб прокоментувати це.
Мови, засновані на віртуальних машинах, на яких працює байт-код (Java, Perl, Python), менш зрілі у вбудованому досвіді розробника, і оскільки ці мови призначені для ізоляції програміста від конкретного обладнання, це також ускладнює сумління такі обмеження та обмеження вбудованої апаратної системи. Це менше проблеми зі швидкими 32-бітовими процесорами (наприклад, ARMv7) з MiB, якщо не GiB оперативної пам'яті.
Усі реабілітації BASIC, про які я знаю, досить спрощені в мовних особливостях, залишаючись значною мірою вірним спадщині Dartmouth BASIC з 1960-х. Це означає, що мова не має жодних складних бібліотек виконання часу чи обробку винятків, а інтерпретатор або компілятор пише досить просто, а також має невеликий розмір файлу. Більшість мікроконтролерів мають принаймні один компілятор BASIC.
Я сподіваюсь, що обриси в широких штрихах причин, які ви знайдете, C і збірка використовується в основному на менших або старих вбудованих системах, а обмеження новіших вбудованих систем середнього та високого класу лише незначно відрізняються від традиційного настільного персонального комп'ютера.