информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
1. Первая строчка - импорт класса, вторая - вызов... 25.10.05 02:28  Число просмотров: 1176
Автор: 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>
Эта... Есть повод для флейма... 21.10.05 14:17   [amirul, Den, J'JF]
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
На одном сайте натолкнулся на вопрос:
"с какого языка начинать учить азбуку программировния - с PASCAL (DELPHI) или идти путем Си (Java)?"
И несколько ответов:
с Бэйсика
с Паскаля
с любого структурированого, но лучше с Паскаля
по-любому лучше с Бэйсика.

Предлагаю обсудить эту тему. На мой взгляд лучше Паскаль.
Че-то отвлеклись все. Может пора закрывать ветку? Или не надо? 27.10.05 18:01  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Честно говоря, надоел уже этот флейм. Да и тема себя вроде как исчерпала. 27.10.05 18:17  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Так ветка может и в книгу рекордов Гинеса попасть. 27.10.05 18:36  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Угу. Ну, ладно, подожду до вечера и закрою, если возражений нет. 28.10.05 13:14  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Да нет, в принципе забавно :) 27.10.05 19:56  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Жалко только что про яву мало спорят. Я очень люблю когда при мне говорят слово "кроссплатформенный". У меня сразу слюноотделение резко повышается и может родимчик приключиться. Не знаю почему.
Потом z0 проснулся неожиданно - тоже хорошо. Когда ж мы в баню-то пойдем, родное сердце?! Как раз снежок выпал, сейчас самое милое дело на фонари залиться и выскакивать из парилки в сугроб во дворе :)

Где-то на 3-й странице рассказывают разницу между объектами и структурами - всюду жизнь!
"призрак видел все!"(с) 28.10.05 14:31  
Автор: z0 <z0> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
это не ты разве убеждал недавно петруху что в баню надо ходить общаться а не за гигиеной тела?
Гыг 27.10.05 20:12  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Мыж вроде как все вместе хотели пыво пить в ГСМе, азарт прошел?
Неудобно читать стало 27.10.05 13:24  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Предлагаю отсечь ветки бессмысленного флейма, где не обсуждается вопрос корневого поста: "С какого языка лучше начинать учить программированию".
100% точный ответ. [upd] 26.10.05 14:31  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 26.10.05 15:15  Количество правок: 2
<"чистая" ссылка> <обсуждение закрыто>
Начинать надо с блок-схем алгоритмов!
Кто-то не согласен?

Знаю, знаю... Я, как всегда, испортил флейм. :))
100% -е согласие! 27.10.05 05:06  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
никогда не рисовал блок-схем 26.10.05 15:28  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Ты что в институте не учился? :-) 26.10.05 15:29  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Рисовать то я рисовал, но только для отчетности (на некоторых лабораторных в отчете надо было привести блок-схему). Сначала программа, а потом по этой программе - блок-схема :-)
Ту дык и с чего бегинерсу лучше начать? С Си или блок-схем? 26.10.05 15:46  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Как по мне блок-схемы вообще надо выкинуть на свалку истории. 26.10.05 16:53  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Не видел ни одной уважаемой книжки по программированию, где были бы нарисованы эти уродцы. Книжки с UML видел, хотя он мне и не особо нравится, а вот с блок-схемами - нет.
На свалку Истории? 26.10.05 17:03  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Они морально устарели? Принципы блок-схем перестали соответсвовать ныне используемым языкам?
Блок-схемы или некоторое их подобие перестали использовать при разработке больших проектов на этапе проектирования для связи между компонентами и модулями программ?
учился 26.10.05 15:39  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Но на физика. Из программухи были только численные методы. Сдавали проги, объясняя устно как все работает.
а функциональные языки лучше вобще не учить или просто начинать с них не стоит?? 25.10.05 21:55  
Автор: zelych Статус: Member
Отредактировано 25.10.05 21:55  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Начинать не стоит [update] 26.10.05 11:17  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 26.10.05 14:28  Количество правок: 2
<"чистая" ссылка> <обсуждение закрыто>
Но так как язык определяет вещи о которых ты способен ДУМАТЬ (не помню как назывался опыт, но для естественных языков это доказанный факт), то лучше выучить как можно больше языков и желательно с поддержкой как можно большего числа парадигм

--------------

Только что подумал, что ты мог неправильно употребить выражение функциональные языки (где то там внизу уже встречалось такое неправильно употребление). Функциональные языки это Lisp, Haskel, ML (OCaml, SML). Функиональную парадигму в той или иной мере поддерживают также мультипарадигменные языки типа python, tcl, ruby, perl

C/C++ и Pascal/Delphi никак нельзя назвать функциональными языками (хотя я встречал библиотеку темплейтов для C++, которая добавляет поддержку функциональной парадигмы в C++ - intelib называется)

Если же имелись в виду процедурные языки (не ООП), то учить их конечно тоже стоит. Если сильно хочется можно и начинать с них же.
Начинать надо с того, что ближе к машине 27.10.05 05:15  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Тем более, что ты ведь не знаешь, какие задачи жизнь тебе подсунет. Зачем загружать себя предметно-ориентированной лабуой, котоая, возможно, никогда не понадобится? Надо знать, как эта лабуда (компилеры) функционирует и пишется, тогда, при необхоимости легко осоишь любой язык, или создашь новый под конкретную задачу.

В этом смысле С - разумный компромисс между машинным и человеческим. Он уже понятен человеку, но на нем еще можно сделать все, что угодно. Другие языки позволяют делать только то, для чего они предназначены.
1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  10 >>  »    »»




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


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