Автор Тема: Модули и значения ими возвращаемые  (Прочитано 9129 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
Модули и значения ими возвращаемые
« Ответ #15 : 16 Февраля 2005, 12:16:25 »
commander
Ты не прав, ООП в Перл, до версии 6, эмулируемый, о 6 не знаю.
Вот абзац из http://www.manning.com/conway

What object-oriented Perl isn’t
Perl was not originally designed—or implemented—as an object-oriented language. Its version of
object orientation is simple and well integrated, but not fundamental to the language.1

------------------------------------
1 …as it is in Java, or Eiffel, or Python, for example.
------------------------------------

That evolutionary development shows in the few places where object-oriented features of the
language are still experimental or incomplete. For example, recent versions of the Perl compiler
support weakly typed variables, which provide compile-time checking and optimization for accesses
to the data stored in Perl objects. But the current version of the mechanism doesn’t actually
enforce type safety or proper data encapsulation, nor does it fully support inheritance.
Because Perl wasn’t originally designed as an object-oriented language, object-oriented Perl
isn’t fast. Calling a method through an object is significantly slower than calling a regular Perl subroutine.
Just how much slower is a matter of some debate, and depends on whether you measure
entire software systems or just raw single-call invocation speed.
A single method call is about 30 percent slower than a regular call to the same subroutine
(depending on your hardware, your operating system, the phase of the moon, etc.) But though
they’re individually much slower, method calls are more powerful than regular subroutine calls,
due to a feature known as polymorphism (see chapters 1 and 7). In a larger system, that redresses
the speed imbalance in a little, but, in general, it’s fair to say that an object-oriented implementation
of a system in Perl will almost never be faster than the equivalent non-object-oriented implementation,
and will usually be somewhere between 20 to 50 percent slower.
Those figures are enough to turn many people away from object-oriented Perl, and that’s a
pity because then they miss out on the many compensating benefits of object-oriented design and
implementation: simpler analysis methods, a domain-oriented approach to design, cleaner and
more compact code, more robust implementations, greater code modularity, easier debugging,
more comprehensible interfaces to modules (including operator-based interfaces), better abstraction
of software components, less namespace pollution, greater code reusability, scalability of software,
and better marketability of the final product.2
The sad thing is that people get spooked by the numbers (20 to 50 percent slower!!!) and forget
what that really means (…just as fast in six months time, when processor speeds have doubled).
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Модули и значения ими возвращаемые
« Ответ #16 : 16 Февраля 2005, 13:00:18 »
Влад, сэмулированая ОО модель в Перл, имеет три св-ва которые позволяют назвать язык Объектно-Ориентированным это:
- Наследование. присутсвует
(это процесс порождения одного класса из другого класса. В результате этого процесса дочерний класс может использовать методы родительского класса).
- Полиформизм. присутсвует
(это атрибут, позволяющий с помощью одного интерфейса управлять доступом к целому классу методов).
- Инкапсуляция. присутсвует
(это механизм, связывающий воедино код и данные которыми но манипулирует).

эмулированы эти св-ва или нет - это НЕ ВАЖНО! Perl - объектно - ориентированый язык!!!
И когда я читаю подобное:
Цитировать
Если человек не знаком с ООП и начнет его изучения с перла, он может быть немного удивлен, когда встретится с "правильным" ООП в C++ или Java.

меня это искренне удивляет!
And no religion too...

Оффлайн 2NetFly

  • Модератор
  • Глобальный модератор
  • Постоялец
  • *****
  • Сообщений: 144
  • +0/-0
  • 0
    • Просмотр профиля
    • http://feotast.net
Модули и значения ими возвращаемые
« Ответ #17 : 16 Февраля 2005, 17:46:11 »
Перл (в отличие от Ruby, например) изначально не был объектно-ориентированным языком, и поддержка ООП была втиснута в уже сформированный процедурный язык.

Цитировать
Ну поведай нам тогда чем же правильное ООП (в C++ или Java) отличаеться от "не правильного" (реализованного на PERL)?
Лучше меня это поведает Ларри Уолл. В его интервью и статьях о шестой версии перла можно узнать, чем же плох ООП в пятой версии и каким образом он будет приводиться к более правильному виду.

Времена, когда самой используемой фишкой ООП было наследование, а под инкапсуляцией понималось сокрытие данных уже давно прошли. Миром правят Гамма, Фаулер, Бек, Шаллоуей и прочие отцы современного ООП.
There Is More Than One Way To Do It (c)

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Модули и значения ими возвращаемые
« Ответ #18 : 17 Февраля 2005, 10:11:45 »
.
« Последнее редактирование: 17 Февраля 2005, 12:34:21 от NeoNox »
And no religion too...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Модули и значения ими возвращаемые
« Ответ #19 : 17 Февраля 2005, 12:33:58 »
[moderator]
commander предупреждение.
Выбирай выражения при общении.

Предупреждаю: тред будет усиленно модерироваться.
The documentations is your friend

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Модули и значения ими возвращаемые
« Ответ #20 : 17 Февраля 2005, 12:42:51 »
NeoNox
ok...
запостил с утра, ещё не совсем проснувшись...
2NetFly
Цитировать
Времена, когда самой используемой фишкой ООП было наследование, а под инкапсуляцией понималось сокрытие данных уже давно прошли. Миром правят Гамма, Фаулер, Бек, Шаллоуей и прочие отцы современного ООП.

это всего лишь слова.
более весомые аргументы будут?
And no religion too...

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Модули и значения ими возвращаемые
« Ответ #21 : 17 Февраля 2005, 13:03:20 »
Цитировать

Перл (в отличие от Ruby, например) изначально не был объектно-ориентированным языком, и поддержка ООП была втиснута в уже сформированный процедурный язык.

Тоже могу сказать и про Си и про паскаль и про... Продолжать?

Насчет ООП (без меня меня женили), не удобно говорить конечно, но все это неплохо работает в моих программах на Delphi/С++ и как то проблем с этим(классы, наследование и т.д.) не встречал. Единственное, что меня смущает - я не понимаю текст "Programming PERL" в главах где объясняется как все это реализуется в perl - ну не слишком хорошо я знаю английский.
А вообще сейчас пошел чистый флейм.
Просто я модуль расцениваю как типичную библиотеку из Си/паскаль, вот и подход у меня к ней соответственный. Может не прав, но это уже другая песня.
Всё будет хорошо - я договорился!

Оффлайн 2NetFly

  • Модератор
  • Глобальный модератор
  • Постоялец
  • *****
  • Сообщений: 144
  • +0/-0
  • 0
    • Просмотр профиля
    • http://feotast.net
Модули и значения ими возвращаемые
« Ответ #22 : 21 Февраля 2005, 17:42:32 »
Не было возможности ответить раньше.
Цитировать

Тоже могу сказать и про Си и про паскаль и про... Продолжать?

Что-то я связи не вижу. C++ - это отдельный язык, Visual Basic - отдельный язык и Object Pascal - тоже отдельный язык и связи между этими языками и их "синтаксическими родителями" практически нет. На базе (не совсем подходящее слово, но лучшего я подобрать не смог) процедурных языков были построены совершенно новые (!) ОО языки со схожим синтаксисом, но совершенно иной концепцией. С перлом же история другая -  в процедурный язык была втиснута поддержка ОО модели, причем довольно безобразно (по крайней мере с точки зрения синтаксиса - чего только стоит наследование до версии 5.6).

Насчет знания / незнания ООП. Речь шла о том, что начинать изучение ООП с перла - не есть хорошо, а ни в коме случае не о твоих познаниях в ООП.

Цитировать

это всего лишь слова.
более весомые аргументы будут?

Все аргументы в трудах перечисленных авторов. Вряд ли я смогу выступить эффектнее оных =)
« Последнее редактирование: 21 Февраля 2005, 17:52:15 от 2NetFly »
There Is More Than One Way To Do It (c)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28