[Moscow.pm] Запутался

Vladimir Timofeev vovkasm на gmail.com
Пн Окт 1 23:50:22 PDT 2012


Привет!

2 октября 2012 г., 10:18 пользователь ksvs <ksvs1996 на ymail.com> написал:
> Зрасте.
>
> Недавно начал учить Perl и вот узнал, что в нем есть goto.
> А препод информатики говорит, что за использование goto по рукам надо бить,
> а языки с ним - ушербны.
Преподы наверно забыли в своих теориях, как реально программисты работают.
В Perl есть почти все, но это не значит что НАДО всем пользоваться.
Perl не запрещает писать "плохой" код, но это не значит, что надо
писать "плохой" код.
Как пример с "goto". Недавно переписывал алгоритм Балаша с древнего
паскаля... там были goto и разобраться в коде не представлялось
возможным, переписал, заработало. (без goto, ничего бы не вышло).
Есть еще несколько моментов, когда "goto" в Perl полезен.

>
> И че-то я засомневался. Может как все учить Python? Типа, там все круто на
> объектах. Но нашел в инете несколько челов, которые с Python переши на
> Haskell, в котором даже объекты не нужны.
>
> Решил найти реальные проекты на Perl, Python и Haskell, и сравнить сам.
> Но никак не могу найти. Подсткажите, кто знает, где можно найти?
>
> Нашел только Redis Sharding:
> Python:  https://github.com/youngking/redis-shard
> Perl:    https://github.com/kni/redis-sharding
> Haskell: https://github.com/kni/redis-sharding-hs
Из этих трех проектов, только Perl и Haskell связанны. Проект на
Python делает другое.

>
> И то и то не очень понятно.
> Кажется на Python короче, чем на Perl.
> Но на Perl как-то меньше функций и понятней. Хотя кода больше.
>
> Не понятно, почему только в Haskell используется fork?
> Ведь в Perl и в Python тоже есть fork.
)))
В Haskell-версии сервер на основе fork'а, в Perl-версии он неблокирующий.
Почитать можно в "UNIX. Разработка сетевых приложений" (Стивенс У.Р.)

>
> А я нашел как упростить Perl версию! cmd2stream можно перписать как
>
> sub cmd2stream {
>     join "", '*', scalar @_, "\015\012", args2stream(@_);
> }
>
> Значит Perl версия не оптимальна. Или уже такой спец. :-)
>
> А как perl понимает, что scalar относиться только к @_, а не ко всему до
> конца строки?
Гм, это про что вопрос? Наверное, потому что scalar - унарный оператор ;-)
http://perldoc.perl.org/functions/scalar.html

>
> Но и в Python версии я увидел тоже есть одинаковые куски: строки 80-105 в
> pipeline.py и строка 121-147 в shard.py идентичны.
>
> И еще. В Perl функции вызывает модуль EV. А как в Python? Не вижу.
>
> Вижу, где в Python и Haskell ловят ошибок, а в Perl не вижу...
>
> Что-то запутался окончательно.
> Неужели, чтобы выбрать что-то одно, надо выучить все три?
Мне кажется - да :-)

>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm