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

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

20.09.2014, 06:55. Показов 19677. Ответов 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
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
14.01.2015, 12:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от taras atavin Посмотреть сообщение
На бейсике они не оформлены в разделы программы, вместо этого подпрограмма имеет лишь метку вызова и может быть густо перемешана с вызывающей программой, что прямо противоречит процедурной парадигме
чтото мне подсказывает что это противоречит структурной парадигме, но никак не процедурной. процедуры есть, структуры программы нет - бейсик во всей красе.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.01.2015, 13:14
Процедуры есть, но не оформлены согласно правилам языка. По Вашей логике язык ассемблера для камня без CALL и RET и то процедурный, так как там можно на условных переходах, или даже загрузкой вершины стека в регистр-указатель текущей операции реализовать возврат в любое место в программе.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
14.01.2015, 14:14
Цитата Сообщение от taras atavin Посмотреть сообщение
логике язык ассемблера для камня без CALL и RET и то процедурный
ну в общем то да, процедурный. просто в силу своей низкоуровневости это там сложно заметить. но не структурный, хотя попытки были http://en.wikipedia.org/wiki/A... rogramming
1
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.01.2015, 22:11
Цитата Сообщение от taras atavin Посмотреть сообщение
Это каким боком бейсик к структуре?
С реализации Turbo Basic. За неимением стандартов и спецификаций, развитие языка идет за счет развития реализаций.
Так уж повелось, что некоторые реализации становятся "стандартом" де-факто.
Таким путем развивается Python 2/3, Perl 5, PHP.

Цитата Сообщение от pycture Посмотреть сообщение
ну в общем то да, процедурный.
В общем то нет, т.к. для этого нужны подходить под определенные требования. К примеру CALL и RET не восстанавливает состояние регистров, т. е. нету scope
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
15.01.2015, 07:04
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
В общем то нет, т.к. для этого нужны подходить под определенные требования. К примеру CALL и RET не восстанавливает состояние регистров, т. е. нету scope
какое отношение регистры имеют ко всему этому?
во первых в асме кроме регистров есть обычные переменные в памяти как и во всех языках.
во вторых push & pop никто не отменял,
в третьих страшно представить. в некоторых процах нет регистров, только память, а ассемблер есть
в 4-х я и в С могу изменить соглашение вызова с _cdecl на (не помню че там было точно) _pascal. усе. при вызове регистры полегли стройными рядам, все сдохло. С перестал быть процедурным от этого?

Добавлено через 2 минуты
дам еще аналогию. завели на С 5 глобальных переменных (теже регистры) которые любая из функций может изменить. все. нету scope. процедурность языка зависит от наличия этих переменных?
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
17.01.2015, 08:21  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
При отсутствие таких требований не стоит и садится за программирование.
Вы хотели сказать "садиться за кодирование"? Но тут у меня вопрос: а почему мы проектируем программу в одном месте, а кодируем в другом? Наверное потому что среда разработки (разработки!) нисколечко неудобна для того, для чего она придумана?

Цитата Сообщение от 0x10 Посмотреть сообщение
А давайте у нас розовые функции будут сражаться с пришельцами в стране загадок!
Ох, ребят, такой наркомании я в этой теме не ожидал)
Когда человек программирует в существующих средах разработки, у него реально розовые функции бьются с пришельцами... Понимаете? Вы же знаете, как выглядит среднестатистический программист.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.01.2015, 08:24
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
С реализации Turbo Basic. За неимением стандартов и спецификаций, развитие языка идет за счет развития реализаций.
Эйси. Имеет диалекты, поддерживающие структурную парадигму. Так устроит? Только именно в турбобейсике где хоть один оператор заголовка раздела?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
17.01.2015, 08:36
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Вы же знаете, как выглядит среднестатистический программист.
И как же? Возможно, у нас разные представления.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.01.2015, 08:52
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
В общем то нет, т.к. для этого нужны подходить под определенные требования. К примеру CALL и RET не восстанавливает состояние регистров, т. е. нету scope
А GOSUB/RETURN вообще не поддерживают локальных величин. На языке ассемблера для них хоть в стеке можно отвести место, а здесь и этого нет. Именно потому, что подпрограммы не оформлены по правилам языка, данные и смешиваются, а при перекрытии глобального имени вместо создания локальной тёзки портится глобальная переменная. Так что процедурная парадигма не поддерживается точно также, как и структурная. Ни в смол бейсике, ни в турбо, ни в квик, ни на вшитом в спектрум ZX 48K, или ZX 128K.

Добавлено через 5 минут
Цитата Сообщение от pycture Посмотреть сообщение
в 4-х я и в С могу изменить соглашение вызова с _cdecl на (не помню че там было точно) _pascal. усе. при вызове регистры полегли стройными рядам, все сдохло.
Не ври.

Добавлено через 2 минуты
Цитата Сообщение от pycture Посмотреть сообщение
дам еще аналогию. завели на С 5 глобальных переменных (теже регистры) которые любая из функций может изменить. все. нету scope. процедурность языка зависит от наличия этих переменных?
Ну так они и есть глобальные. При чём здесь регистры, которые вызывающая программа и все подпрограммы юзают в обязательном порядке и при этом они и глобальны и являются частью языка, а не проекта?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
17.01.2015, 16:15
Цитата Сообщение от taras atavin Посмотреть сообщение
Не ври.
что не так? не знаешь в чем разница и к чему она приведет в результате?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
17.01.2015, 17:40
Как раз я знаю. А потрудись ка объяснить, если регистры портятся, то как программа не крашится? Пусть регистры восстанавливаются после RET. Но с точки зрения высокого уровня этот код - часть возврата. Да и то, регистр используется для возврата значения ровно один.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
18.01.2015, 19:59
Цитата Сообщение от taras atavin Посмотреть сообщение
программа не крашится
серьезно чтоли. прям таки не крашиться. ну возми какой нить qt или че там ща популярно дабы под винды компилить, что б нем window.h был. потом в начале поменяй
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef __WINAPI_H     /* prevent multiple includes */
#define __WINAPI_H
 
#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif  /* __cplusplus */
 
#define VOID                void
#define FAR                 _far
#define NEAR                _near
#define PASCAL              _pascal
#define CDECL               _cdecl
#define WINAPI              _far _pascal
#define CALLBACK            _far _pascal
все дефайны к виду _cdecl. и откомпили. посмотрим крашнется у тя ченить или нет.
Да и то, регистр используется для возврата значения ровно один.
да хоть один хоть десять для возврата значений. проблема не в нем.... а еще грит что знает.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.01.2015, 07:05
Цитата Сообщение от pycture Посмотреть сообщение
#define CALLBACK _far _pascal
А вот не надо фигню писать, с такой дирррективой гуёвый подоконник нельзя правильно написать вообще. Так то можно и алгоритмических проблем наделать, соглашения о вызовах здесь не при чём. А попробуйте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
int _far _pascal f(int &x, int &y)
{
 int t;
 if (x<y)
 {
  t=x;
  x=y;
  y=t;
 }
 return x*y;
}
int main()
{
 int x;
 int y;
 std::cin>>x;
 std::cin>>y;
 std::cout<<f(x,y)<<", "<<x,", "<<y<<std::endl;
 return 0;
}
. Речь то была о замене си соглашения на паскаль, а не замене соглашения для оконных процедур, так что не путайте язык с API.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
19.01.2015, 09:02
Цитата Сообщение от taras atavin Посмотреть сообщение
А попробуйте
http://ideone.com/7BO0Zu
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.01.2015, 09:46
Ну не я придумал, что эта дирректива пишется именно так, а на онлайн-компиляторах часто и cin отключают нафиг, и файловый не только ввод, но и вывод.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,046
Записей в блоге: 7
22.01.2015, 12:21
Цитата Сообщение от pycture Посмотреть сообщение
а бейсик то не в курсе. он так весь из себя структурно goto'ми по номерам бегает. да?
Это давно устаревшая информация, которой лет 40 наверное.
Где вы видите Goto и номера строк в этом коде?
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
; Заполнение массива случайными числами.
Procedure CreateRandArray(Array arr(1), Col, RandMax)
  Protected i
  ReDim arr(Col-1)   ; Изменение размера массива.
  For i = 0 To col-1 ; В цикле, массив заполняется случайными числами.
    arr(i) = Random(RandMax)
  Next
EndProcedure
 
; Вывод значений из массива в отладочное окно.
Procedure DebugArray(Array arr(1))
  Protected i, str$
  For i = 0 To ArraySize(arr())
    str$ + Str(arr(i)) + "  "
  Next
  Debug str$
EndProcedure
 
Dim arr(1) ; Создание массива типа Integer с двумя элементами (отсчет начинается с нуля).
 
CreateRandArray(arr(), 10, 10) ; Заполнение массива случайными числами.
DebugArray(arr()) ; Вывод значений из массива в отладочное окно.
 
; Сортировка методом пузырька.
n = ArraySize(arr())
For i = 1 To n
  For j = n To i Step -1
    If arr(j-1) > arr(j)
      Swap arr(j), arr(j-1)
    EndIf
  Next
Next
 
DebugArray(arr()) ; Вывод значений из массива в отладочное окно.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
22.01.2015, 12:50
Цитата Сообщение от locm Посмотреть сообщение
которой лет 40 наверное
и что с того? 40 лет назад он не был структурным, сейчас некоторые диалекты стали. и что?
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,046
Записей в блоге: 7
22.01.2015, 13:07
Вы пользуйтесь компилятором C++ 40 летней давности и компилируете исключительно под DOS с ее 640 КБ ОЗУ (только учтите что 40 лет назад, еще не существовало C++.), или современным C++ компилятором?
Забудьте то что было давно. Те среды и инструменты мало подходят практического использования в наши дни, хотя бы потому что они не компилируют под современные ОС. Или вы знаете простой способ вызова функций современной ОС (Windows, Linux не важно) из 16-ти битной DOS-проги?

Или быть может вы пользуетесь компом 40 летной давности?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
22.01.2015, 14:23
если вы не обратили внимания, то в данной теме мы ни чем не пользуется. мы рассматриваем к какой категории относятся те или иные языки. появление новых диалектов бейсика никак не отменяет того, что изначально оригинальный бейсик не относился к структурированным языкам никаким боком. ваш посыл про то кто и чем пользуется пока не в тему.
0
Эксперт по электронике
7139 / 3319 / 341
Регистрация: 28.10.2011
Сообщений: 13,046
Записей в блоге: 7
22.01.2015, 14:57
Цитата Сообщение от pycture Посмотреть сообщение
появление новых диалектов бейсика никак не отменяет того, что изначально оригинальный бейсик не относился к структурированным языкам никаким боком.
Диалектов бейсика очень много и не стоит их ставить в один ряд.
Пример в компом очень кстати. Ведь раньше компы были куда примитивнее чем сейчас, хотя устроены так же (процессор, память, флопик, жесткий диск). Так что же давайте, следуя вашей логике, и про компы напишем что они ни на что не годятся с их 64 КБ ОЗУ и тактовой частотой 3 МГц. А то что за это время компы значительно были усовершенствованы, не имеет значения, т. к. оригинальный комп имел именно такие параметры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.01.2015, 14:57

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
сукцессия 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