Не так давно наткнулся на опус "Dear Python" http://www.zideck.com/blog/article.php?id=5

топ 100 блогов Dan Kruchinin (dk) - Juick12.02.2010 Не так давно наткнулся на опус "Dear Python" zideck.com
Вкратце, писатель сего опуса всячески ругает python за(в основном) отсутвие привычного ему(писателю) синтаксического сахара, что по его мнению ведёт к синтаксической избыточности. Помимо этого писатель опуса пытается доказать читателям опуса, что в python де не правильный OOP, так как в python якобы нет честной инкапсуляции. Я кинул сей опус на "поржать" нескольким товарищам из ростера, на что получил ответы виды "чевак прав, всё правильно сделал, батя одобряет", и стало мне грустно и обидно, как из ушата окатили. В представлении многих людей, вылезших из c++/java world инкапсуляция — это такая штука, которая явно(ключевым словом) позволяет сказать компиляторы какие методы/переменные внешний мир может видеть, а какие нет. А если внешний мир попробует их ронуть, компилятор ударит по рукам. Поэтому, как оказалось, бытоет мнение, что языки типа perl, python, lisp, etc не полностью поддерживают OOP парадигму, не давая возможности компилятору/интерпретатору бить юзера по лапам(в лиспе кстати методы/переменные класа можно защитить с помощью asdf, но это не относится к стандарту языка).
Хочется процитировать Буча: "Инкапсуляция, таким образом, определяет четкие границы между различными абстракциями. Возьмем для примера структуру растения: чтобы понять на верхнем уровне действие фотосинтеза, вполне допустимо игнорировать такие подробности, как функции корней растения или химию клеточных стенок. Аналогичным образом при проектировании базы данных принято писать программы так, чтобы они не зависели от физического представления данных; вместо этого сосредотачиваются на схеме, отражающей логическое строение данных [52]. В обоих случаях объекты защищены от деталей реализации объектов более низкого уровня." и
"Инкапсуляция — это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации."

Ещё раз: инкапсуляция — это всего лишь одна из парадигм дизайна архитектуры приложения, не более. Архитектор должен гарантировать, что в разработанной им моделе сокрытые данные инстансов классов не могут быть изменены извне. А уж как эти сокрытые данные обозначаются для облегчения чтения и отладки: через private/protected, через __ илл любое другое соглашение — это дело десятое.
Так что пожалуйста перестаньте говорить, что языки, в которых нет private/protected — "не полностью объектно-ориентированные".

Оставить комментарий

Архив записей в блогах:
У нас минус 10. Ночью обещают все 20. За окном вот такая картина: На ...
Контекстная реклама считается одним из самых эффективных способов привлечения целевой аудитории в интернете. Ее плюс в том, что объявления показываются действительно тем, кому может быть интересно предложение. Они располагаются на тематических сайтах, а также выдаются системами вместе ...
привет всем друганам и подругам, всем ЖЖ-истам и ЖЖ-истовкам! Сэрам и Сэрихам! вот распирает меня... нельзя про такое, а распирает... короче - попался я студентам из кино-института, которые дипломный фильм снимают... снялся "в основной роли"... заметили другие. пригласили ещё в два ...
А была уже паника про Эрика с ихнимавтопробегом?: Осуждаем и возмущаемся в ...
Что может быть приятнее, чем признавать собственные заблуждения? Ничего. Поэтому сегодня раскрывается настоящая тайна формы круассанов. Оказывается, прямой круассан означает, что он сделан на основе масла (то есть, вкусный и нормальный). А загнутый круассан означает, что он сделан на ...