Урок 0: Зачем компилируемый низкоуровневый язык?
Почти каждый популярный сегодня язык (Python, JavaScript, Java) управляет памятью за вас автоматически и запускает ваш код через промежуточный слой. Это удобно — пока вы не столкнётесь с двумя случаями, когда такого удобства просто нет. Первый: программа, которая должна работать на встраиваемом чипе
Большинство языков дают вам машину с автоматической коробкой, которая едет сама и сама справляется со всем под капотом. C даёт вам руль, педали и живой дисплей двигателя — больше работы, зато вы видите точно, что происходит, и можете ехать там, где автомат просто не проходит.
- компилируемый язык
- Язык, исходный код которого заранее переводится (компилируется) в машинный язык, без промежуточного слоя, работающего вместе с программой и проверяющего каждую операцию.
- низкоуровневый язык
- Язык, близкий к реальной структуре памяти и процессора, поэтому он раскрывает программисту детали, которые высокоуровневый язык скрывает автоматически.
- ручное управление памятью
- Модель, в которой программист сам запрашивает и освобождает память, без фонового процесса (сборщика мусора), делающего это автоматически.
- встраиваемая система
- Крошечный компьютер внутри устройства (датчик, умные часы, контроллер двигателя) с памятью, ограниченной всего несколькими килобайтами.