Надеюсь до фанатичного холивора не дойдет, а все ответы будут аргументированы
Как-то под пиво начали холиворить с друзьями насчет того, что лучше для веб-разработок.
PHP отмели вроде как сразу, потому что дыряв, неспешен и сам принцип языка вызывает подозрения. Лично мне кодить на нем почти не пришлось. Но те моменты, когда я пытался пропатчить форум или понять, почему неправильно работает какая-то фича, оставили очень неприятные воспоминания. Черт ногу сломит. Нельзя нормально проследить, что откуда берется. Возможно сказалось отсутствие опыта, но с тем же Perl было намного проще. Если что, копался не в поделках, а в известных проектах — Joomla, phpbb.
Perl. Один из проектов на Perl переводим на Java. То, что я вижу — это полный п. Хотя в этом языке разобраться проще, равно как и найти концы переменной, метода и т.д. Даже сам немного стал писать, если приходится что-то патчить. Но отсутствие отделения бизнес-логики от представления (проще говоря, отсутствие MVC) просто убивает (хотя думается, что это скорее косяк разработчиков проекта, в котором приходится копаться). Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
Java + JSP. Чем я и занимаюсь. Куча библиотек, фреймворков и технологий практически для чего угодно. Можно сделать очень хорошее разделение всех слоев приложения. Единственный минус, который я вижу, — в тело страницы интегрируются команды на "птичьем языке" JSP и есть вероятность, что кто-то из разработчиков начнет запихивать туда логику. В остальном нравится все.
Ruby, Python, ASP.NET — ?
Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? На чем стоит делать форум, рассчитанный на 5000 участников? На чем портал, аналогичный rsdn.ru?
Здравствуйте, Donz, Вы писали:
D>На чем портал, аналогичный rsdn.ru?
На Drupal'е
ИМХО, если сегодня надо сделать что-то с нуля, то лучше брать готовую платформу — типа того же Drupal'а. Писать целиком самому, опять же ИМХО, есть смысл, если ты создаешь собственную платформу либо что-то невероятно уникальное...
D> Perl. Один из проектов на Perl переводим на Java... Но отсутствие отделения бизнес-логики от представления (проще говоря, отсутствие MVC) просто убивает (хотя думается, что это скорее косяк разработчиков проекта, в котором приходится копаться).
Именно. MVC не является фичей языка. В том же РНР спокойно делается MVC (Zend Framework, CodeIgniter, CakePHP и т.п.)
То, что нельзя найти, откуда что берется — это проблема динамических языков вообще, а н конкретно, скажем, РНР.
Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
D> Java + JSP. Чем я и занимаюсь. Куча библиотек, фреймворков и технологий практически для чего угодно. Можно сделать очень хорошее разделение всех слоев приложения. Единственный минус, который я вижу, — в тело страницы интегрируются команды на "птичьем языке" JSP и есть вероятность, что кто-то из разработчиков начнет запихивать туда логику. В остальном нравится все.
D> Ruby, Python, ASP.NET — ?
ASP.NET — это не язык, а технология.
D> Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? На чем стоит делать форум, рассчитанный на 5000 участников? На чем портал, аналогичный rsdn.ru?
Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить).
Брать надо тот иснтрумен, который лучше всего знаешь. Тольо изредка какой-нибудь язык может дать тебе толчок в производительности тебя, как программиста, и совсем уж редко — в производительности собственно сайта.
Здравствуйте, Mamut, Вы писали:
M>Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
Про кластер можешь развернуть мысль?
В чём принципиальная разница перловки и там руби, перла?
Ставишь 10 вебсерверов в ферму, а спереди perlbal, ну и базу пошустрей...
В чём перл-то провинился?
Donz wrote:
> Единственный минус, который я вижу, — в тело страницы интегрируются команды на "птичьем языке" JSP и есть вероятность, что кто-то из разработчиков начнет запихивать туда логику. В остальном нравится все.
Не совсем понятно, что вы имеете в виду под "птичьим языком" — это всего
лишь тэги которые делают только то, под что запрограммированы.
Отучить писать логику в страницах не просто, а очень просто — для этого
в web.xml прописываете соответствующую команду и программирование в
видах становится невозможным в принципе
Здравствуйте, Donz, Вы писали:
D>Perl. Но отсутствие отделения бизнес-логики от представления (проще говоря, отсутствие MVC) просто убивает (хотя думается, что это скорее косяк разработчиков проекта, в котором приходится копаться).
Это не относится в языку.
D>Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
Есть куча облегчающих работу библиотек. Из последнего очень интересна Moose.
4 года пишу на Java, до этого 2 на C#, до этого... ну не суть важно. так вот, скажу по секрету, что приходилось сталкиваться с чудовищной кашей в проектах и на том и на другом языке... с год назад познакомился с prototype.js и RichFaces... так я удивился, что и на javascript-е можно писать аккуратно и грамотно. так что дело не в языке, а в грамотности разработчика.
К> M>Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
К> Про кластер можешь развернуть мысль? К> В чём принципиальная разница перловки и там руби, перла? К> Ставишь 10 вебсерверов в ферму, а спереди perlbal, ну и базу пошустрей... К> В чём перл-то провинился?
Не это у меня знак цитаты слетел Это текст автора поста
M>ASP.NET — это не язык, а технология.
Да, речь идет о технологиях, который обычно завязаны на конкретный язык.
M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить). M>Брать надо тот иснтрумен, который лучше всего знаешь. Тольо изредка какой-нибудь язык может дать тебе толчок в производительности тебя, как программиста, и совсем уж редко — в производительности собственно сайта.
То есть, создатели Ruby, Python и прочая просто изобретают нафиг никому ненужные велосипеды? Что-то сомневаюсь. Тот же Микрософт переписывает на ASP.NET. Просто для пиара, мол у нас все на самой лучше технологии?
Как минимум тот или иной язык подталкивает к типовому его использованию. На одном написать спагетти-код, в котором никому не разобраться, сложнее, на другом проще. Один уже предоставляет удобные инструменты для X, другой для Y, а третий очень прост для программирования.
Грамотно можно писать и на ассемблере, но ни один вменяемый разработчик не станет созавать на нем веб-портал.
Здравствуйте, anonymous, Вы писали:
D>>Также есть подозрения, что сделать нормальный кластер для perl-проекта затруднительно. ООП в перле принимает несколько извращенный вид.
A>Есть куча облегчающих работу библиотек. Из последнего очень интересна Moose.
То есть, все-таки нужно сделать лишнее телодвижение для того, чтобы получить фичу, уже сразу присутствующих в некоторых других языках/платформах?
Здравствуйте, mazurkin, Вы писали:
M>Не совсем понятно, что вы имеете в виду под "птичьим языком" — это всего M>лишь тэги которые делают только то, под что запрограммированы. M>Кроме того есть Velocity, FreeMaker, XSLT...
Ну вот собственно их и называю птичьими языками. Дополнительные языки разметки, не являющиеся стандартами (хотя JSP можно назвать стандартом).
M>В остальном по теме топика смахивает на разжигание холивара — на каждой M>платформе без проблем можно соорудить нечто уродливое.
На какой-то очень просто, на другой очень сложно. Одна заточена на высоконагруженные сервисы, другая на быстрое написание типовых задач.
Чтобы не было холивора, можно просто аргументированно ответить на заданные вопросы. Если есть желание, конечно.
Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? На чем стоит делать форум, рассчитанный на 5000 участников? На чем портал, аналогичный rsdn.ru?
Здравствуйте, Donz, Вы писали:
D>То есть, все-таки нужно сделать лишнее телодвижение для того, чтобы получить фичу, уже сразу присутствующих в некоторых других языках/платформах?
Здравствуйте, Donz, Вы писали:
D>Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? На чем стоит делать форум, рассчитанный на 5000 участников? На чем портал, аналогичный rsdn.ru?
Здравствуйте, Donz, Вы писали:
M>>ASP.NET — это не язык, а технология. D>Да, речь идет о технологиях, который обычно завязаны на конкретный язык.
Но тогда вопрос поставлен не верно. Не «PHP vs. Perl vs. Java vs. Ruby vs. Python», а, скажем, «Smarty vs. Catalyst vs. (что там в Java?) vs. RoR vs. Django».
Здравствуйте, Donz, Вы писали:
D>Чтобы не было холивора, можно просто аргументированно ответить на заданные вопросы. Если есть желание, конечно.
Сразу видно, что в КСВ ты не ходок
Вот ты можешь перечислить все критерии по которым надо вести сравнение? Нет, конечно. И при этом каждый может назвать 10-к другой параметров, по которым его язык/технология лучше других — вот тогдаааа и начинается священная война — люди начинают взвешивать эти параметры, приводить примеры и т.п.
На самом деле процесс увлекательный.
Здравствуйте, DOOM, Вы писали:
DOO>Сразу видно, что в КСВ ты не ходок
Угу, я сам там неместный...
DOO>Вот ты можешь перечислить все критерии по которым надо вести сравнение? Нет, конечно. И при этом каждый может назвать 10-к другой параметров, по которым его язык/технология лучше других — вот тогдаааа и начинается священная война — люди начинают взвешивать эти параметры, приводить примеры и т.п. DOO>На самом деле процесс увлекательный.
Ну так назови хотя бы те параметры, что важны тебе.
ИМХО, основные и общепринятые: стоимость разработки, скорость разработки, простота поддержки, масштабируемость (нужно далеко не для всех проектов). Из простоты поддержки следует простота модификации и гибкость языка/платформы.
Здравствуйте, anonymous, Вы писали:
D>>То есть, все-таки нужно сделать лишнее телодвижение для того, чтобы получить фичу, уже сразу присутствующих в некоторых других языках/платформах?
A>Какую, например, фичу?
Я так понимаю, Moose библиотеку надо прикручивать для нормальной работы с объектами? Если так, то фичу под названием "нормальный ООП".
Здравствуйте, anonymous, Вы писали:
A>Но тогда вопрос поставлен не верно. Не «PHP vs. Perl vs. Java vs. Ruby vs. Python», а, скажем, «Smarty vs. Catalyst vs. (что там в Java?) vs. RoR vs. Django».
Подразумевается, что каждая технология завязана на один (в большинстве случаев) язык. Выбираешь технологию — автоматом выбираешь язык. К тому же, язык может быть одним, а фреймворков использоваться несколько.
Под ASP.NET можете понимать C#
Donz wrote:
> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. > То есть ты, если бы знал PHP, начал лабать высоконагруженный проект на нем?
Вас что-то смущает в PHP или вы подозреваете, что эта платформа
недостойна быть примененной в "высоконагруженных" проектах (кстати, что
это)?
Я как бы еще и немножечко вышива.. играю на гитарке знаете ли в
перекурах между долблением по кнопкам — топик до боли напоминает
многочисленные споры о том какая гитарка или педалька лучше и
насколько... а весь секрет в пальцах знаете ли...
У всех платформ есть куча недостатков — вот что очень печально-то на
самом деле, и эти недостатки удерживают широкие массы трудящих.. то есть
программистов от ежегодного метания от одной платформы к другой.
Впрочем опыт, собственные наработки и практика каким-то образом эти
самые недостатки нивелируют — и пресловутый ассемблер для написания
сайтов может быть и не так страшен в умелых руках. (На самом деле когда
я занимался последний раз ассемблером лет так 12 назад — там было все
достаточно хорошо, по крайней мере в Intel Assembler).
Опять же как говорят лабухи:
— У кого и х.. в руках — балалайка
— Не имей Амати, а умей лабати!
Кроме того, есть целый пласт знаний: ООП, паттерны, архитектурные
приемы, принципы проектирования, общий кругозор в области ИТ — который
ну никак от платформы не зависит, а определяет и сроки, и качество, и
стоимость разработки в очень большой степени.
Кроме того, не забывайте про то, что есть проблемы чисто
организационного плана — например, где и как набрать N инженеров на
новый проект — поэтому и соображения насчет платформы могут
корректироваться в соответствующую сторону.
D>Ну так назови хотя бы те параметры, что важны тебе. D>ИМХО, основные и общепринятые: стоимость разработки, скорость разработки, простота поддержки, масштабируемость (нужно далеко не для всех проектов). Из простоты поддержки следует простота модификации и гибкость языка/платформы.
Перечисленные параметры не атомарны — тут опять может быть великое множество мнений.
А что касается меня — я сразу написал: нужна веская причина, чтобы что-то вообще писать с нуля. Есть огромное множество как простых CMS, так и реально сложных систем — в 90% хватит какого-нибудь Drupal'а.
Здравствуйте, dmz, Вы писали:
dmz>Здравствуйте, Mr.Cat, Вы писали:
MC>>Я вот по мелочи сабжевые языки юзал — вполне сносно.
dmz>vs Haskell ( см. happstack )
Здравствуйте, Donz, Вы писали:
D>>>То есть, все-таки нужно сделать лишнее телодвижение для того, чтобы получить фичу, уже сразу присутствующих в некоторых других языках/платформах? A>>Какую, например, фичу? D>Я так понимаю, Moose библиотеку надо прикручивать для нормальной работы с объектами? Если так, то фичу под названием "нормальный ООП".
Я не знаю что такое «нормальный ООП». Давай начнём с определения.
Здравствуйте, Donz, Вы писали:
D> M>ASP.NET — это не язык, а технология.
D> Да, речь идет о технологиях, который обычно завязаны на конкретный язык.
D> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить). D> M>Брать надо тот иснтрумен, который лучше всего знаешь. Тольо изредка какой-нибудь язык может дать тебе толчок в производительности тебя, как программиста, и совсем уж редко — в производительности собственно сайта.
D> То есть, создатели Ruby, Python и прочая просто изобретают нафиг никому ненужные велосипеды?
В смысле? Созание новых языков программирования никак не влияет на выбор или не выбор этих языков, скажем, для веб-разработки.
D> Что-то сомневаюсь. Тот же Микрософт переписывает на ASP.NET. Просто для пиара, мол у нас все на самой лучше технологии?
Что значит переписывает? Что значит для пиара?
D> Как минимум тот или иной язык подталкивает к типовому его использованию. На одном написать спагетти-код, в котором никому не разобраться, сложнее, на другом проще. Один уже предоставляет удобные инструменты для X, другой для Y, а третий очень прост для программирования.
Это все очень субъективные критерии.
D> Грамотно можно писать и на ассемблере, но ни один вменяемый разработчик не станет созавать на нем веб-портал.
Аналогия абсолютно некорректна, потому что ассемблер — это язык очень низкого уровня. Мы же сравниваем «птиц одного полета» — языки высокого и очень высокого уровня.
Здравствуйте, Donz, Вы писали:
D> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР.
D> То есть ты, если бы знал PHP, начал лабать высоконагруженный проект на нем?
Естественно. Потому что ключевой момент — я знаю РНР. То есть я знаю, что делать, чтобы он хорошо работать под нагрузкой, или знаю, где искать решения для РНР.
Если я, например, вообще ни ухом ни рылом в C#, Ruby или там Питоне, то я тааакого понапишу, что и сотни серверов не хватит (это я утрирую, конечно )
Здравствуйте, Donz, Вы писали:
D>Perl. Один из проектов на Perl переводим на Java. То, что я вижу — это полный п. Хотя в этом языке разобраться проще, равно как и найти концы переменной, метода и т.д. Даже сам немного стал писать, если приходится что-то патчить. Но отсутствие отделения бизнес-логики от представления (проще говоря, отсутствие MVC) просто убивает (хотя думается, что это скорее косяк разработчиков проекта, в котором приходится копаться).
Если бы там все было хорошо, вам не отдали бы его на перевод. Так что тут скорее квалификация исполнителей.
Здравствуйте, Mamut, Вы писали:
D>> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить). D>> То есть, создатели Ruby, Python и прочая просто изобретают нафиг никому ненужные велосипеды?
M>В смысле? Созание новых языков программирования никак не влияет на выбор или не выбор этих языков, скажем, для веб-разработки.
Ты написал, что абсолютно без разницы, какой язык/платформу выбрать. Значит, ни у одного языка нет явных преимуществ/недостатков. Раз так, зачем люди маются с изобретением велосипедов, раз можно взять тот же PHP. Без разницы же.
D>> Что-то сомневаюсь. Тот же Микрософт переписывает на ASP.NET. Просто для пиара, мол у нас все на самой лучше технологии? M>Что значит переписывает? Что значит для пиара?
Ты сам написал "переведены". Видимо, это перевод веб-приложений с одной платформы на другую. Зачем Микрософт это делает, раз без разницы на чем писать?
M>Это все очень субъективные критерии. D>> Грамотно можно писать и на ассемблере, но ни один вменяемый разработчик не станет созавать на нем веб-портал. M>Аналогия абсолютно некорректна, потому что ассемблер — это язык очень низкого уровня. Мы же сравниваем «птиц одного полета» — языки высокого и очень высокого уровня.
То есть у тебя есть критерий как минимум по высокоуровневости языка?
Здравствуйте, Donz, Вы писали:
D> M>ASP.NET — это не язык, а технология.
D> Да, речь идет о технологиях, который обычно завязаны на конкретный язык.
D> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить). D> M>Брать надо тот иснтрумен, который лучше всего знаешь. Тольо изредка какой-нибудь язык может дать тебе толчок в производительности тебя, как программиста, и совсем уж редко — в производительности собственно сайта.
D> То есть, создатели Ruby, Python и прочая просто изобретают нафиг никому ненужные велосипеды?
В смысле? Созание новых языков программирования никак не влияет на выбор или не выбор этих языков, скажем, для веб-разработки.
D> Что-то сомневаюсь. Тот же Микрософт переписывает на ASP.NET. Просто для пиара, мол у нас все на самой лучше технологии?
Что значит переписывает? Что значит для пиара?
D> Как минимум тот или иной язык подталкивает к типовому его использованию. На одном написать спагетти-код, в котором никому не разобраться, сложнее, на другом проще. Один уже предоставляет удобные инструменты для X, другой для Y, а третий очень прост для программирования.
Это все очень субъективные критерии.
D> Грамотно можно писать и на ассемблере, но ни один вменяемый разработчик не станет созавать на нем веб-портал.
Аналогия абсолютно некорректна, потому что ассемблер — это язык очень низкого уровня. Мы же сравниваем «птиц одного полета» — языки высокого и очень высокого уровня.
Здравствуйте, Donz, Вы писали:
D> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР.
D> То есть ты, если бы знал PHP, начал лабать высоконагруженный проект на нем?
Естественно. Потому что ключевой момент — я знаю РНР. То есть я знаю, что делать, чтобы он хорошо работать под нагрузкой, или знаю, где искать решения для РНР.
Если я, например, вообще ни ухом ни рылом в C#, Ruby или там Питоне, то я тааакого понапишу, что и сотни серверов не хватит (это я утрирую, конечно )
Здравствуйте, mazurkin, Вы писали:
M>Вас что-то смущает в PHP или вы подозреваете, что эта платформа M>недостойна быть примененной в "высоконагруженных" проектах (кстати, что M>это)?
Судя по отзывам, на PHP очень легко допустить ошибку, приводящую к уязвимости проекта, например. Также невысокая скорость исполнения кода.
Высоконагруженный — можно привести веб-приложения Google как пример. Или портал с посещаемостью в сотни тысяч уникальных посетителей в день.
В общем, я так понимаю смысл опять сводится к "Без разницы на чем писать, главное, чтобы программист был хорошим специалистом"? Тогда повторяю свой вопрос, который уже задал Мамуту, для чего по твоему мнению разрабатывают новые технологии, языки?
Здравствуйте, anonymous, Вы писали:
A>Здравствуйте, Donz, Вы писали:
D>>>>То есть, все-таки нужно сделать лишнее телодвижение для того, чтобы получить фичу, уже сразу присутствующих в некоторых других языках/платформах? A>>>Какую, например, фичу? D>>Я так понимаю, Moose библиотеку надо прикручивать для нормальной работы с объектами? Если так, то фичу под названием "нормальный ООП".
A>Я не знаю что такое «нормальный ООП». Давай начнём с определения.
Понеслась... Вообще, это оффтоп в этой теме. Но для меня нормальный это как минимум невозможность писать не в стиле ООП. То есть, при желании, конечно, можно какашку сделать из чего угодно, но чтобы сам язык подталкивал к тому или иному подходу. В перле, если не ошибаюсь, для написания в ООП стиле нужна договоренность между разработчиками, чтобы никто не лабал код в стиле процедурного программирования
Здравствуйте, Donz, Вы писали:
D>Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект?
Что-то реально сложное — Java. Все остальное — PHP.
D>Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? D>На чем стоит делать форум, рассчитанный на 5000 участников? Начем портал, аналогичный rsdn.ru?
PHP три раза.
Здравствуйте, skeptik_, Вы писали:
D>>Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? _>Что-то реально сложное — Java. Все остальное — PHP.
D>>Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? D>>На чем стоит делать форум, рассчитанный на 5000 участников? Начем портал, аналогичный rsdn.ru? _>PHP три раза.
О, первый ответ по теме!
Спасибо.
Если готов написать аргументы в пользу одного или другого языка, будет вообще отлично.
Здравствуйте, DOOM, Вы писали:
D>>Ну так назови хотя бы те параметры, что важны тебе. D>>ИМХО, основные и общепринятые: стоимость разработки, скорость разработки, простота поддержки, масштабируемость (нужно далеко не для всех проектов). Из простоты поддержки следует простота модификации и гибкость языка/платформы. DOO>Перечисленные параметры не атомарны — тут опять может быть великое множество мнений. DOO>А что касается меня — я сразу написал: нужна веская причина, чтобы что-то вообще писать с нуля. Есть огромное множество как простых CMS, так и реально сложных систем — в 90% хватит какого-нибудь Drupal'а.
Предложим, что веская причина имеется.
Можешь тогда атомизировать? Цена и скорость важны в любом коммерческом проекте. Другое дело, что соотношение их приоритетов может быть разным.
Можешь назвать, которые важны для тебя?
Здравствуйте, Donz, Вы писали:
D>>>Я так понимаю, Moose библиотеку надо прикручивать для нормальной работы с объектами? Если так, то фичу под названием "нормальный ООП". A>>Я не знаю что такое «нормальный ООП». Давай начнём с определения. D>Понеслась... Вообще, это оффтоп в этой теме. Но для меня нормальный это как минимум невозможность писать не в стиле ООП.
То есть в Си++, позволяющем не пользоваться классами, не «нормальный ООП»? Или в JavaScript, где нет классов? Эти все вопросы лишь призваны выяснить, чего же ты хочешь. Пока это не ясно.
D>То есть, при желании, конечно, можно какашку сделать из чего угодно, но чтобы сам язык подталкивал к тому или иному подходу. В перле, если не ошибаюсь, для написания в ООП стиле нужна договоренность между разработчиками, чтобы никто не лабал код в стиле процедурного программирования
Ответ по теме только один.
Попробую конкретизировать вопросы. Все вопросы предполагают, что приложение надо писать с нуля по каким-либо объективным причинам. То есть, выбираем не готовые движки, а именно саму основу.
1)Если вы в последние пять лет изучали какую-либо веб-платформу/технологию/язык, что послужило тому причиной? Почему именно эту?
2)Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект?
3)Что по вашему мнению больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? На чем стоит делать форум, рассчитанный на 5000 участников, на 100000 участников? На чем портал, аналогичный rsdn.ru?
4)Для участников, чье мнение "без разницы на чем писать" отдельный вопрос: зачем, по вашему мнению, создают новые языки/платформы, если все можно реализовать на том же php?
Мои ответы:
1)JavaEE + JSP. Причиной была необходимость создания новой версии веб-приложения. Предыдущие версии на Perl'е были сложны в поддержке и очень завязаны на авторов. Плюс Java предоставляет кроссплатформенность (в смысле, C# + ASP.NET отмели как минимум из-за этого)
2)Если решить надо было бы прямо здесь и сейчас, то выбрал бы Java, так как хорошо ее знаю. Если было бы время подумать, и проект предполагал бы время на исследования, то как минимум сделал бы для себя обзор сравнительно новых веб-технологий: ruby on rails, python, ... Так как по моему мнению что-то новое создается из-за нехватки возможностей старого. Вполне вероятно, новые возможности пригодятся и мне.
3)Хотя с PHP работал мало, но мне хватило. PHP для разработки с нуля не выберу из-за сложного анализа чужого кода (подключать библиотеки все равно придется) и не такого обширного количества библиотек, как, например, у той же Java. На данный момент даже простые скрипты мне проще написать на Perl'е. Плюс в недостатки PHP, судя по обсуждениям на форумах, можно записать медлительность и небезопасность, то есть на этом языке проще наделать ошибок, насколько я понял.
Здравствуйте, dmz, Вы писали: dmz>vs Haskell ( см. happstack )
Кстати, да. Сам не юзал, но заявлен достойный набор фич. На нем, кстати, сделан http://patch-tag.com/
Альсо есть ocsigen/eliom. Про него какое-то время назад ветка была — http://www.rsdn.ru/forum/decl/3243046.aspx
Здравствуйте, Donz, Вы писали:
D> D>> M>Абсолютно без разницы. Википедия и facebook сделаны на РНР. Youtube — на питоне. Microsoft+MSDN вроде уже переведены на ASP.NET. Куски сайта Adobe/Macromedia написаны на Coldfusion. eBay — это в основном Java (если верить).
D> D>> То есть, создатели Ruby, Python и прочая просто изобретают нафиг никому ненужные велосипеды?
D> M>В смысле? Созание новых языков программирования никак не влияет на выбор или не выбор этих языков, скажем, для веб-разработки.
D> Ты написал, что абсолютно без разницы, какой язык/платформу выбрать. Значит, ни у одного языка нет явных преимуществ/недостатков. Раз так, зачем люди маются с изобретением велосипедов, раз можно взять тот же PHP. Без разницы же.
Еще раз. Откуда такая уверенность, что языки рзрбатывают для веб-разработки? Есть сотни причин для создания нового ЯП и только для одного я знаю, что причиной была именно веб-разработка. Это РНР.
Ты возьмешь для телекоммуникаций PHP? Нет, ты возьмешь, например, Erlang. Ты возьмешь для десктоп-приложения РНР? Нет, ты возьмешь C++ + Qt, Java+SWT или там C#+WinForms. И т.п.
Очень часто языки разрабатываются потому что что-то субъективно не нравится в других языках. Часто языки разрабатываются, чтобы доказать какие-то возможности. Часто языки разрабатываются, чтобы объединить возможности других языков.
И ничто из этого не указывает на то, что создатели языков создают велосипед, потому что все можно написать на РНР.
D> D>> Что-то сомневаюсь. Тот же Микрософт переписывает на ASP.NET. Просто для пиара, мол у нас все на самой лучше технологии?
D> M>Что значит переписывает? Что значит для пиара?
D> Ты сам написал "переведены". Видимо, это перевод веб-приложений с одной платформы на другую. Зачем Микрософт это делает, раз без разницы на чем писать?
Например, МС прекратила поддержку ASP. Зачем ей оставлять свои сайты на ASP? Правильно, незачем. перевели на ASP.NET. Более того, ASP.NET моет принести выгоду по сравнению с ASP. Например, ускорение разработки, улучшение сопровождаемости и т.п.
MySpace перевели с Coldufsion на ASP.NET н епотому что им так захотелось, а по тем же (и некоторым другим) причинам. Но пока у них не стало 500 000 зарегистрированных пользователей, они и думать не думали о переходе на другие языки.
D> M>Это все очень субъективные критерии.
D> D>> Грамотно можно писать и на ассемблере, но ни один вменяемый разработчик не станет созавать на нем веб-портал.
D> M>Аналогия абсолютно некорректна, потому что ассемблер — это язык очень низкого уровня. Мы же сравниваем «птиц одного полета» — языки высокого и очень высокого уровня.
D> То есть у тебя есть критерий как минимум по высокоуровневости языка?
Этот критерий дается еще в школе, а потом повторяется на первом курсе университета
D> 4)Для участников, чье мнение "без разницы на чем писать" отдельный вопрос: зачем, по вашему мнению, создают новые языки/платформы, если все можно реализовать на том же php?
Новые языки создают не для того, чтобы писать «форумы, похожие на РСДН» Но вне зависимости от язка программирования все упирается в квалификацию лдей, которые пишут.
Здравствуйте, Donz, Вы писали:
D> Судя по отзывам, на PHP очень легко допустить ошибку, приводящую к уязвимости проекта, например.
Не зависит от языка, ИМХО. Если у кого-то есть дурная привычка не экранировать строки подставляя их в SQL запрос, то эту привычку язык не исправит.
D> Также невысокая скорость исполнения кода.
При грамотном подходе для большинства задач вполне достаточно. Другое дело, что язык дискредитирован низким порогом вхождения и, как следствие, большим количеством проектов непотребного качества и производительности.
D> Высоконагруженный — можно привести веб-приложения Google как пример.
ИМХО, там вопрос выбора платформы не стоит (по крайней мере в таком контексте).
D> Или портал с посещаемостью в сотни тысяч уникальных посетителей в день.
100 тыс. уников еще надо получить. К тому моменту, как они появятся, ты уже будешь знать узкие места и большинство из них будет исправлено (да и проект будет уже пару-тройку раз переписан чуть ли не с нуля).
Здравствуйте, Mamut, Вы писали:
D>> 4)Для участников, чье мнение "без разницы на чем писать" отдельный вопрос: зачем, по вашему мнению, создают новые языки/платформы, если все можно реализовать на том же php?
M>Новые языки создают не для того, чтобы писать «форумы, похожие на РСДН» Но вне зависимости от язка программирования все упирается в квалификацию лдей, которые пишут.
Я перечислил много вариантов, можно выбрать на свой вкус или самому придумать. И все же, для чего их тогда создают, если без разницы на чем писать? Можно даже абстрагироваться от веб-приложений. Думаю, задай я вопрос относительно десктопных программ, ответы были бы такими же.
Мне вот, например, очень большая разница на чем и дело вовсе не в том, что последние лет пять я программирую практически только на яве.
В людей упирается, но это не значит, что по гроб жизни надо застрять на perl'е, php или java, потому что их знают лучше всего. Об этом и речь. Какие-то языки и платформы предоставляют больше возможностей в конкретной области, чем другие. Вот и хотелось бы узнать, что выбирает народ с РСДН и почему.
Здравствуйте, anonymous, Вы писали:
A>То есть в Си++, позволяющем не пользоваться классами, не «нормальный ООП»? Или в JavaScript, где нет классов? Эти все вопросы лишь призваны выяснить, чего же ты хочешь. Пока это не ясно.
С моей точки зрения не совсем нормальный. http://www.rsdn.ru/forum/web/3470663.1.aspx
— вот тут еще раз объяснил, чего я хочу от этой темы. Если что, это не обсуждение ООПэшности того или иного языка.
A>В любом языке нужна такая договорённость.
Любой язык подталкивает к какому-либо стилю программированию. В яве только новичек будет лабать процедуры. В перле, насколько я понял, надо учить матчасть, чтобы писать в стиле ООП.
Здравствуйте, Mamut, Вы писали:
M>Еще раз. Откуда такая уверенность, что языки рзрбатывают для веб-разработки? Есть сотни причин для создания нового ЯП и только для одного я знаю, что причиной была именно веб-разработка. Это РНР. M>Ты возьмешь для телекоммуникаций PHP? Нет, ты возьмешь, например, Erlang. Ты возьмешь для десктоп-приложения РНР? Нет, ты возьмешь C++ + Qt, Java+SWT или там C#+WinForms. И т.п.
Ну это хорошо, что глобально все-таки не без разницы. Хотя подозреваю, спроси я про десктопные или другие мейн-стримовские области, ответ был бы тот же.
M>Например, МС прекратила поддержку ASP. Зачем ей оставлять свои сайты на ASP? Правильно, незачем. перевели на ASP.NET. Более того, ASP.NET моет принести выгоду по сравнению с ASP. Например, ускорение разработки, улучшение сопровождаемости и т.п. M>MySpace перевели с Coldufsion на ASP.NET н епотому что им так захотелось, а по тем же (и некоторым другим) причинам. Но пока у них не стало 500 000 зарегистрированных пользователей, они и думать не думали о переходе на другие языки.
Так разница все-таки есть? Ура!
D>> То есть у тебя есть критерий как минимум по высокоуровневости языка? M>Этот критерий дается еще в школе, а потом повторяется на первом курсе университета
Не совсем понял. Я имел в виду, что ты часть языков все же отсеешь по причине их низкоуровневости, что уже не подходит для "все равно".
Здравствуйте, Anton Batenev, Вы писали:
D>> Судя по отзывам, на PHP очень легко допустить ошибку, приводящую к уязвимости проекта, например. AB>Не зависит от языка, ИМХО. Если у кого-то есть дурная привычка не экранировать строки подставляя их в SQL запрос, то эту привычку язык не исправит.
Угу, то-то все ударились в управляемый код и заинтересовались ФП.
D>> Высоконагруженный — можно привести веб-приложения Google как пример. AB>ИМХО, там вопрос выбора платформы не стоит (по крайней мере в таком контексте).
То есть, выбирают платформу, бросая кубики?
D>> Или портал с посещаемостью в сотни тысяч уникальных посетителей в день. AB>100 тыс. уников еще надо получить. К тому моменту, как они появятся, ты уже будешь знать узкие места и большинство из них будет исправлено (да и проект будет уже пару-тройку раз переписан чуть ли не с нуля).
В который раз повторяю. Вот именно мнение конкретных людей по примерным проектам и хотелось бы получить. Есть собственный пример? Если да — опиши, плз, что выбрали и почему.
Здравствуйте, Donz, Вы писали:
D> Угу, то-то все ударились в управляемый код и заинтересовались ФП.
Давай заменим "все" на "некоторые" и разойдемся
D> AB>ИМХО, там вопрос выбора платформы не стоит (по крайней мере в таком контексте). D> То есть, выбирают платформу, бросая кубики?
В принципе (в теории), гугль может себе и такое позволить. Но что позволено Юпитеру, то не позволено быку.
D> В который раз повторяю. Вот именно мнение конкретных людей по примерным проектам и хотелось бы получить. Есть собственный пример? Если да — опиши, плз, что выбрали и почему.
У меня есть примеров эпических падений и взлетов вне зависимости от платформы. По этому я не ошибусь, если еще раз повторю мнение: "Пиши на том, чем лучше владеешь" — все перечисленные в топике технологии и платформы могут дать производительность выше которой вопрос "А на чем писать?" отпадает.
Тем не менее. Ты упоминал о 100 тыс. уников в день. Это больше маркетинговый критерий. Нагрузочный критерий — это хиты. Потому как, в зависимости от проекта, среднее количество хитов от пользователя составляет от 3 до 15 — т.е. от 300 тыс до 1.5 млн хитов в сутки или в пике от 30 до 150 хитов в секунду (т.е. разбег по нагрузке в 500%). Для задачи типа "магазин" или "rsdn" при таких раскладах подойдет любая из обсуждаемых технологий.
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, skeptik_, Вы писали:
D>>>Какую бы технологию выбрали вы, если бы прямо сейчас предложили создать легкий/средний/сложный проект? _>>Что-то реально сложное — Java. Все остальное — PHP.
D>>>Что больше подходит для высоконагруженных разработок, что для интернет-магазинов "Компьютеры У Васи"? D>>>На чем стоит делать форум, рассчитанный на 5000 участников? На чем портал, аналогичный rsdn.ru? _>>PHP три раза.
D>О, первый ответ по теме! D>Спасибо.
D>Если готов написать аргументы в пользу одного или другого языка, будет вообще отлично.
+ PHP — вездесущ. Низкий порог вхождения. Очень простой деплоинг. Язык в принципе позволяет писать чистый и стройный ООП, проблемы как правило вызваны недостатком общей квалификации. Лично я, используя связку Kohana + Doctrine + PHPTAL + отдельные либы Zend'а, не испытываю проблем ни с производительностью, ни с чем-либо другим.
= Java — обилие enterprise либ, менее error-prone из-за static typing и компиляции, скорость опять же из-за компиляции, скалируемость, все это делает его лучшим выбором в случае enterprise систем, но для веб-only затраты совершенно неоправданны.
= Python — неплох, но инфраструктура не столь развита как у PHP. Входной порог выше чем у PHP.
— Ruby on Rails — сырой, медленный, неустоявшийся.
— ASP.NET — не нравится в принципе абстракция, в результате которой ряд кодеров толком не понимает, когда и зачем приложение ходит на сервер.
— Perl — плохо читаем, позавчерашний день.
Здравствуйте, skeptik_, Вы писали:
_>- ASP.NET — не нравится в принципе абстракция, в результате которой ряд кодеров толком не понимает, когда и зачем приложение ходит на сервер.
Есть ASP.Net MVC, со вполне нормальными абстракциями.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, skeptik_, Вы писали:
_>>- ASP.NET — не нравится в принципе абстракция, в результате которой ряд кодеров толком не понимает, когда и зачем приложение ходит на сервер. Z>Есть ASP.Net MVC, со вполне нормальными абстракциями.
Спасибо, почитал. Да, действительно подтянулись, фактически стандартная архитектура на сегодня. Единственно вьюхи мне не очень понравились, но это дело вкуса. Хостинг правда все равно менее распостранен, да и дороже.
В общем PHP пока остаётся для меня первым выбором, но у Питона есть шансы.
D> M>Еще раз. Откуда такая уверенность, что языки рзрбатывают для веб-разработки? Есть сотни причин для создания нового ЯП и только для одного я знаю, что причиной была именно веб-разработка. Это РНР. D> M>Ты возьмешь для телекоммуникаций PHP? Нет, ты возьмешь, например, Erlang. Ты возьмешь для десктоп-приложения РНР? Нет, ты возьмешь C++ + Qt, Java+SWT или там C#+WinForms. И т.п.
D> Ну это хорошо, что глобально все-таки не без разницы. Хотя подозреваю, спроси я про десктопные или другие мейн-стримовские области, ответ был бы тот же.
Естественно. Писать в первую очередь нужно на том языке, который ты лучше всего знаешь. Или на том, для которого еть 90-00% уверенность, что ты в короткие сроки его сможешь освоить на уровне не меньшем, чем свой основной язык.
D> M>Например, МС прекратила поддержку ASP. Зачем ей оставлять свои сайты на ASP? Правильно, незачем. перевели на ASP.NET. Более того, ASP.NET моет принести выгоду по сравнению с ASP. Например, ускорение разработки, улучшение сопровождаемости и т.п. D> M>MySpace перевели с Coldufsion на ASP.NET н епотому что им так захотелось, а по тем же (и некоторым другим) причинам. Но пока у них не стало 500 000 зарегистрированных пользователей, они и думать не думали о переходе на другие языки.
D> Так разница все-таки есть? Ура!
Естественно. Критерии я привел в другом ответе.
D> D>> То есть у тебя есть критерий как минимум по высокоуровневости языка? D> M>Этот критерий дается еще в школе, а потом повторяется на первом курсе университета D> Не совсем понял. Я имел в виду, что ты часть языков все же отсеешь по причине их низкоуровневости, что уже не подходит для "все равно".
*вещаю голосом занудного учителя*
Есть машинные коды
Есть языки очень низкого уровня, напрямую повторяющие машинные коды — ассемблер
Есть языки низкого уровня, которые вводят некоторое количество абстракций, но при этом не ограждают человека от, например, арзитектурных особенностей компьютера — С
Есть языки высокого уровня, которые полностью асбтрагируют работу с компьютером — Java, C#, Python, Ruby и т.п.
Есть языки очень высокого уровня, типа Хаскеля, которые на все это еще накидывают реализацию различных мат. моделей.
Каждый следующий уровень позволяет все четче и яснее выражать свои мысли, используя меньш кода и больше абстракций.
Когда ты сравниваешь языки на одном уровне, ты, по сути, сравниваешь один и тот же язык сам с собой. По возможностям, они различаются между собой только синтаксисом и количеством синтаксичского сахара (за редким исключением).
D> AB>100 тыс. уников еще надо получить. К тому моменту, как они появятся, ты уже будешь знать узкие места и большинство из них будет исправлено (да и проект будет уже пару-тройку раз переписан чуть ли не с нуля).
D> В который раз повторяю. Вот именно мнение конкретных людей по примерным проектам и хотелось бы получить. Есть собственный пример? Если да — опиши, плз, что выбрали и почему.
D> В людей упирается, но это не значит, что по гроб жизни надо застрять на perl'е, php или java, потому что их знают лучше всего. Об этом и речь. Какие-то языки и платформы предоставляют больше возможностей в конкретной области, чем другие.
Ну дык. Например, С++ для веба вообше никак не подходит. А РНР — для телекоммуникаций.
D> Вот и хотелось бы узнать, что выбирает народ с РСДН и почему.
Для выбора есть множество объективных и субъективных причин. Например (даны не в порядке важности):
— наличие разработчиков на этом языке
— обучаемость этому языку (в случае, если язык неизвестен разработчикам)
— выразительность языка (насолько четко, ясно и коротко можно выразить свои мысли)
— производительность языка (потребление памяти, скорость работы с данными, которые будут обрабатываться в поставленно задаче и т.п.)
— наличие средств разработки
— наличие средств отладки
— наличие средств оптимизации
— наличие библиотек
— в случае отсутствия библиотек — легкость взаимодействия с другими языками
это приблизительный список того, что нужно обдумать прежде, чем выбиртаь тоот или иной язык для той или иной задачи.
MC>Кстати, да. Сам не юзал, но заявлен достойный набор фич. На нем, кстати, сделан http://patch-tag.com/ MC>Альсо есть ocsigen/eliom.
В окамле легкие потоки работают только в байткоде и сборщик мусора неконкурентный. Плюс ocsigen сложнее.
Приложение helloworld на happstack пишется за пять минут; туториал работает на локальной машине из коробки.
Производительность очень достойная + на выходе получается self contained приложение. Плюс для хаскела очень много
всяких web-related библиотек, окамл беднее.