8ビットおよび16ビットのマイクロコントローラーベースの組み込みシステムを使用すると、これらの非常に控えめなストレージ制限の限られたリソースに適合するソフトウェアを開発することが容易になります(ローエンドの8ビットマイクロコントローラーの場合は数100 バイトのRAM 、2〜8 KiBのROMまたはEPROM / Flashでコードを保存)。
これらの場合、Cやアセンブリのような小さな言語が最も一般的に使用される開発言語である傾向があります。非常に大まかな相対的な比較として、完全なアセンブラとC99コンパイラは単一のフロッピーディスクに収めることができますが、最新のC ++開発システム(STLなどを使用)には複数のMiBが必要です。
エンベデッド環境でハイエンドマイクロ(ハイエンド16ビット、ほとんどが32ビット、かなりまれな64ビット)とDSPを見ると、制限が弱まり、ソフトウェア開発が開発の大部分を占める場合がありますそのため、C ++などのオブジェクト指向プログラミング(OOP)言語や、新しい言語(Java、Perl、Ruby、Python)などの機能を備えたより高度な言語を含む、最も生産的な開発ツールを使用することは理にかなっています。
アセンブリとCでは、使用されているメモリ量を予測できるため、スペースに制約のある設計が可能ですが、テンプレート、例外処理、ランタイムバインディングなどの高度な機能により、必要なメモリフットプリントを正確に知ることができません事前に標準C ++プログラムの場合。C ++のサブセットであるMISRA C ++について、コメントするのに十分な知識がありません。
バイトコードを実行する仮想マシン(Java、Perl、Python)に基づいた言語は、組み込み開発者の経験では成熟度が低く、これらの言語はプログラマーを特定のハードウェアから隔離するように設計されているため、良心の理解が難しくなりますこのような組み込みハードウェアシステムの制限と制限。これらは、RAMのGiBでない場合、MiBを備えた高速32ビットプロセッサ(ARMv7など)での問題ではありません。
私が知っているすべてのBASIC実装は、言語機能が非常に単純化されており、1960年代のDartmouth BASICの遺産にほぼ忠実です。つまり、この言語には複雑なランタイムライブラリや例外処理がなく、インタープリターやコンパイラーは非常に簡単に記述でき、ファイルサイズも小さくなります。ほとんどのマイクロコントローラーには、少なくとも1つのBASICコンパイラーがあります。
Cおよびアセンブリが主に小規模または古い組み込みシステムで使用され、新しいミッドエンドからハイエンドの組み込みシステムの制限がある従来のデスクトップパーソナルコンピューターとわずかに異なる理由は、大まかに一言で説明したいと思います。