Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет jon_tm ([info]jon_tm)
@ 2011-10-16 23:17:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Синтаксис

Си не был лучшим языком программирования, по контролю типов его легко затыкал Паскаль, где еще кроме как в Си, между разными платформами менялась размерность переменной int, большие проекты в разы было легче вести на Аде, потому что помимо контроля типов и памяти (malloc(), блять, malloc() — хаха!) Ада была охрененно модульной и её очень любило Минобороны США. Ржака с malloc() объяснима — любой уважающий себя программер на Си, хоть раз да писал на нём собственный сборщик мусора. Ну и еще милые грязные штучки типа a.b–>c[*(++i)]; как справедливо было выше уже замечено. Но это уже возможности инструмента, мудацкую программу можно написать на любом языке.

Но мало кто врубается в идею для чего был создан язык Си. Си — инструмент быстрого переноса ОС на принципиально новую аппаратную платформу. Во времена создания Си это было крайне актуально — потому что производительность труда программистов сильно отставала от темпов создания новых компьютеров.

По большому счёту на коленке ваяется ассемблер под целевую аппаратную платформу — это может быть какой–нибудь феерический новый процессор с VLIW, какая–нибудь параллельно процессорная поебень в виде гиперкуба из 16 процессоров (привет intel) и так далее.
Где брать операционку? Традиционно каждая контора горбатила что–то своё. Был, в частности, такой адовый проект с участием МИТ, Bell и Генерала Электрика под названием Multics, который был толком не доведен до конца, хотя и был одной из первых работающих систем с разделением времени, основная ёбля с пляской приходилась на диспетчеризацию управлению ресурсами — память была дорогая, с научной точностью приходилось считать сколько раз сваповаться и в какую зону. Это не нынешние "плюс–минус гигабайт, а если индусский код будет тормозить, то мы заебеним SSD".

И тут чуваки создают Unix, как оппозит Multics с его кретинизмами. Одноюзерская мобильная система. Которая написана на языке Си — самом мобильном языке, который только можно было создать. После собирательства ассемблера, запускалась компиляция Си перетащенная с другой системы, доводилась до ума при помощи напильника и матов, и при помощи Си, ассемблера напильника и тех же матов на новой аппаратной платформе в течение 2–3 месяцев а то и раньше появлялась ОС с которой можно было работать. Пусть она периодически падала в кору, пусть находились умельцы, которые тут же перекраивали её в соответствии со своим видением, нахуяривали внутрь совершенно левых утилит и отправляли в сырцах гулять это по белу свету — это был прекрасный пруф–оф–концепт, который после дальнейшей доводки напильником позволял быстро выпустить коммерческий продукт.

Си пришёлся ко двору везде, где паяли компьютерные железяки, у него был лёгкий выход на железо — in(), out(), а при необходимости можно было легко писать в память по конструкции типа *(&var), но конечно, если вы понимали физику процесса. Да, это был непереносимый код, но если сильно надо, то такая возможность была. Гибкость в ущерб качеству отлова ошибок. Но зато был полный контроль. Мы смеялись над программерами с матфака, которые пытались писать программы обработки данных на Pascal, где они бедолаги забивали ручками шестнадцатиричный код в inline. Настоящий хардкорный электронщик ставил в Си–шном коде asm { и начинал херачить свои любимые ассемблерные вставки). Быстро, без шума и пыли.

В Си есть своя эстетика — его системы обозначений и операторов имеют под собой смысл и остроумное графическое выражение стандартными символами ASCII. Это сейчас в Си есть и строгая типизация и на нём легко ваяются проекты в несколько сотен миллионов строк и библиотек есть под что угодно и как угодно. Си уже не совсем тот. Но истинно олдскульным будет K&R C, где К — это Керниган, а R — это Ритчи. И благодаря этому языку Unix есть везде.

Этот человек для ИТ сделал действительно очень много. Джобс публичен, Ритчи нет. Но я думаю там, на верху, они запустят сборку Великого Проекта, потому что там времени хватит на всё — без дедлайнов и в своё удовольствие. А если наступит конец света, значит ядро Вселенной упало в кору.
This is just a Unix–way.
 (c) las