Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Perl - недостатки и приемущества(?)


Автор: nerezus 29.1.2007, 10:06
Минусы перла:
1) Нету комунити. Вернее, почти нету.
2) ООП через "анальное отверстие". Про перл6 с его модификаторами классов я вообще молчу. Когда я их впервые увидел — плакалъ.
3) Неподдерживается. Где там perl6, который Ларри Уолл обещал в 3 четверти 2005 года? При том, что уже тогда были рабочие версии.
4) Тормоз. Очень медленный. К примеру питон быстрее более чем в 2 раза(тесты сам проводил, могу дать ссылку).
5) Мало актуальных модулей и библиотек. Даже последняя версия perlQt датирована 2002 годом. И так примерно со всем.
6) Синтаксис. Хотя перл в этом не "лидер". Есть ведь язык brainfuck ;) Чтобы понять пару строк кода, надо прочитать то, что написано выше, а все благодаря переменным по умолчанию. Что уж говорить о постусловиях: чтобы понять логику при просмотре чкжого кода приходится смотреть не только на структуру программы и начала строк, но и читать строки целиком!

Плюсы перла:
Их нет.
Для той же обработки текста(для чего и был разработан перл) набор никсовых утилит(grep/sed/awk) годится гораздо больше. А функции PHP для обработки текста гораздо богаче.

Автор: pento 29.1.2007, 10:14
Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
Плюсы перла:
Их нет.
  •  Он очень гибок как язык.
  •  CPAN
  •  По поводу синтаксиса,- на перле можно писать "понятные" программы
  •  По поводу Перл 6, в пхп похожая проблема с переходом на пхп5...народ не шибко шевелится, но кому надо перешли и используют правильные хостинги.
Не смотря на то, что не люблю перл.

Автор: nerezus 29.1.2007, 10:17
Цитата

Он очень гибок как язык.
 Так можно сказать про любой язык.

Цитата

CPAN
 Читай пункт 5.

Автор: Hidrag 29.1.2007, 10:20
Пример: в СУБД SYBASE можно включить запись лога в файл, при этом лог будет кроме чистого sql содержать много мусора ~70-80%. При этом одна логическая операция клиента БД выливалась в лог более 9000 строк.

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

Автор: nerezus 29.1.2007, 10:24
Hidrag, и что, в других языках/программах разве нету re? Или они какие-то другие?

Автор: Hidrag 29.1.2007, 10:42
Важно время которое ценится очень дорого от получения того же лога до получения готового скрипта smile сделать разбор по регулярному приложению можно во многих языках, но в перле это получается очень быстро. Это быстрее будет чем на Java/Delphi/C#. За другие языки не могу сказать...

Автор: nerezus 29.1.2007, 10:52
Цитата

сделать разбор по регулярному приложению можно во многих языках, но в перле это получается очень быстро. Это быстрее будет чем на Java/Delphi/C#. За другие языки не могу сказать...
 А на grep/sed/awk?  smile 

Автор: nitr 29.1.2007, 10:52
Читаем и смотрим комменты:
http://forum.vingrad.ru/topic-132126.html

Автор: Hidrag 29.1.2007, 10:52
nerezus, а под виндой? smile

Автор: nerezus 29.1.2007, 10:57
Цитата

а под виндой?
 И что, разве их нет для венды?

Автор: MAKCim 29.1.2007, 11:36
Цитата

И что, разве их нет для венды? 

проще Perl поставить, чем CygWin  smile 

Автор: nerezus 29.1.2007, 11:52
Цитата

проще Perl поставить, чем CygWin
 А зачем CygWin, если есть родные версии?!
Тем более, что они весят вместе взятые меньше, чем перл!

Автор: GoodBoy 29.1.2007, 14:56
nerezus, хоть бы глупости не писал...

Автор: nerezus 29.1.2007, 15:08
GoodBoy, ???
Касательно перла или sed/etc... ?
Просьба пояснить.

Добавлено @ 15:16 
Несколько секунд в гугле дали ссылку:
http://unxutils.sourceforge.net/

Значит GoodBoy говорил насчет перла. Итак, где перл будет наилучшим выбором?

Автор: Сумасшедший 30.1.2007, 00:43
Цитата(nerezus @  29.1.2007,  10:06 Найти цитируемый пост)
функции PHP для обработки текста гораздо богаче

Мда? Ты ещё скажи что вместо регэкспоп пользуешься стандартными пхп.. или стартовые скрипты для никсов. без знания sh пишутся на пыхе?
А вообще: тогда асм тоже глупость по всем пунктам, кроме скорости, хотя читал где-то что  программы на си работают быстрее))))))
плюсы: синтаксис, распространённость, надёжность, кроссплатформенность, простота использования языка как shell-язык.
А вообще,имхо, просто леность и любовь к быстрым и лёгким победам не позволяют найти в перле красоту и умиротворение.

Автор: pento 30.1.2007, 05:31
Цитата(Сумасшедший @  30.1.2007,  03:43 Найти цитируемый пост)
Мда? Ты ещё скажи что вместо регэкспоп пользуешься стандартными пхп.. 

Это не совсем хороший аргумент, потому как всё хорошо в меру - в том числе и регекспы. Если нет реальной необходимости, то лучше (работать будет быстрее) использовать строковые функции.

Автор: nerezus 30.1.2007, 09:56
Цитата

Ты ещё скажи что вместо регэкспоп пользуешься стандартными пхп
 Регекспы нужны только там, где они нужны, и нехрен их в каждую дырку пихать ;)

Цитата

или стартовые скрипты для никсов. без знания sh пишутся на пыхе?
 А это при чем? Болеешь?  smile 
Ну если ты начал про это, то их можно писать абсолютно на чем угодно. Хоть на джаве.
Только вот навряд ли найдется человек, который будет делать это "без знания sh".


Цитата

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

Добавлено @ 09:58 
P.S. А вообще,имхо, просто леность и любовь к быстрым и лёгким победам не позволяют найти в brainfuck'е красоту и умиротворение. 

Автор: MAKCim 30.1.2007, 11:09
Цитата(nerezus @  30.1.2007,  09:56 Найти цитируемый пост)
P.S. А вообще,имхо, просто леность и любовь к быстрым и лёгким победам не позволяют найти в brainfuck'е красоту и умиротворение.  

для кого brainfuck, а для кого быстрое решение задачи

Автор: GoodBoy 30.1.2007, 12:23
nerezus, напиши мне вот это на ТВОЁМ любимом языке:

Код
$opendata=join ".",reverse split /-/,$opendata if $opendata=~/^\d{4}-\d{2}-\d{2}$/;

другой вариант того же самого:
Код
$opendata="$3.$2.$1" if $opendata=~/^(\d{4})-(\d{2})-(\d{2})$/;

Автор: nerezus 30.1.2007, 12:52
GoodBoy, не на любимом языке написал, а на пхп.

Код

$opendata = preg_replace("/^(\d{4})-(\d{2})-(\d{2})$/", "$3-$2-$1", $opendata);


Добавлено @ 12:54 
P.S. Ты специально пробелы не ставишь, чтобы код меньше казался, или ты просто perldoc perlstyle не читал?

Автор: pythonwin 30.1.2007, 13:04
Цитата(Hidrag @  29.1.2007,  13:42 Найти цитируемый пост)
Java/Delphi/C#

smile
эти языки компилируемые и сравнивать Perl с этими языками неправильно. IMHO smile
GoodBoy, пожалуйста, дай постановку задачи, а то не понятно - прошу простить - Perl не знаю.

в питоне есть и join и split и регулярные варажения smile

а у nerezus любимых языков много smile

PS прошу простить, что втреваю в беседу smile

Автор: nerezus 30.1.2007, 13:10
Цитата

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

Цитата

в питоне есть и join и split и регулярные варажения 
 Да это везде есть ;)

Автор: GoodBoy 30.1.2007, 13:11
Цитата(nerezus @  30.1.2007,  12:52 Найти цитируемый пост)
не на любимом языке написал, а на пхп

Воспользовавшись PCRE...  Браво!!!   smile  smile  smile  smile 
Цитата(pythonwin @  30.1.2007,  13:04 Найти цитируемый пост)
пожалуйста, дай постановку задачи, а то не понятно 

А задача такая: сконвертировать дату из формата "ГГГГ-ММ-ДД" в формат "ДД.ММ.ГГГГ",  если она в формате "ГГГГ-ММ-ДД" и ничего не менять в противном случае.

Добавлено @ 13:12 
Цитата(nerezus @  30.1.2007,  12:52 Найти цитируемый пост)
Ты специально пробелы не ставишь, чтобы код меньше казался, или ты просто perldoc perlstyle не читал

я ещё и скобки не ставлю... :-)))

Автор: nerezus 30.1.2007, 13:15
Цитата

Воспользовавшись PCRE...  Браво!!!
 Ну и? А в чем прикол? Разве они только в перле есть?

Автор: GoodBoy 30.1.2007, 13:15
Цитата(nerezus @  30.1.2007,  13:15 Найти цитируемый пост)
Ну и? А в чем прикол

Расшифровку аббревиатуры знаешь??

Автор: nerezus 30.1.2007, 13:42
GoodBoy, и что с того?
Т.е. я не должен этим пользоваться из-за того, что в расшифровке есть слово perl?

Добавлено @ 13:47 
Т.е. я имею ввиду то, что перл в использовании re не имеет преимуществ, т.к. они есть и в других языках/программах.

Автор: amg 30.1.2007, 13:55
Мне Perl нравится, среди прочего, тем, что он позволяет очень быстро, прямо из консоли, делать довольно нетривиальные вещи. Например
Код

# Получить список IP, отметившихся на сервере
perl -lane '$s{$F[0]}++ || print $F[0]' access_log

Автор: arto 30.1.2007, 14:49
"4) Тормоз. Очень медленный. К примеру питон быстрее более чем в 2 раза(тесты сам проводил, могу дать ссылку)." -- ссылочку можно?

Автор: nerezus 30.1.2007, 14:55
http://ruinst.net.ru/ner/iprange_test.7z

Т.е. чисто логика, без модулей.

Автор: GoodBoy 30.1.2007, 15:01
nerezus, а теперь, пардон за шалость, я сравнил быстродействие моего перл-примера и твоего РНР-примера. Были сделаны 2 программы:

Код
<?
$opendata = '2006-12-23';
$i=0;
echo time() . "<br>";

while ($i<1000000) {
    $opendata1 = preg_replace("/^(\d{4})-(\d{2})-(\d{2})$/", "$3.$2.$1", $opendata);
    $i++;
}

echo time() . "<br>";
echo "$opendata1 - $i";
?>


и

Код
#!/usr/bin/perl

print "Content-type: text/html\n\n";

$opendata = '2006-12-23';
$opendata1 = $opendata;
$i=0;

print time() . "<br>";

while ($i<1000000) {
    $opendata1="$3.$2.$1" if $opendata=~/^(\d{4})-(\d{2})-(\d{2})$/;
    $i++;
}
print time() . "<br>";
print "$opendata1 - $i";


как видно из текста использовался 1 миллион итераций сопоставления по шаблону...  Резальтаты теста дали следующую картину:
РНР (установленный как модель Апача) отрабатывал в среднем за 18 секунд
Перл (загружаемый отдельным процессом) отрабатывал в среднем за 5 секунд

Это к вопросу о тормознутости, кстати...  Комментарии будут??

Автор: nerezus 30.1.2007, 15:18
Цитата

Это к вопросу о тормознутости, кстати...  Комментарии будут?? 
 Ну 14 секунд(PHP) против 9(Perl): просто у PHP медленнее логика.

Однако большинство функций в пхп написано на сишнике, в перле же - в виде модулей на перле(я даже ради интереса с CPAN сачал XSLT и посмотрел, на чем написан он). Выводы сделаешь? )

P.S. А основные тормоза будут все равно из-за сервера, ФС и БД.

Автор: korob2001 30.1.2007, 16:03
Цитата(nerezus @  29.1.2007,  07:06 Найти цитируемый пост)
2) ООП через "анальное отверстие". Про перл6 с его модификаторами классов я вообще молчу. Когда я их впервые увидел — плакалъ.

ООП конечно не такое как в Java. Хотя лично я пользуюсь всегда этим подходом. Пока ещё не столкнулся с какими-то задачами, которые нельзя было бы решить.

Цитата(nerezus @  29.1.2007,  07:06 Найти цитируемый пост)
Тормоз. Очень медленный. К примеру питон быстрее более чем в 2 раза(тесты сам проводил, могу дать ссылку).

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

Цитата(nerezus @  29.1.2007,  07:06 Найти цитируемый пост)
Синтаксис. Хотя перл в этом не "лидер". Есть ведь язык brainfuck ;) Чтобы понять пару строк кода, надо прочитать то, что написано выше, а все благодаря переменным по умолчанию. Что уж говорить о постусловиях: чтобы понять логику при просмотре чкжого кода приходится смотреть не только на структуру программы и начала строк, но и читать строки целиком!

Как ты запутываешь код, зависит только от тебя. Perl лишь даёт тебе свободу.

Цитата(nerezus @  29.1.2007,  07:24 Найти цитируемый пост)
Hidrag, и что, в других языках/программах разве нету re? Или они какие-то другие? 

А откуда их интересно позаимствовали? Что-то не много людей пишет регулярные выражения в стиле POSIX.

Цитата(nerezus @  30.1.2007,  09:52 Найти цитируемый пост)
P.S. Ты специально пробелы не ставишь, чтобы код меньше казался, или ты просто perldoc perlstyle не читал?

Там где они нужны он их оставил.

Цитата(nerezus @  30.1.2007,  10:42 Найти цитируемый пост)
Т.е. я не должен этим пользоваться из-за того, что в расшифровке есть слово perl?

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

Цитата(nerezus @  30.1.2007,  12:18 Найти цитируемый пост)
Однако большинство функций в пхп написано на сишнике, в перле же - в виде модулей на перле(я даже ради интереса с CPAN сачал XSLT и посмотрел, на чем написан он). Выводы сделаешь? )

В Perl тоже много модулей написанных на C.

Цитата(nerezus @  29.1.2007,  07:06 Найти цитируемый пост)
Для той же обработки текста(для чего и был разработан перл) набор никсовых утилит(grep/sed/awk) годится гораздо больше. А функции PHP для обработки текста гораздо богаче.

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

Автор: Hidrag 30.1.2007, 16:25
Цитата(korob2001 @  30.1.2007,  16:03 Найти цитируемый пост)
Цитата(nerezus @  29.1.2007,  07:06 )Для той же обработки текста(для чего и был разработан перл) набор никсовых утилит(grep/sed/awk) годится гораздо больше. А функции PHP для обработки текста гораздо богаче.Что-то автору языка не хватило этих утилит в своё время, что собственно и подтолкнуло его к созданию Perl. Почитай историю. Perl создавался не только для обработки текста.

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

Автор: arto 30.1.2007, 16:44
http://forum.sources.ru/index.php?showtopic=157938&view=showall -- вы там так и не ответили, почему перл и питон показывают одинаковую производительность....

может тут расскажете?

Автор: nerezus 30.1.2007, 16:59
arto, одинаковую? ну у меня была разница в 2.15 вроде раз )

Добавлено @ 17:02 
Ааа, так это ты.
Ну так поставь последнюю версию питона и сравни )

Автор: arto 30.1.2007, 17:47
пока пакет не сделают -- лень

а с той версией что не так?
обещали 30%...

Автор: nerezus 30.1.2007, 17:59
Цитата

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

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


Цитата

а с той версией что не так?
 В 2.5 намного увеличили скоростьь и добавили новых фишек.

Автор: arto 30.1.2007, 18:02
я про python2.4 vs. perl 5.8.8

а собирать самому пакет -- лень.

Автор: skyboy 30.1.2007, 18:11
Цитата(korob2001 @  30.1.2007,  15:03 Найти цитируемый пост)
А откуда их интересно позаимствовали?

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

Автор: korob2001 30.1.2007, 18:31
В POSIX тоже есть регулярные выражения, только ими практически никто не пользуется. Речь идёт о регулярных выражениях в стиле Perl.

Автор: pythonwin 31.1.2007, 09:18
Цитата(GoodBoy @  30.1.2007,  18:01 Найти цитируемый пост)
Это к вопросу о тормознутости, кстати...  Комментарии будут?? 

из скриптовых php не самый быстрый - 
Цитата
Сохранение байт-кода (файлы .pyc и .pyo) позволяет интерпретатору не тратить лишнее время на перекомпиляцию кода модулей при каждом запуске, в отличие, например, от языка Perl. Кроме того, существует специальная библиотека psyco [3], позволяющая несколько оптимизировать выполнение программ.

Цитата
Наиболее часто Питон сравнивают с Perl и Ruby. Эти языки также являются интерпретируемыми и обладают примерно одинаковой скоростью выполнения программ. Как и Perl, Питон может успешно применяться для написания сценариев (скриптов). Как и Ruby, Питон является хорошо продуманной системой для ООП (с помощью Питон можно изучить и эффективно применять ООП).



Цитата(amg @  30.1.2007,  16:55 Найти цитируемый пост)
Мне Perl нравится, среди прочего, тем, что он позволяет очень быстро, прямо из консоли, делать довольно нетривиальные вещи. Например

я подобное в питоне делал в интерпритаторе, правда у меня это вышло строк на 10, но если применить ФП, то думаю строи в две-три можно было сделать, хотя если немного напрячся, то и в 1 строку (хотя много ума не нужно чтобы написать очень плохо читаемый код)
Цитата
Подобно LISP, Prolog или Perl в режиме отладки, интерпретатор Питона имеет интерактивный режим работы, при котором введённые с клавиатуры операторы сразу же выполняются, а результат выводится на экран. Этот режим интересен не только новичкам, но и опытным программистам, которые могут протестировать в интерактивном режиме любой участок кода, прежде чем использовать его в основной программе, или просто использовать как калькулятор с большим набором функций.

Автор: diam 31.1.2007, 10:29
Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
Для той же обработки текста(для чего и был разработан перл) набор никсовых утилит(grep/sed/awk) годится гораздо больше. А функции PHP для обработки текста гораздо богаче. 

grep/sed/awk годятся до определённой степени сложности анализа и предоставления информации, perl гораздо удобнее их. В том же самом php, кстати, функции ряд функций обработки текста взят из perl, например, регулярные выражения.

Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
Плюсы перла:
Их нет.

Так же можно сказать и про php, который ты упомянул.

Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
6) Синтаксис. Хотя перл в этом не "лидер". Есть ведь язык brainfuck ;) Чтобы понять пару строк кода, надо прочитать то, что написано выше, а все благодаря переменным по умолчанию. Что уж говорить о постусловиях: чтобы понять логику при просмотре чкжого кода приходится смотреть не только на структуру программы и начала строк, но и читать строки целиком!

Кому-то и Haskell кажется сложным, а кому-то даже python и ruby. Каждому своё.

Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
2) ООП через "анальное отверстие". Про перл6 с его модификаторами классов я вообще молчу. Когда я их впервые увидел — плакалъ.

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


Подводя итог, хочу сказать, что нет плохих или хороших языков. Любой язык хорош для решения определённых задач с точки зрения определённой философии, заложенной в язык. И если тебе не нравится язык, то ты просто не приемлешь его философию, вот и всё. Конструктивная критика и философии, и любого языка чаще всего приветствуется людьми, а тупое поливание помоями - есть признак некультурности. Ведь ты же не оскорбляешь человека за то, что он не придерживается твоей точки зрения (хотя бывают и исключения, конечно, везде есть некий порог, после которого польются некрасивые слова)? Так и с языком и его философией.
Если же взглянуть с точки зрения профессионального программиста, это вообще неправильно - говорить, что ЯП - плохой. У профессионала чаще всего есть определённые ограничения на выбор инструментария, но с выбранным инструментарием он работает не смотря на свои предпочтения. Бывает даже немного неприятно, но се ля ви, как говорится.

Автор: nerezus 31.1.2007, 10:38
Цитата

я про python2.4 vs. perl 5.8.8

а собирать самому пакет -- лень. 
 Ну можешь не собирать - результат я уже сказал.

Цитата

В том же самом php, кстати, функции ряд функций обработки текста взят из perl, например, регулярные выражения.
 Ну я и говорю: перл не иммет преимуществ в re, несмотря на то, что именно в нем появились PCRE.

Автор: Shaggie 31.1.2007, 11:31
Цитата(nerezus @  31.1.2007,  10:38 Найти цитируемый пост)
перл не иммет преимуществ в re

В Перл регулярные выражения встроены в сам язык, а не вызываются из функций/модулей (как в любом другом). Такой подход был принят вследствие общей направленности языка. И даже сейчас, когда Перл перерос в ЯП общего назначения, встроенные и потому очень простые в применении регулярки являются одной из отличительных его особенностей.

Цитата(nerezus @  29.1.2007,  13:06 Найти цитируемый пост)
Для той же обработки текста(для чего и был разработан перл) набор никсовых утилит(grep/sed/awk) годится гораздо больше. А функции PHP для обработки текста гораздо богаче. 

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

В PHP действительно очень много функций для работы с регулярными выражениями. Вот только это его вечное стремление для каждой операции иметь по пять мало различимых функций не есть проявление богатства, имхо конечно. 
Смотрим: стандартные функции - 1) ereg(), 2) eregi(), 3)ereg_replace(), 4) eregi_replace(), 5) split(), 6) spliti(). Спросите, зачем так много? На самом деле здесь три функции - поиск, замена, разделение на подстроки. Только в двух вариантах - с учетом регистра и без учета. А если в одной строке нужно найти часть в верхнем регистре, часть неважно в каком, и часть в нижнем? Придумаем что-нибудь, где наша не пропадала smile Кроме того, эти функции не поддерживают нежадное совпадение, утверждения, условные субпатэрны и некоторые другие возможности регулярок. Ну и плюс ко всему этому, они работают медленнее, чем аналогичные перловые. Поэтому в книгах по PHP рекомендуют эти функции не использовать!

А что же тогда использовать? О, разработчики пошли нам навстречу и реализовали в языке поддержку регулярных выражений, аналогичных использующимся в Перл. Они и работают пошустрее, и возможностей у них поболее...
Вот они: 1) preg_grep(), 2) preg_match(), 3) preg_match_all(), 4) preg_quote(), 5) preg_replace(), 6) preg_replace_callback(), 7) preg_split(). Опять много? Но, кажется, они побольше могут... Там тоже есть много интересного, в частности, непонятно, зачем в функции preg_match_all() возвращать совпадения в хитрющщий двухмерный массив? Плюс неудобные для прописывания флаги, к примеру, PREG_SPLIT_DELIM_CAPTURE. Или кому-то так удобнее вводить?

Все это к тому, что Перл очень логичен в работе с регулярными выражениями. К сожалению, в нем нереализованы такие полезные фичи, как жадный безвозвратный режим глотания строки с помощью модификаторов *+, ++ и ?+ ... Но это частности. Более того - как уже подтвердили участники форума, именно Перл превратил регулярные выражения в обыденную для программирования вещь. Python, Java, C# - везде применяются регулярки в стиле Перл. И нигде они не поддерживаются на уровне встроенных функций языка. Увы...

Автор: GoodBoy 31.1.2007, 11:51
Цитата(pythonwin @  31.1.2007,  09:18 Найти цитируемый пост)
Сохранение байт-кода (файлы .pyc и .pyo) позволяет интерпретатору не тратить лишнее время на перекомпиляцию кода модулей при каждом запуске, в отличие, например, от языка Perl. Кроме того, существует специальная библиотека psyco [3], позволяющая несколько оптимизировать выполнение программ.

Для Перла есть утилиты, позволяещие компилировать скрипты в исполняемые файлы...  Правда только для Винды...

Автор: Shaggie 31.1.2007, 12:05
Цитата

   PERL2EXE.

   Утилита для преобразования Perl сценариев в исполнимые файлы, не
   требующие наличия интерпретатора языка Perl. Perl2Exe может
   сгенерировать модули для Win32 и многих Unix-подобных операционных
   систем. Perl2Exe также позволяет создавать неконсольные программы, с
   использованием Perl/Tk.

   IndigoSTAR Software, http://www.indigostar.com/perl2exe.htm

источник http://www.opennet.ru/base/dev/perl_hide_code2.txt.html


плюс поставляемые с Перл модули B::Bytecode, B::C и B::CC

Автор: pythonwin 31.1.2007, 12:15
Цитата(Shaggie @  31.1.2007,  14:31 Найти цитируемый пост)
они не поддерживаются на уровне встроенных функций языка. Увы... 

вот с этим согласен, хотя у разработчиков языков скорее всего есть иснования...
в питоне вопрос скорее всего вопрос идеалогический - вопрос пространст имен. хотя это IMHO
Цитата(GoodBoy @  31.1.2007,  14:51 Найти цитируемый пост)
Для Перла есть утилиты, позволяещие компилировать скрипты в исполняемые файлы...  Правда только для Винды... 

у питона есть и такие функции и под винду и под *nix
когда я писал о байто-коде я имел ввиду не *.exe, а *.pyc (байто-код)

Shaggie, под винду собиралка exe == http://cheeseshop.python.org/pypi/py2exe/

+ про байт-код

Цитата
охранение байт-кода (файлы .pyc и .pyo) позволяет интерпретатору не тратить лишнее время на перекомпиляцию кода модулей при каждом запуске, в отличие, например, от языка Perl. Кроме того, существует специальная библиотека psyco [3], позволяющая несколько оптимизировать выполнение программ.


http://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4

Цитата
Байт-код или байтко́д (англ. byte-code), иногда также используется термин псевдоко́д — машинно-независимый код низкого уровня, генерируемый компилятором и исполняемый виртуальной машиной. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Компиляция в байт-код занимает промежуточное положение между компиляцией в машинный код и интерпретацией.
Байт-код называется так, потому что длина каждого кода операции — один байт, но длина кода команды различна. Каждая инструкция представляет собой однобайтовый код операции от 0 до 255, за которым следуют такие параметры, как регистры или адреса памяти. Это в типичном случае, но спецификация байт-кода значительно различается в языке.

Программа на байт-коде обычно выполняется интерпретатором байт-кода (обычно он называется виртуальной машиной, поскольку подобен компьютеру). Преимущество — в портируемости, т. е. один и тот же бинарный код может исполняться на разных платформах и архитектурах. То же самое преимущество дают интерпретируемые языки. Однако, поскольку байт-код обычно менее абстрактный, более компактный и более «компьютерный» чем исходный код, эффективность байт-кода обычно выше чем чистая интерпретация исходного кода, предназначенного для правки человеком. По этой причине, многие современные интерпретируемые языки на самом деле компилируют в байт-код и запускают интерпретатор байт-кода. К таким языкам относятся Perl, PHP и Python. Программы на Java обычно передаются на целевую машину в виде байт-кода, который перед исполнением транслируется в машинный код «на лету» — с помощью JIT-компиляции. В стандарте открытых загручиков Open Firmware фирмы Sun Microsystems байт код представляет операторы языка Forth.

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

Также некоторый интерес представляет p-код (p-code), который похож на байт-код, но физически может быть менее лаконичным и сильно варьироваться по длине инструкции. Он работает на очень высоком уровне, например «напечатать строку» или «очистить экран». P-код используется в некоторых реализациях BASIC и Паскаля.

Автор: nerezus 31.1.2007, 12:18
Цитата

Для Перла есть утилиты, позволяещие компилировать скрипты в исполняемые файлы...  Правда только для Винды... 
 Там не компиляция - а упаковка вместе с интерпретатором ;)
Для пхп - наш php2exe(онлайн-версия временно не работает).

Автор: Shaggie 31.1.2007, 12:46
Цитата(pythonwin @  31.1.2007,  12:15 Найти цитируемый пост)

Цитата(Shaggie @  31.1.2007,  11:31 Найти цитируемый пост)
они не поддерживаются на уровне встроенных функций языка. Увы... 

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

Конечно! Есть шикарный язык для обработки текстовой информации - Перл. Какой смысл создавать новый язык, который будет один в один копировать уже существующие возможности Перла? Как известно, нужные ЯП возникают тогда, когда без них задача решается гораздо тяжелее...
Насчет зависимости встроенных функций обработки регулярных выражений от пространств имен - в современном объектном языке вообще встроенных функций не существует. Существуют объекты, вызывающие необходимые методы. Например, re smile Этот подход совершенно оправдан, но мне Перловый подход по душе. Однако это тема для отдельного холивара smile 
Насчет сохранения байт-кода - Ларри обещает ввести его в шестой версии. Там поглядим, а пока что могу признать: да, такой полезной фичи в Перле действительно нет smile 

Автор: pythonwin 1.2.2007, 12:20
про perl & php
http://www.cs.wcupa.edu/~rkline/perl2php/

Автор: arto 1.2.2007, 18:26
Цитата(nerezus @  31.1.2007,  10:38 Найти цитируемый пост)
Ну можешь не собирать - результат я уже сказал.


ну, вы много чего говорили.

Добавлено @ 18:31 
Цитата(nerezus @  30.1.2007,  15:18 Найти цитируемый пост)
сачал XSLT и посмотрел, на чем написан он


а как вы смотрели?
и как определили, на чем он написан?

Автор: Shaggie 2.2.2007, 08:57
pythonwin, ссылка не работает...

Автор: pythonwin 2.2.2007, 09:34
для тех у кого ссылка не срабатывает - во вложении 

Автор: pento 2.2.2007, 09:49
pythonwin, а собственно к чему ссылка? Из ссылки можно сделать выводы
  •  В PHP понятнее синтаксис
  •  В PHP не надо подключать модули для тех, операций, для которых в Перле нужно.

Автор: nerezus 2.2.2007, 10:26
Цитата

а как вы смотрели?
и как определили, на чем он написан? 
 Ну если в файле находится код на перле, то значит это перл. А если на сишнике - то сишник. Или это неверная методика определения языка? )

Цитата

pythonwin, а собственно к чему ссылка
 Да мне тоже интересно. Имхо такая ссылка нужна только для перехода от Perl к PHP для тех, кому лень читать мануалы )

Автор: Shaggie 2.2.2007, 10:27
pythonwin, имхо, удобная страничка для познавания основ синтаксиса... и ничего более.
Фишка как раз в том, что синтаксис имеет совсем небольшие различия практически у всех языков программирования!

http://nuclight.livejournal.com/107170.html. На PHP форуме отметили непредвзятость и истинность этой статьи. Там и про мешанину пэхэпэшных функций, и про ассоциативные массивы, много всего интересного.

Это к вопросу о достоинствах Перл как языка веб-разработки по сравнению с PHP. Плюс существуют Перл-модули CGI::WebIn и CGI::WebOut, позволяющие встраивать команды перл прямо в html разметку, по примеру РНР.

Автор: pythonwin 2.2.2007, 11:02
Цитата(Shaggie @  2.2.2007,  13:27 Найти цитируемый пост)
позволяющие встраивать команды перл прямо в html разметку, по примеру РНР. 

ну и в питоне такие есть (Kid, Cheetah и т.д.), вроде есть и в ASP.NET - есть во многих языках smile

Автор: Shaggie 2.2.2007, 11:17
Естесственно, что схожие вещи есть во многих языках. Тогда объясни пожалуйста, почему товарищ Nerezus так на Перл обижен?

Автор: pythonwin 2.2.2007, 11:44
Цитата(Shaggie @  2.2.2007,  14:17 Найти цитируемый пост)
Естесственно, что схожие вещи есть во многих языках. Тогда объясни пожалуйста, почему товарищ Nerezus так на Перл обижен? 

1) не товорищ, а уважаемый форумчанин smile smile smile
2) Не нравиться он ему по идеологическим причинам (IMHO) - мне например пхп не нравиться ну и что. У каждого ЯП есть недостатки и видимо недостатки Perl для nerezus критичны - хотя это у самого nerezus лучше спросить smile

Автор: SergeCpp 2.2.2007, 17:29
Цитата(Shaggie @  31.1.2007,  13:31 Найти цитируемый пост)
К сожалению, в нем нереализованы такие полезные фичи, как жадный безвозвратный режим глотания строки с помощью модификаторов *+, ++ и ?+ ...

(?>a?) == a?+
(?>a*) == a*+
(?>a+) == a++
(?>a{2,4}) == a{2,4}+

Автор: arto 3.2.2007, 13:43
Цитата(nerezus @  2.2.2007,  10:26 Найти цитируемый пост)
Ну если в файле находится код на перле, то значит это перл. А если на сишнике - то сишник. Или это неверная методика определения языка? )


садитесь, два.
похоже, что вы перл не знаете.
можете теоретизировать дальше.

Автор: nerezus 3.2.2007, 13:50
arto, Ч0рт, а вдруг мой пхп код -это на самом деле перл, но он маскируется? О боже!

Автор: arto 4.2.2007, 01:57
вам виднее

Автор: Shaggie 5.2.2007, 07:50
Цитата(nerezus @  3.2.2007,  13:50 Найти цитируемый пост)
Ч0рт, а вдруг мой пхп код -это на самом деле перл, но он маскируется? О боже!

Неужто это такая глобальная проблема? Ведь работает!

Автор: pythonwin 5.2.2007, 12:15
Цитата(pento @  2.2.2007,  12:49 Найти цитируемый пост)
 В PHP не надо подключать модули для тех, операций, для которых в Перле нужно.

это для разработки скорее == минус, хотя для "баловства" само то  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)