Как и во многих вещах в сфере ИТ, линия размыта. Например, C начал свою жизнь как язык системного программирования (и использовался для реализации Unix), но также использовался и для разработки приложений.
Сказав это, очевидно, что некоторые языки лучше подходят для системного программирования, чем другие (например, C / C ++ лучше подходят, чем COBOL / FORTRAN для системного программирования). Также существуют языки, которые лучше подходят для разработки приложений, а не системного программирования, например. VB.NET.
Функции языка, которые выделяются из приведенных выше примеров, являются функциями низкого уровня языков системного программирования, таких как C / C ++ (например, указатели, операторы битовых манипуляций и т. Д.). Конечно, существует старая шутка о том, что C - это язык уровня «море» (где-то между уровнем сборки и «высоким» уровнем).
Предупреждение. Я занимаюсь системным программированием с точки зрения разработчика ОС / разработчика ОС.
Я думаю, что будет справедливо сказать, что несмотря на проекты по разработке ОС с Java (хотя я считаю, что в основном это нативная компиляция, а не байт-код и JIT-кодирование / интерпретация), языки системного программирования ориентированы на нативный машинный код их целевые платформы. Таким образом, языки, которые в основном предназначены для управляемого кода / интерпретируемого кода, с меньшей вероятностью будут использоваться для системного программирования.
Во всяком случае, этого вполне достаточно, чтобы вызвать некоторые комментарии как в поддержку, так и в оппозицию :)