Ср Авг 20, 2008 6:28 am |
Start Post: Выбираем язык программирования. |
Вацлав Сетевой Гугляка |
Зарегистрирован: 21.02.2006
Сообщений: 4965
|
Обратиться по нику
|
Вацлав |
Ответить с цитатой | | |
|
«А у вас нет такой же, только с перламутровыми пуговицами? Нету? Будем искать...».
Почти у каждого вебмастера в определенный момент начинается зуд в мозгах, вызванный желанием что-то переделать по своему. Запрограммировать какие-то рутинные процессы или сделать какой-то свой движок. Не открою секрета, если скажу, что все существующие готовые движки чего-либо (от счетчиков до блогов и CMS) сделаны мягко говоря «через жопу». Если быть точнее, то через жопу сферического усредненного пользователя. Чтобы нравиться и нашим и вашим. При разработке публичных приложений, чтобы угодить большинству пользователей обычно используется принцип маркетинговых весов «угодим-разозлим». Если на примере, то это ТВ-реклама. Не секрет, что многих людей старшего возраста раздражает реклама прокладок или презервативов. Но она нацелена на другую аудиторию, выгода от которой перевесит «разозленность». Так и в случае с публичными движками, которые идут по пути Windows — угодить домохозяйкам и плевать на производительность.
Впрочем, философские сентенции оставим философам, а сами озадачимся более приземленными вопросами.
1. А шо ви имеете таки мне предложить?
А предлагают нам нынче широчайший выбор языков применимых в сети. Я выбрал для сравнения только шесть, потому что знаю их в разной степени (седьмой — ASP я вычеркиваю из списка, потому что .... потому что вычеркиваю и все тут). Перечислять буду в соответствии со степнью владения мною. Многие оценки субъективны и базируются на старых привычках (например я считаю синтаксис и пространство имен языков Pascal и Xbase более выразительным, чем C и его производных, а «правила» бейсика и вовсе на дух не переношу). Сравнивать я буду простыми словами, не прибегая к страшным заклинаниям типа «инкапсуляция, полиморфизм, множественное наследование, обратная рекурсия». Да-да. Я знаю еще много страшных слов.
1.1. Старый добрый ПыХыПэ.
http://www.php.net/
Заслуженный ветеран броуновского движения и несомненный лидер в сайтопроизводстве.
Плюсы: есть на подавляющем числе хостингов, умеет встраиваться в html, прост в применении, обладает массой библиотек и классов, богатейшая документация, обилие учебников и сообществ.
Минусы: не самая удачная (мягко говоря) объектно-ориентированная модель, неудобный синтаксис, относительно низкая производительность.
Примечание: все остальные языки (за исключением Java) без «костылей» не умеют встраиваться в HTML. Это автоматически зачисляется им в минусы всем сразу же.
1.2. Рубероид, он же Ruby.
http://www.ruby-lang.org/en/
Пожалуй самый молодой язык из всей «шестерки». Очень красивый и удобный язык. Не путайте язык Ruby с его сверхпопулярным производным фреймворком Ruby on Rails (RoR).
Плюсы: потрясающе продуманный синтаксис, масса уникальных возможностей, самый «высокоуровневый язык» из рассматриваемых, самый маленький объем кода, прекрасная объектная модель, легок в освоении и «быстром программировании».
Минусы: малое распространение на хостингах, дефицит хороших бумажных учебников.
1.3. ... и друг его жемчужный Perl.
http://www.perl.org/
Не менее старый и не менее распространенный, чем PHP.
Плюсы: за исключением умения встраиваться в html имеет те же выраженные плюсы, что и PHP, но существенно быстрее оного.
Минусы: Он стар. Он очень стар. Место на кладбище его давно поджидает. Ну и плюс минусы того же PHP.
1.4. Они называли меня желтой рыбой? (с). Python.
http://www.python.org/
Вообще-то язык обязан названием не ползучему гаду, а Монти Пайтону, ну да это не важно. Язык хорош как синтаксисом, так и производительностью. То что его использует Google наверное говорит само за себя, не так ли?
Плюсы: хороший и крепкий середнячок. Достаточно быстрый, в меру удобный.
Минусы: все еще мало распространен.
1.5. Java — это кофе, а не сигареты.
http://openjdk.java.net/
Ууу. Я бы назвал Яву царь-языком, но слишком уж слишком люблю изящество Ruby и привык к PHP. Но статус-кво таково, что Яву используют все кому не лень. Потому что это удобно, практично и даже модно.
Плюсы: это самый «быстрый» язык, самый гибкий язык и один из самых распространенных и перспективных. А его родственность с JavaScript и дает ему огромную фору. Умеет «встраиваться» в html маскируясь JSP страницами. Ну а после шикарного инструмента GWT от Гугла получает и еще большее количество призовых очков.
Минусы: сложноват в освоении, имеет массу весьма запутанных реализаций, не очень хорошо распространен на «бюджетных» хостингах.
1.6. abC. До-Ре-Ми-Фа-Соль-Ля-Си.
http://gcc.gnu.org/
Все разновидности языка (C, CPP, C#) очень популярны и вполне заслуженно. Мощный язык с отличной производительностью.
Плюсы: высокая производительность, огромное количество документации, богатая история.
Минусы: крайне хреновая интеграция в WWW, сложность для освоения.
2. Вам шашечки или ехать?
Вообще-то, лучший язык тот, который вы лучше знаете. Но для разных задач лучше подходят разные языки. С обслуживанием нетяжелых www проектов отлично подходит старый добрый PHP. Perl и python по сути уже встраиваются в большинство линуксов и могут служить там скриптовыми языками (впрочем они и в Windows это могут, только кому это нужно?). Ruby, благодаря своей простоте и компактности, отлично подойдет начинающим программистам, как весьма универсальный язык для автоматизации рутинных задач. Java и Си позволяют достичь в большинстве случаев феноменальной производительности при тяжелых нагрузках, а вот программировать на них примитивные задачи мне представляется нецелесообразным.
3. Производительность.
Самым узким местом в веб-программировании остаются http-запросы. Запрос-ожидание-ответ. Эта фаза зачастую на корню гробит преимущества в скорости таких языков как Java или Си. Трудно ехать на Феррари через московские пробки. Но при росте нагрузок и количестве запросов становится актуальным и фаза обработки данных на сервере и отдача ответа. Да так важно, что старичок PHP с трудом справляется с задачами TDS например. Генерацию или же синонимизацию контента лучше поручать и вовсе Яве. Но с другой стороны, стоимость железа нынче не так уж и высока, так что «ускорить» ПО можно и методом Microsoft — нарастить системные ресурсы. Иногда это оказывается существенно эффективнее и дешевле, чем нанимать специалиста или изучать язык самостоятельно.
Ну померять письками-то языки все же надо
Вот тут можно посмотреть замеры:
http://elliottback.com/wp/archives/2008/01/17/ruby-vs-php-performance-revisited/
Если вкратце, то Java в 200 раз быстрее PHP.
И маленькая поправка: в указанном тесте рассматривалась старая версия Ruby (1.8.5). Новая (1.9.0) работает в 4(!) раза быстрее старой, что переносит Ruby на третье место после Java и C++. Думаете остальные языки тоже подтянулись? Увы, но нет. Ruby молодой язык и у него еще остался запас для оптимизации, в отличии от оттюнингованных до последних процентов ветеранов.
4. Казуальное программирование.
Не знаю, есть такой термин или его я изобрел (лень гуглить), но делать быстрые наброски и простенькие скрипты удобнее всего на ... правильно На Руби. Я действительно влюбился в этот язык и весьма пристрастен. Хотя Python тоже очень и очень неплох.
5. Вацлав, гад! Ты еще больше меня запутал! Что же выбрать!?
Все зависит от задачи. Какой язык лучше — это такой же бессмысленный вопрос как и «какой дистрибутив Linux лучше и не лучше ли вообще Windows?». Ориентируйтесь на свои задачи, как и я. Я тоже использую разные языки для разных задач.
а) Слабонагруженные Web-проекты: лучшее — враг хорошего. Пользуйтесь PHP и всеми его плюсами. А про минусы забудьте.
б) Средние нагрузки, с потребностью быстро обрабатывать данные — вот тут лучше заменить старый Perl на новый Python.
в) Средние нагрузки, с обработкой большого числа запросов (например AJAX и прочие «вебдванольности») - Java + GWT = JavaScript + PHP.
г) Высокие нагрузки и обработка большого числа данных: Java.
д) Наброски рутинных скриптиков — Ruby.
Как видите, Руби не особо где нужен, если честно. Но благодаря его удобству я его использую в о всех группах кроме «Г». Но, как я уже говорил — удобство языка это дело вкуса. Если же смотреть более объективно на вещи, то на первое место по перспективности я поставлю Java, а на второе Python. |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |