Dengan sistem embedded berbasis mikrokontroler 8 dan 16-bit, semakin mudah untuk mengembangkan perangkat lunak yang dapat masuk ke dalam sumber daya terbatas keterbatasan penyimpanan yang sangat sederhana ini (mungkin beberapa 100 byte RAM untuk mikrokontroler 8-bit low-end) , dengan 2-8 KiB ROM atau EPROM / Flash untuk penyimpanan kode).
Dalam kasus tersebut bahasa kecil seperti C atau assembly cenderung menjadi bahasa pengembangan yang paling umum digunakan. Sebagai perbandingan relatif yang sangat kasar, assembler lengkap dan kompiler C99 dapat masuk ke dalam floppy disk tunggal, sementara Anda memerlukan beberapa MiB untuk sistem pengembangan C ++ modern (dengan STL, dll.).
Ketika Anda melihat micros high-end (high-end 16-bit, dan sebagian besar 32-bit, dengan 64-bit yang cukup langka) dan DSP di lingkungan yang disematkan maka batasannya melemah, dan pengembangan perangkat lunak mungkin merupakan bagian terbesar dari pengembangan upaya, jadi masuk akal untuk menggunakan alat pengembangan paling produktif, termasuk bahasa yang lebih maju dengan fitur-fitur seperti Object-Oriented Programming (OOP) bahasa seperti C ++, dan bahasa yang lebih baru (Java, Perl, Ruby, Python).
Dimungkinkan dalam perakitan dan C untuk memprediksi berapa banyak memori yang digunakan, sehingga desain ruang terbatas layak, tetapi fitur-fitur canggih seperti templat, penanganan pengecualian, dan pengikatan run-time membuatnya tidak mungkin untuk mengetahui dengan tepat jejak memori yang diperlukan. untuk program C ++ standar sebelumnya. Saya tidak cukup tahu tentang MISRA C ++ , yang merupakan subset dari C ++, untuk mengomentarinya.
Bahasa yang didasarkan pada mesin virtual yang menjalankan byte-code (Java, Perl, Python) kurang matang dalam pengalaman pengembang yang disematkan, dan karena bahasa ini dirancang untuk mengisolasi programmer dari perangkat keras tertentu, itu juga membuatnya lebih sulit untuk menjadi hati nurani. pembatasan dan pembatasan sistem perangkat keras tertanam tersebut. Ini kurang masalah dengan prosesor 32-bit cepat (misalnya ARMv7) dengan MiB jika tidak GiB RAM.
Semua implementasi BASIC yang saya sadari cukup sederhana dalam fitur bahasa, sebagian besar tetap berlaku untuk warisan Dartmouth BASIC dari tahun 1960-an. Ini berarti bahwa bahasa tersebut tidak memiliki pustaka run-time yang kompleks atau penanganan perkecualian, dan juru bahasa atau kompiler cukup mudah untuk menulis dan juga kecil dalam ukuran file. Sebagian besar mikrokontroler memiliki setidaknya satu kompiler BASIC tersedia untuk itu.
Saya berharap bahwa menguraikan dalam stroke luas alasan Anda akan menemukan C dan perakitan terutama digunakan pada sistem embedded yang lebih kecil atau lebih tua, dan dengan keterbatasan sistem embedded menengah ke atas hanya berbeda sedikit dari komputer pribadi desktop tradisional.