информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft прикрывает Visual Studio... 
 Умер Кевин Митник 
 Массовое внедрение вредоносного... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Дык Перл я привел для примера. Во-первых, ты очень не прав... 26.10.05 23:21  Число просмотров: 1117
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> В том же C++ хедер можно подключить и в командной строке, и
> мейкфайле, и в настройках проекта для IDE. Это относится к
> реализации. А конструктор в том же C++ можно вызвать и
> неявно, простым объявлением переменной нужного типа. И это
> опять таки связано именно с реализацией, а не с парадигмой.

> Во первых по сравнению с расходами на САМ перл, эти расходы
> уже не очень значительны и опять таки они никак не связаны
> с ООП. В C++ информация о классах ПОЛНОСТЬЮ теряется на
> этапе компиляции (кроме динамического полиморфизма и RTTI,
> но это другая история). В конце концов код получается
> совершенно идентичным. Вызов метода - просто вызов функции
> (ей еще помимо явных аргументов передается неявный this, но
> это тоже особенности реализации).
>
> Так зачем писать на перле? :-)
Дык Перл я привел для примера. Во-первых, ты очень не прав насчет "вся информация о классах теряется при компиляции". Представь себе, что объекст создается в результате работы switch, причем имя объекта при любом из условий будет одним и тем же. Стало быть информацию о классах хранить все же надо.

Но я говорил больше не об этом. Вот примерный код метода header:

sub header {
 my ($http_head, $name, $content);
 shift;
 if (!@_) {$http_head="Content-type: text/html\n"}
 if ($_[0]!~/^-/&&$_[0]=~#^\w+/\w+$#) {
  $http_head="Content-type: $_[0]\n";
  shift;
 }
 while (@_) {
  $name=shift;
  $name=substr $name, 1;
  $content=shift;
  $http_head.="$name: $content\n";
 }
 return "$http_head\n";
}

---

Это я, конечно, на вскидку прикинул - на деле там еще больше условий и проверок, но бредовость использования такого метода для простого вывода "Content-type: text/html", думаю, очевидна. Конечно, этим же страдает почти любая библиотечная функция, а не только методы объектов, но один из постулатов ООП гласит о том, что "пользователя не должно заботить, что происходит внутри объектов". Это и приводит к тому, что появляются совершенно идиотские применения ООП. А если бегиннерса начинать учить сразу с такого безобразия, то что из него вырастет?

> Вывести CGI хедер с типом text/html
> Теперь скажи мне, что точнее отражает СУЩНОСТЬ
> происходящего?
>
> Никто не мешает, но попробуй доказать, что код который НЕ
> НАДО комментировать (самокомментирующийся) чем то хуже
> того, который надо. Сама возможность писать без
> комментариев говорит о том, что такой код ПОНЯТНЕЕ.
Объясни мне такую вещь: если оператор "print" мне И ТАКПОЛНОСТЬЮПОНЯТЕН, то для чего мне делать его ЕЩЕ БОЛЕЕ ПОНЯТНЫМ?


> Опять двадцать пять. Объектный подход ближе к МЫШЛЕНИЮ
> человека и не имеет никакого отношения к школе вообще. Да и
> функциональное программирование настолько же далеко от
> процедурного, как и объектно-ориентированное.
Вот простая программа, соответствующая человеческому мышлению (по аналогии с Паскалем):

Название "хорошо провести время";

Процедура "попить пивка";
Начало
 Пойти на кухню;
 Открыть холодильник;
 Достать пивка;
 Попить пивка;
 Вернуться;
Конец;

Процедура "пойти покурить";
Начало
 Пойти на лестницу;
 Достать сигарет;
 Покурить;
 Вернуться;
Конец;

Процедура "купить" ("продукт питания");
Начало
 Найти денег;
 Пойти в магазин;
 Купить "продукт питания";
 Вернуться;
Конец;

Начало
 Если нет(пивка) то купить(пивка);
 Попить пивка;
 Если нет(сигарет) то купить(сигарет);
 Пойти покурить;
Конец.

---

Не знаю, как ты, amirul, но лично я обычно рассуждаю именно так. Строго, последовательно, процедурами. Ни о каких объектах я и думать не думаю. Возможно, ты сейчас скажешь, что, мол, "на подсознательном уровне ты всё равно оперируешь объектами", но я тебе отвечу, что оно на подсознательном уровне - в этом пускай разбираются психологи и философы, а не программисты. А я думаю так как я думаю.

> Кстати, очень хочу как нибудь выкроить время и ознакомиться
> с haskel, lisp, ml (ocaml). Для расширения кругозора

Ну, фразы "функциональное программирование" я не произносил, а произносил слово "функции". ИМХО, имею на это право (в том же Паскале есть слово такое зарезервированное: Function). Если говорить о функциональном программировании, то я не шибко крутой спец, однако Lisp мельком пробегал - полная ахинея, ИМХО, и выделять это самое как отдельную парадигму я бы не стал. По сути та же самая процедурная парадигма с небольшими нововведениями (сомнительными) и кучей кастраций. Кстати, тот же Lisp тоже не чисто функциональный - там есть практически все элементынормальногопроцедурного языка. А вот непонятно с чего ты несколькими постами выше Си не отнес к функциональным, а Perl отнес "отчасти"? Единственная разница между Си и Перл, которая хоть как-то приближает последний к Лисп - это возможность возвращать в качестве результата функции списки и наличие команды eval. Хотя и то и другое к самой парадигме функционального программирования не имеет отношения, насколько я понимаю. Ну да это оффтоп уже, да и тема ИМХО не шибка интересная, чтобы ее обсуждать.

> > 4. Насчет строк, массивов и переменных. Кто-то из
> философов
> > сказал: "Не надо плодить сущности без надобности".
> Чтобы
>
> Это Оккам был
Спасибо :)

> > работать со всем перечисленным, надо в любом случае
> > понимать, что это такое на уровне структур данных.
>
> ЖЕЛАТЕЛЬНО. Но не обязательно. Беггинеру и вовсе не нужно
Видимо, мы друг друга не правильно поняли. Я не имею ввиду, что бегиннерсу надо объяснять про принципы, что массив - это последовательная область памяти, которая рассматривается как набор переменных, для получения доступа к которым используется смещение от нулевого элемента массива и пр. и пр. Достаточно сказать, что "массив - это упорядоченный набор переменных, к которым мы обращаемся по номеру". Точно так же "строка - массив символов". Я привел минимальное определние, без которого работать вообще невозможно (хотя насчет строк это утверждение и сомнительно, ну да не суть важно). Никакие объекты уйти от того, что я сказал в кавычках, не помогут, как не крути. Да и потом это и так просто, для того, чтобы прикручивать сюда еще какие-то абстракции.

> >Дополнительновспоминать в данном случае о ООП -
> излишняя
> > нагрузка информацией, которая по сути является
> абстракцией
> > и не несет никакого прикладного смысла.
>
> Как это излишняя? Избыточность практически всегда несет
> единственный смысл - помехозащищенность. Во всем начиная от
> человеческой речи, контрольных сумм для архивов и
> заканчивая грамотной типизацией ЯВУ. Чем более избыточный
> язык, тем меньше будет ошибок в программе на нем. Только
> надо сделать так, чтобы избыточность не раздражала
> программеров (они таки зачастую лентяи), а то вообще не
> будет никаких программ на этом языке.
Вот опять. Объясняю еще раз: избыточность - это замечательно. Но есть такой уровень, после которого избыточность уже перестает играть какую-то роль, так как возрстание объема начинает оказывать всё меньше эффекта на помехозащищенность. Я это говорю не о тенденции в целом, а о конкретных цифрах.

> А ООП - всего лишь способ структурирования информации и
> уменьшения количества взаимосвязей во все возрастающих
> программах
У тебя одержимость "все возрастающими программами"? Ещё раз (чисто для избыточности): мы говорим про бегиннерсов. Бегиннерсы не пишут "большие проекты". Они пишут "калькулятор", "звездное небо" и "угадай число".


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

>
> > инвалид получается (кстати, если возвращаться к тому
> коду
> > на Perl, что я привел выше, то основная масса людей
> > использует именно первый способ, а не простой print,
> именно
> > потому, что по-другому они не умеют - а из-за этого
> > огромные потери и падение эффективности).
>
> Ну насчет огромных ты погорячился. Перл все таки умеет
> прекомпилировать и "огромная" потеря выйдет только после
> первого раза. Кроме того, если в твоем случае так важна
> эффективность советую писать на C/C++. Выводить на stdout
> они умеют не хуже перла, библиотек регекспов до фига, а
> скорость вырастет в разы (если не на порядки).
Оффтоп, конечно, но в вебе использование Си не спасает. Тут надо прикручивать либо Fast CGI, либо mod_perl. Кстати, большого падения производительности mod_perl по сравнению с Fast CGI-скриптами на Си я не замечал.
<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-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach