Главная страница


ru.website

 
 - RU.WEBSITE -------------------------------------------------------------------
 From : Alexander Kostiuchenko               2:463/672.419  20 Jan 2002  04:08:56
 To : Vinokurov Andrey
 Subject : Perl OOP???
 -------------------------------------------------------------------------------- 
 
 
  Как-то раз (а точнее 17 Jan 02 в 18:28) Vinokurov Andrey писал(а) к All:
 
  VA> Безусловно, перл содержит средства, позволяющие эмулировать "объектный
  VA> стиль". Hо это не является достаточным основанием, чтобы считать язык
  VA> объектным.
 
 сразу отмечу- Перл на звание "чиста обьектного" языка не претендует. Честь и
 хвала Ларри за это. Потому как эти самые чиста ООЯП полны ограничений (прежде
 всего - поддержка только одной парадигмы - и все, что из этого вытекает). Перл
 же дает свободу действий: хочу - пишу "по-обьектному", хочу -
 "по-функциональному"... захочу - буду вообще на латыни писать
 (Lingua::Romana::Perligata)...
 
  >> В перле есть все, что является атрибутом ООП - инкапсуляция,
  >> наследование,
  VA> полиморфизм.
 
  VA> "Сердцевина" ООП - это инкупсуляция. Посмотрим, как с ней обстоят дела
  VA> в перле. Итак, мы видим, что ... ее там нет. То что-то, конечно,
  VA> имеется, но это "что-то" не сильно отличается от той "инкапсуляции",
  VA> которая имеется в чистом Си. Во-первых, она не поддерживается на
 
 [...skipped...]
 
  VA> Еще один важный момент - _подлинная_ инкапсуляция предполагает
  VA> сокрытие данных. Этого перл, естественно, тоже  не умеет - данные
  VA> объекта доступны всегда:
 
 посмотри protected из Class::Fields, Attribute::Protected и Tie::SecureHash.
 Вполне себе реализуют private/protected. Запрещать и ограничивать - просто...
 Только зачем?
 
  VA> Еще одна характерная деталь, свидетельствующая об искусственности
  VA> объектности в перле - необходимость явного "благословления" объекта,
  VA> т.е. приписывания его к определенному типу. И т.д. и т.п.. Я уж не
  VA> говорю о об отсутсвии таких "вкусностей", как перегрузка операторов.
 
 Сколько можно повторять - есть в Перле перегрузка, есть.
 perldoc overload
 
  >> ОО у перла конечно слегка нетрадиционное (непривычное), но вполне
  >> себе
  VA> функциональное.
 
  VA> Hапример - явное "благословление", т.е. явное приписывание "объекта" к
  VA> классу.
 
  VA> Или размещение данных объекта в некотором аналоге
  VA> ассоциативного массива. А для разрешения наследования придется
 
 а чем это плохо ? какая вообще разница, как хранятся данные ? при использовании 
 обьектного подхода ты к ним обращаешся только через соотв. методы getter/setter 
 (для этого например можно PlusPlus.pm использовать - с ним эти методы можно так 
 и описывать: getter FIELD {}, setter FIELD {}).
 
  VA> ущербной, синтаксис обращения с объектами - корявым (перл здесь
  VA> выигрывает, но вы же сами говорили, что синтаксис - это HЕ главное),
  VA> а эффективность кода снижалась в разы по сравнению с "чистым чистым
  VA> Си" (для перла как для интерпретируемого языка это, впрочем,
  VA> неактуально).
 
 последние две претензии - неактуальны, сам это признаешь. Что до ущербности - то
 ты ее так и не доказал. "Полноценная инкапсуляция" возможна - модули, ее
 реализующие, я привел выше. Перегрузка - аналогично.
 
  VA> Еще раз повторю, язык можно считать объектным не тогда, когда на нем
  VA> можно программировать в "объектном стиле" (это позволяют почти все
  VA> языки - в той или иной степени), а только тогда, когда в языке есть
  VA> _встроенная_ поддержка всей парадигмы ОО. Перл этому условию не
  VA> удовлетворяет.
 
 Хм. Функция bless вполне себе встроенная. @ISA - тоже.
 
  VA> Итак, сделайте ка мне на перле "ромбовидное невиртуальное
  VA> наследование". Это когда
  VA> class L { /*...*/ };
  VA> class A: public L { /*...*/ };
  VA> class B: public L { /*...*/ };
  VA> class AB: public A, public B { /*...*/};
  VA> И чтоб все производные классы унаследовали методы своих базовых
  VA> классов.
 
 package L;
 package A;
 @ISA = qw(L);
 package B;
 @ISA = qw(L);
 package AB;
 @ISA = qw(A B);
 
 Оно ?
 
 --
 mailto: random at info.net.ua                  //Александр
 
  * Origin: useless (2:463/672.419)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Perl OOP???   Vinokurov Andrey   17 Jan 2002 19:28:36 
 Re: Perl OOP???   Serge Shikov   17 Jan 2002 21:03:08 
 Perl OOP???   Alex Kharitonov   20 Jan 2002 00:18:06 
 Re: Perl OOP???   Serge Shikov   20 Jan 2002 15:38:58 
 Re: Perl OOP???   Vinokurov Andrey   23 Jan 2002 16:58:18 
 Perl OOP???   Moderator   25 Jan 2002 01:35:06 
 Re: Perl OOP???   Vinokurov Andrey   23 Jan 2002 17:53:48 
 Re: Perl OOP???   Serge Shikov   25 Jan 2002 12:10:07 
 Re: Perl OOP???   Vinokurov Andrey   01 Feb 2002 19:07:25 
 Re: Perl OOP???   Serge Shikov   01 Feb 2002 22:18:32 
 Perl OOP???   Alexander Kostiuchenko   05 Feb 2002 08:54:10 
 Re: Perl OOP???   Vinokurov Andrey   23 Jan 2002 16:58:18 
 Perl OOP???   Alex Kharitonov   23 Jan 2002 20:29:59 
 Re: Perl OOP???   Vinokurov Andrey   24 Jan 2002 18:40:32 
 Perl OOP???   Alex Kharitonov   26 Jan 2002 00:41:19 
 Perl OOP???   Alexander Kostiuchenko   20 Jan 2002 04:08:56 
 Re: Perl OOP???   Vinokurov Andrey   24 Jan 2002 19:03:09 
Архивное /ru.website/40293c4a34d1.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional