Вариации на тему
FORTRAN старше, чем C, и до сих пор является одним из основных игроков в численных вычислениях. До 1990 года (когда язык был существенно модернизирован), язык не имел никакой формы указателя (проверено или нет). Этот недостаток означал, что не было никакого способа управлять памятью динамически; это также облегчило компилятору анализ псевдонимов , что делает код Fortran быстрым.
АЛГОЛЬ был первым языком структурированного программирования. Хотя он имел ограниченный успех с программистами, он оказал сильное влияние на разработчиков языков.
Ada - это императивный язык с сильной системой типов и хорошей модульностью, что делает его пригодным для низкоуровневого программирования с жесткими требованиями доверия (его спонсировал правительство США). с учетом военных и авиационных приложений). Он был вдохновлен Pascal , как Modula-2 и Modula-3 .
Если пойти дальше от основного направления низкоуровневого императивного программирования, то будет FORTH . FORTH может быть скомпилирован и даже интерпретирован на устройствах с очень небольшим объемом памяти; он находит широкое применение в недорогих встроенных системах, включая микроконтроллеры. Язык основан на обратной польской записи, известной калькуляторам HP (на самом деле, язык калькуляторов HP сильно зависит от FORTH). Многие реализации не имеют переменных: все данные хранятся в одном или нескольких стеках.
Ради интереса я упомяну INTERCAL , дедушку эзотерических языков.
Материал, который поразит вас
Эзотерические языки могут быть поучительными, и довольно много работы рядом с машиной (обычно это виртуальная машина, но в принципе вы можете реализовать их для реального компьютера, если вы достаточно сумасшедший). Вы можете посмотреть на brainfuck (своего рода промежуточный этап между машинами Тьюринга и C) или на множество языков с одной инструкцией, или befunge (что, если память была два -мерный массив?).
Cyclone очень похож на C. Синтаксис тот же, и у Cyclone есть указатели, нетегированные структуры и объединения, операторы goto и ручное управление памятью. И все же это безопасный язык: вы не можете иметь висячий указатель или переполнение буфера. И у вас есть доступ к высокоуровневым функциям, таким как сопоставление с образцом, исключения, полиморфизм, абстрактные типы и необязательное автоматическое управление памятью (не только сборка мусора, но и области). Циклон полезен и поучителен; для С - это хороший способ узнать, что делает безопасный язык. Cyclone может компилироваться в C, поэтому вы можете запускать свои программы везде, где у вас есть компилятор C.
Если вы хотите быть ближе к аппаратному обеспечению, хотя вы все еще не разрабатываете аппаратное обеспечение, посмотрите в другом направлении: синхронные языки , например Блеск и Эстерель . Эти языки используются для программирования высоконадежных систем реального времени, таких как атомные станции, самолеты и железнодорожная сигнализация. Эти языки отказываются от полноты тьюринга и получают уверенность в том, что программисты могут точно знать, как быстро будет работать их программа и сколько памяти ей потребуется. Если вы думаете, что C находится близко к машине, выяснение того, какой язык действительно близко к машине, может вызвать шок.