Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
maXmo wrote: > ну маздай ваяет Индиго. По отрывочным описаниям похоже на этот > Smalltalk, а по сути это простой ActiveX. с этого места - поподробнее, плиз... "язык похож на компонент"? -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 16:17 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
AIMнадо запретить компьютеры в целом, ибо они есть вселенское зло! Все капутеры собрать, да сжечь. От них все зло ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 21:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод автор во-вторых, то, что объекты представляют собой хорошую модель для большинства сущностей реального мира. получается что объекты реального мира моделируются другими (какими ?) объектами я не понимаю, что такое "обьекты реального мира". особенно если слово "обьект из этого предложения" есить синоним к слову "обьект из ооп". если слово "обьект из этого предложения" похоже на слово "сущность", то может, чтото понимаю. возможно это ответ на Ваш вопрос? http://www.softcraft.ru/paradigm/process/pr01.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2006, 00:21 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
lockyс этого места - поподробнее, плиз... "язык похож на компонент"?не совсем. Компонент похож на объект. То есть будут объекты и они будут обмениваться сообщениями как компоненты или объекты Smalltalk вместо прямого вызова мотодов. Вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2006, 00:29 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Филип ВадлерОднако... Я работаю в Bell Labs, где были изобретены С и С++. В сравнении с пользователями С, "никто" - достаточно точная оценка числа пользователей функциональных языков. Сторонники функциональных языков заявляют, что они на порядок улучшают производительность. Эксперименты не всегда подтверждать, эту цифру - иногда они показывает улучшение только в четыре раза. Однако, не стоит пренебрегать кодом, который в четыре раза короче, в четыре раза быстрее писать, или в четыре раза проще поддерживать. Так почему же функциональные языки не используются более широко? http://www.softcraft.ru/paradigm/fp/whynotfp.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2006, 04:22 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Чингиз! tchingiz Филип Вадлер...в четыре раза быстрее писать... Ох...?! Для меня пока - не быстрее. Хотя в целом я - ЗА! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2006, 11:49 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizесли слово "обьект из этого предложения" похоже на слово "сущность", то может, чтото понимаю. ну да, конечно так: "сущности" реального мира моделируются обьектами ооп, т.е. реальный самолет в небе моделируются обьектом класса "самолет" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 12:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
тема - Программирование/будь моя воля, я бы вообще ООП запретил. /ответ писал в оффлайне, пардон, если не совсем в тему/ Тема, конечно, интересная. Хотелось бы спросить следующее - нафига вообще вы загоняетесь? У каждого метода и подхода есть свои плюсы и минусы. И программирование также может применяться для разных целей. Если для написания/воплощения чистых алгоритмов - то здесь (возможно) можно обойтись и без ООП - в контроллере лифтового механизма или привода дисковода оно вряд ли понадобиться :). Но если понадобится создать что-то более глобальное, может быть уже такой вариант, когда процедурное программирование либо не пройдёт, либо будет приближаться к программированию объектно-ориентированному. Как я понимаю, (применительно к C++) при достаточно большом количестве функций может возникнуть необходимости разделения области видимости, что может быть представлено префиксами (пример - D3DXVec3Add), namespace'ами, или классами. Так же исходный код может быть разбит по смыслу на отдельные блоки, в которых ограничены области видимости, и есть статические переменные, которые не видны из других блоков/модулей (*.c, *.cpp). А разве это не есть вариант воплощения класса? Что касается различных "наездов" на различные языки программирования. Во-первых, каждый язык предлагает инструментарий, более или менее направленный на какой-то специфический блок проблем. Я помню, что кто-то (кажется, это был создатель EMacs :), хотя я в этом не уверен), осуждал практику, когда происходило повальное переучивание (где-то в 70х, кажется?) программистов с COBOL на C++, так как COBOL был ПРЕДНАЗНАЧЕН для работы с базами данных, а в C++ это было нетривиальной задачей. Ряд современных языков ТАКЖЕ имеют свое специфическое направление - есть ведь Lisp, Perl, Python? Это ведь чисто абстрактные интерпретируемые языки, позволяющие легко рашать задачи, не генерируя машинный код! А строки в Паскале? Можно, конечно заниматься мазохизмом, и работать со строками в C++ "по-старинке" (я сам так и делаю), но сейчас уже часто под это делают классы, которые являются всё-таки довольно грубым и трудоемким воплощением того, что в Паскале уже встроено. Java, про которую здесь тоже упоминалось, тоже имела специфическую задачу, как я понимаю - верх кросплатформенности. И она, как я понимаю, этим языком выполняется, так как формат кода для всех систем одинаков, хотя и не соответствует ни одному реальному железу. Во-вторых, если неудобно пользоваться языком - не пользуйся! Только нафига его при этом объявлять "попсой" и "плохим языком"? Что касается ассемблера, который здесь упоминался, я помню, видел то ли "аддон", то ли пакет макросов под MASM, который позволял использовать объектно-проектированное программирование в ассемблере. :) Вообще, последние варианты конкретно MASM, которые я видел, уже очень сильно приближаются к языкам типа Pascal и C++ - один макрос INVOKE чего стоит. Вообще, меня задел наезд на Дельфи. Я с неё начинал работать, и, хотя сейчас сижу на Visual Studio 2003, и программлю под C++, ещё не встречал другого такого же удобного в работе инструмента. Кроме того, Паскаль (который здесь фиг знает почему обозвали), в том варианте, который используется в Delphi (хотя и оригинальный тоже был неплох), имеет ряд вещей, которые в C++ ОТСУТСТВУЮТ. это: 1) оператор with. при его помощи можно временно расширить локальную область видимости так, чтобы в неё попали поля структуры. в C++ такого нет, можно использовать схожий вариант с ссылками (some_type& a), если структура многократно вложенная. 2) встроенный тип "set" - "множество" с логическими операциями. можно объявить свой тип данных - enum, или ограниченный целый (в пределах каких-то чисел, например, от 2 до 63), а потом создать по нему множество в котором каждый из элементов может присутствовать, а может и отсутствовать :). В C++ такое надо делать при помощи классов и париться, хотя в C++ можно обойти встроенное паскалёвское ограничение на максимум 256 элементов во множестве. (во внутреннем представлении оно представлено битовым массивом размером до 32 байт).Обалденно удобная вещь - set of char - при написании, например строкового парсера им удобно задавать набр символов, которые, например, отсекаются. 3) property. property - это открытое поле класса, каждое обращение к которому транслируется (на запись, считывание) компилятором (по выбору программиста) либо в вызов какой-то процедуры, либо в доступ к переменной. property может быть КАК БЫ виртуальным(многократно переопределяться), может ограничить доступ (т.е. не давасть записывать в поле, или считывать из него). При помощи property в VCL(Visual Component Library) реализовали способ построения классов, при котором ПОЛНОСТЬЮ(90%) закрыт доступ к их содержимому - т.е. работа с классом осуществляется исключительно через методы (само собой, из-за использованиия property). Это правило сохраняется в большинстве классов VCL. Похожий (но не такой же) механизм есть в COM, насколько я помню, но он не является встроенным механизмом C++; Отсутствие property как раз и представляет основную сложность при работе в C++ после Delphi. Для меня, по крайне мере. 4) в Delphi МОЖНО ВЗЯТЬ УКАЗАТЕЛЬ НА МЕТОД КЛАССА, НЕИЗВЕСТНОГО НА ЭТАПЕ РАЗРАБОТКИ! Как я понимаю, в C++ эта задача принципиально неразрешима. в Delphi такой указатель объявляется как "function of object"; и занимает 8 байт - как я понимаю, 4 на метод, и 4 - на базовый указатель объекта. 5) Виртуальный конструктор. Фиг знает, каким образом он реализован, но он есть. 6) динамические методы. (dynamic) в принципе, почто то же, что и виртуальные, но храняться в отдельной таблице динамических методов, в которой записаны только методы, ПЕРЕОПРЕДЕЛЁННЫЙ В ДАННОМ КЛАССЕ. т.е. - занимает меньше места, чем виртуальные, но больше времени уходит на вызов (лезет по родителям, если надо). С ДРУГОЙ стороны, в C++ есть механизмы, которые принципиально невозможны в Delphi, это: 1) Макросы. Хотя Microsoft и использует их активно, чтобы приблизить свои программы к чёрной магии, когда программа на практике оказывается совсем не тем, чем она кажется (попробуйте объявить в C++ проецедуру CreateWindow(), включить <windows.h> а потом вызвать эту процедуру! Получите ошибку о том, что "недостаточно параметров для макроса CreateWindow", хотя системная функция вообще-то выглядит как ФУНКЦИЯ а не макрос, и перегрузка функция должна (по идее) корректно срабатывать :)), макросы всё равно представляют собой очень мощный механизм, которого в Delphi нет, или есть в зачаточном состоянии - директивами {$IFDEF} {$ENDIF} 2) template'ы. очередная зубодробительная в применении фича языка. В Delphi отсутствует. В C++ неудобна (хотя и очень полезна время от времени) тем, что требуется создать экземпляр tempalte'а, чтобы его отладить. До тех пор ошибки в нём вообще ( как я помню) не обнаруживаются). 3) операторы. В Delphi нельзя создать собственные операторы сложения и вычитания для своих типов данных. С другой стороны, в C++ есть ограничение на то, что оператор может создаваться только для КЛАССА - т.е. я не могу использовать их на типах, полученных через typedef. 4) множественное наследование. в Delphi невозможно. Возможна реализация через включение. 5) битовые поля. Возможность создать в структуре поле размером меньше байта, или равное, например, 9 бит. Microsoft о таком, судя по всему, не подозревает, так как все виндовские многочисленные поля "ФЛАГОВ" нааамного было бы объявить как раз таким типом данных. Вот пример воплощения поля Flags из WIN32_FIND_DATA: [fix] union{ DWORD flags; struct { //#define FILE_ATTRIBUTE_READONLY 0x00000001 unsigned readonly: 1; //#define FILE_ATTRIBUTE_HIDDEN 0x00000002 unsigned hidden: 1; //#define FILE_ATTRIBUTE_SYSTEM 0x00000004 unsigned system: 1; //#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 unsigned rsvd: 1; unsigned directory: 1; //#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 unsigned archive: 1; //#define FILE_ATTRIBUTE_DEVICE 0x00000040 unsigned device: 1; //#define FILE_ATTRIBUTE_NORMAL 0x00000080 unsigned normal: 1; //#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 unsigned temporary: 1; //#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 unsigned sparse_file: 1; //#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 unsigned reparse_point: 1; //#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 unsigned compressed: 1; //#define FILE_ATTRIBUTE_OFFLINE 0x00001000 unsigned offline: 1; //#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 unsigned not_indexed: 1; //#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 unsigned encrypted: 1; }file_attrs; };[/fix] Это краткое сравнение языков не говоря уж об удобстве интерфейсов, справочной системе, а также размере минимального приложения под Win32(WinAPI) - в Дельфи - 16 кб (зависит от версии), в C++ (если не извращаться) - 40 кб. Если извращаться, то 4 кб, но нужно будет попариться и "открутить" стандартную библиотеку, что кое-кому может и не быть "по зубам". 2 Ortodox_programmer, Silly Cat: Знаете, я читал то, что вы тут понаписали, и у меня действительно мысль была о том, что тут без грибов не обошлось :). Я, например, не вижу связи между ООП и тем, что вы понаписали про Гитлера, Сталина, заговор против России и т.д. и т.п.. По-моему, с таким же успехом можно было бы обвинять, допустим, микроскоп в начале второй мировой войны. ООП - это инструмент. А инструмент не может нести пользу или вред сам по себе - это зависит от того, кто и в каких целях его использует. (Молотком можно забивать гвозди, а можно и кого-нибудь им стукнуть, например :)) А какой инструмент и язык вы используете зависит только от вас и поставленной вами задачи. Вероятнее, программу для построения списков всех файлов на диске с последующим написанием их имён транслитом легче выполнить процедурным подходом. Прогу, которая будет на экране что-то рисовать, причем тип рисуемых объектов на этапе разработке неизвестен, ну уж явно легче написать, используя ООП с виртуальными методами. Вообще, ИМХО, вопрос стоит о типе мышления - процедурный код предполагает чисто алгоритмический тип + логический(кто чего после чего сделал), а ООП предполагает мышление абстрактное/образное - т.е. построение объектных моделей. А уж на вопрос "КАК ЛУЧШЕ ДУМАТЬ" каждый уж точно ответить по-своему. И, по сему, ИМХО, попытка запретить использовать ООП есть попытка запретить мыслить образами/символами, то есть изначально бессмысленна. P.S. Ещё раз пересмотрел форум и наткнулся на фразу: Что их, да, можно будет использовать другим программистам. Но что ВНУИРЕННОСТЬ этих объектов БУДЕТ ДЛЯ НИХ НАВСЕГДА И ПОЛНОСТЬЮ ЗАКРЫТА!!!!! Это полностью аналогично тому, как в этой стране имела хождение идея ВЦКП.... Извиняюсь, но причём тут ВЦКП? :) Идея-то состояла в том, чтобы класс с точки зрения программиста приближался к той абстрактной концепции, которую он представляет, и программист не забивал себе мозги фигней касательно того, как эта концепция была воплощена. :) Просто - ДЛЯ УДОБСТВА РАБОТЫ! И нечего тут "идею заговора" раздувать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 15:25 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
автородин макрос INVOKE чего стоитон выглядит особенно забавно, когда его аргументы записаны в столбик :) ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 15:58 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод tchingizесли слово "обьект из этого предложения" похоже на слово "сущность", то может, чтото понимаю. ну да, конечно так: "сущности" реального мира моделируются обьектами ооп, т.е. реальный самолет в небе моделируются обьектом класса "самолет" это так хорошо звучит, пока Вы обсуждаете один класс. множество классов - удовлетворяет условию Цорна - любое линейно упорядоченное подмножество классов ( наследование может рассматриваться как отношение меньше равно на множестве классов) имеет минимальный элемент. Линейно упорядоченное - это цепочка наследования. Минимальный элемент - самый первый родитель в цепочке. Так вот, есть большие подозрения считать, что множество "типов" сущностей "реального мира" далеко не удовлетворяет этому условию. )))))) Даже в математике (не говоря уже о "реальном мире") есть масса контрпримеров. например, рациональные числа есть. убывающей цепочки может не быть. группы - убывающей (возрастающей) цепочки из нормальных абелевых фактор групп быть не обязательно. косвенным свидетельством тому, что мир не описывается системой классов может служить тот факт, что иерархические базы данных не пошли в жизнь. Сейчас их безуспешно пытаются реанимировать под видом обьектно ориентированных баз данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 23:32 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
по поводу безуспешных попыток реанимации оо баз, можно заглянуть в в надреляционный манифесте Григорьева. Там есть ссылки на ооб манифесты. http://users.iptelecom.net.ua/~agp1/ru/u-gene3.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 00:36 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizмир не описывается системой классов Так я об этом и говорю: мир надо моделировать математическими моделями и с ними работать - только тогда появляется твердая почва под ногами. А что касается БД - то вся обработка данных отвергла ООП на корню - только процедурно-функционально-декларативное программирование (таблицы, sql, pl/sql, t-sql, 4gl и пр.). Затея с ООБД провалилась лет 10 назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 09:18 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
2 ErV В целом поддерживаю. Добавлю. На меня произвела впечатлене статья Н.Вирта Хорошие идеи: взгляд из Зазеркалья. Рекомендую всем почитать. (в скобках... я не до конца согласен с точкой зрения магистра ... м-м-м.. по поводу Функционального программирования, хотя в процессе чтения, я часто вскакивал со стула и выкрикивал - Да! Точно-точно! Так и есть! и т.п.). P.S. А кто сберёг? Коробейников! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 11:09 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Компьютеры не будут долго существовать: появятся новые вычислительные системы, вроде серверов, а программы будут запускаться с них. Все, что будет у пользователя - монитор. ООП - штука хорошая! Зря вы про нее. Лучше и быстрее все равно не придумать. Си вечен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 11:57 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Вирт Объекты - это записи, классы - это типы, методы - это процедуры, а посылка сообщения эквивалентна вызову процедуры. про посылку сообщения - есть синхронный вызов процедуры - традиционно. и есть асинхронный вызов процедуры - посылка сообщения. в Qt эта мысль почти явно сформулирована через слоты и сигналы. А при такой трактовке посылок сообщений - обьект надо называть процессом. он чето сам себе вычисляет и обменивается данными с другими процессорами через слоты. Вот в RSL процессом называется функция отображающия void в void и имеющая доступ к абстракции, называемой каналом данных (читай слот в терминах QT) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 22:35 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Майтон, а кто такой Коробейников. статья хорошая. ща положу в ебуки )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 22:36 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
Вирт Поэтому x = y не означает то же самое, что y = x. ВиртПоэтому явно плохой идеей является объяснение сложного набора особенностей и возможностей языка в толстых томах руководства. В действительности язык характеризуется не столько тем, что дает нам возможность программировать, сколько тем, что удерживает нас от использования недопустимых конструкций. Как заметил Дийкстра, наиболее трудной, ежедневной задачей программиста является недопущение беспорядка. Первичная и наиболее благородная обязанность языка состоит в том, чтобы помогать программистам в этой нескончаемой борьбе. сравнить с Фокспро у которого сравнение строк не симметрично. (было атлист) а на 857 странице руководства обьяснен параметр, который позволяет сделать эту операцию симметричной опять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 23:23 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizкто такой Коробейников. статья хорошая. ща положу в ебуки )) Коробейников - персонаж из " 12 стульев " Ильи Ильфа и Евгения Петрова. Да. Статья действительно хорошая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 10:02 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingiz Вирт Объекты - это записи, классы - это типы, методы - это процедуры, а посылка сообщения эквивалентна вызову процедуры. Там есть продолжение Вирт Выражает ли это изменение терминологии существенное изменение парадигмы, или же это всего лишь маркетинговая уловка? Этот вопрос остается открытым. имхо Вирт фактически сам и ответил на этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 10:45 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
коробейников --> ))) эта. Мод, так а что фактически Вирт ответил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 23:44 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
tchingizа что фактически Вирт ответил? ну если сам Вирт сомневается в самостоятельности парадигмы ООП (которой уже 25 лет !), то очевидно он считает это именно маркетинговой уловкой, просто боится об этом прямо сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 09:43 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
модто вся обработка данных отвергла ООП на корню Это врядли. Я сейчас как глупый кот начну экскурсы в стечения обстоятельств, приведшие к сегодняшней дурацкой ситуации. Ну кто бы мог думать 30-50 лет назад,что идея использовать магнитофон как дешевое (но медленное) устройство хранения данных приведет к настоящим войнам между сторонниками ООСУБД и РСУБД коих и на сём ресурсе немало . Или вот если бы вдруг люди бы стали широко пользовать персистентную оперативную память (а была такая - магнитофорритовые колечки например), да сделали бы ее еще переносимой - кто знает, о чем бы мы спорили сейчас. То есть получается, что ComputerScience он не только определяет технологию (как делают это другие Sciences) и даже не столько определяет технологию (потому как ведущие производители часто на этот самый Science забивают, благо это, например, не физика, где пренебрежение наукой чревато всякими падениями, взрывами и тп катастрофами), но и определяется используемыми технологиями. Другими словами мы сначала чего то делаем, а протом выясняем(иногда), что жы мы наделали и какнам теперь отсюда выбираться и куда убегать. Последнее обстоятельство имеет крайне забавный побочный эффект. Исходя из физических законов нельзя пострлоить действующий вечный двигатель. А программу, которая бы выполнялась , но при этом нарушала некоторые логические законы написать можно (разве Вытаких не видели?). То есть она работает-работает-работает.... но местами как то не так и результат какой то неожиданный. :) Ну и вместо того, что бы пытаться разобраться ,посидеть, подумать головой, чел истерически пишет доработки, заплатки и т.п. вещи. А на самом деле лет 30 назад была опубликована статья, в которой математически доказано, что то,чего это чел пытается добиться - невозможно. Но программа то сушествует! .exe файл то есть! он же выполняется ! И вот чел упрямо наступает на грабли, на которые до него наступали множество других людей, и найдутся другие, кто на эти грабли снова наступит. А все потому, что у самого голова дотумкать до невозможности не позволяет, или времени на это нет, а статьи 30-летней давности читать... да кто про них вообще помнит?...быстрей, быстрей надо невозможного результата добиться... И это касется не только любителей. Надысь я поприсутсвовал на семинаре одного известного специалиста (русского по происхождению) где он говолрил в частности о том, что всякие работы касающиеся XML (этого новомодного течения) и особенно XQuery во многом пересекаются и даже повторяют 20-30 летней давности работы, касющиеся всякого рода иерархий. В общем прозвучал мысль, что во многом все это уже исследовано и мы идем по второму кругу. И за всякими новомодными штуками люди забывают о том, что любая информационная система, есть набор неких переменных и должна реализовывать некий набор операций. Были иерархии, сети, объекты, сейчас время XML. И каждый раз это выгляжит как "о! Что-то новенькое – может с этим новым у нас что-то получится? Может это даст нам наконец серебряную пулю и мы наконец то перестанем страдать от сложности?". Но часто всего то и нового-то - лишь названия обозначающие те же значения, переменные и операции. ИМХО весь неблагодарный програмисткий труд можно описать простой фразой – программист определяет новые переменные. Самое глвание здесь – понимать термни "переменная" достаточно широко. Переменная – это такая реализуемая системой штука, которая хранить информацию. Например, окно на экране, объект класса, таблица реляционной БД – это все переменные. Кому нужны эти переменные? Конечно пользователю. Это может быть и банальный юзер – с его точки зрения данные храняться именно в окне (потому что он их туда вводит и там видит), а набор полей вводы ( и вывода) и кнопки есть не что иное как интерфейс. Это может быть программист БД, который работает с таблицами и использует в этой работе специальный язык, позволяющий создавать уничтожать переменные–таблицы и менять их содержимое (данные). Это может быть быть и брат-программист, пользующий созданный тобой класс. Почему я завел разговор о переменных? Есть такой умный дядька Ф.М.Турчин. Он написал оченнно полезную для программистов книгу - "Феномен науки. Кибернетический подход к эволюции" . Если Вы доберетесь до главы 3 и, далее, до главы 5, Вы всенепременно (если Вы конечно думающий программист) заметите для себя что-то очень знакомое. Могу подсказать – читая, попробуйте заменить слово "система" (как его использует Турчин), на слово "переменная"….ну или на слово "объект". Идея в том, что для набора систем (ой…переменных) , появляется управляющая подсистема система (ой…программа) и, в результате возникает метасистема (ой...переменная – смотри предпредыдущий абзац). Понятно, что программисты именно тем и занимаются, что эти метасистемы описывают. При чем здесь ООП? Припоминая о чем эти три буквы, я с уверенностью могу сказать – в них нет ни капли о том, что мы должны получить. Объектно-ориентированная парадигма не определяет результат, не описывает конкретно, что же должна представлять из себя возникшая метасистема, какие функции она должна выполнять. Она может выглядеть как угодно и делать все что угодно. ООП не фиксирует результат – она описывает способ достижения результата. Другими словами ООП – это не парадигма системы (это дело моделей данных и моделей систем, которые в точночти опрелеяют то, чем является результат). ООП – это парадигма и методология метасистемного перехода , т.е. перехода от набора простйших систем-переменных (а, фактически, от набора типов, который эти переменные описывает) к набору гораздо более сложных метасистем (к набору сложных типов) – любых типов (в том числе и таких, которые реализуют требуемый результат). ИМХО метасистемный переход реализовывался и реализуется в программах постоянно. Например, первые рел. СУБД возникли, когда ОО-трансляторы находились в зачаточном состоянии. То же самое можно сказать про первые системы использующие парадигмы окон. Однако эти системы реализуют метасистемный переход, потому как и окна и таблицы – это переменные с точки зрения их пользователей. Как видно, их можно создать и без использования ОО инструментов. Однако отсутсвие ОО-инструментов делают описание метасистемы трудным делом. Дело в том, что ОО интрументы позволяют разбить процесс описание метасистемы на промежуточные шаги и привносят некий общий подход к описанию интерфейса этих промежуточных метасистем и к их использованию. Метасистема, описанная одним программистом ,может использоваться как элементраная сисетема в работе другого программиста. Нелишне также понимать, что ОО-подход так или иначе и хотя бы частично реализовывался даже на неООинструментах (например в 90-х я реализовывал на С оконный интерфейс, так дело дошло до того, что в Сишные струкутры были добавлены указатели на функции и обращение к ним было сродни вызова полиморфного метода) хотя возможно, программисты(как я) и не понимали, что такого рода танцы с бубном так или иначе являются ОО-подобными. tchingizТак вот, есть большие подозрения считать, что множество "типов" сущностей "реального мира" далеко не удовлетворяет этому условию. )))))) Я в последенее время все больше на чинаю подозревать,что вообще не стоитобращать внимание на "сущности реального мира". Я уж не говорю про желание каким то образом разклассифицировать эти сущности по типам, видам, связям и .т.п. Программисты наивные люди! Думают,что они создают модель мира! Фигушки! они создают модель восприятия реального мира конктретным Васей Пупкиным (возможно самим программистом). А поскольку у кадждого свое восприятие, то все, что нужно – это богатая система типов, позволяющая описать любое восприятие. мод Так я об этом и говорю: мир надо моделировать математическими моделями и с ними работать - только тогда появляется твердая почва под ногами. А что касается БД - то вся обработка данных отвергла ООП на корню - только процедурно-функционально-декларативное программирование (таблицы, sql, pl/sql, t-sql, 4gl и пр.). Затея с ООБД провалилась лет 10 назад. ИМХО они просто не умели их готовить. :) Иерархии и ООП реляционной модели данных не противоречат - вообще никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 16:44 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
автор Фигушки! они создают модель восприятия реального мира конктретным Васей Пупкиным гы то есть, если сначала Васе Пупкину хорошо прополоскать мозги на курсах по введению в оопрограммирование, он сразу будет думать, что воспринимает мир как множество обьектов ( с наследованием, инкапсуляцией и полиморфизмом) и ему можно удобно вешать лапшу на уши по поводу разрабатываемой для него программы? Правильно ли я Вас понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 23:28 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
авторЕсть такой умный дядька Ф.М.Турчин. Он написал оченнно полезную для программистов книгу - "Феномен науки. Кибернетический подход к эволюции". сенкс положу в книги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 23:29 |
|
||
|
Будь моя воля, я бы ООП вообще запретил!
|
|||
|---|---|---|---|
|
#18+
мод tchingizа что фактически Вирт ответил? ну если сам Вирт сомневается в самостоятельности парадигмы ООП (которой уже 25 лет !), то очевидно он считает это именно маркетинговой уловкой, просто боится об этом прямо сказать )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2006, 00:33 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33775301&tid=1346688]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 436ms |

| 0 / 0 |
