На страницу Пред. 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. |
|
|
|
|
|
Второе пришествие Вацлава. Камингсуново. |
DrKronos SEO-доктор |
Зарегистрирован: 11.03.2008
Сообщений: 13024
|
Обратиться по нику
|
DrKronos |
Ответить с цитатой | | |
|
Цитата: |
На тестах держало 20 запросов в секунду на динамику. Это примерно 1200k запросов или 120к уников, считая 10 запросов на уника.
|
На тестах - держит и 1000 запросов в секунду когда надо. А вот на "боевом" проекте, циферки уже другие. И на кой ляд один уник 10 запросов к динамике делать будет? Все остальные, кроме одного запроса, должны идти к статике. Желательно на CDN.
Цитата: |
Только вот как ее эффективно кешировать? Я вижу эту задачу нетривиальной. Не каждый же раз полгига ворочать.
|
А проблемы индейцев шерифа е..ут? Задача решаемая и решаемая достаточно просто. Называется "а нехер за один запрос дёргать такую базу".
Цитата: |
Админ хостинга в конце концов. Если нет админа - могу сам базовую конфигурацию поставить и настроить.
|
Угу. Это если ты плюшевыми мишками торгуешь. А если доры лепишь, линки спамишь и ебущихся людей продаёшь? Охота посторонних спецов будет привлекать?
Цитата: |
facebook как пример не покатит? PHP.
Далее по производительности: как пункты кроме видео и чата влияют на производительность? Или они для суммы, типа чтобы мбыло много чего делать и я не спорил, т.к. на рор это ощутимо проще реализовать?
|
А ты готов поручиться, что "внутрЕ" фейсбука не запрятаны компилённые сишки? И опять-таки, вопрос бюджета. Фейсбук хоть на турбобабамаше может себе позволить платформу разворачивать. Аренда +/- десятка серваков для балансировки для них не проблема
Цитата: |
Ну я же не битрикс юзаю, чтобы 2 секунды было
|
Банальный WP висящий под апачем и мускулом, отдаёт контент за 2 секунды. А бывает и за 10.
Цитата: |
А вот забить канал slow-connection-ами, существенно проще. Согласен. Только это не канал забивается, а памяти не хватает, т.е. проблема из-за канала, но нагрузка на память.
|
Вот и вижу, что ты нифига хайлоады не делал На хайлоаде в производительности часто выигрывает не тот язык, что быстрее работает "по синтетическим тестам", а тот что памяти меньше жрёт. Выживаемость выше.
http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=ruby&lang2=php&box=1
PHP работает быстрее, но жрёт больше памяти. Следовательно при росте запросов, сервер начнёт тормозить. И суммарно проиграет по быстродействию. |
|
|
|
|
|
Здесь могла быть ваша реклама |
nerezus Свой |
Зарегистрирован: 22.05.2009
Сообщений: 5
|
Обратиться по нику
|
nerezus |
Ответить с цитатой | | |
|
Цитата: |
А ты готов поручиться, что "внутрЕ" фейсбука не запрятаны компилённые сишки?
|
Смысл им врать о своем сервисе? Они статью писали про его устройство.
Цитата: |
На хайлоаде в производительности часто выигрывает не тот язык, что быстрее работает "по синтетическим тестам", а тот что памяти меньше жрёт. Выживаемость выше.
|
НУ я как бы про это и написал, что с памятью проблема будет, внимательней.
Но если учесть, что на сервере 4гб оперативки(база на втором), то одновременно он много может вытянуть, ограничение по 20мб на процесс. Т.е. даже если среднее время загрузки динамики 8с, то все норм. По факту 3с на 512кбит канале.
И еще: оперативка очень дешевая. Добавить не проблема, сейчас даже любой современный десктоп по 8гб держит(4х2). |
|
|
|
|
|
|
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21745
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
с чтения правил - неследует поднимать старые топики
последний: Сб Май 23, 2009 4:26 pm
твой: Пн Апр 26, 2010 5:17 pm
а начинать надо с того, что надо сегодня/завтра будет,
я советую конечно пхп, для прикладного веб-прог..
но если какие то "узкие" задачи, то и язык там, возможно, следует применить узкий и не популярный, так сказать. |
|
|
|
|
|
porno |
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
dbx |
Ответить с цитатой | | |
|
Извиняюсь за вторжение, но посты уважаемого и давно не отвечающего Вацлава вдохновили на написание в этом топике. ДП php я пробовал совсем чуть чуть, да, он подходит для веба, но не более, в отличие от Питона на котором как я понял можно писать разного рода программы и плюс его переносимость на другие ЯП, так что пытаюсь обуздать этого змия, но не так легко как казалось, синтаксис очень отличен от С++ и пхп и что самое плохое, совсем нет литературы наподобие "Python для чайников" ..и это на самом деле опять заставляет задуматься, может не стоит терять время и прыгать с языка на другой язык, а продолжать изучать с++... |
|
|
|
|
|
|
veligursky + Гуру |
Зарегистрирован: 14.07.2008
Сообщений: 1127
|
Обратиться по нику
|
veligursky + |
Ответить с цитатой | | |
|
тоже читаю питон, вроде ниче сложного и синтаксис простой, правда у меня книжки хорошие есть , разберусь с питоном - возьмусь за джанго |
|
|
|
|
|
Блог для Новичков в SEO и CPA, CPA Admitad |
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
dbx |
Ответить с цитатой | | |
|
А товарищ Велигурскии не желает поделиться коллекцией книг, ссылочки (если можно не торрент)...или на мыло если не много..
спс)) |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21745
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
если можно не торрент
жесть, снова про правила - размещать ссылки на торренты нельзя на форуме, - непровоцируй. |
|
|
|
|
|
porno |
veligursky + Гуру |
Зарегистрирован: 14.07.2008
Сообщений: 1127
|
Обратиться по нику
|
|
|
Блог для Новичков в SEO и CPA, CPA Admitad |
lizendir Свой |
Зарегистрирован: 07.07.2006
Сообщений: 65
|
Обратиться по нику
|
|
|
Парсинг сайтов, сбор и обработка данных |
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
dbx |
Ответить с цитатой | | |
|
veligursky, благодарю за информацию, сейчас начал читать Лутца "программирование на Питон", и сразу вопрос. у меня установлен eclipse и сам питон 26, а книга Лутца датируется 2001 годом, не будет это старовато для для обучения? или тот же господин Чаплыгин...(хотя оч хороши читается и не заставляет моск кипеть от одних только технических предложений)
lizendir, спасибо, един-ый подробный форум по Питону, в отличие от блогов где нет подробных общих пояснений. а чисто узко специализированное объяснение. |
|
|
|
|
|
|
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
dbx |
Ответить с цитатой | | |
|
veligursky писал(а): |
пиши на мыло скину по почте
|
admin@mail.ru спасибо. |
|
Последний раз редактировалось: dbx (Ср Апр 28, 2010 4:41 pm), всего редактировалось 1 раз |
|
|
|
|
|
veligursky + Гуру |
Зарегистрирован: 14.07.2008
Сообщений: 1127
|
Обратиться по нику
|
|
|
Блог для Новичков в SEO и CPA, CPA Admitad |
Cabal Гуру |
Зарегистрирован: 20.10.2007
Сообщений: 1360
|
Обратиться по нику
|
Cabal |
Ответить с цитатой | | |
|
dbx, во первых всётаки я тебе советую классику. "Язык программирования Python" Россума и коллег и вот этот вот курс от Сузи
http://www.intuit.ru/department/pl/python/
Как более подробное и пошаговое руководство да, очень хорош Лутц - "Изучаем Python" тебе про него уже сказали. Ещё больше можно узнать почитав Лутц "Программирование на Python" мне многое прояснило хотя если честно не дочитал до конца ни однуиз его - по Россуму и лекциям которые выше привёл разобрался а на эти всё никак времени не хватает дочитать.
Но вообще больше пробуй сам. Python очень быстро понимаешь на практике. Сразу врубаешься на сколько он удобен и прост. Вообще в силу того что полного русского мануала нет придётся многое проверять на практике как работает - не стесняйся ковыряй и запускай все методы модуля подряд пока не найдёшь нужный если не понятно что то в мануале(хотя там простой английский даже мне понятно).
IDE ты выбрал какую то уж слишком навороченную для начала. Возьми Pyscripter или SciTE(он кстати теперь есть на русском) |
|
|
|
|
|
Cabal - патентованный зануда. |
dbx Свой |
Зарегистрирован: 23.04.2010
Сообщений: 8
|
Обратиться по нику
|
dbx |
Ответить с цитатой | | |
|
Cabal, На данным момент Лутц 3 издание, и довольно таки все разжевано по полочкам, что важно для меня...а вот напр учебный курс на www.intuit.ru показался не таким ясным, т.е. примеры и пояснения есть, а все равно нет такоой четкой ясности как у Лутца...Мануал думаю на вики есть, правда по 3-ему Питону..а IDE посоветовали по одной оч заумной книжке, и к счастью все так легко встало, что теперь неохота переустанавливать))) |
|
|
|
|
|
|
|
|
Партнеры
|