LINUX.ORG.RU

Что быстрее python или ruby?


0

0

Создал два файла:

1.py

#!/usr/bin/python
print 2**302400

и

1.rb

#!/usr/bin/ruby
print 2**302400;

Запускал таким образом:

date ; ./1.py ; date
date ; ./1.rb ; date

В результате 1.rb выполнился за 3 секунды, а 1.py выполнился за 6 секунд. Стало интересно с чем связано такая разница в скорости выполнения одной и той же операции. Тест проводил несколько раз, каждый раз один и тот же результат - 3 секунды ruby, 6 секунд python. Результат получился абсолютно одинаковый в обоих случаях (сравнивал редиректом в файлы и нахождением md5sum файлов)) не вручную же столько цифр)))).

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

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

Для 2 проекта собирался использовать PHP однако вовремя понял что проект для него слишком большой.

Ответ на: комментарий от Love5an

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

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

>>кстати, ты даже не попробовал оспорить, что weblocks и ucw отстой

Я просто не вижу особо смысла спорить с идиотами.


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

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

>я к идиотам в негры не нанимался

влужупук засчитан.

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

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

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

> лисп ведь легкий.

«Сильный, но легкий» (c) Анекдот

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

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

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

>ещё тратить время на то что бы выучить которые из них не следует использовать

не которые не стоит, а где не стоит и как не стоит. Вот твой код как раз показатель, как делать не стоит.

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

> Тебя кто так писать учил? И ты ругаешь перл за свои кривые руки? и ещё man foreach

Меня так учил программировать randal schwartz, мать его, в своей пустословной книжке learning perl за которую меня и забанил. К счастью я не поддался...

Ты вобще вроде уже признался что пёрл забыл. Значит уже много времени прошло с тех пор когда последний раз на нём писал. Вот давай возьми свою старую программу длиной хотя бы в 2-3 тысячи строчек (если конечно ты такого размера писал, не говоря уже о вопросе о теоретической возможности написать программу такого размера на говноязыке) и попробуй добавить в неё новые возможности какие то, усовершенствовать имеющиеся, и т.д. После неудачных попыток это сделать возвращайся сюда и помогай мне обсирать пёрл. А пока что к тебе больше вопросов нет, и все твои дальнейшие посты будут расцениваться как пустословие.

md5xxx1
() автор топика
Ответ на: комментарий от golodranez

> он для этого конечно удобен, но не создавался.

Так и знал что их книги сплошное враньё. На самом деле он создавался не этими волами и швартами для однострочных скриптов в замен awk/sed, а создал его великий golodranez который в то время (1987 год) ещё даже не родился.

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

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

>Меня так учил программировать randal schwartz, мать его, в своей пустословной книжке learning perl за которую меня и забанил

тебя обнанули, шварц и кристьянсен в своей книге такую муть не писали:))

Ты не ругайся, перл, видно, не для твоего ума, пиши на питоне или яве :))

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

>По одной или нескольким причинам из этого списка ты и защищаешь говноязык о котором имеешь поверхностное представление.

ммм.. из чего ты сделал выводы о моих поверхностных знаниях?

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

а создал его великий golodranez который в то время (1987 год) ещё даже не родился.

мне тогда было 5 лет, так что ты почти угадал:))

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

А зачем сравниваешь скорость возведения в степень?


Когда собаке нечем заняться, она возводит в степень.

А тем временем вышел релиз Groovy 1.7http://docs.codehaus.org/display/GROOVY/Groovy+1.7+release+notes Интересно, если им замерить?

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

list, array, tuple, еще «несписки» set, frozenset и все нужные. Может еще что есть, не знаю.

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

Ты не ругайся, перл, видно, не для твоего ума, пиши на питоне или яве :))

Видно да, да видимо и вообще не для ума психически здорового человека. Многие люди намного опытнее чем все тут отписавшиеся вместе взятые его критикуют. Вот например статья, человек программировал вовсю уже в 70-х годах, написал огромное количество кода на пёрле. Открыл для себя Python и больше не пишет на пёрле ничего кроме one-liner'ов:

http://www.linuxjournal.com/article/3882

Writing these programs left me progressively less satisfied with Perl. Larger project size seemed to magnify some of Perl's annoyances into serious, continuing problems. The syntax that had seemed merely eccentric at a hundred lines began to seem like a nigh-impenetrable hedge of thorns at a thousand. “More than one way to do it” lent flavor and expressiveness at a small scale, but made it significantly harder to maintain consistent style across a wider code base. And many of the features that were later patched into Perl to address the complexity-control needs of bigger programs (objects, lexical scoping, “use strict”, etc.) had a fragile, jerry-rigged feel about them.

These problems combined to make large volumes of Perl code seem unreasonably difficult to read and grasp as a whole after only a few days' absence. Also, I found I was spending more and more time wrestling with artifacts of the language rather than my application problems. And, most damning of all, the resulting code was ugly—this matters. Ugly programs are like ugly suspension bridges: they're much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.

With a baseline of two dozen languages under my belt, I could detect all the telltale signs of a language design that had been pushed to the edge of its functional envelope. By mid-1997, I was thinking “there has to be a better way” and began casting about for a more elegant scripting language.

md5xxx1
() автор топика
Ответ на: комментарий от volh

> ну а насчет батареек ты что имел в виду? меня этот вопрос действительно мучает.

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

еще вот всегда было интересно, есть ли в руби что-то уровня твистед?

val-amart ★★★★★
()
Ответ на: комментарий от volh

> я как раз хочу попробовать написать цикл статей в стиле BOFH о разработке на рубях ^_*

о здорово! главное, побольше отсылок на Судзимию и анимешных смайликов ^_^

val-amart ★★★★★
()
Ответ на: комментарий от md5xxx1

> Вопрос - что делает программа?

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

// программу не запускал, питонщик, админ.

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

>еще вот всегда было интересно, есть ли в руби что-то уровня твистед?
см. EventMachine

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

И что ? Это был 2000 год.
Что нового в том, что кому-то нравится одно, а другому нравится иное ?
Это вам так трудно лично пережить ?
Чем Реймонд известен как программист ?
Раз у него есть имя евангелиста СПО и писателя ,то можно троллить другие языки и навязывать свой выбор ?
Ныне число пакетов с perl в Debian в два раза больше чем с питоном,
а число пакетов с tcl больше чем lisp.
Вот вам практические результаты троллинга RMS tcl и Eric Raymond python.
Решение использовать python как основной скриптовый язык в Gnome (~ 2004 год)
и личные симпатии к нему Марка в Ubuntu - имхо, сделали для python больше чем все тролли вместе взятые.



elipse ★★★
()
Ответ на: комментарий от val-amart

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

Чё же ты не понял если понятно написано? Даже вот сейчас когда ты предварительно знал что программа с подвохом, и даже знал с каким именно, ты этот подвох не заметил.

// программу не запускал, питонщик, админ.

Запусти и убедись что $_ изменяется внутри sub, в результате вместо «Color of apple is green\n» как ты думал выводится «Color of green is green\n». Аналогично sub поступит из другими твоими переменными имена которых совпадают с теми которые используются внутри саба. Да конечно можно написать my $_ вначале sub'а, но это некрасиво, и это хак. И таких вещей полно в пёрле. Как я говорил - variable scope мутный. А в большом проекте кто нибудь вполне может просто забыть написать my и в результате кто то будет долго и упорно искать баг, такие баги очень трудно найти. И таких небезопасных умолчаний в пёрле полно. Поэтому я и говорю что язык говно, и не только я.

md5xxx1
() автор топика

Используй python+pylons. Проблемы производительности почти не заимствуются. Да и эти проблемы просто раздуты всеми кому не лень.

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

[quote]Аналогично sub поступит из другими твоими переменными имена которых совпадают с теми которые используются внутри саба.[/quote]

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

[quote]Как я говорил - variable scope мутный.[/quote]

Он стандартный. Абсолютно. В твоём детсаду это ещё не изучали?

Тебе уже сказали, что озвученный тобой бред — не проблемы. Вообще. Ни стандартная область видимости, ни тривиальные и понятные ссылки, ни «массивы массивов», ни write-only код (перл, впрочем, и тут не рекордсмен, на плюсах такое пишется проще, быстрее и незаметнее).

Есть действительно ряд стрёмных и неочевидных засад в перле, которые могут попортить нервы и людям, которые действительно нормально знают перл, начиная от цикла с постусловием (хотя в мане про это написано, но ОЧЕНЬ многие этой засады не знают, я (до недавнего времени) тоже), периодически вылезающие странные баги в тредах, тупой GC, и так далее, и тому подобное. Ты не назвал ни одной реальной проблемы, что автоматически делает твоё детсадовское мнение бесполезным чуть более, чем полностью.

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

Раз у него есть имя евангелиста СПО и писателя ,то можно троллить другие языки и навязывать свой выбор ?

Причём тут тролли? Если приведены разумные аргументы. Сказать что пить лучше из стакана а не из унитаза тоже троллинг?

md5xxx1
() автор топика
Ответ на: комментарий от kemm

Ты не назвал ни одной реальной проблемы, что автоматически делает твоё детсадовское мнение бесполезным чуть более, чем полностью.

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

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



А там нет НИКАКИХ аргументов , есть только свое имхо.

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

> Спорить с тобой уже бесполезно, продолжай писать бажные программы.

Ой-ой-ой, очередной гениальный проектировщик хеллоуворлдов, который не знает об области видимости переменных, не понимает указателей и ссылок, не способен увидеть ни одной реальной проблемы языка (которых там воз и маленькая тележка, к слову сказать), а только вываливает с маниакальным упорством своё невежество и упорно пытается всех забрызгать слюной, чтобы они поверили, что в его невежестве виноват перл? Странно... Элементарных вещей не знаешь ты, а считаешь, что программы бажные у меня. Есть в этом какой-то логический изъян, мне кажется...

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

> Сказать что пить лучше из стакана а не из унитаза тоже троллинг?

Глупое сравнение.


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

Он стандартный. Абсолютно. В твоём детсаду это ещё не изучали?

Ну надо же, а в нашем детском саду такой мутный variable scope не считается стандартным. Чё то не припомню где же это ещё переменные определённые внутри одной функции передаются по умолчанию в функцию вызываемую из этой функции. Может в C? А мы то дураки по старинке передаём &var что б её имела возможносто поменять вызываемая ф-ция.

md5xxx1
() автор топика
Ответ на: комментарий от kemm

[quote] Ой-ой-ой, очередной гениальный проектировщик хеллоуворлдов, который не знает об области видимости переменных, не понимает указателей и ссылок, не способен увидеть ни одной реальной проблемы языка (которых там воз и маленькая тележка, к слову сказать), а только вываливает с маниакальным упорством своё невежество и упорно пытается всех забрызгать слюной, чтобы они поверили, что в его невежестве виноват перл? Странно... Элементарных вещей не знаешь ты, а считаешь, что программы бажные у меня. Есть в этом какой-то логический изъян, мне кажется... [/quote]

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

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

Ну надо же, а в нашем детском саду такой мутный variable scope не считается стандартным. Чё то не припомню где же это ещё переменные определённые внутри одной функции передаются по умолчанию в функцию вызываемую из этой функции.

int underscore = 1;

void foo()
{
    underscore = 2;
}

int main()
{
    foo();
    printf("underscore (%d) != 1, surprise!!!\n", underscore);
    return 0;
}

Двоечник. Про глобальные переменные не слышал, а всё туда же, поучать...

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

> Я от тебя пока ещё ни одного аргумента не услышал

Какие тебе аргументы нужны? Что ты не понимаешь области видимости — без того очевидно. Что man perllol прочитать ты не пробовал — тоже. Аргументы могут быть в ответ на аргументы, а не на поток твоего неструктурированого бреда.

проще просто назвать описание проблемы тупостью чем её прокомментировать

Что там комментировать?! Твоё невежество является проблемой только для тебя, а не для перла. У того своих проблем хватает, не надо на него твою головную боль навешивать. На тебе для затравки: как выглядит цикл с постусловием в перле?

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

Двоечник. Про глобальные переменные не слышал, а всё туда же, поучать...

Ты видимо сам двоечник, и свой пёрл фигово знаешь. Перепишу вышеприведённый пример так что бы ты не смог отмазаться глобальными переменными, и $_ тоже уберу так как оно тут не причём.

#!/usr/bin/perl -w

sub get_color {
        my ($fruit) = @_;
        print "What is the color of $fruit: ";

        while ($x = <STDIN>) {
                chomp($x);
                last if $x =~ /^\w+$/;
        }

        return $x;
}

sub function {
        @fruits = ('apple','banana','lemon');

        foreach $x (@fruits) {
                $color = get_color($x);
                print "Color of $x is $color\n";
        }
}

$x = 'Global x';
print "Global scope: \$x before calling &function(): $x\n";
function();
print "Global scope: \$x after calling &function(): $x\n";

Пример сеанса:
$ ./stupid.pl
Global scope: $x before calling &function(): Global x
What is the color of apple: green
Color of green is green
What is the color of banana: yellow
Color of yellow is yellow
What is the color of lemon: yellow
Color of yellow is yellow
Global scope: $x after calling &function(): Global x

Обрати внимание что $x внутри &function нифига не глобальная. Глобальная как имела значение «Global X» так его и имеет.

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

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

> Обрати внимание что $x внутри &function нифига не глобальная. Глобальная как имела значение «Global X» так его и имеет.

Опять расписался в своей ничтожности? Говнокод на любом языке говнокод, так что ни питон, ни раби тебя не спасут. 'use strict' и не позорься больше.

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

Опять расписался в своей ничтожности? Говнокод на любом языке говнокод, так что ни питон, ни раби тебя не спасут. 'use strict' и не позорься больше.

Перепиши пример на python или ruby, и увидишь что будет.

'use unsafe' я бы понял но по умолчанию такие мутные небезопасные правила в язык вводить неправильно.

От проблем с nested arrays/hashes use strict не спасает. Нафига вся эта фигня спрашивается языке высокого уровня, я уж лучше тогда C возьму и буду с указателями там работать.

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

> Перепиши пример на python или ruby, и увидишь что будет

И там, и там своего бреда хватает.

'use unsafe' я бы понял но по умолчанию такие мутные небезопасные правила в язык вводить неправильно

perl старше тебя будет, судя по всему. Часто неудачные решения тянутся с незапамятных времён из-за требований к совместимости (чего стоят только strcat/strcpy/sprintf в C, послужившие причиной 99% процентов взломов, пожалуй), но тебе этот дзен не осилить. Ни один вменяемый человек никогда не будет писать что-нибудь на перле, кроме однострочников, без 'use strict'

От проблем с nested arrays/hashes use strict не спасает.

Нет там ни одной проблемы.

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

Perl: специальный справочник Холзнер. С. 2001 г

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

«тяжело в учении - легко в гробу»

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

perl старше тебя будет, судя по всему. Часто неудачные решения тянутся с незапамятных времён из-за требований к совместимости

На фиг такую совместимость. Убейте уже этого динозавра.

sprintf это не часть языка а часть стандартной библиотеки. Но с синтаксисом такую «совместимость» нагородить что чёрт ного сломит это извращение полнейшее.

md5xxx1
() автор топика
Ответ на: комментарий от elipse

«тяжело в учении - легко в гробу»

тяжело в учении - легко в питоне

md5xxx1
() автор топика
Ответ на: комментарий от kemm

Ну сколько же можно расписываться в своём невежестве? Помолчи уже, не позорься.

Видимо можно долго расписываться в своём невежестве, раз ты вон на протяжении двух страниц уже расписываешься.

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

не обольщайтесь: не только kemm смотрит на вас как на гавно :-)

не нравится perl - ваше право, пользуйте пистон или руби, никто слова не скажет

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