блин, у меня 38,6
и по етому поводу я хочу поболтать маленько о скучном, но флеймовом
Когда-то давным-давно - так давно, что некоторые активные вжижеплаватели тогда были ещё соовсем маленькими, - привёз я из ЦПС города Калинин (тогда ещё Калинин, а ЦПС - это
Центрпрограммсистем) ленточку. И это было неудивительно - "В 1983г. объединением осуществлено более 1000 пакетопередач по 136 программным средствам на основании 587 договоров для 429 пользователей-предприятий 66 министерств и ведомств. ... В 1985 году НПО ЦПС стал головной организацией в стране по технологии разработки производства программных средств вычислительной техники, на базе ЦПС был организован центр по государственным испытаниям программных средств." (там же).
На ленточке была операционная система
МОС ЕС (не копошитесь по этой ссылке, а сразу ищите на странице МОС ЕС или фамилию Пронин).
Приехав из Калинина и протрезвев, я водрузил это чудо сначала на СВМ (систему виртуальных машин), которая колбасилась на
ЕС-1036, а впоследствии вместо всего зоопарка. От МОС ЕС я прозрел.
Это было невыносимо прекрасно - после мрачилова PL-1 (уууу, только отсутствие резервированных слов - это уже очень и очень, а об управлении памяти я скромно умолчу) получить эту цацку в руки - всё учится на лету, С, интерактивный отладчик, lex и yacc, awk, оооо!, а что главное, - чтобы "добраться" до вывода символа на вечнозелёный терминал, не надо было больше мутить терминальные программы на ассемблере и связывать их через гигантский анус PL-1 (по-моему, этот язык и есть программное воплощение гигантского ануса).
С тех пор и началось. И продолжалось. Была станция Apollo - ага, настоящая, но сильно покоцанная, её везли через третьи страны (с финальным попаданием за "железный занавес" в Болгарии, по-моему). 4 метра мозгов, 150 мегабайт винт и моторыло 68020 на 33 мегагерцах - и всё это в корпусе, на писюк похожем до боли. Это был кайф и бесконечные первые брачные ночи, и переносы написанных на писюках паскакалевских научных расчётных задач для вполне конкретного заказчика, в общем, - всяко было, даже машина появилась, новая и модная - ВАЗ-2105.
А потом я выпал из контекста. Потому что контекст исчез. На месячную зарплату можно было купить две пачки более-менее сигарет и какую-то совсем уж пошлую мелочь. Выпав из несуществующего контекста, чего только я не делал - вам не советую и не желаю.
А потом случайно, работая в одном из нынешних локальных IT-гигантов стодолларовым менеджером по продажам, умудрился легально прикупить себе ОС Coherent! Которая стоила $70, работала на 286-й машинке и достаточно долго меня радовала по вечерам, давая возможность не свихнуться.
Потом я стал тем, кем стал (в словах "потом" - очень большие временные промежутки).
И сделал большую глупость - уверовал в очередной могучий всплеск под названием Linux (кстати, эта глупость продлилась совсем недолго, и фаворитом стала, конечно, FreeBSD, которая постепенно уступает место Solaris и DragonFly BSD). Под FreeBSD я проработал лет пять на нынешней работе - ага, один на всю контору, сам себе админ и кто угодно (с виндой у меня такой же принцип :). Писал в Nedit - до сих пор его обожаю, пользовал только Motif-программы и тикль. Motif даже когда-то варезный был, гггг. Просто я его люблю, и Nedit, и DDD, которых мне хватало с головой.
Потом меня подбили на винтукей (Win 2000 SP3 уже был, по-моему), и я прозрел во второй раз. До этого я видел только винду 3.1 на бездисковых станциях менеджеров.
А теперь прошло немало времени, и давайте поговорим о моих злобных претензиях.
Во-первых, - переписывание стандартных утилит на других языках, и, вообще, - любая повторная реализация неизменных спецификаций, - это, простите, чистый и незамутнённый маразм. За исключением случая, когда открытые спецификации являются предметом разработки спонсируемого независимо от реализаторов кода института (имеется в виду общественный институт) - как, например, в случае самой распространённой ОС в мире - TRON. Если бы все только и занимались тем же, чем занимался в своё время бородатый гуру - делали "открыто-бесплатные" реализации спецификаций, созданных за десятки лет труда множества очень умных людей, - не было бы никакого Ruby или там Lua или Python, всё сидели бы с великим C-компилятором классика. Сейчас дело бородатого гуру с упорством неубиваемого дятла повышенной бронебойности продолжает этот, как его, шаман "отрытой реализации" .NET (совсем вылетела его фамилия, латинос что ли какой-то). Это занятие - массовые гонки на самокатах с паровозом, конечно очень увлекательное, но в нём по определению есть догоняющая сторона, которая делает не только хорошее дело. А и одно крайне отвратительное - не понимая, что вторичность не только презренна, догоняющая сторона низкой стоимостью кодирования вынуждает разработчика спецификаций предпринимать меры по защите колоссальных инвестиций в их создание. И, тем самым, благая дорога в Рай свободных программ ведёт к частично открытым спецификациям, которые в первую очередь косвенно снижают и конкуренцию, и качество ПО. Подумайте сами, почему это происходит. Кроме того, реализаторы по спецификациям, в первую очередь по тем, которые являются предметом интеллектуальной собственности (не любите интеллектуальную собственность? расскажите
sasha_smilanski - почему), в точности повторяют одно действие великой СССР - сами строят свой персональный железный занавес. К чему это приводит - все знают.
Во-вторых, я действительно с определённых времён считаю, что *nix-системы отпели своё как массовые ОС. Их удел - сервера с ограниченной функциональностью. То есть, - web-сервер на *nix хорош, и сервер БД тоже иногда (не факт, что всегда), а вот сервер приложений (вообще) - уже далеко не так хорош (приложения, мои маленькие друзья, приложения - вы сами знаете, для какой платформы их больше). И ещё одна область - кластерные вычисления. Не факт, что *nix здесь оптимальны (а разве кто-то создавал спецификации кластерной ОС?) - просто кластер требует много и дёшево.
Практика моё мнение подтверждает.
В-третьих - я действительно считаю, что X Window - уже давно мёртвая система. Как и система управления локалями *nix. Как и "система" (какая там система, - это же чистый топорный хак) переключения ввода. Вот расскажите мне, гуру, как на моей домашней машине сделать возможность переключения между реально (увы) нужными мне русским-английским-польским-итальянским-немецким языками? Под иксами - как?
В-четвёртых - я действительно считаю, что отсутствие поддержки бинарной совместимости в 2007 году - ето писец. Говорят, - перекомпилируй и пересобери. Или ставь всё с помощью системы управления пакетами - и проблем вообще не будет. Вот только, милые мои, далеко не всё помещено в порты (или пакеты) - ето раз и ето факт. А, во вторых, - тот несказанный мусоросборник, который порождают многоверсионные программы в *nix с любыми менеджерами пакетов - он невыносимо прекрасен! Но всё это не главное. Главное - а зачем вообще морочиться, а? Я понимаю, что система бинарной совместимости НИКЕМ НЕ СПЕЦИФИЦИРОВАНА, поэтому её и нет. Но это понимание не греет моё сердце.
В-пятых. Действительно userland в *nix не просто устарел. Милые мои, - нафига переписывать на Ruby ls с психиатрической коллекцией всех её флагов, возникшей только из-за того, что userland в *nix по сей день хрен знает какой давности и образован СТРОКАМИ? Вы чё? Какой год на дворе-то, а? Какие строки?
А вопрос ведь не тривиален. У меня есть свалка фотографий. Я хочу скриптиком её переколбасить, - например, скопировать в другой каталог все фотки, в файлах которых в метаинформации какое-то словечко заветное. Или там в EXIF значение диафрагмы определённое. Чем мне поможет ls, В МИРЕ КОТОРОЙ НЕ СУЩЕСТВУЕТ ФАЙЛОВ, А ЕСТЬ ТОЛЬКО ИХ ИМЕНА? Вы чё, пацаны? Какой год на дворе? Зачем в 2007 году такой маразм:
Опции GNU (краткая форма): [-1abcdfghiklmnopqrstuvwxABCDFGHLNQRSUX] [-w cols ] [-T cols ] [-I шаблон ] [--full-time] [--show-control-chars] [--block-size= размер ] [--format={long,verbose,commas,across,vertical,single-column}] [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]] [--help] [--version] [--]
для манипуляций не файлами как объектами, а строчками? Это ведь уже натуральный сумасшедший дом, формирующийся из зацикливания на мире строк - слишком уж разнообразны атрибуты объектов, и для них надо выдумывать всё новые и новые ls c их психоделическими тремя сотнями опций.
В-шестых. Скажите пожалуйста, как мне в *nix выдернуть фрагмент электронной таблицы и вставить в CAD-чертёж так, чтобы в CAD можно было вытягивать изменения ячеек таблицы, "привязанной", например, к данным на каком-то серваке. А как то же самое, с той же самой таблицей сделать в другом пакете, - например, EDA?
Милые мои - но это то, что делают каждый день люди, создающие для вас красивые и полезные вещи. Ага. Будьте уверены - они это делают, ещё как, и каждый уважающий себя CAD (CAM CAE EDA GIS blah-blah-blah) производитель заявляет СОВМЕСТИМОСТЬ СВОЕГО ПРОДУКТА С OLE.
В-седьмых, никогда не путайте видимое вам проявление какой-то функциональности стороннего по отношению к системной X Window пакета из userland (оконного менеджера, например), с возможностями самого пакета. Для винды есть хренова туча залипух того же уровня, позволяющих и изменять стековый порядок окон с alt-кликом и даже временно объявлять окна сторонних приложений полностью прозрачными - не только визуально, но и для событий, генерируемых мышкой и клавиатурой. Только всё это здесь, по большому счёту, не нужно - если бы оно реально было нужно, эти программы развивались бы как, например, Paint .NET.
В-восьмых. Ни один масштабный проект, где приходилось бы серьёзно работать на уровне спецификаций, не состоялся в комьюнити, потому что создание спецификаций - не кодирование, а совершенно другой процесс, очень ресурсоёмкий, потому что недостатки, заложенные во время разработки спецификаций (например, - архитектурные), устранить можно будет только после того, как будет реализовано специфицируемое! Это долгие годы и громадные деньги - та область, где комьюнити никогда не была сильна.
В-девятых. Опять X Window. Времена, когда эта штука разрабатывалась - прошли навсегда. И не вернутся. Любая система, не модифицируемая на уровне спецификаций, устаревает, какой бы блестящей для своего времени она ни была - любой современный боевой танк раскрошит в клочья легендарный Т-34 как орешек. Спецификации X Window не менялись, разве что под давлением сложности этого чудовища была предпринята беспрецедентная попытка сделать его код более управляемым.
В-десятых. Подсистема печати. Это не просто писец. Это неиллюзорный писец. Ведь её как таковой не существует. Есть залипухи, приблуды, какие-то сервера, как CUPS, но это ведь не система печати, если вы понимаете о чём я. То же самое со звуком. А почему? Да всё по той же причине - НИКТО НЕ СДЕЛАЛ ДЛЯ СООБЩЕСТВА ЕДИНЫХ СПЕЦИФИКАЦИЙ. Увы, но это так.
Какой выход из этого видится лично мне?
1. Привлекательно-фантасмагорический вариант таков:
На примере японцев, проекта TRON - национальный проект ОС, базового системного ПО и наиважнейших userland-программ (в первую очередь, development) НА УРОВНЕ СПЕЦИФИКАЦИЙ!
Можно использовать всё лучшее, что уже есть - отбирать и использовать.
Можно объявлять конкурсы на реализацию спецификаций, поощрять лучших материально и НЕПРЕМЕННО ПООЩРЯТЬ ПРОДАЖУ РАЗРАБОТАННОГО ПО СПЕЦИФИКАЦИЯ ПО!
но это, естественно, - бред.
2. Реалистический.
Не выёбываться, а использовать то, что хорошо использовать в своих нишах. Винду - там, где пользователь требует когерентности, удобства и безумного количества прикладных программ (а не разглагольствований о том, как с помощью Emacs, TeX и Macsima можно изящно разрабатывать подъёмные краны). Фрюниксы - на серверах ограниченной функциональности и в каких-то специфических случаях как рабочие станции (обычно речь идёт или о разработке ПО под сами же фрюниксы, или о EDA, во втором случае так как софт очень дорогой, цена ОС никакого значения не имеет, а вот "В-шестых" никто не отменял, между прочим). Коммерческий Unix - там, где требуются сервера приложений и есть пакеты именно для этой ОС (Solaris и AIX, больше, по-моему, никто не выжил).
Вот и вся пурга.