Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl vs Python 
:(
    Опции темы
Logo
Дата 10.5.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Почему до сих пор нет этой темы? smile Начнем.
Языки очень разные по дизайну, но пересекающиеся по областям применения.

Я перлист, питон представляю только в общих чертах, поэтому опишу преимущества и недостатки с точки зрения перловика.
  • Обработка текста. Тут Perl однозначно лидер. Механизм регэкспов самый мощный, и встроенный на уровне синтаксиса.
  • ООП. Тут Perl сливает. Встроенная возможности ООП слишком низкоуровневая,  и многое нужно прописывать вручную. На практике приходится использовать дополнительные модули, которые делают это за вас, но тут тоже не все гладко, достаточно удобного модуля я не нашел (хотя может быть плохо искал).
    Есть здесь небольшое преимущество, что есть выбор модели ООП, к примеру есть модуль реализующий прототип-ориентированное ООП Class::Prototyped, но оно никак не перевешивает всех недостатков.
    В Python поддержка ООП наитивная
    Кроме того т.к. помимо скаляра в Perl есть еще структуры данных типа массив и хеш, а объект хранится в скаляре, нельзя расширить хеш или массив методами. Есть выход использовать объект как ссылку на массив вместо массива, либо использовать tie и вызывать методы через tied(@arr)->some(), но это не удобно.
  • Параметры функций. Еще один серьезный недостаток Perl. Встроенной проверки параметров нет. В функцию передается массив параметров, валидация параметров, если она нужна, лежит на программисте. Есть, конечно, довольно не плохие модули на CPAN, но они меня тоже не устраивают, подумываю написать свой.
  • Большой плюс Perl в встроенном формате встраиваемой документации POD. В комплекте идет утилита для просмотра документации, и все модули на CPAN имеют документацию в этом формате, в общем документирование скриптов - одно удовольствие. Конструкция документирования POD вроде даже перекочевала в Ruby.
  • Управление компиляцией. Тоже уникальная в своем роде вещь Perl.
  • Синтаксис. Здесь плюс-минус. У Perl гибкий синтаксис и всевозможные средства сокращения. Это плюс, если работаешь один или хорошей команде, но если идти работать на "умение разбираться в чужом коде (с)" это минус. У меня правда есть несколько претензий синтаксису Perl, но они не критичные.
    С другой стороны, поддерживать Python код мне не приходилось, поэтому не могу сказать, насколько эффективно ограничения способствуют улучшению плохого кода.

З.Ы. Сейчас мой выбор, хоть и не с легким сердцем - Perl.    

PM MAIL   Вверх
k0rvin
Дата 10.5.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Logo @ 10.5.2010,  17:47)

  • Управление компиляцией. Тоже уникальная в своем роде вещь Perl.

что это?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
gcc
Дата 10.5.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



это наверное eval http://perldoc.perl.org/functions/eval.html  (можно еще кусок кода вставить )
вот пример (если тут речь про это) http://forum.vingrad.ru/forum/topic-290936.html


Это сообщение отредактировал(а) gcc - 10.5.2010, 21:22
PM WWW ICQ Skype GTalk Jabber   Вверх
qweqwe
Дата 10.5.2010, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



мне оба языка не нравятся, python меньше не нравится
PM MAIL   Вверх
Logo
Дата 10.5.2010, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата(k0rvin @ 10.5.2010,  19:08)
Цитата(Logo @ 10.5.2010,  17:47)


  • Управление компиляцией. Тоже уникальная в своем роде вещь Perl.


что это?

кемелбук, глава 18.
В кратце, в процессе работы программы, то компилятор в байт-код вызывает интерпретатор байт-кода, то наоборот, интерпретатор вызывает компилятор. 
Интерпретатор вызывает компилятор при eval.
Компилятор же вызывает интерпретатор с помощью специальных блоков BEGIN {} или загрузки модуля use Module(... params ...), или no Module(... params ...) (редко используется). Когда компилятор доходит до use, он прерывает компиляцию остальной программы, загружает, компилирует, и исполняет модуль (если это первое использование модуля),  вызывает функцию import модуля с параметрами. Лишь после того, как use, BEGIN, или no отработают, компилятор продолжит компиляцию программы.
Алсо, есть магический хеш, привязанные к лексической области видимости блоков, он позволяет создавать директивы с лексической областью видимости. В него могут писать use, BEGIN, или no, и значения его видны в лексической области видимости блока.
Алсо, разные дополнительные приблуды, вроде перехвата компиляции ключегого слова, или перехвата конца компиляции лексического блока.

PM MAIL   Вверх
Фантом
Дата 10.5.2010, 21:49 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Самая известная (и, на мой взгляд, точная) характеристика Perl - это язык, программу на котором через месяц после написания не сможет понять даже тот человек, который ее писал.

С дпугой стороны, пресловутые табуляторы Python - это тоже ужас.

Так что из всех языков этой ниши, на мой взгляд, лучший - Lua.


PM   Вверх
k0rvin
Дата 10.5.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Logo @ 10.5.2010,  21:19)
Цитата(k0rvin @ 10.5.2010,  19:08)
Цитата(Logo @ 10.5.2010,  17:47)



  • Управление компиляцией. Тоже уникальная в своем роде вещь Perl.



что это?

кемелбук, глава 18.
В кратце, в процессе работы программы, то компилятор в байт-код вызывает интерпретатор байт-кода, то наоборот, интерпретатор вызывает компилятор. 
Интерпретатор вызывает компилятор при eval.
Компилятор же вызывает интерпретатор с помощью специальных блоков BEGIN {} или загрузки модуля use Module(... params ...), или no Module(... params ...) (редко используется). Когда компилятор доходит до use, он прерывает компиляцию остальной программы, загружает, компилирует, и исполняет модуль (если это первое использование модуля),  вызывает функцию import модуля с параметрами. Лишь после того, как use, BEGIN, или no отработают, компилятор продолжит компиляцию программы.
Алсо, есть магический хеш, привязанные к лексической области видимости блоков, он позволяет создавать директивы с лексической областью видимости. В него могут писать use, BEGIN, или no, и значения его видны в лексической области видимости блока.
Алсо, разные дополнительные приблуды, вроде перехвата компиляции ключегого слова, или перехвата конца компиляции лексического блока.

как всё сложно... то ли дело CL:

Код

(eval 'expression)
(compile 'function-or-macro)



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Logo
Дата 10.5.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата

Самая известная (и, на мой взгляд, точная) характеристика Perl - это язык, программу на котором через месяц после написания не сможет понять даже тот человек, который ее писал.


Это шутка smile 
Ни что не мешает написать понятную программу. С другой стороны, если тебе надо написать такой код, чтобы через месяц после его написания самому не понять, в Perl тоже ничего не будет мешать. В отличии от Python.

PM MAIL   Вверх
qweqwe
Дата 10.5.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(Фантом @  10.5.2010,  21:49 Найти цитируемый пост)
С дпугой стороны, пресловутые табуляторы Python - это тоже ужас.

а что в этом плохого? это наоборот здорово, кстати табы никто не заставляет использовать, наоборот, там принято пользоваться пробелами
PM MAIL   Вверх
gcc
Дата 11.5.2010, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



k0rvin, я что-то этого не видел раньше и гугл не говорит:

http://www.google.com.ua/search?hl=uk&...q=&gs_rfai=

http://www.google.com.ua/search?q=python+%...art=10&sa=N

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


(хотя, говорят, в web это не очень часто нужно делать если работает в mod_* ...)

Это сообщение отредактировал(а) gcc - 11.5.2010, 03:47
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 11.5.2010, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



еще тема была тут http://forum.vingrad.ru/forum/topic-281755.../freebsd/0.html
я бы на обоих программировал в принципе, если надо...
и еще есть: java, php, etc...

Это сообщение отредактировал(а) gcc - 11.5.2010, 03:06
PM WWW ICQ Skype GTalk Jabber   Вверх
Фантом
Дата 11.5.2010, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Logo @  10.5.2010,  22:48 Найти цитируемый пост)
Ни что не мешает написать понятную программу. С другой стороны, если тебе надо написать такой код, чтобы через месяц после его написания самому не понять, в Perl тоже ничего не будет мешать.

Как показывает опыт, если язык разрешает писать плохой код, то 99% написанного на нем кода будет плохим.  smile С Perl'ом примерно так и получается.

Цитата(qweqwe @  10.5.2010,  22:52 Найти цитируемый пост)
а что в этом плохого? это наоборот здорово, кстати табы никто не заставляет использовать, наоборот, там принято пользоваться пробелами 

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

PM   Вверх
A5uKa
Дата 11.5.2010, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



PM   Вверх
k0rvin
Дата 11.5.2010, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(gcc @ 11.5.2010,  00:37)
k0rvin, я что-то этого не видел раньше и гугл не говорит:

http://www.google.com.ua/search?hl=uk&...q=&gs_rfai=

http://www.google.com.ua/search?q=python+%...art=10&sa=N

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


(хотя, говорят, в web это не очень часто нужно делать если работает в mod_* ...)

то было лирическое отступление, к питону никакого отношения не имеющее. впрочем как и к перлу =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
JackYF
Дата 11.5.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Цитата(Фантом @  11.5.2010,  08:34 Найти цитируемый пост)
Как показывает опыт, если язык разрешает писать плохой код, то 99% написанного на нем кода будет плохим.

Любой язык позволяет писать нечитаемое и не работающее месиво.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.