Расхожие мифы о Windows и LinuxЧасть 2. Профессионалы выбирают Linux, а домохозяйки Windows...Среди компьютерных пользователей широко бытует мнение о том, что Линукс — это операционная система для профессионалов, в отличие от Windows, ориентированной на некоего "полуграмотного" домашнего пользователя. Давайте попробуем разобраться, насколько это утверждение соответствует истине. Для начала собственно разберемся с самим понятием "профессионал". Когда я спрашиваю у своих оппонентов на форумах значение этого термина, они начинаются мяться и как правило сходятся на таком определении: "Профи — это грамотный компьютерщик, разбирающийся во многих аспектах компьютерных систем". Подобное определение мне кажется в корне неверным. Имеется огромное количество любителей, разбирающихся в этих вещах намного лучше многих профессионалов, взять тех же пресловутых "хакеров". На мой же взгляд, основное отличие профи от любителя заключается в том, что профи получает за свою работу заработную плату, а любитель занимается тем же самым делом исключительно "для души". Это различие было неплохо обрисовано еще Диккенсом: "Очень приятно управлять четверкой мчащихся в ночь вороных коней, при одном условии — если вы не кучер дилижанса, и вам не платят за это деньги". В киберпанковских романах У. Гибсона это различие было выведено еще четче: там мир программистов жестко делится на два лагеря — вольные художники от клавиатуры (консоли в его терминах) и "продавшиеся мультикорпорациям программеры", выросшие из тех же вольных художников. Я знаю, что книги в наше время читать, увы, немодно, в связи с чем порекомендую всем желающим посмотреть видеофильм "Нирвана" с Ламбертом в главной роли. Фильм создан по мотивам новелл Гибсона и, в отличие от многих других псевдо-хакерских видеоподелок, очень хорошо передает сам дух этого бунтарского племени. Видеокассета с этим фильмом просто обязана находиться на полочке любого компьютерного фэна рядышком с культовым фильмом Бэдхэма "Военные Игры". Ну ладно, что-то мы отвлеклись... Итак, давайте примем в качестве главного отличия "профи" от любителя признак оплачиваемости его труда и посмотрим, что могут предложить нашему гипотетическому профи обе обсуждаемые платформы. Рассмотрим две наиболее распространенные профессии среди компьютерных профессионалов — программист и администратор. 2. 1. Что готовят Линукс и Windows программистуМиф о "профессиональности" Линукс вырос из фразы, брошенной Линусом Торвальдсом в одном из интервью. Его спросили, что именно побудило его создать новую операционную систему. Он ответил: "Я создал ее для того, чтобы программисты, занимающиеся разработкой Unix, могли продолжать работу над системой и дома". Для понимания этой фразы необходим небольшой экскурс в историю. Тогда на дворе стояли времена, когда компьютеры были большими, а мы все были еще очень маленькими. Только-только в обиход начало входить понятие персонального компьютера. До этого приобрести себе компьютер было по средствам только крупным организациям. Одной из самых распространенных машин были микро-ЭВМ серии PDP-8 фирмы DEC. Приставка "микро" в те годы означала коробку размером с пару современных холодильников. Стоила она более 15. 000 долларов и состояла из большого количества электронных плат. С микро-ЭВМ одновременно могли работать несколько пользователей через такую штуку как "терминал". Терминал выглядел, как электрическая пишущая машинка (позднее монитор) с клавиатурой, не связанной напрямую с печатающим устройством. Все, что пользователь набирал на клавиатуре, отправлялось в компьютер. Ответ компьютера распечатывался на установленном у пользователя печатном блоке. Основной операционной системой этих машин являлась ОС Unix. Имея идеологию управления с командной строки, поддерживая множество одновременно работающих устройств последовательного ввода-вывода, он идеально подходил такого рода "распределенным" компьютерным системам. Но прогресс тем временем не стоял на месте. Компьютеры уменьшались в размере, стоимость их падала с катастрофической быстротой, и вскоре микропроцессор начал победоносное шествие по миру. Вездесущий Билл Гейтс и тут приложил руку, написав первый язык программирования (BASIC) для одного из первых микропроцессорных компьютеров (который до него программировали с помощью лампочек и переключателей), "этой примитивной игрушки", по определению президента корпорации DEC Оулсена. К слову, так и не поняв исторической роли открытия микропроцессора, Оулсен до конца отказывался принять идею того, что компьютер может быть маленьким. Именно это в конце концов и сгубило фирму DEC. Упрямо придерживаясь устаревшей технологии, они продолжали выпускать модификации своих громоздких машин и в конце концов съеденные конкурентами канули в Лету. Вот бы еще люди умели учиться на чужих ошибках, ну да ладно, это я забегаю несколько вперед. Несмотря на наличие более современных компьютеров, морально устаревшие микро-ЭВМ использовались еще довольно долго. Под них было накоплено большое количество программного обеспечения, с которым жалко было расстаться. Они также были значительно мощней тогдашних микропроцессоров. И вот мы наконец подошли к моменту создания Линукс. Дело в том, что прямой перенос Unix на микропроцессорные машины был практически невозможен. Совершенно другая архитектура компьютера и малая вычислительная мощность тогдашних микропроцессоров не позволяли запускать на них эту систему. Билл Гейтс уже показал пример всему миру, приобретя права на несложную однозадачную операционку, перенесенную с микро-ЭВМ. Вскоре эта система под названием MS DOS 1. 0 поступила в продажу. Это был довольно смелый шаг, так как эта OS практически не использовалась в современных ему микро-ЭВМ. Он снова кинулся в авантюру, как это раньше было с микропроцессором, фактически купив лишь фундамент для будущего здания своей OS. Фундамент здания, которое он собрался строить сам по своим чертежам. Линус Торвальдс пошел по другому пути. Он решил использовать привычную для пользователей среду PDP-8, перенеся ее на современную аппаратную основу. Созданная им OS несла все черты своего прародителя Unix, включая даже многопользовательский режим. Я не мог догадаться, зачем ему потребовалось тащить в будущее эти осколки прежней эпохи, пока не наткнулся на цитату, приведенную в начале статьи. Линукс задумывался всего лишь как оболочка для специализированного компилятора языка С! Компилятора, включающего в себя имитацию будущей среды исполнения программы в рамках операционной системы Unix. Говоря профессиональным языком, нечто вроде "кросс-компилятора" для Unix на микропроцессорных машинах. Ни больше, ни меньше. Действительно, при таком подходе можно назвать Линукс профессиональной операционной системой. Правда, нужно не забывать при этом уточнять, что предназначена она для узких профессиональных целей разработчиков Unix. Разобравшись с мифом, давайте теперь посмотрим, что в реальности может предложить Линукс современному разработчику. Профилирующим языком программирования на этой платформе, как вы, наверное, уже догадались, является язык С. Причем в самой исходной его редакции Кернигана и Ричи. В настоящее время существуют значительно более развитые его диалекты и целых два новых стандарта языка C++ и C#, но истинными гуру Линукс они презрительно игнорируются. А вслед за гуру они игнорируются и разработчиками компиляторов для этой платформы. Единственная отрада на этой платформе — это Java, хотя ее правильнее отнести к скриптовым языкам, обсуждаемым ниже. В отличие от Linux, платформа Windows предлагает разработчику большое количество разнообразных компилируемых языков программирования. В их число входит вся линейка языков, выросших из пресловутого C: сам исходный C (оригинальный и несколько диалектов от разных производителей), его дальнейшее развитие С++ и совсем новые языки программирования C# и JScript. Net. Для сторонников Паскаля имеется линейка компиляторов от фирмы Borland, включая сюда кросс-платформенную версию Delphi — Kylix. Для тех, кто привык пользоваться Бейсиком, имеется Visual Basic. Для тех, кто пользоваться им не привык, но хотел бы научиться, существует совсем новый язык VB. NET. На платформе Windows поддерживается преемственность программного обеспечения, поэтому под ней также работает все сонмище старых компиляторов под MS DOS. К примеру, один из моих клиентов до сих пор пишет на QuickBasic и не испытывает каких-либо проблем. Помимо основного языка C под Линукс существует целый зоопарк скриптовых языков. Среди них наиболее широко известны Perl и PHP. Отличие скриптов от обычного языка программирования заключается в том, что программы на них не являются программой в полном смысле этого слова. Они фактически лишь последовательность команд для некоей другой программы, называемой хостом. Простым примером подобного хоста является банальный файл command. com в среде MS DOS. Он также понимает собственный язык, который записывается для него в bat-файлах или вводится в командной строке. Основной недостаток всех базирующихся на хостах языков программирования — низкая скорость работы из-за того, что, прежде чем выполнить какую-либо команду программы, хост сначала должен разобраться, что за команда к нему на этот раз пришла. Помимо этого компиляторы определенным образом оптимизируют программу, прежде чем ее выполнять. Для скрипта такая оптимизация невозможна или связана с дополнительными издержками, опять-таки, замедляющими выполнение программы. В поставке любой современной Win32-платформы также имеются два скриптовых языка, интегрированных в систему Jscript и VBScript. Также под Windows созданы версии большинства других известных языков. Среди них есть и Perl, и PHP. Любой скрипт под Windows с помощью технологии ActiveX может обращаться к подавляющему большинству программ, установленных на вашем компьютере. Вы можете из текста своего скрипта попросить Ms Excel посчитать для вас сложную формулу или программу Nero записать для вас компакт-диск. Программа Outlook может отправить за вас почту, а Интернет Explorer — загрузить определенную страницу. Более того, вы можете самостоятельно написать на том же самом скрипте (или каком-либо языке программирования) свой собственный ActiveX, выполняющий необходимые вам задачи или воспользоваться огромным количеством уже готовых ActiveX, находящихся в Интернете. Под Линукс подобная технология отсутствует. Не могу упустить возможность съехидничать: работая под Windows, вы вполне в состоянии создавать скрипты для Linux, а вот при работе под Linux вам вряд ли удастся создавать скрипты для Windows. Когда я привожу в форумах довод о скудности выбора языков программирования под Линукс, мне обычно отвечают: "Язык С круче всех, и ничего другого нам не надо!" Возможно, на платформе Линукс это действительно самый крутой язык... в силу ущербности всех остальных языков. Но для платформы Windows это не так. Все современные языки на ней практически равны по возможностям. Программисту не приходится мириться с неудобством для него синтаксиса конкретного языка. Он волен выбрать язык, который более всего подходит его способности выражать свои идеи. При этом его идеи ничуть не будут урезаны возможностями того или иного языка. Более того, программист волен произвольно смешивать куски кода, написанные на разных языках, без каких-либо усилий. Язык С в чистом виде устарел еще лет 10 тому назад. В нем отсутствует объектная парадигма, он не защищает программиста от ошибок (особенно начинающего), тяжел в изучении, не дает никаких преимуществ по сравнению с современными языками. Возможно, трудность изучения языка и заставляет гуру от С отстаивать его воображаемую "крутизну", поддерживая таким образом собственную значимость. Проблема лишь в том, что никаких разумных доводов в защиту этой гипотетической "крутизны" мне еще никто не смог привести. Вторая проблема, с которой сталкивается программист под Линукс, это практически полное отсутствие сред разработки. По крупному счету, таких сред только одна — недавно выпущенная фирмой Borland среда Kylix. Что характерно, в связи с тем, что среда использует малознакомый для большинства Линукс-программистов язык Object Pascal, она дружно ими всеми игнорируется. Windows-программисты, знакомые с ее аналогом Borland Delphi, также не спешат переходить под Линукс. Хотя бы потому, что они не знакомы с основами программирования этой системы. Получается замкнутый круг: среда программирования есть — но она никому не нужна. Ну ладно, Object Pascal — язык, не родной для этой платформы. Что же может предложить Линукс-программистам классический C? Как это ни странно, не так уж и много. Все фэны Линукс хором называют две оболочки — CForge и KDevelop. Первая из них, по крупному счету, является всего лишь навороченным текстовым редактором на манер известного редактора MultiEdit for MS DOS. Ни больше ни меньше. Думаю, ее вообще не стоит рассматривать как среду разработки. Среда KDevelop обладает более широкими возможностями, но все они далеко не дотягивают до возможностей даже Visual Studio 6. 0, я еще скромно промолчу про Visual Studio 7. 0. При этом среда довольно тяжеловесна, неустойчива и избыточно сложна для небольших проектов. По моим наблюдениям, это является основным признаком всех RAD-средств, выросших на почве Linux. Взять хоть ту же Kommodo для Perl... Теперь вспомним о нашем определении профессионала. Каким образом наш гипотетический профи сможет зарабатывать своим трудом деньги на этой платформе? Заходим на сайт www. job. ru <http://www. job. ru/> и смотрим, какие вакансии нынче предлагают программистам под Linux. Да... негусто: на семь-восемь вакансий для Win32-программиста приходится максимум одна вакансия для Linux-программиста. Ладно. Под Линукс много скриптовых языков, посмотрим, как обстоит дело с веб-разработчиками. Действительно, тут дела обстоят получше. Но! Размер предлагаемой оплаты для веб-разработчиков значительно ниже расценок на тех же ASP- и ASP. Net-разработчиков. С такими расценками Perl-программист, к примеру, семью не прокормит. А вот для школьника или студента она вполне приемлема. Напрашивается самоочевидный вывод: основное предназначение Linux в России — служить утолению юношеского нонконформизма. Этим ее свойством активно пользуются некоторые конторы, откровенно кидая на деньги программистов под Linux. C более умудренным жизненным опытом программистом такой номер бы уже не прошел. Осознав этот факт, начинаешь понимать, кому выгодна вся эта поднятая шумиха с Open Source. Я не удивлюсь, если завтра выяснится, что исходники, выложенные доверчивыми и падкими до громких слов о свободе студентами, широко используются в закрытых коммерческих проектах. Разумеется, не соблюдая никакой GPL. Герман ИВАНОВ | |
Ссылки:
|