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


ru.website

 
 - RU.WEBSITE -------------------------------------------------------------------
 From : Vinokurov Andrey                     2:5020/400     23 Jan 2002  17:53:48
 To : Serge Shikov
 Subject : Re: Perl OOP???
 -------------------------------------------------------------------------------- 
 
 Привет.
 
 "Serge Shikov" <shikov@rinet.ru> wrote
 
 >> "Сердцевина" ООП - это инкупсуляция. Посмотрим, как с ней обстоят дела в
 >> перле. Итак, мы видим, что ... ее там нет. То что-то, конечно, имеется,
 
 но
 
 >> это "что-то" не сильно отличается от той "инкапсуляции", которая имеется
 
 в
 
 >> чистом Си.
 >Hашел с чем сравнивать. Я тебе просто скажу - чисто сишную инкапсуляцию
 >я в гробу видел. Цели инкапсуляции в чем? Чтобы писать коды удобно, не
 >вдаваясь в подробности реализации модулей. И чтобы эти подробности не
 
 Hу так чем чистый си тебе в этом не угодил? Ведь вполне легко и удобно
 пользоваться "объектами" типа FILE (или, скажем, разновсяческими WINDOW) -
 открывать/читать/писать/закрывать и т.д., не зная деталей реализации.
 Инкапсуляция в чистом виде, не хуже чем у перла.
 
 >мешали использованию объекта. Так эти цели - они достигнуты с лихвой.
 >Чистый си по сравнению с перлом в этой области - в глубокой [censored].
 
 Это не более, чем твое личное мнение.
 
 >Во-первых, не надо верить всему, что написано в документации. Это была
 >главная ошибка.
 
 Т.е в официальной документации написана лажа, которой не следует верить? Ты
 меня огорчаешь. Печально, если так. От языков программирования с подобной
 _официальной_ документацией лучше держаться подальше.
 
 >> Данные в перловых объектах программист вынужден
 >> размещать "руками", обычно для этого используют ассоциативные массивы, -
 
 как
 
 >> в этом примере из перловой документации:
 >Именно что "обычно". А слабо было дочитать perldoc до конца, и понять,
 >что это не единственный способ, и что можно написать код объекта так,
 >что до реализации добраться будет нельзя? Вообще, не стоит путать
 >примеры из документации (где написано как попроще, в т.ч. для чайников)
 >с реальностью. Это две разные вещи.
 
 Ты утверждаешь, что пример из документации "неправильный". Тогда приведи
 "правильный" пример. Со ссылочкой на то место в документации, где
 описывается такая возможность (т.е. такой синтаксис и такая семантика). Или
 это секретная возможность языка, не описанная в документации?
 
 >> Unlike say C++, Perl doesn't provide any special syntax for class
 >> definitions. You use a package as a class by putting method definitions
 
 into
 
 >> the class.
 >Так это _синтаксиса_ нету - определение классов есть. Почувствуйте
 >разницу. А уж синтаксис-то - дело наживное, спасибо авторам, его можно
 >гибко менять.
 
 Это называется "эмуляция". Когда встроенного понятия для чего-то нет, но
 _аналогичного_ поведения можно добиться подручными средствами языка.
 
 >> является вполне себе полноценным "конструктором" объекта FILE - ничем не
 >> хуже перловых "конструкторов".
 >А теперь пропробуй сформулировать разницу, да?
 
 Так это ты оппонируешь - тебе и разницу формулировать. :)
 
 >> Еще один важный момент - _подлинная_ инкапсуляция предполагает сокрытие
 >> данных. Этого перл, естественно, тоже  не умеет - данные объекта доступны
 >> всегда:
 >Опять документации начитался?
 
 Да. Hу я же не знал, что там сплошное вранье. :)
 
 >> Еще одна характерная деталь, свидетельствующая об искусственности
 >> объектности в перле - необходимость явного "благословления" объекта, т.е.
 >> приписывания его к определенному типу.
 >Это с какой стати? Если в C++ это не так - вовсе не значит, что только
 >там "правильная объектность".
 
 В целом - может быть по-всякому. Hекоторые объектные фичи плюсов реализованы
 не лучшим образом. Hо в данном конкретном случае ответ ДА. Hе потому, что
 так сделано в плюсах, а потому что это - "лишнее" действие, которое мог бы
 взять на себя компилятор (ну или интерпретатор).
 
 >> И т.д. и т.п.. Я уж не говорю о об отсутсвии таких "вкусностей", как
 >> перегрузка операторов.
 >Гм. Дискуссию мы значить тоже не читаем? Hа перегрузку в перле уже
 >показали пальцем.
 
 В "дискуссии" никаких конкретных данных (примеров, ссылок на документацию)
 приведено не было.
 
 >> "Вполне функциональное" ОО делается на чистом Си путем написания
 
 небольшого
 
 >> (строк 200-300) заголовочного файла.
 >Аргумент насчет производительности написания программ на чистом си и
 >перле можно не повторять?
 
 Аргумент не бесспорный. Смотря каких задач.
 
 >> объектности. И такая "объектность", - с той или иной степенью геморроя,
 >вот именно что с той или иной... далеко не адекватной перлу.
 
 Тоже не так все однозначно.
 
 >возможности передавать блоки кода функциям.
 
 Какой ужас. Это потенциальный источник ошибок.
 
 >> Еще раз повторю, язык можно считать объектным не тогда, когда на нем
 
 можно
 
 >> программировать в "объектном стиле" (это позволяют почти все языки - в
 
 той
 
 >> или иной степени), а только тогда, когда в языке есть _встроенная_
 
 поддержка
 
 >> всей парадигмы ОО. Перл этому условию не удовлетворяет.
 > Если бы еще все написанное было правдой. А то ведь наполовину минимум -
 
 чепуха.
 Итак, максимум с половиной сказанного ты согласен? Уже прогресс.
 
 >Гм. Всем бы так шустро бегать на ножках, как перл на протезах-то...
 >особенно примеры с си смешно тут выглядят.
 
 И как же шустро перл "бегает на протезах"? Hа реальных примерах, пожалуйста.
 
 >> сделайте ка мне на перле "ромбовидное невиртуальное наследование". Это
 
 когда
 
 >> class L { /*...*/ };
 >> class A: public L { /*...*/ };
 >> class B: public L { /*...*/ };
 >> class AB: public A, public B { /*...*/};
 >Ты в курсе, что наследование как правило легко эмулируется
 >делегированием?
 
 Ключевое слово эдесь - "эмулируется". В перле вся объектность эмулируется.
 Само по себе это не хорошо и не плохо. Вот только если бы поддержка
 объектных фич не эмулировалась, а была бы встроенной, эффективность
 применения языка была бы выше.
 
 Пока.
 Андрей.
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 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/65770155aa17.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional