![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
Глубокоуважаемые!
Нашел такую вот статейку на просторах Интернета. "Критический анализ языка PERL" http://www.stanislaw.ru/rus/research/perl.asp Статейка старая, но забавная. Кто что скажет по этому поводу - хочется услышать компетентное мнение специалистов, для которых Perl - повседневный рабочий инструмент ![]() --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Все не осилил, возможно позже дочитаю....
Автор говорит все верно, все что он описал, действительно присутствует в языке. Просто то что он считает недостатком, я считаю достоинствами ![]() Здесь каждый может выразить свои идеи, не одним так другим способом, и это хорошо, ведь все мы разные.... Ну а если язык на столько не устраивает, то не стоит им пользоваться, более типизированыых, или более жестких языков хватает, и альтернативу в каждом конкретном случае можно подобрать. Так что я не совсем понимаю смысл этой статьи. Врядли она когото отпугнет, а вот сторонников перла может и прибавиться, если это толковый программист, то он поймет всю прелесть богатства языковых средств перла. ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
А мне по-барабану, лишь бы результат был.
С Perl для меня всё проще. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Думаю много говорят по этой теме...
Что добавлю ![]() 1) Автор не впечатлил 2) Perl - это Perl 3) Работу над ошибками необходимо сделать... 4) Язык не выбирает свой путь, не выбирает программистов, всё наоборот ;) 5) А что если анализ др. нетипиз. языков сделать? ![]() 6) Идеалов нет ![]() 7) Программируя на Perl, необходимо программировать на Perl (имхо - истина) з.ы.: читаем perldoc ![]() |
|||
|
||||
korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
use strict - и большая половина проблем отлетит сама собой.
Давайте теперь, попробуем проанализировать пример кода, который приводит автор этой статьи. Т.е. код который писал он лично. Вот цитата:
Об именах переменных и подпрограмм, я даже говорить не хочу. Этот стиль врядле кто-то одобрит. Зачем для получения даты в формате yyyy-mm-dd или каком-нить подобном, создавать подрограмму в модуле? Можно же было бы написать и такой код:
Эта строка кода избавляет автора от следующего гемороя:
Плюс от того, решения к которому он пришёл. Я имею ввиду это:
Выглядит действительно очень глупо. Короче таких косяков там довольно много. Автор сильно далёк от понимания контекста. Очень важно понимать его и о этом написано практически во всех учебниках по Perl. Например его сильно удивляет, как это можно присвоить список скаляру или наоборот. ![]() Именно это и сводит его с ума. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: нет Всего: 43 |
+1
|
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Да! Это аргумент! Я бросаю Перл навсегда! Автору респект, не ожидал такой сильной хохмы. А ведь перед этим он скромно упомянул, что знает около десяти ЯП но не собирается этим хвалиться... А если серьезно, автор мало того что пишет в предвзято негативном стиле (в "Programming Perl", кстати, минусы и опасные места описаны наравне с плюсами), так еще и нагло издевается над самим языком и его создателем, а в статье, ориентированной якобы на "аналитическую критику", подобные выпады смотрятся просто дико! Интересно, он только над Перлом так издевался, или в С тоже пытался этакие шутки пошутить? Неужели нет никакой необходимости учитывать контекст самого ЯП, выполняемых им задач? А следить за тем, что пишешь, тоже нужды нет? Такую статью можно написать о любом языке программирования, было бы желание. К сожалению, пишут и похлеще... зашел давеча на linuxsuxx.org... Сколько ж в людях агрессии и ненависти! |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Да-да, в PHP так и есть, только вот при работе с большим проектом мне удобства это никогда не добавляло, а как бы даже и наоборот... все имхо, разумеется. ![]() |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Необъективная статья. Достоинства перла перевернуты с ног на голову и объявлены недостатками. Конечно, если использовать аргументы типа "порядок лучше, чем анархия", то легко можно доказать, что тоталитаризм лучше, чем демократия.
Конкретный пример:
подумать немного и придумать что-то типа
|
||||
|
|||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Автору должно быть стыдно за незнание критикуемого им предмета.
Примеры:
|
||||
|
|||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
amg, меня, собственно, тоже из всего изложенного в статье поразила попытка переложить на perl проблемы, которые возникли в результате элементарного непонимания вещи, которая, по большому счету, "сама по себе" и к перлу отношения не имеет. Я, собственно, про регулярные выражения. И о том, что неэффективным регулярным выражением можно "положить" любую машину, честно написано в Mastering Regular Expression.
Кстати, попробуй мой вариант по стравнению с твоим на предмет сравнения производительности. Он, ИМХО, болле читабелен для пресловутого, упоминаемого в статье, программиста-читателя.
--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Меня тоже поразила вот эта часть.
О как чел проверяет доменные имена. ![]() Добавлено @ 02:15 Вернусь к прошлой теме, о форматах дат:
Вот собственно эти строки и заменяют собой "модуль" автора. ![]() Это сообщение отредактировал(а) korob2001 - 17.1.2007, 02:39 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Сошлись на том, что автор пытается совершить простые действия сложными способами.
И если гвоздь никак не хочет забиваться в доску, то во всем оказывается виноват молоток. ![]() P.S. Предлагаю закрыть обсуждение. Ничего конструктивного вышеозначенная статья не несет, Перл-программисты остались при своем, автору тем более по барабану на наши реплики (даже если он их читает). Это сообщение отредактировал(а) Shaggie - 17.1.2007, 07:11 |
|||
|
||||
GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
Вообще, конечно, весьма бредовая статья... :-))) Предлагаю считать это юмором! :-)))
|
|||
|
||||
amg |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Этот вариант на коротких строках работает примерно так же, как и другие упоминавшиеся шаблоны, а вот на длинных строках почему то очень сильно тормозит, причем тем сильнее, чем длиннее строки. Интересно, почему?
|
||||||
|
|||||||
Materium |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 4.12.2006 Где: Питер Репутация: нет Всего: 2 |
Автор просто ни*** (простите) не разбирается в Перл. ))) И ему кажется не приходит в голову что любую задачу на ЯП можно сделать всегда способом больше, чем одним. Через Ж можно на любом языке писать.
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok"; |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
GoodBoy, согласен
![]() korob привёл многочисленные доказательства ;) , хотя статья тоже ими является ![]() Это сообщение отредактировал(а) nitr - 17.1.2007, 11:42 |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
Про регулярные выражения.
amg, большое спасибо. Заставляет задуматься и дальше вдумчиво читать документацию. Могу предположить, что .* в первых regexp сразу проходит до конца строки, а затем происходит возврат. В моем случае \. (точка) сравнивается с каждым символом строки (слева направо), что и привело к существенному увеличению времени выполнения. Я надеялся на то, что оптимизатор regexp Perl, увидев символ $ (конец строки) сразу "начнет с хвоста" строки. Надежды мои не оправлдались. Это здесь offtopic. Если интересно, можно создать отдельную тему и там все это попытаться выяснять вопрос более подробно. --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Zuzu, вопрос - почему так происходит? По идее, в ([^.]*)$ звездочка без вопроса должна диктовать жадный режим чтения строки. Возможно, виноваты квадратные скобки...
Врубился! (кажется ![]() |
|||
|
||||
Materium |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 4.12.2006 Где: Питер Репутация: нет Всего: 2 |
Ну, Perl является одним из самых трудно-читаемых языков. ничего с этим не поделаешь. За силу языка приходится этим расплачиваться )))
В остальном, занимаясь своей задачей - а это практический язык для извлечения отчётов, - работа с текстом - Perl является лучшим языком в мире. Об этом пишет сам Ларри. --------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok"; |
|||
|
||||
Materium |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 4.12.2006 Где: Питер Репутация: нет Всего: 2 |
И вообще читал статью. Может кто помнит показывали по телеку как четыре японских робота играют в футбол.
С интересом узнал, что: 1)Основное программирование: С++ 2)Второстепенное (часть высокоуровневых задач): Perl Так что не надо автором ля-ля что Перл плохой! ![]() --------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok"; |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: нет Всего: 7 |
Читаю статью. Она производит довольно смешанное впечатление.
С одной стороны многое верно: анахронизмов в Perl, ведущих родословную и UNIX shell-ов и AWK действительно слишком много. Имена переменных с сигилами, например, или интерполяция строк. Кое-где вполне разделяю недоумение автора: например, применение инкремента к символьным строкам -- это просто песня (при том, что обратной операции, т.е. декремента, в этом случае вообще не предусмотрено. ;) ) С другой стороны: многие из анахронизмов вполне официально depreciated, и в современных версиях Perl есть предупреждение об их использовании. Одно только use strict (о котором автор, похоже, и не слышал) отлавливает и недекларированные переменные и barewords. А кое-какие замечания автора вообще тянут на придирки! А что мешало определить стандартную функцию, которая бы возвращала текущий размер или границы диапазонов индексов массива, как это сделано, например, в языках Java Script (функция length) и Visual Basic (функции LBound и UBound)? А что мешает определить ее вам? ![]()
-- так, по моему, будет вполне достаточно. Отметим лишь, что наличие встроенной непосредственно в язык операции возведения в степень совершенно излишне – её реализация должна быть вынесена во внешнюю библиотеку, поскольку необходимость в её использовании возникает достаточно редко и только при программировании приложений, ориентированных на сравнительно узкую предметную область (разного рода прикладные библиотеки численного характера). Уж с этим совершенно не согласен: ИМХО, отсутствие возведения в степень во многих языках -- явный минус. В общем, впечатление неоднозначное. Однако, буду дальше читать. ;) --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
А что, скалярный контекст для массивов для узнать длинну массива не подходит, или $#_ есть тоже, а такого в JavaScript нету.
Возводить в степень можно по-разному. В некоторых случаях можно оптимизировать, например 10e3=10**3 или 2**4 в бинарном виде 100000, 1**3=1. |
|||
|
||||
GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
||||
|
||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
В общем-то, если отбросить шелуху в виде никому не нужных эмоций автора, я с ним согласен. Честно говоря, когда пишу код, то никогда до конца не уверен, как меня поймет перл. Сильно удручает.
Многие ставят в плюс, что одно и то же можно сделать разными способами. Я бы вообще не говорил об этом как о плюсе или минусе: разве есть язык, про который нельзя сказать того же? что на нем можно сделать одно и то же разными способами? Я таких не знаю. Что мне действительно не нравится в перле -- его неоднозначность. Программируя на других языках, я привык к тому, что используя декларативные средства языка, можно сильно упростить себе жизнь, так как синтаксис и семантика (!) проверяется компилятором, что очень помогает быстро устранять банальные ошибки. Да, даже для таких языков можно написать программу, которая будет неправильно работать, и компилятор ничего не скажет. Но нету неоднозначности. Правда, пока писал, вспомнил С/С++. Надо признать, что в этих языках неоднозначности тоже хватает. Но не на столько... А теперь о том, что мне нравится. Собственно, никого не удивлю, если скажу "лаконичность". Особенно в обработке логов. Потрясающий результат. Восхищает. На сколько просто обрабатывать тексты на перле. Одной сторокой. Так и должно быть, ведь это и было целью языка. В любом случае, лично я рад тому, что мне довелось плотненько познакомиться с перлом. Я теперь точно знаю, как я буду обрабатывать логи. Но, как в том анекдоте, "ложки нашлись, а осадок остался"... Вот такие мысли. |
|||
|
||||
stan777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 29.1.2007 Репутация: нет Всего: нет |
Да строгость в перле потеряна, но согласитесь зато халявный язык на котором можно быстро что-то своять, в отличии от Си
|
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Сейчас увидел. ![]() Я просто не люблю спорить в таких бестолковых топиках. Никто и никому ничего не докажет. Мнения как гвозди, чем больше по ним бъёшь, тем глубже они вбиваются. Это сообщение отредактировал(а) korob2001 - 30.1.2007, 16:12 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Danissimo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
ППКС |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |