История языка С

Был ли Си первым ?

Сейчас, всем известный, можно сказать почти легендарный язык С используется почти везде и считается отцом многих других языков.
Но был ли С первым языком программирования? Нет. Этот почётный титул принадлежит ассемблеру и машинным кодам. А может это первый высокоуровневый язык? Опять нет. FORTRAN, разработанный в промежутке 1954 - 1957 года, забирает данный титул себе.
Так в чём Си первый?
А в том что Си это, де-факто “Универсальный ассемблер”. Который предоставляет такую же скорость работы программ как ассемблер, но при этом позволяет писать программы для разных платформ, не меняя кода, то есть, кроссплатформенность.

Причины создания си

Почти всю раннюю цифровую эпоху создали энтузиасты и любители. Те у кого, простите за выражение “пёрло” от идеи написать, разработать и внедрить что-нибудь новое, не всегда инновационное, но как минимум полезное для своих авторов.
Денис Ричи
Деннис Ритчи
Брайан Керниган
Брайан Керниган
Так было и с Си. По одной версии, его создатель Деннис Ритчи был недоволен возможностями своего сервера, и ограниченностью управления своим кораблем, в игре в которую он любил играть вместе с Керниганом. Поэтому они портировали игру на PDP-7, а потом и на PDP-11.
Ах? да, забыл сказать что ОС на этих машинах не было, поэтому они написали свою, на Ассемблере.
PDP-7 компьютер
PDP-7
PDP-11 компьютер
PDP-11
И в дальнейшем, чтобы было легче портировать программы и операционные системы был разработал язык С.
Есть версия и о том что это была первоапрельская шутка. Шутка, которая зашла слишком далеко.
Но скорее всего, Bell Labs нужен был язык для поддержки Unix систем на различных компьютерах и с разной архитектурой процессора. И в течении 4 лет, с 1969 по 1973 года был разработан язык С.

Особенности языка Cи

Язык обладал многими особенностями, а не только вышеупомянутой кроссплатформенностью и быстротой ассемблера. Среди прочего можно отметить:
И как говорил сам автор языка.
Шеврон
Деннис Ричи
С необычный, несовершенный и при всём при этом невероятный успех.

Стандартизация

Историю языка наглядно показывает развитие её стандартов. А именно, на что делают упор разработчики, что удаляют, добавляют, к каким соглашениям приходят.

Время до стандартов и правил

Если считать текущий стандарт си минималистичным, то первая версия языка выпущенная в 1972 году, которой дали название NB ( типа New B), имела в своём распоряжении только возможность подключать заголовочные файлы и две директивы препроцессора для вставки и замены строк #include и #define.
Конечно язык не стоял на месте и быстро расширялся. В 1973 году был написан переносимый компилятор для си Стивеном K. Джонсоном.

Про K&R C

В 1978 году вышла легендарная книга от Брайна Кернигана и Денниса Ритчи The C Programming Language.
Си язык программирования обложка
Данная книга стала стандартом на многие годы, до появления стандарта ANSI C. Но даже после появления этого стандарта, считалось что каждый компилятор должен следовать спецификациям K&R C
В 78 году С обзавёлся следующими фишками:

ANSI C или C89

Как можно догадаться, стандарт был принят в 89 и вместе с ним вышла вторая редакция книги The C Programming language.
В новом стандарте появилось:

C95

Немного дополнил и изменил некоторые шероховатости С89. Также расширил количество поддерживаемых международных символов и добавил диграфы. Как альтернативные символы некоторым другим.

C99

Ключевой особенностью данного стандарта стало изменение работы некоторых ключевых слов и появление новых, например inline. Вот вкратце что появилось и изменилось:

C11

C17

Не было почти никаких изменений. За исключением отмены некоторых макросов и функций. Идём дальше.

Современный С, C23

И хотя, данный стандарт еще не полностью реализован компиляторами и не так популярен как С99, было бы не лишним узнать что же нового нам предложили в прошлом году.
А предложили нам следующее:

Семейство языков си (Языки потомки си)

Можно выделить только двух прямых потомков языка. Это Objective-C, который основан на новом подходе в программировании, то есть ООП. И, куда более известней С++, который дополняет Со своим функционалом и вводит много нового. Теперь немного о том, чем предок отличается от своих чадов.

Objective-C

В отличие от плюсов, синтаксис которых на 99% сопоставим с Си, Objective-C совсем другая история. Его синтаксис сильно изменился.
И если Си, платформо независим, то Objective-C используется только на macOS и iOS.
Пример кода objective-c
Код на Objective-C
Пример кода си
Код на Си

C++

С++, гораздо сложнее Си. Да и вообще, его можно назвать самым сложным языком программирования.
Эта сложность вызвана его обширным функционалом, который вызывает немало критики со стороны трушных си-шников, да и других языко-поклонников.
Так в плюсах реализовано:
Пример кода с++
Код на С++

Си подобные языки

Кроме прямых потомков языка Си, существуют ещё и языки, синтаксис которых, очень сильно напоминает нашего “Универсального ассемблера”.
Кроме вышеупомянутых наследников, похожий синтаксис имеют:

Актуальность языка си (Его популярность)

В интернете я заметил интересное явление. Почти все пытаются доказать что си не мёртв и очень даже используемый, то есть популярный ЯП. То есть всякие блогеры считают, что многие другие считают что ЯП Си мёртв. Но по факту мало кто так считает.
Честно, я так и не понял с чего вдруг все решили доказывать что он не мёртв. То есть первоисточник данного тезиса мне не известен. Может это из-за возраста, а может из-за того что Python так сильно превозносится, что всем видится как некогда популярные языки уже не так популярны.
Если посмотреть статистику популярности языков программирования от TIOBE Index
Популярность языков программирования за промежуток времени
Можно заметить что Си, по факту чуть ли ни разу не падал ниже 2ого места. И среди самых популярных всегда будут Java и C++. Python относительно недавно стал так популярен.
С чем такая стабильность связана? Я не знаю. И я не могу дать однозначного, всестороннего и не предвзятого ответа. Но могу поделиться моим, почти 4-х летним опытом. Раньше я много программировал на С++, по факту с него я и начал этот путь. И лишь изредка я касался С. Сейчас мой стек изменился и я использую другие языки и технологии.
Но вот что интересно, когда я возвращаюсь к Си, мне становится легче, просто легче. В сравнении с перегруженным синтаксисом плюсов или чудовищным количеством модулей которые приходится помнить, когда пишешь на питоне, возвращение в лоно Си для меня как облегчение.
Как-то так.
Шеврон
Линус Торвальдс
C++ - ужасный язык. Всё становится ещё хуже только от того факта что многие "нестандартные" программисты используют его, так что получается полная ахинея. Откровенно говоря выбрая язык С, который ничего не делает, но держит С++ програмистов подальше от С, это само по себе огромный плюс.

сердце 0
3 соединённые точки 0

Коментарии

(0)
Аватар по умолчанию
None
Оставить комментарий
Оставить комментарий