|
| |||
|
|
Синтаксис Си не был лучшим языком программирования, по контролю типов его легко затыкал Паскаль, где еще кроме как в Си, между разными платформами менялась размерность переменной int, большие проекты в разы было легче вести на Аде, потому что помимо контроля типов и памяти (malloc(), блять, malloc() — хаха!) Ада была охрененно модульной и её очень любило Минобороны США. Ржака с malloc() объяснима — любой уважающий себя программер на Си, хоть раз да писал на нём собственный сборщик мусора. Ну и еще милые грязные штучки типа a.b–>c[*(++i)]; как справедливо было выше уже замечено. Но это уже возможности инструмента, мудацкую программу можно написать на любом языке. Но мало кто врубается в идею для чего был создан язык Си. Си — инструмент быстрого переноса ОС на принципиально новую аппаратную платформу. Во времена создания Си это было крайне актуально — потому что производительность труда программистов сильно отставала от темпов создания новых компьютеров. По большому счёту на коленке ваяется ассемблер под целевую аппаратную платформу — это может быть какой–нибудь феерический новый процессор с VLIW, какая–нибудь параллельно процессорная поебень в виде гиперкуба из 16 процессоров (привет intel) и так далее. И тут чуваки создают Unix, как оппозит Multics с его кретинизмами. Одноюзерская мобильная система. Которая написана на языке Си — самом мобильном языке, который только можно было создать. После собирательства ассемблера, запускалась компиляция Си перетащенная с другой системы, доводилась до ума при помощи напильника и матов, и при помощи Си, ассемблера напильника и тех же матов на новой аппаратной платформе в течение 2–3 месяцев а то и раньше появлялась ОС с которой можно было работать. Пусть она периодически падала в кору, пусть находились умельцы, которые тут же перекраивали её в соответствии со своим видением, нахуяривали внутрь совершенно левых утилит и отправляли в сырцах гулять это по белу свету — это был прекрасный пруф–оф–концепт, который после дальнейшей доводки напильником позволял быстро выпустить коммерческий продукт. Си пришёлся ко двору везде, где паяли компьютерные железяки, у него был лёгкий выход на железо — in(), out(), а при необходимости можно было легко писать в память по конструкции типа *(&var), но конечно, если вы понимали физику процесса. Да, это был непереносимый код, но если сильно надо, то такая возможность была. Гибкость в ущерб качеству отлова ошибок. Но зато был полный контроль. Мы смеялись над программерами с матфака, которые пытались писать программы обработки данных на Pascal, где они бедолаги забивали ручками шестнадцатиричный код в inline. Настоящий хардкорный электронщик ставил в Си–шном коде asm { и начинал херачить свои любимые ассемблерные вставки). Быстро, без шума и пыли. В Си есть своя эстетика — его системы обозначений и операторов имеют под собой смысл и остроумное графическое выражение стандартными символами ASCII. Это сейчас в Си есть и строгая типизация и на нём легко ваяются проекты в несколько сотен миллионов строк и библиотек есть под что угодно и как угодно. Си уже не совсем тот. Но истинно олдскульным будет K&R C, где К — это Керниган, а R — это Ритчи. И благодаря этому языку Unix есть везде. Этот человек для ИТ сделал действительно очень много. Джобс публичен, Ритчи нет. Но я думаю там, на верху, они запустят сборку Великого Проекта, потому что там времени хватит на всё — без дедлайнов и в своё удовольствие. А если наступит конец света, значит ядро Вселенной упало в кору. |
|||||||||||||