LINUX.ORG.RU

PHP vs RoR vs Django


0

0

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

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

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

★★

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

>> foreach(array(10, 20, 30) as $item) {$item*=$item; if($item > 10) print $item;};

> Так, забудьте мое решение :)

Aceler позабавил :).

foreach (array(10, 20, 30) as $item) { $item *= $item; if ($item > 10) print $item;

}

Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца. Поэтому четыре строчки кода. А если брать по пировскому правило if () {} то и все шесть.

Задумайтесь. Притом решение на руби хорошо тем, что по структуре напоминает просто перечисление действий, а если для пхп попросить добавить еще что-то, получится уже куча ветвлений.

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

>Можно. Но разница между твоим кодом и моим, в том, что я его пишу сразу с головы.

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

>Любой другой знаток языка читает его легко и без содрогания.

Да неужели? Хорошо, приведите пример проекта, у которого есть _файлы_ исходников размер которых > 50 килобайт. Я выдергиваю из контекста 10 строчек, а Вы расписываете их алгоритм. На все-про-все - 5 минут с момента опубликования.

>А ты сам в этой лабуде нифига не разберешься.

Мне и не надо. Я на С++ пишу.

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

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

На досуге почитайте coding rules того же ядра Линукса. Их придумади не просто так.

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

> Там, где я скачаю готовое решение и через полчаса подниму сервер, тебе потребуется месяц написания кода.

Записываем. Aceler - скрипткиддис, не написавший ни строчки своего кода.

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

Попробовал нормально отформатировать, но тех-форматирование все похерило. Дайте кто-то сцылку на базовые правила теховской разметки, плиз.

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

>Записываем. Aceler - скрипткиддис, не написавший ни строчки своего кода.

Ну да, а анонимус все пишет сам с нуля, так?

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

Слив защитан. Пошли левые отмазы, с таким же успехом можно и про [1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}.each {|v| puts v} сказать то же самое.

Пример без if я привёл, вполне читаельный код. Можно процитировать Ваши же (ну или другого анонимуса) по поводу читабельности в строчку.

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

> Мне и не надо. Я на С++ пишу.

Именно для вас в этом приятнейшем среде приводилась сцылка статью на Пола Грехема. Так вот, он писал, что когда появлялись конкуренты, я смотрел на их раздел вакансий, кого они набирают. Если это была Ява или С++, все было нормально, если же Перл или Питон, это уже были опасные конкуренты.

Поэтому не нужно здесь вспоминать о плюсах. Для десктопа да и еще раз да. А для веба нет и еще раз нет!

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

Это не сущности, а перечисление действий. Я не ввожу промежуточных переменных. Код нормально читается. Зачем что-то усложнять? Понимаю, после плюсов синтаксис скриптовых языков выглядит дико, но иначе они были бы не скриптовыми языками? Isn't it? =)

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

> Теперь напиши ты небыдлокодерское решение на пхп.

Что есть "небыдлокодерское решение"? В одну строчку?

foreach(array(1,3,5,6,20) as $v){$v*=$v; if($v > 10){echo $v."\n";}}

А теперь вы скажите, вы весь сайт в одну строчку писать будете?

> ЗЫ: быдло - это, тот кто выучил одно и не хочет учить другого.

А помоему, быдло это тот, кто считает, что есть только его мнение и неправильное. Так что вполне могут быть быдло-рубисты.

> Главное долго на этом не засиживаться :)))

Вы таки уже выучили D и Forthress? ;-)

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

> Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца.

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

А во-вторых, если пользоваться встроенными или фреймворковскими функциями, как в примере с Ruby (помните там про map и select? Вот где засада-то!), то код получается не хуже.

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

> Записываем. Aceler - скрипткиддис, не написавший ни строчки своего кода.

Запишите - Aceler работает с реальными проектами и зарабатывает реальные деньги. Все остальные могут гнуть пальцы до загибания в спирали.

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

> Можно процитировать Ваши же (ну или другого анонимуса) по поводу читабельности в строчку.

Продолжим. Понимаешь, я не просто взял и сразу сел за Руби. Я очень, очень хорошо знаю пхп. И знаю, что в пхп НИКТО из нормальных людей не пишет в одну строчку. Потому что у пхп такой стиль и такая особенность. Знаешь, есть такое понятие, как хороший и плохой стиль. Так вот, то что ты написал это плохой стиль пхп, если не расставить соответствующие переводы строк и отступы.

То, что я написал на Руби есть ХОРОШИМ стилем программированием на Руби. Тоесть другого рубииста этот код не покоробит, он нормально читается и, ВНИМАНИЕ, нормально изменяется.

Поэтому твое сравнение некорректно.

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

> Вы таки уже выучили D и Forthress? ;-)

Да. Но для D до сих пор нет нормальных компиляторов, особенно для платформ, отличных от x86, а Fortress вообще пока не вышел. И хотелось бы спросить, какое отношение эти достойные языки имеют к вебу?

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

> Так пойдёт, или надо как нибудь поизвращенее?

Гы, как мы синхронно... ;-)

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

> Запишите - Aceler работает с реальными проектами и зарабатывает реальные деньги. Все остальные могут гнуть пальцы до загибания в спирали.

Вот только не надо этих детских понтов про реальные проекты и мегазаработки. Мы все здесь взрослые люди (надеюсь), и меряемся не своей зарплатой, а достоинствами и недостатками любимых языков программирования.

anonymous
()

люби друзи
хватит спорить

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

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

>> Главное долго на этом не засиживаться :)))

> Вы таки уже выучили D и Forthress? ;-)

Нет, мне больше импонирует Лисп и Хаскель.

ЗЫ: ты так и не ответил насчет других языков, которые ты знаешь...

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

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

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

> выучили D

Не надо D обижать. Это, конечно, kitchen sink, но товарищ У.Б. хотя бы стиль соблюдает, а не кидант всё в кучу, как Мацо релло.

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

> и меряемся не своей зарплатой

Я где-то указал размер зарплаты? Нет? Не смутил?

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

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

Знаешь что, я видел кучу кода на perl, к примеру cvsweb, в котором всё что относится к какому то одному определённому действию засовывается в один файл, в результате пара файлов по 10т. строк. (cvsweb и не только). Так вот это тоже считается хорошим стилем программирования на perl.

А на vb так вообще как посмотришь на хороший стиль программирования, так вообще волосы дыбом встают.

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

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

>А что это Зопу за 300+ страниц никто не вспомнил? Прикольная вещь имхо! а какая в зопу разница? язык везде один. накатал пару классов один раз и юзай хоть в зопе хоть в черепу хоть в консоли.

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

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

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

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

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

Послушай, Ацелер.

Ты мне тут басни не пой про готовые решения на пхп. Я когда-то пытался найти нормальный класс для работы с базами данных. Так вот, под пхп нету НИОДНОГО нормального класса, окромя того, что написал Д. Котеров. И даже у него есть пара косяков. Ни Adodb ни уебищный ПИиииР не дают самого элементарного - хорошего класса для работы с базами данных!

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

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

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

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

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

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

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

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

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

> 300+ страниц

Прикольная опечаточка! Даёшь!

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

> Где здесь новые возможности, которых не было шесть лет назад???

6 лет назад как раз вышла php 4, до того этих возможностей не было.

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

Ты не поверишь, но именно eclipse у меня сейчас и открыт. Правда, с плагином phpeclipse. Ибо я не стану использовать инструмент несоразмерный задаче.

> Даже хороший перлист не может уже писать на пхп без содрогание, что большее маленького сайта.

Значит он плохой программер. Хороший сможет написать на всём.

> Кстати, список в студию!

Извините, но у меня нет желания отчитываться перед вами. По сути разговора могу сказать, что Java и Python входят в список известных мне языков. Python пока ещё знаю не очень, учу. Однако, не планирую использовать его в web. Меня он интересует, как встраиваемый язык и язык, для расширения уже существующих программ.

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

> Знаешь что, я видел кучу кода на perl, к примеру cvsweb, в котором всё что относится к какому то одному определённому действию засовывается в один файл, в результате пара файлов по 10т. строк. Так вот это тоже считается хорошим стилем программирования на perl.

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

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

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

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

Читайте по губам: п-л-а-н-и-р-о-в-а-н-и-е. И толковые хакеры на разработке. Вот и весь секрет успеха.

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

> Читайте по губам: п-л-а-н-и-р-о-в-а-н-и-е. И толковые хакеры на разработке. Вот и весь секрет успеха.

Обычно секрет успеха в гибкости. Сегодня напланировали, через месяц внедрили - оно пошло. Прекрасно.

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

Упс! :)

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

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

Вот и пускай на нём для shell и пишут, нечего сувать как затычку куда влезет.

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

> Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца.

Т.е. Ruby, где так писать надо - язык самоубийц? Ну, да, сепуку у них там в чести... :)

> Задумайтесь. Притом решение на руби хорошо тем, что по структуре напоминает просто перечисление действий, а если для пхп попросить добавить еще что-то, получится уже куча ветвлений.

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

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

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

и тогда гарантированно все пойдет не так :)

>Упс! :)

и часто ты без ТЗ работаешь? =)

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

> Я когда-то пытался найти нормальный класс для работы с базами данных.

<?php
/********************************************
*Работа с SQL-сервером PostgreSQL и MySQL
*(C) С. Бессонов 2005
*
*
********************************************/

$DB_Handler=mysql_pconnect('host','login','pass');
mysql_select_db('dbname',$DB_Handler);

class sql
{
        // Библиотека процедур для работы с sql. При смене типа базы заменить.
        var $cn = NULL; //БД ID
        var $nr = NULL; //Number of Rows - количество строк в ответе
        var $rs = NULL; //Return Statement - Собственно ответ
        
        //Конструктор
        function sql($sqlstatement=null)
        {
                //При создании класса необходимо сразу выполнить подключение и ...
                $this->cn=$GLOBALS['DB_Handler'];
/               // ... выполнить SQL команду, если она есть
                if($sqlstatement)
                {
                        $this->query($sqlstatement);
                }
        }

        //Добываем строки
        function query($sqlstatement)
        {
                // для соединения с базой данных используем переменную $this->cn
                // после выполнения запроса записываем в переменную nr
                // количество полученных строк $numrows
                if($this->cn)
                {
//                      echo 'query->'.$sqlstatement."\n";                                                                              //Отладка
                        //$this->rs = pg_query($this->cn,$sqlstatement);
                        $this->rs = mysql_query($sqlstatement,$this->cn);
                        //$this->nr = pg_numrows($this->rs);
                        @$this->nr = mysql_numrows($this->rs);
                        return $this->rs;
                }
        }

        // Закрываем соединение с базой данных
        function close()
        {
                //pg_close($this->cn);
                mysql_close($this->cn);
        }

        //Возвращаем одно значение
        function value()
        {
                mysql_data_seek($this->rs,0);
                $row=mysql_fetch_row($this->rs);
                return $row[0];
        }
        // Возвращаем текущую строку из результатов запроса
        function row($rownum)
        {
                //$row = pg_fetch_array($this->rs, $rownum, PGSQL_ASSOC);
                mysql_data_seek($this->rs,$rownum);
                $row = mysql_fetch_array($this->rs);
                return $row;
        }

        //Возвращаем значение конкретного элемента в массиве
        function rowvalue($rownum,$name)
        {
                $array=$this->row($rownum);
                return $array[$name];
        }
}

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

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

>Запишите - Aceler работает с реальными проектами и зарабатывает реальные деньги. Все остальные могут гнуть пальцы до загибания в спирали.

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

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

p.s.

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

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

> Записываем. Aceler - скрипткиддис, не написавший ни строчки своего кода.

Улыбнуло. Рубийцы начинают работу с создания интерпритатора Ruby в маш. кодах? ;-)

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

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

Обычно в ПХП люди пишут такое сами себе. В том же перле есть нормальный модуль DBI. А в том же рейлсе вообще большая часть запросов реализуется хорошим ОРМ-ом.

А теперь вспоминаем твое утверждение про все готовое в ПХП и сопоставляем с "Обычно люди пишут такое сами себе" и делаем соответствующие выводы.

Вобщем перестань, глупо это. Если ты недавно начал программировать, на первые пару лет пхп хватит. Главное потом не останавливаться.

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

> Именно для вас в этом приятнейшем среде приводилась сцылка статью на Пола Грехема. Так вот, он писал

Он писал, что программировать надо на List. А тут какое-то Python и Ruby пытаются всучить!

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

> и часто ты без ТЗ работаешь? =)

Когда делаешь проект для дяди со стороны, под его финансирование, да под конкретное ТЗ - это лафа, скажу я вам. Это просто программирование в кайф.

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

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

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

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

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

> А теперь вспоминаем твое утверждение про все готовое в ПХП и сопоставляем с "Обычно люди пишут такое сами себе" и делаем соответствующие выводы.

Ну и как это противоречит выводам? не пойму что-то...

Уважаемый анонимус написал что-нибудь?

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

> Нет, мне больше импонирует Лисп и Хаскель.

Дык, что же не используешь на web? Вон, тут писали, что мегарулез. :)

> ЗЫ: ты так и не ответил насчет других языков, которые ты знаешь...

Из web-ориентированных в добавок ещё только Perl5, но на нём мне довелось писать совсем чуть-чуть, по этому я не особо его считаю. Остальные упоминать смысла нет, не хочу превращать топик в обсуждение меня.

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

> Он писал, что программировать надо на List. А тут какое-то Python и Ruby пытаются всучить!

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

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

> Не надо D обижать.

Я не обежаю. Тут же сказали - учить *всё* новое. Заветы - в жизнь! :)

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

> Ну и как это противоречит выводам? не пойму что-то...

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

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

> запишем. либо сысадмин либо уебмайстор.

Ни то ни другое.

> ты уважаемый - потребитель.

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

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

artus, жаль за prado никто ничего не сказал. icq:84065753, мне интересно

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