LINUX.ORG.RU

PHP vs RoR vs Django


0

0

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

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

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

★★

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

> лечится библиотекой

Tell me about it.

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

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

> А чем pconnect не устраивает?

Тем, что нет возможности четко указать, сколько же будет коннектов к базе данных. Как только сползёте с MySQL'я на "нормальную базу", поймете, зачем вам это нужно.

AlexM ★★★★★
()

Пока руби не асилит юникод и не вычистит быдлосинтаксис, будет идти фсат.

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

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

в то время как на питоне теперь пишут даже куски игор типо civilization iv и 3д редакторов типо poser 5-6, быдлоasp завойовывает все больше поклонников пхп которым не нравитсо заливать свои скрипты на удаленную машину без красивых иконок а на маки у них денег нет и не будет.

скоро мир окончательно разделят на две части. одни будут знать ls, ps и import os а другие в какой менюшечке поставить какую рющечку

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

Ну как выясняется и без юникода обходиться можно, хотя я тож не против его реализации в самом языке. А разговоры про синтаксиси вообще неуместны. Это по-пионерски. Питон не смотря на свой чистяк далеко ли ушел от алгола? пытался вроде, но комьюнити добивает все его прогрессивные фишки. Так вот в "быдлосинтаксисе" Руби есть несколько стилей, мне любиый алголоэйфелеподобный и сишный и перловый и я думаю прижелании (примите участие ;) ) можно и питоновский засунуть. а вот засуньте ка в питон аналог .grep и =`

чо вы там вообще делаете с эти юникодом в питоне без таких очевидных давно уже регэксповых фишек?

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

> чо вы там вообще делаете с эти юникодом в питоне без таких очевидных давно уже регэксповых фишек?

чо вы там имеете введу под регэксповыми фишками? попробуйте например в в юникодной локали в руби сделать s = "лопата";s[1..2] или какое-нибудь s.upcase и поймете о чем я. только не надо меня уверять что всё это решается костылиными внешними библиотеками. юникода в руби нет => руби сосет как пылесос.

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

> опечатался =~

Sed-овский синтаксис а-ля "кошка по клавиатуре топталась" хорош для мелких одноразовых скриптов. А тех, кто использует его в серьёзных программах, надо гнать в газенваген ссаными трусами. И если серьёзный язык позволяет разным быдлокодерам писать нечитаемый код в стиле перла и седа, это не достоинство, а ОФИГЕННЫЙ НЕДОСТАТОК.

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

для глухих, я не против юникодности. однако откройте для себя http://rubyforge.org/projects/icu4r/

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

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

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

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

> для глухих, я не против юникодности. однако откройте для себя http://rubyforge.org/projects/icu4r/

Это не часть языка, и даже не часть стандартной библиотеки, а всего лишь недоделанный костылик в стадии pre-alpha. Вся стандартная библиотека руби по-прежнему работает с байтовыми быдлостроками. И все сторонние библиотеки тоже. И Рельсы млять тоже.

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

> покажите мне как повесить в быдлопхп объект так чтоб он был доступен всем клиентам

Реализуется через shared memory. Если у кого-то с этим грабли, тот идёт смотреть вариант реализации на http://oasis.sourceforge.net/.

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

> читаемость кода от седовского синтаксиса увеличивается

Это вы девачкам рассказывайте. Штуки типа s/\w*:\/\/(.*)\?(.*)/\1/ читать ТЯЖКО. Будете спорить?

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

Преувеличиваете. Вызов импорта модуля происходит один раз, и его можно не считать. Остальное делается так: re.search('foo.*bar', mystring). По сематнике это ничуть не сложнее mystring =~ /foo.*bar/. А если Вы считаете, что круто сэкономили своё время на печати десятка символов, то освойте слепую печать и не позорьтесь как деточка.

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

> s/\w*:\/\/(.*)\?(.*)/\1/

Гон, нормально читать.

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

>> Та при чём тут японцы Matz нагло позаимствовал эти соглашиния из >лиспа. Да и вообще много чего от туда позаимствовал...

>Во-во, что-то из лиспа, что-то из смолтока, что-то из перла. И >получился не лисп, не смолток, а быдлонечно. Похожее на лоскутное >одяело.

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

Во вторых, уверен, что большинство возражений со стороны php-кодеров про состоятельность пыха в сравнении с настоящими языками (да, я не оговорился, ибо пхп - это не язык, это всего-лишь препроцессор, в нем например в принципе не возможна многопоточность.. а попробуйте написать сервер на голом php :)) обусловлена тем, что они просто не знают всех сильных сторон других языков (я говорю о Python, Ruby, хоть бы и Perl(если помните, PHP создавался, как более простой Perl)), потому как не снизошли еще до того, чтоб более-менее обстоятельно в них разобраться, и потому с их точки отсчета то что они умеют на php кажется им реально мощнее того, что можно сделать на последних.

А вы слышали про парадокс гипотетического языка программирвования Блаб? Если нет, почитайте тут http://www.nestor.minsk.by/sr/2003/07/30710.html и вам станут ясны ваши заблуждения.

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

PS. Сам я заядлый Python-овец, так как с него начинал (после Паскаля, Сей, Жавы), пробовал и Ruby - но некоторые аспекты оттолкнули - синтаксис с begin,end, особая многопоточность и проблемы юникода. В Питоне с этим все ОК %)

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

> целостный и гармоничный

А я ещё одно слово знаю: соборный. Знаете, что между этими тремя словами общего? К руби они не относятся.

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

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

"Слон - животное полезное." (с). Того же уровня аргументация. Японци хорошо аниме рисуют. Это да. И hellokity тоже у них неплохо получается.

Матц взял кучу идей тридцатилетней давности и слепил _нечто_.

Удивлю, но "привнести в них лучшие идеи и наработки из других языков" недостаточно. Надо ещё _суметь_ это сделать. Пока что видим, что Матц плохо справился. Надо было брать наработки не 30 летней давности, а посмотреть, что нового было сделано в тех же лиспе со смолтолком.

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

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

Есть тонкая грань между гармоничным сочетанием и уродливым нагромождением. И Мацумото, хренов доктор Франкенштейн, нагромоздил так, что сам не рад. Смолток с седовскими регэкспами - это отжиг. Надо было туда ещё и SQL до кучи прикрутить, фигли.

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

>Удивлю, но "привнести в них лучшие идеи и наработки из других языков" недостаточно. Надо ещё _суметь_ это сделать

Взять хотябы Руби-блоки (итераторы). Если я не ошибаюсь они из SmallTalk'а. Но они вошли в синтаксис языка очень удачно, и потому используются очень часто. В питоне есть равномощная конструкция генераторов с yield, но используется гораздо реже.

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

> Надо ещё _суметь_ это сделать

Как минимум, согласовать эти идеи между собой, а не валить всё в кучу, чтоб "пофичАстее было" \m/ В том же С++ комитет удавится скорее, чем новое ключевое слово в язык добавит. Матц же постоянно перекраивает язык вдоль и поперёк. Когда эта каша застынет, можно будет присмотреться.

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

> В питоне есть равномощная конструкция генераторов с yield, но используется гораздо реже.

Отучаемся говорить за других. (С) =)

Генераторы с yield и штуки типа (foo(i) for i in bar if baz(i) > 0) - очень удачные конструкции, и используются повсеместно.

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

> Есть тонкая грань между гармоничным сочетанием и уродливым нагромождением.

О! Точно. There's a fine line, как говорится.

> Смолток с седовскими регэкспами - это отжиг.

Мутант-гидроцефал.

> Надо было туда ещё и SQL до кучи прикрутить, фигли.

А скорее всего, и мотивация есть. Рельсы. Killer app типа.

anonymous
()

Пока что против Руби нашелся один аргумент - не поддерживает юникод - значит, все, млять - быдлоязык. Получается Си тоже быдлоязык :).

Можно привести еще какой-нибудь настоящий аргумент и показать в придачу не быдлоязык??? Потому что обсырать что-то в сравнении ни с чем, это легко. Давай, выходи. Ставь рядом с Руби другой язык и говори: в этом языке есть юникод и другие разные хуе-мае. И поэтому в сравнении с ним Руби сакс.

Во всяком случае на мой пост по сравнению Питона и Руби ухватились только за символы ! и ? в имени функции, но почему-то проигнорировали остальные вещи :). Наверное потому что сказать на это нечего...

ЗЫ: да, тут какая-то сцука писала про быдлосинтаксис подчистить. Выйди гандон и скажи, в чем это он быдло... и где он голимый. А пердануть и не обосновать людая вошь может.

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

>Отучаемся говорить за других. (С) =)

Я же написал "генераторов с yield" я имел в виду те, которые

def gen1(N):
.    for i in range(N):
.        yield i

(которые больше похоже на то что в Руби)

То что написали Вы это тоже сокращенная форма генератора, так же как и
[foo(i) for i in bar if baz(i) > 0] - список. Это из list comprehansion. И действительно, это использу(ю|ется) очень часто.

PS. Говорю лишь за себя.

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

Ты вообще хоть сточки кода на нем написал?

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

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

> Но они вошли в синтаксис языка очень удачно

Николая Васильевича ещё не вспоминали?

"Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмина, да взять сколько-нибудь развязности, какая у Балтазара Балтазарыча, да, пожалуй, прибавить к этому еще дородности Ивана Павловича -- я бы тогда тотчас же решилась."

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

> Я же написал "генераторов с yield" я имел в виду те, которые

Я тоже их имел в виду. :) Загляните в исходники того же Django. :)

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

>Определение нормальных языков в студию. Это те, где факториал быстро считается? А мне оно надо? Я клал на синтетическиие тесты. Это писькомерки.

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

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

Ээээ. Ну всеж таки JBoss не язык. Но да, если сравнивать, то ruby+fastcgi, php+fastcgi, java+jboss, python+whatcamacallit. А скорость интерпретации замерять и на основе этого какие-то выводы делать - это даже не смешно.

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

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

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

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

> Да и то их необходимость сомнительна, т. к. есть полноценные замыкания.

google.com -> python closures

But lambdas expect 'expressions' not 'statements' meaning you can only do a very limited number of things in your Python closure.

Что-то не могу понять где это в питоне есть полноценные замыкания??? Потому что в Руби блоки как раз и есть замыканиями, полноценными.

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

Вы путаете замыкания и анонимные функции, друк. Замыкание - это функция, определённая внутри другой функции. Анонимная функция (блок в руби, лямбда во многих других языках) - это замыкание без имени. Лямбда-функции уместны (и незаменимы) в чисто функциональных языках, типа хаскеля, но руби не хаскель. Я бы сказал ВАЩЕ НИ РАЗУ НЕ ХАСКЕЛЬ. И они там смотрятся как на корове седло. И только усложняют чтение и без того хитрозавёрнутого кода.

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

> Лямбда-функции уместны (и незаменимы) в чисто функциональных языках, типа хаскеля, но руби не хаскель.

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

> Я бы сказал ВАЩЕ НИ РАЗУ НЕ ХАСКЕЛЬ. И они там смотрятся как на корове седло. И только усложняют чтение и без того хитрозавёрнутого кода.

Насчет лямбды в Руби вообще спорить не буду :). Дело в том, что сам никогда не использовал эту конструкцию в нем. Вот блоки да :). Кстати, код кажется хитрозавернутым только поначалу, когда знаешь язык достаточно хорошо, читается он легко и внятно. (попробуйте вывести код на лиспе или смалтолке для общего обозрения, не думаю что незнающий сможет в нем что-то разобрать).

А если все нападки выше на язык Руби шли от сторонников Хаскеля, Лиспа и Смалтолка, то тут собсвтенно говорить нечего. Для меня очевидно что фунциональный язык Хаскел получше чем Руби. Но проблема в том, что я не видел на нем что-то хорошее под Веб, аки аналог рельс.

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

+1 про лямбды в Питоне.

Гвидо не раз просили сделать полноценные лямбда-функции, на что он справедливо замечал: если функция состоит больше, чем из одной строчки, у неё должно быть имя. Толково выбранное имя функции - прекрасная документация, оно позволяет сразу понять, что эта функция делаят, и сильно облегчает чтение кода.

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

> Насчет лямбды в Руби вообще спорить не буду :). Дело в том, что сам никогда не использовал эту конструкцию в нем. Вот блоки да :)

Блоки в руби - это и есть аналоги лямбда-функций (они же анонимные функции). :)

Советую почитать немного про лисп и хаскель, сразу в голове прояснится. :)

> Для меня очевидно что фунциональный язык Хаскел получше чем Руби. Но проблема в том, что я не видел на нем что-то хорошее под Веб, аки аналог рельс.

Все языки хороши для своих задач. Хотя аналог рельс на хаскеле было бы интересно увидеть.

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

> Блоки в руби - это и есть аналоги лямбда-функций (они же анонимные функции). :)

Тьфу ты, а что тогда есть замыкания? Я по предыдущим постам подумал что лямбда == замыкания.

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

Замыкание - это функция, определённая в тебе другой функции.

def greeting(hail):
    def hello(name): # эта функция и есть замыкание
        return '%s, %s!' % (hail, name)
    return hello

hello = greeting('Hello')
print hello('world')

На экран выводится "Hello, world!"

Пример, конечно, идиотский, но суть вы уловили.

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

Мнээээ... Замыкание = анонимная функция + контекст (scope). Всё. Этого должно быть достаточно для понимания. Зачем что-то ещё лишнее придумывать про "функцию внутри функции"?

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

Но пример таки в тему, кстати.

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

Кстати, ещё один пример:

def makeHello (a)
	proc { |b| print "#{a}, #{b}!\n" }
end

x1 = makeHello "Hello"
x2 = makeHello "Greetings"
x1.call("World")
x2.call("Me")

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

> Замыкание - это функция, определённая внутри другой функции.

Замыкание --- это функция, которая ховает контекст своего определения.

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

> европейцы в итоге судя по ПЕПам из Питона готовятся окончательно сделать снова Алгол.

Что ты имеешь в виду? И какой именно Алгол (60 или 68) ?

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

> Замыкание = анонимная функция + контекст (scope).

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

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

Не путайте не нужно описывать и нельзя описывать!

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

>> Если на PHP нечто уровня dev-python/matplotlib ?.. >Что есть dev-python, уточняем, google не помогает, а вселенная >несколько шире привычных вам представлений... IDE?

Речь не о dev-python а о matplotlib Гугл должен помочь...

>> PHP подкупает своим синтаксисом! У него очень низкий барьер начала >>программирования.

>Далеко он уедет не зная различий между "==" и "==="? Я уже не говорю >про сложения строк.

Уедет. Сложение строк в PHP записывается более корректно! Хотя бы потому что строки складывать нельзя! Как бы Вам этого не хотелось. Их можно только соединять и разделять. В этом смысле точка кажется более адекватным символом соединения строк.

> Следует разделять те переменные которые приходят через соединение и те, которые находятся в тексте программы!!!

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

Вы ничего не поняли!!! Читайте еще раз.

>> Или точнее вообще вводить такой термин!

>А подумать, перед тем, как писать? В php переменная создаётся при >обращении. Как транслятору различать, с какой переменной хотят иметь >дело? Запрещать локальные переменные, чьё имя совпадает с одной из >глобальных? Убирать global и вводить var? ;-) А как же все крики >"оптимизаторов"? Локальных переменных, как правило больше... ;-)

Вот именно что подумать перед тем как писать. Переменная в тексте программы это одно. переменная пришедшая через соединение это другое. Просто не надо путать.

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

>Вас не раздражает писать var? ;-) >Вас не раздражает писать функции, которые зависят от тонны глобальных

Нет. Глобальные переменные это нормально везде. Везде есть константы в некоторых приложениях их больше чем в других. ООП никак тут не помогает.

Общий совет. Сначала пойми о чем речь, потом отвечай.

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