Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ваш стиль программирования на Perl, ОПП vs perlish 
:(
    Опции темы
sir_nuf_nuf
Дата 27.8.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 31



Привет всем!

Какой стиль программирования на perl вам ближе:
1) со множеством перловых фишек и изворотов
2) строгий ООП стиль, а-ля java
3) что другое
?

Задаю этот вопрос, т.к. самому перл понравился за скороговорку, за возможность быстро делать сложные вещи.
Но по мере работы над проектом  замечаю, что такой код плохо поддерживается (особенно, если писал его другой человек),
потихоньку код приходит к виду a-la java, со множеством мелких классов, get/set, паттерны и все такое..
может я просто не постиг ДАО перла и на самом деле надо все писать процедурными скриптами ?

П.С. извиняюсь, если флейм.. 

Это сообщение отредактировал(а) sir_nuf_nuf - 27.8.2008, 10:26


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ginnie
Дата 27.8.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



Уважаемый sir_nuf_nuf, стиль написания часто зависит от постановки задачи: если быстродействие кода не является определяющим фактором при разработке, то лучше писать понятный другим разработчикам код, т.е. без особых "изворотов" (использование уникальных для Perl конструкций только там, где они действительно уместны). Если же приоритетом является производительность кода, то тут бывает такое...  smile 

Это сообщение отредактировал(а) ginnie - 27.8.2008, 11:07


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
nitr
Дата 27.8.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 37
Всего: 84



Perl-style был и будет, если придерживаться этих рамок, то всем любые извороты будут понятны. Сколько "читал" код программистов, всегда был рад, что пишут в этом стиле, иначе ни поддержка. ни поиск ошибок/недочетов, да вообще многое сводится к нулю.
Тут имхо всё равно ООП или только извороты, или извороты+ООП smile

perldoc perlstyle ;)

Добавлено через 1 минуту и 19 секунд
Цитата(sir_nuf_nuf @  27.8.2008,  10:26 Найти цитируемый пост)
потихоньку код приходит к виду a-la java, со множеством мелких классов, get/set, паттерны и все такое..

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


--------------------
PM   Вверх
ginnie
Дата 27.8.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



Уважаемый nitr, а вот такой код Вам понятен?

Код

print "some text and @{[time]}";



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 27.8.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ginnie @ 27.8.2008,  11:06)
быстродействие кода не является определяющим фактором при разработке, то лучше писать понятный другим разработчикам код, т.е. без особых "изворотов" (использование уникальных для Perl конструкций только там, где они действительно уместны). Если же приоритетом является производительность кода, то тут бывает такое...  smile

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

компьтеры дешевеют, можно поставить 8Gb RAM  smile 
JAVA весь на ООП, но он требовательный к ресурсам...

Это сообщение отредактировал(а) gcc - 27.8.2008, 11:56
PM WWW ICQ Skype GTalk Jabber   Вверх
nitr
Дата 27.8.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 37
Всего: 84



ginnie, мне да. Но кто так писать будет? smile
И так 
Код
print "some text and ".time;



--------------------
PM   Вверх
ginnie
Дата 27.8.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



Уважаемый gcc,

Цитата

а что именно под быстродействием имееться ввиду


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

Например, задача преобразования IP-адреса из формата xxx.xxx.xxx.xxx в int (для сохранения в БД).  Самый быстрый вариант

Код

my $ip_int = unpack("N", pack("C4", split(/\./, $ip)));


Цитата

компьтеры дешевеют, можно поставить 8Gb RAM


У нас памяти в сервере больше 8 Гб, все равно не хватает  smile  Все зависит от решаемых задач.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
nitr
Дата 27.8.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 37
Всего: 84



лично такое "изворотом" не называю...

Добавлено через 2 минуты и 15 секунд
Цитата(ginnie @  27.8.2008,  12:01 Найти цитируемый пост)
Время выполнения для разных способов отличается и если важна проиводительность кода, то приходится выбирать варианты, читаемость и понятность которых оставляет желать лучшего.

 smile
Можно всё же это совмещать... Согласен не во всех случаях, но можно в "таких местах" оставлять комменты...

Добавлено через 3 минуты
За кодером не убудет...


--------------------
PM   Вверх
Bulat
Дата 27.8.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Побольше багов и косяков  smile 

ИМХО, если что-то небольшое и не очень функциональное(без огромного количества всяких фич), то проще писать по процедурному. Но если что-то многофункциональное, то лучше прибегать к ООП. Но мулька-то в этом, хошь так, хошь так. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
ginnie
Дата 27.8.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



Уважаемый nitr, специально для Вас шедевр нетривиального мышления:

Код

sub next_power_of_two {
    my %s;
    @s{1..shift} = ();
    local $_ = %s;
    return m{/(.*)};
}



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
korob2001
Дата 27.8.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Я лично по возможности использую только ООП. Правда далеко не все мудули на CPAN объектно ориентированы.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 27.8.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 37
Всего: 84



ginnie, спасибо smile Человек, который не знает Perl, не поймет "что тут творится"...


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


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



nitr, я минут 15 разбирался  smile 


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
AlexPet
Дата 27.8.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Люблю perl-style. Наверное, поэтому его (perl) и использую.
ООП примерно везде одинаково, и навевает скуку :(
Возможно, оффтоп, но в последнее время столкнулся с тем, что для высокопроизводительных математических вычислений перл все же слабоват. Даже XS модули не спасают. Приходится все же использовать либо Maple\MatLab для мат.экспериментов, либо C (по слухам, Python тоже в математике преуспел, но так до него руки и не дошли) для продакшн. Жаль :(


ginnie, возможно я не понял Ваш пример с next_power_of_two, но там всегда будет выводиться 1 в случае подачи на вход n >= 1.

Это сообщение отредактировал(а) AlexPet - 27.8.2008, 18:19
PM MAIL ICQ Jabber   Вверх
ginnie
Дата 27.8.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



Уважаемый AlexPet, интересно, как это C-код работает нормально, а XS-модули не спасают?

Цитата

там всегда будет выводиться 1 в случае подачи на вход n >= 1


советую провести полевые испытания функции  smile 


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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