информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяГде водятся OGRыСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
 С наступающим 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
1. Первая строчка - импорт класса, вторая - вызов... 25.10.05 02:28  Число просмотров: 1170
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> > use CGI qw/:standart/;
> > $t=CGI->new();
> > print $t->header('text/html');
> >
> > То же самое без обектов:
> >
> > print "Content-type: text/html\n\n"
> >

> Первые две строчки в первом варианте
> относятся не к ООП, а к его перловской реализации. А третья
> строчка в первом варианте является самокомментирующейся
> (если бы еще переменную t назвать более удачно), что
> является признаком хорошего стиля. Более того, первый
> вариант оставляет пространство для маневра, а второй - нет.
> Если уж действительно УЧИТЬ программировать, то лучше учить
> писать ГИБКО (yagni лучше выучить чуть позже).

1. Первая строчка - импорт класса, вторая - вызов конструктора. И то и другое имеет непосредственное отношение к ООП. Ну да не суть важно. Первый пример кода будет работать ЗНАЧИТЕЛЬНО медленнее, чем второй, так как, во-первых, нам надо подключить класс (по сути считать всю библиотеку CGI), а во-вторых мы вызываем конструктор, на что опять же совершаются действия, да и сам вызов метода объекта содержит в себе много лишнего (переход по ссылке, определение, к какому классу пренадлежит объект и как завершение вызов функции, в которой единственное что выполняется, это return "Content-type: $_[0]", при этом прежде чем это будет сделано будет еще куча проверок на количество аргументов). Конечно, в других языках такие проблемы, как полная загрузка библиотеки и проверка количества аргументов избегаются, но потерь всё равно не избежать. Ты же вроде совсем недавно спорил, что писать нужно все максимально эффективно? ;)

2. Насчет самокомментируемости не согласен. Прочитаю по-русски второй вариант:
Вывести строку "Тип-содержимого: текст/хтмыл".
Что непонятного? Теперь попробуй мне так же кратко описать на русском языке действие первого варианта. Я пытался - не получилось. Да и потом, всегда ведь можно написать простой комментарий - кто мешает?

3. В идеале, обектная модель человеческому мышлению может быть и ближе. Однако она сама по себе _на много_ сложнее. Функцию можно определить в двух словах как "программа, которая может принимать параметры, возвращающая некий результат". Функциональный подход, если я не путаю, изучают еще в школе по математике классе эдак в шестом. Таким образом любой бегиннерс, который доучился до шестого класса, уже усвоил для себя что есть функция и с чем ее едят. С объектами сложнее: во-первых, там достаточно много теории, которая далеко не сразу усваивается - классы, методы, переменные экземпляра, переменные класса, наследование, конструкторы, деструкторы, приватные данные, приватные методы, виртуальные методы - теории прямо скажем до хрена. Когда ты это все изучишь, оно, конечно, станет просто и понятно. Но это надо учить и это очень большой объем материала, чего не скажешь о функциях. Во-вторых, ООП интуитивно близка человеческому мышлению, когда мы рассматриваем абстрактные примеры. В программировании же не совсем очевидно, что консоль может быть объектом, который является членом какого-то непонятного класса.

4. Насчет строк, массивов и переменных. Кто-то из философов сказал: "Не надо плодить сущности без надобности". Чтобы работать со всем перечисленным, надо в любом случае понимать, что это такое на уровне структур данных.Дополнительновспоминать в данном случае о ООП - излишняя нагрузка информацией, которая по сути является абстракцией и не несет никакого прикладного смысла.

5. В любом случае, используя объектно-ориентированный подход, ты не убежишь от того, что придется рано или поздно создавать собственные классы и методы. А это есть ни что иное как написание тех же функций. В случае функций ты, конечно, тоже к объектам придешь, но зато уже с изначальным умением писать собственные классы и методы. Если же знать ООП, но не уметь писать функции, то это уже умственный инвалид получается (кстати, если возвращаться к тому коду на Perl, что я привел выше, то основная масса людей использует именно первый способ, а не простой print, именно потому, что по-другому они не умеют - а из-за этого огромные потери и падение эффективности).
<miscellaneous> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach