LINUX.ORG.RU

Какие есть ресурсы хорошие по теории ООП?


5

3

Какие есть книги (и другие ресурсы) хорошие по теории ООП и связанного?

Кроме Википедии :-) Википедия сложна еще и тем, что там нету никакой структуры материала - мысли нужно формировать самому из взаимоисключающих обрывков, и путем чтения книг/ссылок откуда взялся материал. А эти ресурсы зачастую вообще не в ту степь, и начинаются словами «на основе ваших знаний вот такой-то теории».. т.е. ее тоже нужно изучать. Это безусловно познавательно, но не влезает ни в какие разумные требования по времени изучения материала. Разумные требования - ну, например, год.

★★★★☆

Ответ на: комментарий от Progressive

Батенька, да это не о том вообще. Я о вариантах наследования, теоретических основах миксинов, инвариантах, фундаменте прототипов и акторов итп

Например, в твоих «паттернах» есть аббревиатура SOLID. L из нее ясен, а вот всё остальное мутно. Что это, почему, как. Например S - Single responsibility principle - основан на понятии связности, говорит Википедия. Где почитать исследования по связности? Википедия дает ссылку на «DeMarco, Tom. Structured Analysis and System Specification. — Prentice Hall, 1979». Т.е. для того, чтобы всего лишь понять пару идей, придется трясти книгу ажно 1979 года производства, написанную исходя из понимания анализа на 79й год, да еще поди для людей с тремя высшими математическими образованиями.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Progressive

мы случаем не знакомы IRL? Телепатия по нику и аватарке. Да, личная переписка, пункт правил 5.4.

stevejobs ★★★★☆
() автор топика

Для начала глянь лекции Ванечки Бибилова, а там поймёшь куда копать

Fist
()
Ответ на: комментарий от korvin_

Полчаса гуглил эту книжку, но единственное что нагуглилось - возможность купить за 100 евро бумагу на Амазоне, либо прочитать на гуглокнигах жалкие обрывки, либо перевод кусочка от этого товарища: http://agp.hx0.ru/, http://www.realcoding.net/content/TvsC.pdf Если у тебя есть полный вариант - кинь на hedin.pr@gmail.com?

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

SOLID это баззворд, придуманный для дебилов которые любят баззворды.

Есть в нем конечно некоторые рациональные вещи, но во-первых до этих вещей сам доходишь крайне быстро, а во-вторых все остальное там тупо вода. Читать книжки 79го года по ООП, если это не выкладки из какого-нибудь Xerox PARC, где собственно ООП придумывалось(и сильно отличное от текущего в лучшую сторону), не нужно, а может быть даже и вредно.

Мейнстримное ООП, вобще говоря, очень тупое, оно разрабатывалось для людей у которых отсутствует мозг, и соответственно чтобы его понять, мозг включать особо и не надо. Мейнстримное ООП это структурки и модули, в которых локализированы данные и операции над ними, плюс очень тупой и ограниченный ad-hoc полиморфизм, плюс в Java и C#, опять же туповатый достаточно и ограниченный, параметрический полиморфизм.

Мейнстримное прототипное ООП еще проще - это вложенность структурок одного типа друг в друга с синтаксическим сахаром для работы с этой вложенностью.

lovesan ★★
()

Бертран Мейер. Объектно-ориентированное конструирование программных систем.

годная книга, была бы, если бы Мейер не пиарил там свой язычок.

RedPossum ★★★★★
()
Ответ на: комментарий от korvin_

Не пойдет?

выглядит интересно, по крайней мере

anonymous
()

лучше расскажи какую задачу собираешься решать? оптимизация производительности динамического наследования свойств посредством свертки?

anonymous
()
Ответ на: комментарий от lovesan

сразу видно не осилил, а то баззворд... сказал бы сразу повозился покрутил подумал фигня какая то...

anonymous
()
Ответ на: комментарий от lovesan

выкладки из какого-нибудь Xerox PARC, где собственно ООП придумывалось(и сильно отличное от текущего в лучшую сторону)

а как же objective c?

waker ★★★★★
()
Ответ на: комментарий от lovesan

это баззворд, придуманный для дебилов которые любят баззворды

любят баззворды

и сильно отличное от текущего в лучшую сторону

Верховный Великий Магистр улыбнулся в глубине своего капюшона. Как изумительно заниматься волшебством. Вы говорите им ложь, а затем, когда она больше не нужна, то вы говорите им следующую ложь и сообщаете, что они продвигаются по дороге к мудрости. И вместо того чтобы смеяться, они следуют за вами еще сильнее, надеясь, что в глубине всех этих лживых сказок они отыщут истину. И шаг за шагом они приемлют неприемлемое. Изумительно.

Терри Пратчетт, «Стража! Стража!»

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от waker

А что objective-c? Objective-c это такая кривая помесь недосмоллтолка и ассемблера. Если что-то интересное в нем и есть, то от смоллтолка, который и вышел из Xerox PARC

lovesan ★★
()
Ответ на: комментарий от stevejobs

Т.е. я правильно понимаю, ты не понимаешь что такое SOLID, сам же утверждаешь что это вода, но тем не менее, ты хочешь в этой воде разобраться, потому что вумно написано? Ок, удачи.

lovesan ★★
()
Ответ на: комментарий от lovesan

ссылка на SOLID тут появилась только потому, что Progressive порекомендовал изучать «паттерны», и это до глубины души задело уже меня

+ я не уверен, что мое скромное мнение в отношении этой воды - правда. Какую не возьмешь конференцию про Java/C# там обязательно вспомнят этот SOLID. Он неприменно учатсвует в разных сертификациях, его спрашивают на собеседованиях. Если это еретический мыслевирус, то откуда такая поражающая способность? Покруче ядерной бомбы бомбануло

наверное, я неправильно сформулировал топик. Хотелось бы разобраться в «смысле» ЯП вообще. Что вообще существует, какое оно, как им пользоваться. Мне показалось, что ООП может быть первым оплотом, с которого нужно начинать подобное. Да и вообще, сколько есть людей, которые знают что-то кроме ООП и могут посоветовать?

если у тебя есть идеи, на что стоит обратить внимание вместо ООП, это было бы круто

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от anonymous

читай автора эрланга он не повелся на хрень типа тредов нитей мьютексов семафоров а просто ухватился за парадигму все есть процесс и процессы обмениваются сообщениями, размещая их в почтовые ящики процессов ассинхронно

модель оказалась довольно удачной хотя и есть недостатки

насчет новых языков интересно но пока пофантазируй с декларативным началом

много вычислительных задач могут быть описаны в терминах эрланга

anonymous
()
Ответ на: комментарий от stevejobs

я думаю, тут самое то начать с SICP, на полном серьезе книжка собственно как раз вот про это, «что такое программирование и зачем»

lovesan ★★
()
Ответ на: комментарий от lovesan

не, вопрос как раз и был про то, чем обжси не подходит на звание современного, и чем он внезапно хуже смоллтока.

waker ★★★★★
()
Ответ на: комментарий от pylin

Теория формальных языков вообще не о том.

yoghurt ★★★★★
()

define 'ООП'

define 'теория ООП'

Deleted
()
Ответ на: комментарий от stevejobs

Я о вариантах наследования, теоретических основах миксинов, инвариантах, фундаменте прототипов и акторов итп

Докторскую работу пишешь? Самому материал собирать прийдётся.

rupert ★★★★★
()

1. Барабара Лисков (совсем старьё)
2. Лука Карделли (старьё, но не совсем)
3. Документация по Smalltalk
4. Мартин Одерский
5. Документация по CLOS

Никакой *теории* ООП нет и никогда не существовало. Какие-то теоретические выкладки можно получить из Скалы и Окамла. Но они не идут дальше теории типов (не нужно), и вообще, подптипы сейчас не в фаворе (в хаскеле нет).

Macil ★★★★★
()
Последнее исправление: Macil (всего исправлений: 3)

Смотря для чего всё это нужно. Так то можно с автороством Сони Кин ознакомиться про ООП в CLOS. И как его кушать.

turtle_bazon ★★★★★
()
Ответ на: комментарий от dizza

нуу, не совсем. полиморфизм - это свойство системы типов, которое позволяет одному и тому же коду работать с разными типами. Полиморфизм бывает двух основных видов - ad-hoc и параметрический. Полиморфизм подтипов - это понятие теории типов, вид параметрического полиморфизма, который позволяет одному алгоритму обрабатывать разные типы при условии что все они являются подтипом одного типа. С учетом правилом подстановки Барбары Лисков. ОО-язык - это объектный язык в котором типом объекта является его класс, соответственно механизм наследования является в первую очередь инженерной реализацией полиморфизма подтипов для ОО-языков. Правило Лисков превращается в правило Александреску. Возможность доопределять методы участвует в наследовании, но скорее на основании что тип - это класс, имхо.

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

stevejobs ★★★★☆
() автор топика

Там нет никакой теории. Вначале ты думаешь, что это какое-то недоразумение, а потом начинаешь понимать, что поезд ушел и по другому просто не умеешь.

chg ★★★★★
()

Чем дольше работаю программистом, тем больше начинает казаться, что все эти «паттерны ООП» - херня на постном масле и переливание воды из пустого в порожнее.

Только повод попонтоваться на собеседовании.

migesok
()

что такое ООП ? это подход к решению той или иной задачи. Нельзя научится ООП читая какие то книги, научится ООП можно только решая конкретные задачи. Решение задачи начинается с разбиение на мелкие под задачи(объекты), для взаимодействия объектов были выведены паттерны проектирования, паттерны достаточно прочитать и понять раз, не обязательно их заучивать и пытаться применить везде и постоянно. Если хорошо развито абстрактное мышление, то к паттернам проектирования и самому можно прийти. К сожалению очень много людей знают все паттерны, знают идеально весь С++ стандарт, но при этом умеют плохое абстрактное мышление.

anonymous
()

Перечитай «банду четырёх» второе издание, особенно в разрезе использования интерфейсов, паттерна наблюдатель, композитор, посетитель, декоратор, абстрактная фабрика, приспособленец, цепочка вызовов.

Из классики: материалы про tvision, рефакторинг

Большинство проблем решаются реализацией кастомного «вкомпилятора»

anonymous
()
Ответ на: комментарий от stevejobs

теоретических основах

таких нет, в этом секрет успеха и популятности.

dimon555 ★★★★★
()

на мой взгляд там от теории только аксиомы, а правил вывода нет.

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

т.е. ООП некий способ описания структуры программы. на нём не повычисляешь, что-то типа html или xml.

dimon555 ★★★★★
()

Бретт Маклафлин - Объектно-ориентированный анализ и проектирование (Head First O'Reilly) - 2013

sudo
()

Лучшее - почитать Blue Book или что-то с Мейрера (а лучше и то и другое).

anonymous
()
Ответ на: комментарий от anonymous

В blue book сам термин OOP вообще нигде не встречается :) Но да, читать его очень интересно, особенно в контексте того, как в «те времена» люди понимали и писали об объектах.

yoghurt ★★★★★
()

учебные заведения?

например, мти: Foundations of Object-Oriented Languages: Types and Semantics

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.