На страницу Пред. 1, 2, 3, 4, 5 След. |
|
Ср Авг 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. |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
seodevel Опытный |
Зарегистрирован: 19.06.2008
Сообщений: 141
|
Обратиться по нику
|
seodevel |
Ответить с цитатой | | |
|
Вацлав, не соглашусь с вами насчет Перла.
1) он не умер (скоро будет 6 версия с ООП)
2) на нем много чего написано (cpan.org)
3) кросс платформенно, работает даже на моей мобиле
4) производительно
.. а камрады пишут на Cи(ISO 9001)
а так респект за статью |
|
|
|
|
|
|
StepBy Опытный |
Зарегистрирован: 29.06.2007
Сообщений: 279
|
Обратиться по нику
|
StepBy |
Ответить с цитатой | | |
|
Вацлав, отличная заметка!
Вацлав писал(а): |
Ruby: Минусы: малое распространение на хостингах, дефицит хороших бумажных учебников.
|
Насчет хостингов - уже набирает обороты.
Насчет хороших бумажных учебников - да есть такое.
Но в общем Ruby - это отличный язык! |
|
|
|
|
|
|
GFox Опытный |
Зарегистрирован: 14.10.2007
Сообщений: 232
|
Обратиться по нику
|
GFox |
Ответить с цитатой | | |
|
Я тоже выскажусь
Добавлю +100 за ASP.NET для веб-проектов. (Сам пишу на C#)
Хотя эта технология требует фин. затрат + немалое кол-во времени для освоения (C# напимер) , это всё легко покрывается прекрасным , удобным и невероятно чистым программированием.У этой технологии куча плюсов : производительность (почти на одном уровне с С++) , безопастность (забудьте про sql инъекции) , гибкость (можно написать что угодно , ограничений нет , поддерживаются все новейшие техн-гии + куча готовых библиотек). Единственный минус , это привязка к платформе (хотя это и не минус вовсе )
Кстати необязательно покупать Visual Studio, можно просто юзать экспресс версии http://www.microsoft.com/Express/. |
|
|
|
|
|
|
GetLucky Свой |
Зарегистрирован: 08.08.2008
Сообщений: 14
|
Обратиться по нику
|
GetLucky |
Ответить с цитатой | | |
|
Вацлав, спасибо за статью! По Ruby какие-нибудь книги посоветуешь? Или документацию с сайта лучше читать? |
|
|
|
|
|
|
samedi Офисный планктон |
Зарегистрирован: 17.04.2008
Сообщений: 214
|
Обратиться по нику
|
|
|
|
zone4570 Профессионал |
Зарегистрирован: 10.12.2007
Сообщений: 626
|
Обратиться по нику
|
|
|
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не вполне уверен.
(с) Альберт Эйнштейн |
Вацлав Сетевой Гугляка |
Зарегистрирован: 21.02.2006
Сообщений: 4965
|
Обратиться по нику
|
Вацлав |
Ответить с цитатой | | |
|
GetLucky, для начала изучения я толковых книжек мне не попадалось, а вот из профессиональной серии очень нравится книжка "Программирование на языке Руби. Идеология языка, теория и практика применения", Хэл Фултон, ДМК Москва 2008.
Но руби действительно простой, так что базис можно понять по онлайн учебникам. Главное "проникнуться философией" языка
samedi, совершенно соглсен! Python и Java - самые перспективно востребованные языки. Но дело в том, что вебмастерам чаще нужны не реализации тяжелых задач, а именно казуальные скриптики. И Ruby тут выглядит очень привлекательно. |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
GetLucky Свой |
Зарегистрирован: 08.08.2008
Сообщений: 14
|
Обратиться по нику
|
GetLucky |
Ответить с цитатой | | |
|
Прочитал несколько онлайн руководств и уже могу решать на Ruby задачки, которые постоянно возникают. Что понравилось, так это быстрота написания скрипта, ну и маленькие они получаются и дополнять проще простого. Т.к. интерпретируемый язык, то и исходник сразу под рукой и компилить не надо.
Так же пользовался fxri как справочником, но кажется, там не всё есть. Некоторые методы находил в гугле, которых в fxri не было
Вообще очень нравится этот язык, как прочту всё что доступно онлайн, приобрету книги.
Вацлав, спасибо за рекомендацию автора книги и самого языка, думаю долго бы его не замечал
Верно сказано, каждый язык под свои задачи. |
|
|
|
|
|
|
choor Человек-загадка |
Зарегистрирован: 09.11.2005
Сообщений: 2097
|
Обратиться по нику
|
choor |
Ответить с цитатой | | |
|
Я кстати освоение профессии "программиста" начинал с Perl. И очень доволен этим языком. С ним можно решать очень разнообразные задачи, хоть он и был первоначально создан для обработки текста, сейчас Perl достиг совершенно других высот. Сам на данный момент я профессионально программирую на python, php, perl. Хотя в последнее время больше отдаю предпочтение именно php & python. PHP это быстрое построение Web интерфейсов, а уж про python я молчу У меня написанна одна очень полезная тулза именно на нём. Просто сказка, а не язык. Вообще более менее знаю Си, правда не так глубоко как хотелось бы, всё время хочу в свободное время больше его поизучать. Имею представление о tcl, ruby. Конечно в восторге от Asm, вот что надо знать программисту так это именно Asm, я не говорю, что на нём нужно непременно программировать, нет... Боже упаси, сейчас столько создан комфортных условий для разработки тех или иных приложений. А Asm нужно знать имменно для того что бы представлять процессы в памяти. Т.е. то что ты именно делаешь, давай инструкции интерпретатору либо компилятору.
И нельзя спорить о том какой язык лучше! Каждый язык существует для реализации своих задач! |
|
|
|
|
|
“How would you like to suck my balls, Mr. Garrison?!?!” |
Вацлав Сетевой Гугляка |
Зарегистрирован: 21.02.2006
Сообщений: 4965
|
Обратиться по нику
|
Вацлав |
Ответить с цитатой | | |
|
choor, таким как я АСМ знать вредно У меня до сих пор привычка каждый байт памяти экономить, даже если оных несчитано. Наверное поэтому я так легко помещаюсь на Asus eee с 4Гиговым винтом, которого мне хватает на все нужды и еще и осталось почти два свободных |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
BrokenBrake Бомжевед |
Зарегистрирован: 16.02.2007
Сообщений: 3432
|
Обратиться по нику
|
BrokenBrake |
Ответить с цитатой | | |
|
Всё, достали! Придется тоже покупать субноут
Только я, наверно, как у Rabbit возьму.
Вацлав, кстати. Ты быстро к клавиатуре привык? Насколько удобно именно работать за такой крохой? |
|
|
|
|
|
Научись ценить время с microToDo
...а работу с рекламодателями автоматизируй! |
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
Ещё немного о PHP. Вацлав почему то обозвал его "старый" и "заслуженный ветеран" хотя он одногодка с Ruby а версия имеющая структуру сходную с используемой сейчас(3.0) и вообще моложе Ruby. И уж тем более PHP моложе Питона который появился на четыре года раньше самой первой первой версии и на семь лет раньше варианта 3.0 созданного израильтянами на более поздней версии которого мы сейчас пишем. |
|
|
|
|
|
Cabal - патентованный зануда. |
Вацлав Сетевой Гугляка |
Зарегистрирован: 21.02.2006
Сообщений: 4965
|
Обратиться по нику
|
Вацлав |
Ответить с цитатой | | |
|
Cabal, эээ... мне казалось, что PHP появился в 1994-ом, а Ruby в 1995. Для IT индустрии это серьезный срок. 94 еще год DOS-а, а 95-ый уже год Windows.
PHP базировался на старой идеологии, вот почему он старый и вот почему его объектная модель не слишком привлекательна. Поскольку для обеспечения обратной совместимости разработчики PHP не могли вносить серьезные коррективы в язык, то некоторые решения его выглядят "костылями", по сравнению с более динамично развивающимися языками. PHP отличный язык и в принципе менять его на ruby или на python смысла мало. А интегрируемость PHP в inline html делают его и вовсе не заменимым. |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
Вацлав, ну да ошибся на несколько месяцев я специально особо не лазил просто освежил чуток по верхам. Но не забывай что PHP каким мы его знаем сейчас появилось в 97. Это конечно не есть гуд когда скрипты даже в пределах между 4 и 5 не всегда совместимы с интерпретатором или с документацией, а между 2 и 3 вообще пропасть, но тем не менее python то по с PHP уж точно старпёр... Про "костыли" и всё прочее, важно что я могу с утра скачать какой нибудь MagpieRSS и к вечеру у меня простенький авто-обновляемый серый сайтик. Тоесть функции свои ОО в PHP выполняет и упрощает жизнь юзеру. А кончать на ОО потому что ОО ну не для меня это удовольствие Для меня ОО рулит если всё сделали за меня а мне только осталось что переменные со стрелочками в нужных местах нарисовать А сам такого рода разработками заниматься я не фанат. Это я намекаю на то что готовые классы для PHP доступней и их больше чем у конкурентов у которых всё отлично с ОО моделью.
PS: Я просто хотел получше раскрыть PHP. Мне показалось что ты его мальца дискредитировал всё же не смотря ни на что в пользу Руби с Питоном |
|
Последний раз редактировалось: Cabal (Чт Авг 28, 2008 8:19 pm), всего редактировалось 2 раз(а) |
|
|
|
|
|
Вацлав Сетевой Гугляка |
Зарегистрирован: 21.02.2006
Сообщений: 4965
|
Обратиться по нику
|
Вацлав |
Ответить с цитатой | | |
|
Cabal, гхм. Я себя часто на страницах форума называю старпером и ветераном Но это не значит, что я себя дискредитирую |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
|
|
Партнеры
|