[09:14:17] <geniepro> bohdant: "Общепринятые "Основные понятия":
1. Абстракция данных
2. Наследование.
3. Инкапсуляция.
4. Полиморфизм.

Не могли бы по пунктам пройтись и рассказать на каком уровне они поддерживаются в О07 ?"

я не врубаюсь, с чем спорит bohdant? Ведь всё это есть в обероне-07. Абстракция есть? Есть! Наследование есть? Есть! Инкапсуляция есть? Есть! Полиморфизм есть? Ну, полиморфизм наследования таки есть.
Значит ООП есть!
[09:15:41] <geniepro> valexey> Эдак ООП и в Си есть :-)

в сях нет наследования и полиморфизма с языковой поддержкой, эмуляция через void* -- это совсем не то же самое.
[09:16:41] <geniepro> Илья Ермаков: Лично мне нравится формулировка одного дядечки с ВМК МГУ, как он когда-то объяснил моим студентам: "ООП - это механизм, позволяющий дополнять систему без переписывания уже существующего кода. Есть в языке эта возможность - можно считать его ОО, а есть ли в нём ключевые слова КЛАСС, ОБЪЕКТ... и прочее - дело десятое".

ну это ерунда какая-то
[10:58:58] <TRUE> 1. абстрагирование,
2. модульность,
3. позднее связывание,
4. полиморфизм
вот так правильнее.
[11:02:13] <geniepro> там же всего три кита в ООП:
абстракция, инкапсуляция, полиморфизм
[11:02:28] <geniepro> позднее связывание лишь частность
[11:03:21] <geniepro> чорд! получается, что хаскель и правда ООП-язык -- в нём тоже есть и абстракция, и инкапсуляция, и полиморфизм!!! правда полиморфизм не наследования, но кому какое дело?
[11:04:18] <TRUE> наследование - это производная от того, что я написал.
[11:05:22] <TRUE> "полиморфизм наследования" - это вообще какая-то глупость
[11:09:14] <geniepro> TRUE> "полиморфизм наследования" - это вообще какая-то глупость
почему? Лука Корделли вводил как минимум 4 типа полиморфизма, в том числе полиморфизм наследования, как в обероне, и перегрузочный полиморфизм, как в хаскелле
[11:09:36] <geniepro> TRUE> наследование - это производная от того, что я написал.
не вижу связи
[11:10:24] <TRUE> а есть ссылка на все этиопределения полиморфизма?
[11:17:16] <geniepro> https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)
В дальнейшем классификацию уточнил Лука Карделли[en][9], выделив четыре разновидности полиморфизма:
универсальный
 параметрический
 включения (или подтипов[en])
ad hoc
 перегрузка
 приведение типов
точно не помню, как та его статья называлась, много их у него
[11:18:02] <geniepro> http://lucacardelli.name/indexPapers.html
[11:18:12] <TRUE> наследование строится на модульности и абстрагировании (у сущности есть свои границы, и её интерфейс опускает несущественные детали для текущего контекста), а также, на полиморфизме (наследник, имея тот же интерфейс, частично меняет своё поведение).
[11:18:41] <geniepro> наследование строится на иерархии типов, а есть там эта модульность и абстрагирование -- уже дело десятое
[11:19:51] <TRUE> а тип - это что? Разве не воплощение модульности и абстрагирования?
[11:21:26] <geniepro> http://lucacardelli.name/papers/onunderstanding.a4.pdf вот вроде та статья
[11:21:52] <geniepro> не все языки с типами имеют модули, так что модульность необязательна для типов
[11:32:11] <TRUE> wiki> "В языках программирования и теории типов полиморфизмом называется способность функции обрабатывать данные разных типов".
Я почти доволен этим определением.

И как написано в этой статье - перегрузка и приведение - не настоящий полиморфизм. И я, говоря о полиморфизме, о них просто не думал.
[11:33:32] <TRUE> ну и из этого следует, что Оберон поддерживает полиморфизм ограниченно.
[15:33:39] <geniepro> Info21: "Да, настоящие модули -- вещь.
Начинаешь это остро ощущать, когда приходится типа переносить на какой-нибудь С++ программу с Оберона."

нафига инфо21 переносил проги с оберона на с++? хотя это было 7 лет назад же...
[15:44:37] <geniepro> о_О http://comdivbyzero.blogspot.com/2016/01/oop-in-c-example.html
[15:55:25] <geniepro> Полиморфизм
В языках программирования и теории типов полиморфизмом называется способность функции обрабатывать данные разных типов. И такую возможность предоставляет ключевое слово _Generic, которое было введено в С11. Но стоит оговориться, что не все версии gcc его поддерживают. В _Generic передаются пары тип-значение, а при компиляции они транслируются в нужное значение. В общем, лучше один раз увидеть.

Создадим «функцию», которая будет определять тип структуры, переданной в нее, и возвращать ее имя в виде строки.
//points.h
#define typename(x) _Generic((x), \
 point3D   : "point3D", \
 point2D   : "point2D", \
 point3D * : "pointer to point3D", \
 point2D * : "pointer to point2D"  \
)

//main.c
int main() {
 point3D *point = newPoint3D();
 puts(typename(point));
 return 0;
}
o_O https://habrahabr.ru/post/263547/
[16:40:06] <vlad2> "На дне Оберона" - это у них тема, да :)))
[16:43:30] <vlad2> Или вот "на дне жабаскрипта": http://s.pikabu.ru/images/big_size_comm/2012-03_5/13325375799772.jpg
[16:50:33] <vlad2> Кстати, без валексея день оберона какой-то невеселый получился ;)
[18:24:54] <_valexey__> Настоящие модули конечно вещь, но в Обероне их нет :-)
[18:25:22] <_valexey__> Алсо что-то мне кажется, что info21 путает качество оной вещи с ценностью того к чему он банально привык
[18:25:41] <_valexey__> Вон народ например вилками привык есть и палочками не может. И плюется.
[18:25:49] <_valexey__> Но это не значит что палочки - неудобный прибор.
[18:31:33] <_valexey__> Кстати, ООП ведь бывает в языках с динамической типизацией? То есть только с проверками в рантайме? Бывает. Следовательно в Си ООП ЕСТЬ. То есть можно построить.
[18:32:08] <_valexey__> Ну а следуя концепции минимализма ядра языка, делаем вывод, что вшивать в сам язык ООП не нужно, ведь можно сделать ООП либой.
[18:32:23] <_valexey__> Причем именно такую версию ООП сделать которая будет удобна для данной задачи.
[18:32:44] <_valexey__> Так что с ООП в Си все даже лучше чем в Обероне
[18:32:55] <_valexey__> Да и язык получается спроектирован много лучше.
[19:57:37] <vlad2> Клеветы детектед!
[19:58:56] <valexey> :-)
[19:59:34] <valexey> вот интересно, на плюсатых конференциях в докладах регулярно говорят что С++ говно, и вот как мы придумали это как-то компенсировать и обходить.
[19:59:47] <valexey> Вопрос - говорят ли такое на оберон-конференциях? :-)
[20:01:09] <vlad2> Конечно на оберонконференциях говорят "С++ говно"! :)
[20:06:30] <valexey> :-D
[20:06:44] <valexey> прям старый советский анектод Ж-)
[21:35:02] <valexey> http://i.juick.com/p/2850518.png
[21:35:04] <valexey> js!
[22:28:51] <valexey> Созыв оберонщиков на конференцию: https://www.youtube.com/watch?v=izFACT-l41Y