Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer. |
Любовь заставляет человека петь. Чем и хороша, собственно. :-)
OS - это часть культуры Можно провести хорошую параллель между Операционной Системой и архитектурным сооружением. И то и другое строится не за один день и не одним человеком. Но речь пойдет не об этом. Главное, что при созидании и того и другого как правило выдерживается определенный стиль, определенная архитектура. Но какие-то сооружения предаются забвению очень скоро, другие же продолжают восхищать людей и спустя века, поражая своей красотой и величием. Что же так притягивает сердца людей к творениям архитектуры или к ОС, независимо от того, когда создано то и другое? Первое - это ЦЕЛОСТНОСТЬ, ВЫДЕРЖАННОСТЬ СТИЛЯ, ВНУТРЕННЯЯ СТРОЙНОСТЬ сооружения или системы. Больше всего ценится не то, где больше отдельно взятых причуд и удобств, а то, что воспринимается как единое целое. Подходя к средневековому замку, невольно поражаешься его своеобразной красотой и величием. Проходя по его сумрачным залам, слушая завораживающее эхо от стука своих шагов, ощущаешь как сквозь столетия пронесли эти стены неповторимый дух, дух рыцарства, отпечаток характера своих воинственных созидателей. Задирая голову, разглядывая узоры в залитых солнцем залах дворца, построенного в стиле барокко, тебя наполняют совсем другие ощущения. Они не лучше и не хуже тех, что ты испытывал при виде рыцарского замка, они просто ДРУГИЕ. Но в обоих случаях ты восхищаешься, потому что оба сооружения, хотя и не похожи, но оба созданы мастерски, они впитали в себя какой-то своеобразный дух, не сравнимый ни с чем другим. Так же и Операционная Система. Порою в основу двух отдельно взятых систем заложены кардинально различающиеся принципы. Они реализованы с помощью разных средств, преследуют совершенно различные цели, внутри и снаружи совсем не похожи друг на друга. Но если система создана мастерски, если она стройна, если по своему красива - это трудно не почувствовать. Хотя этого можно и не увидеть, если не хотеть видеть. Почему-то ценить красоту тоже может и хочет не каждый. Конечно, здесь, как и во всем остальном, могут и должны быть свои вкусы и предпочтения. Как средневековый рыцарь выберет замок-крепость с толстыми стенами, так и умудренный опытом сисадмин выберет надежную и проверенную систему UNIX. Как нежная принцесса ни на что не променяет своей роскошный и удобный дворец, так и привередливый дизайнер никуда не уйдет с любтмой MacOS. Да, принцесса вряд ли будет жить в холодном и мрачноватом замке, в рыцарь вряд ли найдет защиту в узорах барокко. Но едва ли вежливая принцесса станет осуждать рыцаря за его выбор, а благородный вояка вряд ли не сможет понять вкус принцессы. И будучи в гостах друг у друга, они отдадут должное тем стенам, что их приютили. Замечательны настоящие творения тем, что в них ничего не прибавишь, равно как и не отнимешь ничего. Это нарушит ту хрупкую гармонию, которую так нежно вырисовывал создатель. Кто то скажет: "ВОТ ЕСЛИ БЫ В UNIX БЫЛО OLE..." Друзья! Как раз Юниксу OLE не нужно. Оно совершенно не вписывается в эту систему. Равно как не вписывается в UNIX, например, ACL. ACL слишком сложен. Им сложно манипулировать, как на программном, так и на пользовательском уровне. Модель же безопасности UNIX как в меру сложна, так и в меру проста. Подобное "ОСЛОЖНЕНИЕ" принципиально новых возможностей не добавит, но зато сделает систему куда более запутанной. Раз уж речь пошла о гармонии, стоит заметить что многие системы ею вовсе не блещут, впрочем, как не имеют и своего "ЛИЦА". Это, относиться, например к системам от Microsoft. Их можно сравнить с безвкусным зданием, нагромождением различных стилей, подходов и технологий. Посмотришь с фасада - вроде бы сделано с претензией на хороший вкус, хотя, конечно, это не сравниться с внешностью MacOS или с хорошим WindowManager'ом X-Window. Начнешь же копаться внутри - тут и там попадаются балки с надписью "MS-DOS", искусно закрашенные синезеленой эмалью. Чердак забит тяжелыми агрегатами с эмблемой "OLE" и "VisualBasic"... Впрочем, даже такие авторитетные установки не мешают подобным зданиям время от времени разлетаться как карточные домики, а также часто крениться и падать. Да, вряд ли найдет здесь покой рыцарь, вернувшийся из крестового похода... Как и прекрасное сооружение, прекрасная система уже существуют вне времени и вне пространства. Они найдут своих почитателей и через тысячу лет. Потому говорить что "UNIX" - это НИКОМУ НЕ НУЖНОЕ УСТАРЕВШЕЕ ПРОШЛОЕ - это глупо. Говорить что "C УСТАРЕЛ c ПОЯВЛЕНИЕМ С++" - еще более глупо. C так и остался красивым, стройным и лаконичным языком. "Дух С" никуда не исчез. Как он десятки лет наполнял вдохновением сердца многих разработчиков, так он будет дорог многим и через сотню лет. Просто с появлением нового языка появилась новая альтернатива, в чем то имеющая неоспоримые преимущества, но в чем то и уступающая, особенно по части стройности и целостности. И осуждать С, обижая тех, кто нашел в нем "язык своей мечты" - не только глупо, но и цинично. Я не говорю уже о том, что есть ряд задач, для которых данный язык - объективно наилучший выбор. Не нужно забывать, друзья, что операционные системы со временем становятся частью культуры, материализованной мечтой множества людей. Систем UNIX, как и многих других систем, просто НЕ МОГЛО НЕ БЫТЬ, как не могло не быть, например. эпохи возрождения или легенд древней греции. Этого требовало само время. Подобные пласты культуры сыграли огромную роль в становлении общества, но их значение не уменьшилась и сейчас. С нигилизмом относяться к культурным ценностям лишь вандалы. ЧЕЛОВЕК же не должен делать этого, даже если он чего то не понимает или не принимает в данный момент, хотя бы отдавая дань уважения тем, кто это любит и ценит. А если сувствуешь, что что-то могло бы быть и лучше, не осуждай, но СДЕЛАЙ ЛУЧШЕ! * * * Данное "эссе" написано в ответ на многочисленные выпады в адрес UNIX и C, которые автору приходилось слышать в последнее время. Его можно свободно публиковать и распечатывать без согласия автора ;-) С уважением, Валерий Студенников, hq_software@mail.ru
|
Спасибо! Слог прекрасен. :-) Я получил массу эстетического удовольствия, читая это. Спасибо отдельно и за то, что Вы вняли моему письму и оформили свой на меня наезд :-) в форме, потенциально интересной для читателей и потому пригодной к публикации.
Однако, посмотрим на него не как на художественное произведение - в этой ипостаси мы его уже оценили, и высоко. :-)
Для начала, вынужден обратить внимание автора на одну ключевую деталь. Средневековыми замками (прекрасными сооружениями, прекрасными системами, уже существующими вне времени и вне пространства) восхищаются, в них ходят на экскурсии, но... в них не живут.
Не стоит, мне кажется, смешивать историческую ценность Юникса и Си, которую, конечно, трудно переоценить, с ценностью практической. Со времён Фортрана и ОС 360 Юникс и Си, думается, мне, величайшие события в истории компьютинга. Только это вовсе не повод говорить об их практической ценности лишь на этом основании. На другом основании - я за. А на этом - не очень.
Глупо говорить, что древний меч никому не нужен. Он нужен историкам и всем, кто умеет ценить красоту. И так же глупо идти с ним на танки.
Красота и целостность Юникса - действительно явление уникальное. Я имею в виду - Unix V.7, тот, что писан руками Кернигана, Ричи, Томпсона, Ахо, Ульмана, кто у нас там ещё... Это потрясающая система. Ядро - менее пятнадцати тысяч строк исходников, её можно прочесть и понять насквозь за неделю.
Только если вы сегодня попробуете ей (V7) воспользоваться практически, вам станет... как бы это сказать... скучно. То есть cat-то можно написать, а вообще-то, практически... не очень она сегодня применима. FreeBSD вот - та применима. Но она от папаши отличается ТАК, что диву можно даться. Во всяком случае, говорить о такой уж волшебной стройности здесь заметно сложнее. И я вовсе, во-овсе не уверен, что ядро современного Юникса так уж сильно стройнее ядра NT или OS/2. Или NeXT. А уж что касается MacOS, то, я извиняюсь, внутренности этой системы - не место для принцессы. Ей не понравится, я так думаю. Если она хотя бы столь же придирчива, как и я. Недаром Apple трудится над переработкой, причём категорической, своей системы. И не просто трудится, а имеет в виду революционно всех нафиг загнать в новую ОС, а старую ушкандыпопить в рекордные сроки.
И вообще. Разговор об уникальности Юникса в том ключе, который взят в эссе запоздал на 10-15 лет. Сегодня все современные ОС танцуют от Юникса, и между NT и Unix куда больше общего, чем между Unix и VM/CMS, например.
О красоте Си. Поговорите на эту тему с любым ценителем Паскаля, он вам много скажет. Потом догонит, и ещё больше скажет. :-) Поговорите с тем, кто затыкал дырки с переполнением стека в протоколах. Он вам расскажет, почему строка - это рулез, а пойнтер вместо строки - это так же красиво, как нарезать хлеб бластером. Чуть промазал - и нарезал лишнего. И в новые отверстия твоей квартиры полезли новые, совсем свежие тараканы. От соседей.
Спросите Кернигана и Ричи, почему целые в функцию передаются по значению, а массивы - по ссылке. Они не найдут, чего сказать. Конечно, изначально всё было стройно - агрегаты по ссылке, а атомы - по значению. Но для массивов автоматическое взятие адреса в язык ввели, а для структур - нет. Просто при передаче массива в функцию передавался адрес, а на структуру компайлер ругался. Красиво, правда? Мало, что неудобно, так ещё и коряво. В дополнение ко всему кто-то чуть позже сообразил, что не всё потеряно и научил-таки Си передавать структуры по значению и возвращать их из функций. И теперь мы имеем чрезвычайную красоту - часть агрегатов - так, часть - так.
Так что Си - язык практичный и довольно элегантный, но верхом красоты его назвать нельзя. И Си++ в этом плане ничем не отличается - оба делают уступки там, где практичность диктует необходимость отхода от красоты. Вот если бы ++ делали не из Си, у него бы было преимущество. Но нет, увы. Оно досталось Яве - языку, который не побоялся откинуть корявости Си и шагнуть дальше.
При всём при этом и на ++ можно писать надёжные программы, и на Си. Но если на Си писать как следует, то получится тот же ++, только через одно место и без поддержки компилятора. Отличный пример "дикой" объектно-ориентированной программы на Си, кстати - ядро Юникса. Прочитав его легко понять, что такое ++, зачем он и почему Си просто - устарел, а ++ - натуральное его развитие, вовсе не нарушающее красоты. А вовсе даже и напротив. А тот, кому Си кажется существенно красивее Си++, по моему мнению, недостаточно хорошо знает ОБА эти языка.
"Почему-то ценить красоту тоже может и хочет не каждый."
Давайте подставим опущеное значение: Почему-то ценить красоту C++ тоже может и хочет не каждый. Почему-то ценить красоту Windows NT тоже может и хочет не каждый. Почему-то ценить красоту Pascal-я тоже может и хочет не каждый.
Вообще я занимаю в этой дискуссии нестандартную для себя роль. Юникс - любимая моя ОС из числа реально существующих и практически применяющихся, а Си... Ну что можно сказать про язык, который для тебя является основным на протяжении 15 лет. Очень хороший язык, очень хорошая ОС.
Но это ж не повод быть слепым.
Реклама | |||
|
Кстати, я знаю одну чрезвычайно объективную причину использовать Си, но не Си++. Необоримую просто причину. Отсутствие компилятора Си++ для целевой платформы. А, нет, вру - знаю вторую. Не менее объективную. Неумение писать на Си++. Третьей не знаю. :-(
Интересен (в отрыве от центральной линии дискуссии) вопрос об ACL-ях и их месте в Юниксе.
Ну, для начала, отметим, что в Юниксе они есть - в некоторых, наиболее продвинутых его версиях.
Продолжим тем, что ACL-и, конечно, чрезвычайно неэффективный механизм - не то, чтобы очень корявый, концептуально всё довольно аккуратно, но вот неэффективный. Пригоден в случаях, когда число субъектов и объектов не слишком велико, детализация прав тоже не чрезмерна, а необходимость проверять права случается редко.
И закончим тем, что Unix без ACL - это плохо, плохо и плохо. Нельзя за деревьями не видеть леса. Если даже пуговки на штанах кажутся некрасивыми, то вряд ли это повод ходить голышом. Система прав доступа в классическом, одногруппном Unix, где нет ни ACL, ни множественных групп, просто неприемлема практически, так как неуправляема и неполна. Попробуйте в V7 дать доступ к своему файлу двум другим пользователям, не лишившись его сами, и не дав его более никому. В общем случае задача просто не решается. Попробуйте сделать то же самое в современном юниксе, в котором пользователь может принадлежать к нескольким группам. Задача в общем случае уже решается (прогресс!), но... только с привлечением суперюзера. Что, вообще-то, на практике значит - не решается. Не будет суперюзер вам под каждый файл группу делать и в неё указанных вами пользователей вводить.
Красота дизайна ОС (да и языка) - это когда всего, что нужно, можно добиться простым и понятным способом. А не когда ты сидишь в хрустальном шаре, и, пардон, ни вздохнуть, ни пукнуть.
Вот такой сегодня случился день любви к Юниксу. Который установлен на 40% моих компьютеров и который рядом со мной пятнадцать лет.
Апология Юникса, как мне представляется, в целом интереснее апологии Windows. Когда выступает виндузоид, звучат похвалы, которые почти невозможно обсуждать. Ну что можно сказать про "Система Windows 95 лучше всех, потому что иначе она не была бы так распространена"? Грустно улыбнуться? Только-то...
А вот когда кто-то ругает C++ и хвалит Юникс можно отметить любопытную деталь. "Дикая", неформализованная и неназванная объектная ориентированность, которая ярко присуща Юниксу, многим апологетам очень нравится. Именно её они называют красотой - обобщённые механизмы взаимодействия, вразумительно классифицированные сущности - всё приятно глазу и душевно. Вот если сказать, что Юникс хорош тем, что lseek позволяет позиционироваться хоть в файлах, хоть в дисках целиком - это понятно и лепо. А если сказать, что lseek - метод класса random_access_data, от которого порождаются классы disk_file и special_device_with_random_access - это фу, это вонючий плюсплюс с ООшными наворотами попёр. Сакс и мастдай, некрасиво. Хотя тождественно равно, за исключением того, что второй вариант - чуть более цивилизованный.
Потрясающе.