Я багато думав про дизайн мови та про те, які елементи будуть потрібні для "ідеальної" мови програмування, а вивчення Google Go Go спонукало мене до сумнівів у багатьох інакше загальних знаннях.
Зокрема, Go, здається, має всі цікаві переваги від об'єктно-орієнтованого програмування, не маючи насправді жодної структури об'єктно-орієнтованої мови. Не існує класів, лише структури; не існує спадкування класу / структури - лише вбудовування структури. Немає ніяких ієрархій, батьківських класів, явних реалізацій інтерфейсу. Натомість правила кастингу типу базуються на нещільній системі, подібній до типізації качок, так що якщо структура реалізує необхідні елементи "Reader" або "Request" або "Encoding", ви можете надати її та використати як один.
Чи є щось про OOP, як це реалізовано в C ++ та Java та C #, що за своєю суттю є більш здатним, більш доступним, якимось потужнішим, що вам доведеться відмовитися, переходячи до такої мови, як Go? Якої ви користі відмовитися, щоб отримати простоту, яку представляє нова парадигма?
EDIT
Видалено "застаріле" питання, яке, здавалося, читачам було надмірно затримане та розлючене.
Питання полягає в тому, що може запропонувати традиційна об'єктно-орієнтована парадигма (з ієрархіями тощо), що часто зустрічається в загальних мовних реалізаціях, що в цій простішій моделі неможливо зробити так просто? Або, інакше кажучи, якби ви сьогодні розробляли мову, є причина, яку ви хочете включити в поняття ієрархії класів?