Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/79: Рейтинг темы: голосов - 79, средняя оценка - 4.72
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814

О более новых парадигмах программирования, чем ООП

20.09.2014, 06:55. Показов 19653. Ответов 230
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
К сожалению не нашел другого более подходящего раздела для этой новой темы.

Немного о себе: я не считаю себя программистом, так как я не создавал программы с более сложными объектами, чем стандартные визуальные (кнопки, лэйблы, окна и т.д.). Если уделить программированию годы, то наверняка я освою любую методологию программирования. Ведь у меня за плечами: Spectrum48k (Basic, Assembler), немного Delphi7 (Pascal), программирование в промышленных логических языках LD, FBD, SFC. Сейчас пытаюсь освоить С++ (готовность уже на 70%) и среду Qt. Именно в таком порядке я осваивал методологии/технологии программирования.
Из всего ряда особенным образом выделяются языки LD, FBD, SFC. Эти языки привносят в программирование нечто новое, что я постоянно пытаюсь осмыслить. FBD - близок к модели взаимодействия UML. SFC - это аналог модели состояний UML. Помимо этих особенных языков программирования в сфере промышленности используется кибернетическое мышление, системный подход - это тоже отразилось существенно на моем мировоззрении.

При изучении С++ (в версии 99) я пока для себя выяснил следующее: ООП - это парадигма, которая содержит в себе некоторые элементы системного подхода, но пока некоторые ее очень важные фишки не поддерживаются.

Что я хочу получить от общения в этой теме?
1) Я хочу узнать о более новых парадигмах, нежели стандартный ООП. Мне нужны ссылки. Когда-то давно меня обрадовали некоторой парадигмой под названием "Аспектно-ориентированное программирование". Интересная штучка! Она некоторым образом соотносится с моим ходом мысли, но к сожалению нет хорошей литературы, которая бы раскрывала, что собственно дает среда разработки с АОП.
2) Я хочу узнать о более развитых средах разработки нежели QtDesigner и IDE Delphi7. Какая среда в настоящий момент позволяет более эффективно работать с объектами, библиотеками объектов? Где можно более удобно структурировать и переструктурировать приложение?
3) Я хочу рассказать о своих простых и непростых идеях, которые можно было бы применить для повышения эффективности программирования. Но это чуть позже, т.к. может быть я чего-то не знаю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.09.2014, 06:55
Ответы с готовыми решениями:

Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20 (ООП)
1. Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20. Найти произведение ненулевых...

Изучение новых языков программирования
Всем привет! Я знаю C++ на уровне ООП (классы, наследование, шаблоны, исключения, перегрузка операторов, STL). Каждый раз, когда я...

Копирование более новых файлов
Есть папка, в ней у меня куча скриптов, на ноуте и на компе, я то тут что-то поделаю, то там, и мне периодически нужно синхронизировать...

230
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
22.09.2014, 18:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mikhaylo Посмотреть сообщение
В итоге: нет ничего лучше "plain text"?
Да, потому что это простой и универсальный формат, которым легко манипулировать.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Есть какие-то вещи, которые вы не пишете в plain text?
Разве что GUI иногда удобней описывать графическими инструментами. На то он и GUI.

Добавлено через 4 минуты
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Мне кажется, есть одна серебряная пуля, ну или хотя бы бронзовая. Это системный подход
Это слишком общая вещь, которая, возможно, имеет отношение к изучению программирования, но не к программированию как таковому. Более того, гугл ничего конкретного не выдает.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
22.09.2014, 18:47
Цитата Сообщение от korvin_ Посмотреть сообщение
это простой и универсальный формат, которым легко манипулировать.
Конечно, но представление можно сделать какое угодно. Вот в компьютерах вся магия- это просто переключения нулей и еденичек, что не мешает создавать интерфейсы, через которые может работать даже дошкольник. Мне кажется, что можно придумать отображение в виде схемы, при которой будет значительно легче воспринимать, чем просто текст с подсветкой и дерево объектов.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
22.09.2014, 18:59
Цитата Сообщение от MLPMan Посмотреть сообщение
Мне кажется, что можно придумать отображение в виде схемы, при которой будет значительно легче воспринимать, чем просто текст с подсветкой и дерево объектов
С такими схемами будет значительно сложнее работать программно. А с текстом -- легко.
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
22.09.2014, 19:06  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Да, потому что это простой и универсальный формат, которым легко манипулировать.
это простой и универсальный формат, которым легко манипулировать ... имеющимися средствами разработки.
Цитата Сообщение от korvin_ Посмотреть сообщение
Это слишком общая вещь, которая, возможно, имеет отношение к изучению программирования, но не к программированию как таковому. Более того, гугл ничего конкретного не выдает.
То, что системный подход применим к любым объектам (математическим, физическим, программным и т.д.), это не означает, что он излишне абстрактен и бесполезен. Это видимо навеяла аналогия с абстрактными классами... Ну да, сам по себе абстрактный класс бесполезен, но если его конкретизировать, то его можно применять везде, где он пригоден... А значит он полезен! Также и системный подход: он абстрактен, но если в каждом конкретном случае выявить систему, входы, выходы и [внутреннее] состояние, то из этого можно извлечь некоторую пользу.
Пока на данный момент (да и вы наверняка тоже) я рассматриваю object как систему, у которой есть входы setXXXX и выходы getXXXX. К сожалению, не все входы и выходы имеют такую нотацию, поэтому системный подход применять прямо и без обиняков затруднительно. Иногда помогают модификаторы const напротив членов-функций класса...
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
22.09.2014, 19:07
korvin_, не понял. Наверно, я неточно написал, короче, носителем инфы всё равно остаётся исходник, схема генерируется из него, и изменяя её можно править текст.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
23.09.2014, 15:32
Цитата Сообщение от MLPMan Посмотреть сообщение
Мне кажется, что можно придумать отображение в виде схемы, при которой будет значительно легче воспринимать, чем просто текст с подсветкой и дерево объектов.
Гмм. А как эта схема будет храниться? На диске, на сервере, в репозитории.... etc.?
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
23.09.2014, 19:35
CheshireCat, можно вообще каждый раз заново генерировать.
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
23.09.2014, 20:20  [ТС]
Вот здесь
Цитата Сообщение от 0x10 Посмотреть сообщение
List of UML tools - смотреть в таблицу Features, колонку Languages Generated. Очевидно, генерировать по таким диаграммам можно только заглушки классов. Живых людей, которые пользовались бы такими инструментами, лично я не видел.
можно увидеть колонку "Language reverse engineered". Я понимаю это так: данный продукт позволяет генерировать cpp/pas-файл, но и дополнительно можно делать обратное преобразование из cpp/pas-файла в UML-нотацию.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
23.09.2014, 20:51
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Пока на данный момент (да и вы наверняка тоже) я рассматриваю object как систему, у которой есть входы setXXXX и выходы getXXXX.
Нет. Надеюсь, и ты перестанешь, когда поймешь, что объекты -- это не набор сеттеров и геттеров.

Добавлено через 1 минуту
Цитата Сообщение от Mikhaylo Посмотреть сообщение
если в каждом конкретном случае выявить систему, входы, выходы и [внутреннее] состояние, то из этого можно извлечь некоторую пользу
Какое узкое мышление -- подгонять все под одну гребенку. Нет уж, мухи отдельно, котлеты отдельно.

Добавлено через 2 минуты
Цитата Сообщение от Mikhaylo Посмотреть сообщение
К сожалению, не все входы и выходы имеют такую нотацию, поэтому системный подход применять прямо и без обиняков затруднительно.
Потому что у объекта вход один -- диспетчеризатор сообщений. И выход также один -- реакция на сообщение.
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
24.09.2014, 04:53  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Потому что у объекта вход один -- диспетчеризатор сообщений. И выход также один -- реакция на сообщение.
Какое узкое мышление!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
24.09.2014, 07:26
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Какое узкое мышление!
Это практически определение, так-то.
1
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
24.09.2014, 10:03
Цитата Сообщение от MLPMan Посмотреть сообщение
CheshireCat, можно вообще каждый раз заново генерировать.
Нет, дело не в этом. Прикинь-ка use case, когда над проектом работают несколько разработчиков (более одного), а "исходники" проекта хранятся в VCS на корпоративном сервере. Это совершенно стандартная ситуация для более-менее объемного промышленного проекта.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.09.2014, 11:49
Устал читать обсуждение, но не увидел реальной картины происходящего. ТС хочет визуальное программирование и "однозначную автоматизацию того, что должно быть автоматизированно"©

Из прочитанного сделал вывод, что автор имеет очень слабый опыт практического программирования, поэтому не знает всех особенностей. Не нужно придумывать универсальные решения - они не будут востребованы. Это утопия.

Работаю в VS с языком C#, дополнительно установлен DevEx и вот что могу сказать:
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Вот на этой картинке просто пример экземпляра объекта "Счетчик".
Представление классов в виде диаграмм и проектирование графическими инструментами реализовано. Компонент "Диаграмма классов". На практике не пользуюсь - гораздо удобнее смотреть на свой проект в обозревателе решений, а классы создавать руками - быстрее, чем таскать мышкой эти квадратики и связи между ними. Intellisence рулит.
Цитата Сообщение от Mikhaylo Посмотреть сообщение
почему бы определение класса не представить в виде таблицы переменных и методов?
в диаграмме это и реализовано

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Вставляют ли программисты блоки if else как единое целое, редактируя лишь поля условия и действий?
Да это реализовано, называется сниппеты (уже говорили об этом). На практике не пользуюсь - руками быстрее набрать, чем выдёргивать через менюшки. Intellisence рулит.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Не достаточно ли для программиста сделать галочку "public" напротив каждого члена класса?
Точно не помню, но вроде реализовано в той же диаграмме классов. Однозначно есть в Devex, главное не забыть включить опцию рефакторинга. На практике не пользуюсь. Intellisence рулит.

Цитата Сообщение от MLPMan Посмотреть сообщение
Мне кажется, что можно придумать отображение в виде схемы, при которой будет значительно легче воспринимать, чем просто текст с подсветкой и дерево объектов.
Для проекта "Hello world" возможно, но не для серьёзных проектов на десятки и сотни тысяч строк кода с тысячами классов.
1
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
24.09.2014, 16:08  [ТС]
Что за DevEx? Гугл выдает компанию, у которой множество продуктов.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
24.09.2014, 17:57
CheshireCat, а в чём? Ну да, они на серваке, но всё равно придется нужные оттуда скачивать, а обрабатывать можно чем угодно, хоть блокнотом, IDE, или этой абстрактной фигнёй.

Цитата Сообщение от nio Посмотреть сообщение
Для проекта "Hello world" возможно, но не для серьёзных проектов на десятки и сотни тысяч строк кода с тысячами классов.
А все исходники и не нужны, чтобы схему сделать, достаточно 1 файла. Если разработчику надо радактировать один из файлов, зачем ему на экране структура всего модуля? И это же не будет корпоративным стандартом, простой редактор(или плагин для IDE), если кто-то посчитает, что щас так будет удобнее - поработает в графическом интерфейсе, но в любой момент можно посмотреть или перейти на текст.

Добавлено через 5 минут
Это в качестве вспомогательного инструмента, больше чем пару файлов визуализировать нету смысла, для этого уже есть UML.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.09.2014, 18:02
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Что за DevEx?
у меня набор компонентов для разработки под WinForms
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
25.09.2014, 05:13  [ТС]
Подскажите, а в стандартных средствах MS Visual Studio какие имеются вспомогательные инструменты, помимо:
- подсветки синтаксиса;
- поддержки при автосоздании кусков кода?
Intellisense - это когда при нажатии на точку, вылазят члены класса и ничего больше этого?
Есть средство, которое у Сименса называется Cross Reference, когда ты можешь просмотреть список обращений к переменной или функции по всей программе?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.09.2014, 09:58
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Intellisense - это когда при нажатии на точку, вылазят члены класса и ничего больше этого?
Intellisense срабатывает не только при нажатии точки, он реагирует на любой набор символов, предоставляя выбор из элементов включающих в название набранных символов (начиная с VS2010, до этого совпадения предоставлялись по началу названия элемента)
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Есть средство, которое у Сименса называется Cross Reference, когда ты можешь просмотреть список обращений к переменной или функции по всей программе?
Есть такое, кликнув по названию можно перейти к определению элемента, либо получить список всех упоминаний в коде

Добавлено через 3 минуты
Цитата Сообщение от MLPMan Посмотреть сообщение
А все исходники и не нужны, чтобы схему сделать, достаточно 1 файла. Если разработчику надо радактировать один из файлов, зачем ему на экране структура всего модуля? И это же не будет корпоративным стандартом, простой редактор(или плагин для IDE), если кто-то посчитает, что щас так будет удобнее - поработает в графическом интерфейсе, но в любой момент можно посмотреть или перейти на текст.
Никто не запрещает делать диаграмму классов для каждого класса в отдельности, только какой в этом смысл? Возможность есть, но я не видел ещё людей, которые бы так работали
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
25.09.2014, 10:37
nio, я представляю это не только как диаграмму классов, но и реализации методов, вообще весь код. Идея в том, картинку можно быстрее осознать, чем страницу текста. Допустим, будет граф стереотипных иконок (конечно, сначала нужно будет все запомнить), к примеру, переменная будет квадратиком, цвета ассоциированы с типами данных, начертания границы - с назначением (типа буфер, счётчик, флаг состояния). Ну, это детали, а смысл типа в том, что для мозгов легче реагировать на цвета и формы, чем последовательности символов. И, как уже заметили, проганье ведь состоит из фиксированого набора операций, разнообразие вносят идентификаторы; в том смысле, что "атомом" можно сделать не символ или слово, а операцию (например присвоение, выход из цикла), и при таком подходе для написания понадобится значительно меньше нажатий клавиш.

Может я ошибаюсь, надо ещё подумать нормально, потому что это пока на уровне грёз.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
25.09.2014, 10:44
Цитата Сообщение от MLPMan Посмотреть сообщение
Ну да, они на серваке, но всё равно придется нужные оттуда скачивать, а обрабатывать можно чем угодно, хоть блокнотом, IDE, или этой абстрактной фигнёй....... А все исходники и не нужны, чтобы схему сделать, достаточно 1 файла. Если разработчику надо радактировать один из файлов, зачем ему на экране структура всего модуля? И это же не будет корпоративным стандартом, простой редактор(или плагин для IDE), если кто-то посчитает, что щас так будет удобнее - поработает в графическом интерфейсе, но в любой момент можно посмотреть или перейти на текст.
Ууууу..... Так это получается отнюдь не "новая парадигма программирования", а всего лишь некоторые новые фичи IDE. Которые, кстати, тоже отнюдь не "новые", а уже существуют в средствах разработки и моделирования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2014, 10:44

Отличие модульного программирования от ООП
Добрый день! Подскажите пожалуйста, чем отличается парадигма модульного программирования от ООП? Определение на Википедии описывает модуль,...

Выбор языка программирования ООП
Программирую на php&mysql. Знаю Си. (Си изучал чтобы написать модулей для php). Хотелось бы изучить ООП вот только в качестве...

Ajax_result замена в более новых версиях
Здравствуйте. У меня используется jquery последней версии, и старый js перевожу на новую версию. В старой версии используется -...

Переструктурировать исходник в структуру программирования ООП
Не так давно изучаю C++ и вот столкнулся с проблемой Написал исходник в C::B который работает со строками и от меня теперь потребовали...

Найти вероятность того, что событие А происходит: а)точно 220; б) менее чем 240 и более чем 100 раз.
В каждом из 500 независимых испытаний событие А происходит с постоянной вероятностью 0,4.Найти вероятность того, что событие А происходит:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru