LINUX.ORG.RU

PHP vs RoR vs Django


0

0

Опубликованы результаты сравнительных испытаний производительности трёх различных веб-фреймворков: Symphony(PHP), Ruby on Rails и Django(Python).

Вкратце: Rails оказался гораздо быстрее, чем Symphony, а Django - гораздо быстрее, чем Rails.

>>> Подробности

★★

Проверено: Shaman007 ()
Ответ на: комментарий от Aceler

> Но когда пользователи вдруг захотели чат, я просто взял готовый чат и поставил. Когда им захотелось блогов, не прошло и недели....

Вы разрабатываете сайты типа "Заприщённый эротический ЧАТ! Скачай БРИТНИ на СМС!!!"? Тогда PHP - то что доктор прописал, ещё бы.

anonymous
()
Ответ на: комментарий от Aceler

>Когда у тебя свой живой проект... когда все что ты делаешь, надо делать быстро, а ТЗ составляется на текущий день (типа - убрать 20 багов, внести 30 фич) - это и называется Extreme Programming :D

имел сомнительное счастье оценивать результаты такого экстремального программирования. Ну что сказать - быдлокодеры они быдлокодеры и есть. Тяп-ляп - лишь быстрее. PHP действительно лучше других ЯП подходит для этого.

>Малым студиям можно выжить только за счет гибкости. За счет того, что проект извивается, модифицируется и растет _быстро_.

если малые студии ниасилят модульное программирование и mvc - они так и останутся малыми студями с перспективой безвременного RIP.

>Но когда пользователи вдруг захотели чат, я просто взял готовый чат и поставил. Когда им захотелось блогов, не прошло и недели....

ясно, уровень определили :)

>Секрет успеха :)

это секрет успеха барыги, а не программера. Причем мелкий такой успех, которым можно гордиться в кругу таких же барыг, обладающих талантом находить лохов и впаривать им свои поделки за безумное бабло.

нет, против ничего не имею, каждый бабки делает как умеет. Как говорится, на карму не влияет ;)

а что ты будешь делать, когда лохи кончатся? :)

geek ★★★
()
Ответ на: комментарий от anonymous

> Ты мне скажи, если самое простое - работа с базами данных никуя не готовая, то где же море готовых решений??? ГДЕ???

Это ты тяжел. Как эти вещи коррелируют?

Где готовые решения - в интернете. Подсказать блоговые движки, чаты, веб-редакторы, галереи, CMS, CMF, CRM, Workflow на PHP...

Теперь такой же списочек для RoR или Python в студию, пожалуйста. Кроме фреймворков что-нибудь хоть есть?

ЗЫ Еще для Perl есть подобная инфраструктура, но AFAIK, поменьше наименований.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

>Обычно люди пишут такое сами себе.

я не знаю что там у вас пишут, у нас обычно люди пишут

import MySQLdb

db = MySQLdb.connect(....)

на этом кодинх заканчивается. поскольку все базы имеют унифицированный интерфейс, можно вызвать db=PostgreSQL.connect(....) либо какойнить там db=VeryCoolSQL.connect() и все будет роботать дальше.

вот из таких мелочей и состоит преимущество языка.

причем (интересный факт!) в php (с 5й версии) давно есть прекрасный объект mysqli, хранящий в себе даже несколько патчей от вашего покорного слуги, призванный собсна унифицировать всю эту котовасию. быдло - оно пишет на php 4! причем умудряется писать такие вещи которые в 5м почему-то не работают (сколько пытался - не получалось). у быдла свой язык - php4, потому что оно пришло когда появилась 4я версия а на 5ю переходить не собирается, кому охота ещо раз мозх насиловать.

так вот из-за этого быдла пхп _всегда_ будет версии 4.x. кому нужен php6 с тредами(?) и нативным юникодом. если быдло не умеет юзать даже объекты.

например в php5 есть прекрасный объект DOMDocument. который парсает тот же html без лишних вопросов и даже круче чем в питоне - 2 строчки, вызов одного объекта и html распарсан по DOM. что мне сказал очередной мой быдло кодер? конечна! ето аъценно трудна, я буду делать как всегда, и присобачил какое-то барахло типо как в питоне есть такой древний SGMLParser.

причина одна - есть мастера своего дела. которым не взападло развиваться. и есть то быдло которое выучило пхп чтоб подзаработать деньжат. они его не любят. а оно взаимно.

gigabito
()
Ответ на: комментарий от Aceler

> так вот, реальные проекты предполагают один срок сдачи - "вчера вечером".

Реальные проекты предполагают сначала выяснение требований, оценку временных затрат и проектирование.

PartyZan ★★★
()
Ответ на: комментарий от Aceler

> Я, уважаемый, работник. А ты можешь теоретизировать, на чем мне деньги зарабатывать.

Как утомляют эти ПТУшники. "Мне на пиво и так хватает, зачем учить что-то новое?"

anonymous
()
Ответ на: комментарий от gigabito

> на этом кодинх заканчивается.

Ну если вы обратили внимание на мой код, там то же самое плюс две функции типа "вынуть и в рот положить". А так - да. Не понимаю претензий.

Aceler ★★★★★
()
Ответ на: комментарий от anonymous

> Вы разрабатываете сайты типа "Заприщённый эротический ЧАТ! Скачай БРИТНИ на СМС!!!"? Тогда PHP - то что доктор прописал, ещё бы.

А вы разрабатываете корпоративные CMS и впариваете их IBM? Гиганты.

Aceler ★★★★★
()
Ответ на: комментарий от gigabito

> знаете какие самые популярные языки в мире? php и вижуал бейсик. потому что это, перефразируя классику, dumb software for dumb people.

Я смогу это повторить про C/C++, когда речь зайдёт об универсальных компиляторах общего назначения? Ибо php и VB - интерпритаторы.

atrus ★★★★★
()
Ответ на: комментарий от geek

> если малые студии ниасилят модульное программирование и mvc - они так и останутся малыми студями с перспективой безвременного RIP.

Это так. Каждый новый проект уровнем выше. Мы это блюдем :) Например, начинали с платных SMS, потом пошли на рекламные акции, потом разработку MMORPG, потом вот уже серьезная CMS система для рекламных агенств, потом <секретно> для <секретно>, потом еще кое-что :)

> ясно, уровень определили :)

Ну да. Кому-то надо красивый код, а кому-то - "пипл хавает".

> Причем мелкий такой успех, которым можно гордиться в кругу таких же барыг, обладающих талантом находить лохов и впаривать им свои поделки за безумное бабло.

У вас есть секрет, как сделать свои первые 1 000 000 $ в интернете иным способом? Пирамиды? :)

> а что ты будешь делать, когда лохи кончатся? :)

Тссссс! Они никогда не кончатся :):):)

Aceler ★★★★★
()
Ответ на: комментарий от PartyZan

> Реальные проекты предполагают сначала выяснение требований, оценку временных затрат и проектирование.

В отношении заказчик - исполнитель. Да.

В отношении собственного проекта - нет. Практически никогда. Иначе - все. Смерть.

Aceler ★★★★★
()
Ответ на: комментарий от gigabito

> причина одна - есть мастера своего дела. которым не взападло развиваться. и есть то быдло которое выучило пхп чтоб подзаработать деньжат. они его не любят. а оно взаимно.

Тогда причём тут php? Меня лично четвёрка не интересует. Именно по причине наличия пятёрки. И будущей шестёрки.

atrus ★★★★★
()
Ответ на: комментарий от anonymous

> Как утомляют эти ПТУшники. "Мне на пиво и так хватает, зачем учить что-то новое?"

Как утомляют эти теоретики. Уже и аргументов нету, а все туда же - лишь бы обосрать.

Aceler ★★★★★
()
Ответ на: комментарий от gigabito

Всё с Вами понятно, типа php язык для быдла, и никто php5 и php6 использовать не будет. Скорее всего Вы просто "ниасили" php5 и теперь всех под одну гребёнку.

Ну или же мания величия, типа я такой крутой, и только я на php могу нормально писать.

gloomdemon
()
Ответ на: комментарий от anonymous

> И что, Aceler, достигли вы счастья, быдлокодерствуя на PHP? Никакого осадка не осталось ли?

Нет. Я не быдлокодерствовал на PHP. И цели не было - достичь счастья, быдлокодерствуя.

Aceler ★★★★★
()
Ответ на: комментарий от atrus

>Я смогу это повторить про C/C++, когда речь зайдёт об универсальных компиляторах общего назначения? Ибо php и VB - интерпритаторы.

а быдлокодеру как-то все равно потому давайте считать php=c++=езык. более того они учат быдлизму даже наших увожаемых клиентов. когда меня первый раз попросили написать "скрипт на сях" я уже не помню. но не так давно. раньше все-таки просили программы.

gigabito
()
Ответ на: комментарий от Aceler

> > Реальные проекты предполагают сначала выяснение требований, оценку временных затрат и проектирование.

> В отношении заказчик - исполнитель. Да.

> В отношении собственного проекта - нет. Практически никогда. Иначе - все. Смерть.

Т.е. пишем бес проектирования, без выявления приоритетных фич, а так чтобы в проекте было побольше фич и не важно, что они не юзабельны и не востребованы? нуну

PartyZan ★★★
()
Ответ на: комментарий от PartyZan

> Т.е. пишем бес проектирования, без выявления приоритетных фич, а так чтобы в проекте было побольше фич и не важно, что они не юзабельны и не востребованы? нуну

Нет. Без проектирования, но с выявлением приоритетных фич. И важно, чтобы эти фичи были востребованы.

Вы собственные проекты вели?

Aceler ★★★★★
()

Всё, мужики, мы на первом месте! Django - вещь!

anonymous
()
Ответ на: комментарий от anonymous

Всем решившим задачку:

Теперь более реальная задача - этот код должен возвращать список а не печатать. В питоне и руби мы только УБЕРЁМ ненужный код. А код на PHP C и.т.д. в студию. (Размер входного массива может быть любым).

Ruby:

[1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}

Python:

[i for i in map(lambda x:x*x, [1,3,5,6,20]) if i > 10]

А теперь как всех делает компилируемый язык:) :

[i | i <- (map (^2) [1,3,5,6,20]), i > 10]

CrazyPit ★★★
()
Ответ на: комментарий от Aceler

И свои и чужие вел, поэтому и удивляюсь, ибо не встречал еще ни одного человека (знающего что-то еще кроме php), который бы захотел использовать php по своей воле кроме как для прототипирования или разработки чего-либо сложнее cms или гесты.

PartyZan ★★★
()
Ответ на: комментарий от ero-sennin

> [1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}.each {|v| puts v} - это прямой аналог знаменитого ls|sort|less. Или вы будете говорить, что и юникс маздай, а настоящие поцаны выбирают explorer.exe?

+100 опередил

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

> Теперь более реальная задача - этот код должен возвращать список а не печатать.

Заменить $var на $result[$var]. Это я опять про Parser :)

Про PHP - заменить print на $result.= .

Про C - то же.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

> Про PHP - заменить print на $result.= .

Аддский отжиг! Ты решил впарить строку вместо массива, зачетно, зачетно!

anonymous
()
Ответ на: комментарий от PartyZan

> И свои и чужие вел, поэтому и удивляюсь, ибо не встречал еще ни одного человека (знающего что-то еще кроме php), который бы захотел использовать php по своей воле кроме как для прототипирования или разработки чего-либо сложнее cms или гесты.

Была другая проблема. Я знаю PHP и Parser (ну и C). Другой программист - PHP и Python со словарем. Третий - PHP и Perl. Четвертый - PHP и все. Пятый знал только С, но его переучили, естественно, на PHP.

Так и получается, что при все богатстве выбора - другой альтернативы нет :)

Да и проект изначально представлял собой _готовый_ форум, который очень быстро оброс новыми модными фичами.

Aceler ★★★★★
()
Ответ на: комментарий от CrazyPit

>[1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}

Да приравняйте вы эту строчку переменной какой-нить, что-ли, чё столько раз переписывать-то? :)

dv5ife
()
Ответ на: комментарий от anonymous

> Ты решил впарить строку вместо массива, зачетно, зачетно!

Формат возвращаемых данных никто не оговаривал :)

Надо массив - итертатор есть, делай $result[$i].

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Вот собственно из этого примера и видно, что выбор в пользу PHP был обусловлен не реальными его преимуществами, а всего лишь незнанием существующих аналогов.

PartyZan ★★★
()
Ответ на: комментарий от Aceler

> Была другая проблема. Я знаю PHP и Parser (ну и C). Другой программист - PHP и Python со словарем. Третий - PHP и Perl. Четвертый - PHP и все. Пятый знал только С, но его переучили, естественно, на PHP.

Ну да, сишник и парсист не смогли осилить питон и перл :))))))))))

anonymous
()
Ответ на: комментарий от CrazyPit

> Теперь более реальная задача - этот код должен возвращать список а не печатать.

> А код на PHP C и.т.д. в студию.

Господи, сколько же самомнения у некоторых:

$res=array(); foreach(array(1,3,5,6,20) as $v){$v*=$v; if($v > 10){$res[]=$v;}}

Довольны? Учтите, за продолжение мастер-класса я намерен брать деньги. ;-)

atrus ★★★★★
()
Ответ на: комментарий от Aceler

> Надо массив - итертатор есть, делай $result[$i].

Да это, блять, вообще незнание основ. Слушай, Ацелер, кто тебя обманул, что ты пхп знаешь???

правильно будет $result[] = ...

Но во первых это тебя не отмазывает, потому что я уже писал, что этот код на пхп все равно займет 4-6 строк, в зависимости от соблюдения правил хорошего тона. Если бы ты знал про анонимные функции и create_function, а также array_walk, array_map и еще из того же семейства, ты бы может сподобился написать пример на пхп в одну строчку. Просто проблема в том, что этот код будет выглядеть все равно фигово, потому что create_function нужно передать строку кода...

Но ты этого не знаешь! Как не знает и gloomdemon, и atrus и другие гуру, которые ахуеть знают пятый пхп, но никуя даже в четвертом не знают.

anonymous
()
Ответ на: комментарий от anonymous

> правильно будет $result[] = ...

Правильно будет забить на эту задачу.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

> Аналоги нам до сих пор не показали.

Т.е. RoR и Django не аналоги?

PartyZan ★★★
()
Ответ на: комментарий от gloomdemon

> foreach(array(10, 20, 30) as $item) {$item*=$item;($item>10)?$result[]=$item:'';};

Слушай, прочитай еще раз пост про хороший стиль в пхп и необходимость наличия отступов и переносов строк. Потом посмотри на пост про create_function, array_walk, array_map. А потом подумай почему в пхп все так хуево.

anonymous
()
Ответ на: комментарий от gloomdemon

> foreach(array(10, 20, 30) as $item) {$item*=$item;($item>10)?$result[]=$item:'';};

Слушай, прочитай еще раз пост про хороший стиль в пхп и необходимость наличия отступов и переносов строк. Потом посмотри на пост про create_function, array_walk, array_map. А потом подумай почему в пхп все так хуево.

anonymous
()
Ответ на: комментарий от anonymous

>анонимные функции и create_function, а также array_walk, array_map

Да, ну и покажи мне как с помощью array_walk ты напишешь это короче чем я предложил, и в одну строчку. Я не даром написал, про то что можно и про извратнее. Вот видно и вылезли на призыв.

gloomdemon
()
Ответ на: комментарий от CrazyPit

>Упс. Ну тогда да не укладываеться это просто так в лист комприхэншс.


фключи моск (если есть).

[ write (e*e) for e in [1, 3, 8, 2, 8]]
или для извращенцев:
[ write (e) for e in [ ee * ee for ee in [1, 3, 8, 2, 8]] ]


в питоне и в рубях напрягает отсутствие объявления переменных ( НЕ ТИПОВ ПЕРЕМЕННЫХ, а ПЕРЕМЕННЫХ ). Это приводит к эффекту "полное или 
частичное отсутствие local scope" (помимо необходимости self, 
который еще можно терпеть, невыносимых @, @@, $ - бррррр!!! и трудно-
уловимых ошибок)

напрмер:

def outer():
   x = 10
   def inner():
      print x
   return inner


outer().inner() 

работает, однако 

def outer():
   x = 10
   def inner():
      print x
      x = 20
      print x
   return inner

outer().inner() 

удивительным образом сосет. т.е. замыкание получается какое то read 
only. (интересно как поведет себя подобный код в рубях)

anonymous
()
Ответ на: комментарий от anonymous

> $result[] = ...

А что, в PHP присваивание переменной $result значения сразу останавливает выполнение функции и возвращает значение? Не знал. Надо проверить. Всю жизнь пользовался return и как-то не надо было.

Aceler ★★★★★
()
Ответ на: комментарий от anonymous

> Но ты этого не знаешь! Как не знает и gloomdemon, и atrus и другие гуру, которые ахуеть знают пятый пхп, но никуя даже в четвертом не знают.

Глупышь. Решения требовали в одну строчку. Я привёл наиболее короткое. C create_function будет длиннее.

> Но во первых это тебя не отмазывает, потому что я уже писал, что этот код на пхп все равно займет 4-6 строк, в зависимости от соблюдения правил хорошего тона.

Оставь эти правила кому-нибудь другому. Решение делается как надо. Если вы хотите извращений, вы их получете. И не надо отмазываться. Получается что Ruby насквозь извращенческий и никого не волнует, что там эти правила назначены как хороший тон.

Решите - или можно писать в строку или нет.

atrus ★★★★★
()
Ответ на: комментарий от Aceler

> А что, в PHP присваивание переменной $result значения сразу останавливает выполнение функции и возвращает значение?

Хватит обсырать пхп, подлый засланец-парсертрист! А то все подумают, что пхп-кодеры полные бараны, что даже синтаксиса своего языка не знают!!

В посте выше брат глумдемон написал правильный пример с использованием $result[] = ... Протри глаза и иди дальше пиши на парсере.

anonymous
()
Ответ на: комментарий от anonymous

> Хватит обсырать пхп, подлый засланец-парсертрист! А то все подумают, что пхп-кодеры полные бараны, что даже синтаксиса своего языка не знают!! > В посте выше брат глумдемон написал правильный пример с использованием $result[] = ... Протри глаза и иди дальше пиши на парсере.

На парсере как раз именно так :)

Ну значит, в моем примере надо было сделать $result_[$i]= вместо print и return $result_[]; либо $result[]=$result_;

Так?

Aceler ★★★★★
()
Ответ на: комментарий от annonymous

>А хотелось бы: os.environ.keys().sort().each(k, print("%s\t%s" % (k, os.environ[k]))

подобные заявления идут от быдлопривычек быдлокодерства. за такие вещи в нормальных конторах яйца отрывают, ибо такой код не документировать не дебагить невозможно. нормальные люди делают - одно действие - одна строка. вот так мальшик.

anonymous
()
Ответ на: комментарий от Aceler

> Не устаю удивляться мощи PHP!

Да, суки! ПХП самый лучший язык всех времен и народов!

Потому что на нем написан пхпбб! пхпНюк! ПыыыР и есче много полезного софта. А еще на нем дистр линакса делают и мы все ее себе поставим и будем все писать под нее скрипты и у нас все хорошо и мы вас всех неслышим.

А вы еще рубисты, питонисты и хренисты попроситесь к нам обратно, чтобы мы позволили на нашем лучшем языке сайты писать, но мы вам гордо скажем НЕТ!

anonymous
()
Ответ на: комментарий от gloomdemon

> меня по ходу дела принялм в секту PHP кодеров на lor'е.

Теперь мы БРИГАДА! И все будут нас баяцца! Патаму что нас много и мы вам всем пи..ды дадим! (с) маленький медвед

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.