Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.49.59] |
|
Страницы: (10) 1 2 [3] 4 5 ... 9 10 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Цитата pattern matching Появился ещё в 70-х годах прошлого века. Это наше будущее? |
Сообщ.
#32
,
|
|
|
И это форум программистов
Прикреплённый файл_____________________________________.png (34,46 Кбайт, скачиваний: 1294) Добавлено [img]http://forum.sources.ru/index.php?act=Attach&type=post&id=3652736&attach_id=48774[/img] |
Сообщ.
#33
,
|
|
|
Цитата Исмаил Прокопенко @ Важность формы представления задачи трудно переоценить. Иногда чтобы решить задачу достаточно выбрать правильную форму её представления и решение станет очевидным. Неверно. Форма представления всего-лишь определяет путь решения задачи. А после этого этим путем нужно пройти, то есть, написать тот самый миллион строк plain text. И, хотя путь будет очевиден, работающей программы (и решения задачи) по-прежнему не будет, пока plain text не будет написан. Цитата Исмаил Прокопенко @ Поэтому то так важно, чтобы разрабатываемую программу можно было представить в компактной, наглядной и удобной для анализа форме. Опять неверно. Изменение точки зрения (залезть на колокольню) всего-лишь облегчает выбор пути, расширяя горизонты. Но это не является решением задачи. Экономия времени существует лишь одна - если с колокольни видно, что уже существует программа, которая решает ТЗ с приемлемой точностью. А для этого нужно, чтобы прога была уже написана. Все это поняли еще в прошлом веке, когда изобрели модуль под названием "библиотека". То есть, начали повторно использовать код, написанный кем-то другим. Но тут (как обычно) возникает задача "не увидеть за деревьями леса". То есть, в этом хламе из готового кода, нужно ориентироваться. И эту задачу с собственных плеч все время пытаются переложить на чужие - то на компилятор, то на ИИ. И по-прежнему безуспешно. И далее все будет точно также мрачно и беспросветно. Потому что критерии точности и приемлемости выходных данных можно определить только лично. А вот желания это сделать - нет. Отсюда и проблемы. И это - вечные проблемы. Они нерешаемы в принципе. Plain text является абсолютно точным инструментом изложения алгоритма, поэтому он незаменим (как и клавиатура). Все попытки подменить точность какой-то бредовой аморфной нечеткой логикой обречены на провал. Pavia очень хорошо упомянул об ограниченности любой программы. Я лишь скажу больше - всякая программа статична. То есть, она верна только на момент ее создания и только на входных данных, используемых при тестировании. А в реальных условиях эксплуатации в ней начинают всплывать баги. Потому что она начинает работать с другими данными. И прога бессильна снять с себя эти ограничения, которые в нее были заложены программистом. Ни ИИ, ни прочие CASE-средства (Computer Aided Software Engineering) самостоятельно это решить не могут, потому что творцом программы всегда является человек, а они (CASE и прочее) - всего-лишь инструменты помощи. Которые можно юзать, а можно на них забить. Но есть сроки, в которые нужно уложиться. И тут действительно есть фактор не уложиться в сроки. Но это не означает, что не придется писать код. К тому же, этот уже готовый код может продаваться по такой цене, что все сразу решат, что потратить в три раза больше времени на собственную разработку - очень выгодно. |
Сообщ.
#34
,
|
|
|
Вообще тема - баян.
Еще в 1975 году была издана книжка "Мифический человеко-месяц", которая по-прежнему актуальна. Все попытки попереливать из пустого в порожнее закончатся также бесперспективно - серебряной пули нет. И не будет. |
Сообщ.
#35
,
|
|
|
Когда появится такая супер система, то не нужны будут врачи, судьи, программисты и т.д.
Достаточно будет какого-нибудь верховного или конституционного суда (системного программиста, консилиума врачей и т.д.), чтобы давать пояснения на применение закона в случаях, где законодатель (системный программист и т.д.) нечетко что-то прописал или пропустил или были сделаны новые открытия в медицине и т.д. Абстракция растет, никто не загорает пикселы, чтобы нарисовать линию. Уже есть линии в квадрат, квадрат в куб и еще вращаться это может уже и т.д. Но даже с заливкой текстур это будет только мультфильм (вектор), а не кинофильм (растр), который передает всё многообразие окружающего мира да и то в плоскости. Как из векторов построить требуемый растр? Попиксельно только... Хотя сейчас по сути все программы - это мультики, собранные из кирпичиков. Только много этих разных кирпичиков, и не сложней ли в них ориентироваться будет в общем случае. Один человек не может знать всего даже уже известное человечеству. Нужна специализация и т.д. и что-то это уже напоминает идущую эволюцию. Хорошо, если на новом ветке ее спирали. Сколько всего в WinAPI, Net Frameworke'e, а есть еще и много всего разного и на разных платформах и с разной степенью абстракции и вложенности. А ближе к реальности - это юридические законы надо переписывать на алгоритмических языках, а не программы переписывать на естественном языке. На данном уровне развития. А потом появился 3D принтер, который строит дома. Только строит он их по другому принципу, а не из кирпичиков и слоя цемента между ними. А потом появился 3Д принтер, который напечатал другой 3Д принтер. Прогресс в ИИ не стоит на месте, куда-то все движется с разной степенью успешности. Краткосрочно - видно, долгосрочно - поживем, увидим мы или далекие потомки. А пока ссылка на ДРАКОН вот была. Может это и есть не самая плохая реализация этих идей на данном уровне развития. |
Сообщ.
#36
,
|
|
|
Цитата nash @ Только представьте во что превратится раскрытие строки:А ближе к реальности - это юридические законы надо переписывать на алгоритмических языках if( езда_в_пьяном_виде ) |
Сообщ.
#37
,
|
|
|
Цитата Славян @ Не осилить. с нечеткой логикой это делается на раз |
Сообщ.
#38
,
|
|
|
Цитата Даже в программе, написанной на объектно-ориентированном языке Именно ООП и есть зло. То обстоятельство, что многие пытаются запаковать в черный ящик свой код и выдать для других на выходе КОНФЕТКУ, а на деле получается что большинству нужна именно то что запрятано... И лезут более продвинутые через одно место поправлять, то что сделано другим. Отсюда и все беды. Ведь для того что бы сделать объект, который просто повторно использовать - тратится в десятки раз больше времени, нежели, если просто скопировать и вставить нужный код и обойтись функциональным программированием. |
Сообщ.
#39
,
|
|
|
Цитата cezar @ Именно ООП и есть зло. ну не знаю, не знаю. большинства стандартных компонентов мне хватало для своих нужд и править чето-там потребности не было. правда я уже давненько отошел от "десктопного" и системного программирования. пишу в основном для контроллеров |
Сообщ.
#40
,
|
|
|
Цитата cezar @ Именно ООП и есть зло. Поддержу коллегу. Вот существует стереотип, что якобы ООП якобы помогает бороться со сложностью задачи. Что в ООП путем разбивки задачи на классы и уменьшения связности/зависимости мы уменьшаем сложность задачи. Что разделение задачи на «интерфейс» и «реализацию» упрощает решение задачи. Вообщем, не буду рассказывать все стереотипы об ООП, про которые мы все знаем. Но давайте разберемся и вникнем в детали (реализации). Ведь, как известно, «дьявол в деталях»©. Говорят «интерфейс» и «реализация». А что такое «интерфейс» класса? А это ни что иное как список заголовков PUBLIC методов. А что такое «заголовок метода»? Это имя метода плюс список ТИПОВ его параметров. И вот мы подходим к ключевому моменту: А что такое «типы параметров»? А это не что иное как КЛАССЫ, которые описаны вне данного класса, и которые также имеет интерфейс. Бинго! Получается, что раскрутив всю логическую цепочку, мы видим, что фактически интерфейсом класса является СПИСОК ОПИСАННЫХ ВОВНЕ ДРУГИХ КЛАССОВ. А у тех классов интерфейс – это тоже список описанных вне их классов. И т.д. Короче, получается, что ВСЕ СВЯЗАНО СО ВСЕМ. Т.е. при ООП никакого упрощения программирования не происходит. Напротив, из-за того, что «ВСЕ СВЯЗАНО СО ВСЕМ» произошло существенное усложнение программирования. Миф об ООП развенчан. Спасибо за внимание. © Все права защищены. При цитировании этой информации где-бы то ни было, ссылки на меня обязательны |
Сообщ.
#41
,
|
|
|
Цитата Исмаил Прокопенко @ Так это ж круто, это ж как получить 2=2 : и красиво, и понятно, и ничему не противоречит! Короче, получается, что ВСЕ СВЯЗАНО СО ВСЕМ. Цитата Исмаил Прокопенко @ А это почему? Откуда появился этот вывод "Т.е." ? Т.е. при ООП никакого упрощения программирования не происходит. |
Сообщ.
#42
,
|
|
|
Цитата Славян @ Откуда появился этот вывод А поднять глаза на сообщение выше Вашего никак? Добавлено Цитата Славян @ Так это ж круто Ага. До тех пор пока не возникнет потребность что-то изменить. А такая потребность возникает постоянно Добавлено Цитата Славян @ Цитата Исмаил Прокопенко @ Так это ж круто Короче, получается, что ВСЕ СВЯЗАНО СО ВСЕМ. Если кто не понял - это была "гипербола" (литературный прием такой). Естественно что буквально когда "все связано со всем" реально не бывает. Я просто так эмоционально хотел показать свой негатив по поводу большого кол-ва возникающих запутанных связей при ООП. Так как хоть и не "все связано со всем" но реально кол-во связей при ООП возникает гораздо больше, чем пишут в книжках и учебниках Добавлено И получается что никакой "инкапсуляции" по факту нет Так ты не можешь изменить внешний класс "без оглядки" на тот, где он используется как параметр, поле или базовый. Например, в общем случае, ты не можешь НЕЗАВИСИМО изменять число методов, их имена и сигнатуры Добавлено Т.е. при проектировании ты должен, как минимум, продумывать имена и сигнатуры методов СРАЗУ ВСЕХ взаимосвязанных классов и потом не можешь их менять. Вот где попа. СРАЗУ ВСЕХ, Карл. И это называется "решать задачу по частям"? |
Сообщ.
#43
,
|
|
|
Цитата Короче, получается, что ВСЕ СВЯЗАНО СО ВСЕМ. Вообще-то иерархия классов и интерфейсов строится так, что зависимости образуют ацикличный орграф, так что никаких "все со всеми" быть не может. Цитата из-за того, что «ВСЕ СВЯЗАНО СО ВСЕМ» произошло существенное усложнение программирования Нифига. В прцедурном подходе тоже есть граф зависимостей структур данных и процедур/функций для их обработки. Цитата И получается что никакой "инкапсуляции" по факту нет А что тут подразумевается под "инкапсуляцией"? Чем не нравится сокрытие деталей реализации? Цитата Т.е. при проектировании ты должен, как минимум, продумывать имена и сигнатуры методов СРАЗУ ВСЕХ взаимосвязанных классов и потом не можешь их менять. Не могу представить такую ситуацию. Разве что наложить кучу божественных классов, каждый из которых и шьет, и жнет, и на дуде играет. Но ведь это неправильный подход! Похожее поведение у разных по сути классов? Есть интерфейсы и примеси. Одинаковые имена методов с разным поведением? Это можно предвидеть заранее и сразу давать методам понятные имена, чем специфичнее поведение, тем специфичнее имя. |
Сообщ.
#44
,
|
|
|
Цитата AVA12 @ Вообще-то иерархия А классы-параметры? А классы-поля? Или "тут видим, а тут не видим"(с)? Добавлено Цитата AVA12 @ так что никаких "все со всеми" быть не может "Тут читаем, а тут не читаем"(с)? Я же написал: Цитата Исмаил Прокопенко @ Если кто не понял - это была "гипербола" (литературный прием такой). Естественно что буквально когда "все связано со всем" реально не бывает. Я просто так эмоционально хотел показать свой негатив по поводу большого кол-ва возникающих запутанных связей при ООП. Добавлено Цитата AVA12 @ Нифига. В прцедурном подходе А при чем тут он? Я о нем не говорил. Добавлено Цитата AVA12 @ Чем не нравится сокрытие деталей реализации? Тем что эти "детали" зависят от внешних классов. А значит не инкапсуляция это никакая |
Сообщ.
#45
,
|
|
|
Цитата Исмаил Прокопенко @ Почему обязательно классы? Это могут быть интерфейсы или вовсе параметры шаблона неведомого типа. А классы-параметры? А классы-поля? Или "тут видим, а тут не видим"(с)? |