Операция выполнена!
Закрыть
Хабы: Go, ООП, Программирование

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

Абстракции?

Abstractio или отвлечение — уход от не существенных свойств объекта ради простоты восприятия и оперирования понятием(объектом).  Даже команды процессора — определенный уровень абстракции нам передаваемым сигналом, не говоря уже об ассемблере. Все программирование(и все языки программирования) частично абстрактно и частично конкретно, вопрос только в уровнях абстракции.

Показывает ли Go тот же уровень абстракции как python, java, php или С++? Объективно нет.  Даже перечисленные языки имеют разные уровни абстракции! Важная особенность Go в том, что часть абстракций Go выносит на уровень пакетов, а часть абстрактных решений принимает за нас. Например, в виде утиной типизации. И это важный момент, который мы рассмотрим позже в части, почему «прекрасно, что в Go нет ООП». А пока мы должны понять, что абстракция — свойство программирования в целом, а не ООП.

Инкапсуляция?

Классическое понимание инкапсуляции в ООП — это реализация принципа принципом абстракции данных. На самом деле, чистой абстракции данных нет даже в C++ и Java. Её иногда называют «неполноценной». Видимо, что бы я смог отнести их к разряду языков с ООП.

В Go ситуация ещё «круче». Инкапсуляция на уровне интерфейсов и пакетов. Что? Опять частично все решили за нас? Именно. Приватные и публичные идентификаторы внутри пакетов. Нет инициализаторов и конструкторов. Методы — как и везде синтаксический сахар над функциями. Интерфейсы? Не те интерфейсы, что в других языках — только контракты на уровне типов.

Читать далее
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro