Решает ли go-language Google проблемы в посте Пола Грэма "Почему Arc не особенно объектно-ориентирован"?

StackOverflow https://stackoverflow.com/questions/1714004

  •  19-09-2019
  •  | 
  •  

Вопрос

Есть ли у Google Голанг устраните проблемы с языками, затронутые в посте Пола Грэхема 'Почему Arc не особенно объектно-ориентирован'?

Это было полезно?

Решение

Мое первоначальное чувство по отношению к этому - "Еще слишком рано говорить".

1) Объектно-ориентированное программирование увлекательно, если у вас есть статически типизированный язык без лексических замыканий или макросов.В некоторой степени это предлагает способ обойти эти ограничения.(См. Десятое правило Гринспена .)

Go поддерживает литералы функций (см. Документы) которые, если я правильно это читаю, позволяют вам передавать функции как параметры, независимо от того, определены ли они в другом месте или созданы ad-hoc.

2) Объектно-ориентированное программирование популярно в крупных компаниях, потому что оно соответствует тому, как они пишут программное обеспечение.В крупных компаниях программное обеспечение, как правило, пишется большими (и часто меняющимися) командами посредственных программистов.Объектно-ориентированное программирование налагает дисциплину на этих программистов, которая не позволяет никому одному из них делать слишком много Ущерб.Цена заключается в том, что результирующий код раздут от протоколов и полон дублирования.Это не слишком высокая цена для крупных компаний, потому что их программное обеспечение вероятно, будет раздутым и полным дублирования в любом случае.

Этот вопрос слишком субъективен для ответа.

3) Объектно-ориентированное программирование генерирует многое из того, что выглядит как работа.Во времена fanfold существовал тип программистов, которые помещали на страницу всего пять или десять строк кода, которым предшествовали двадцать строк тщательно отформатированных комментариев.Объектно-ориентированное программирование для этих людей все равно что крэк:это позволяет вам включить все это строительные леса прямо в ваш исходный код .Что-то, с чем лисп-хакер мог бы справиться, нажав на символ список становится целым файлом классов и методов.Так что это хороший инструмент, если вы хотите убедить себя или кого-то другого в том, что вы делаете много работы.

Поскольку go не является по-настоящему объектно-ориентированным языком, вы, вероятно, можете решить проблему любым удобным для вас способом.

4) Если язык сам по себе является объектно-ориентированной программой, он может быть расширен пользователями.Ну, может быть.Или может быть, вы сможете добиться еще большего, предлагая дополнительные концепции объектно-ориентированного программирования по меню .Перегрузка, например, внутренне не привязана к классам.Посмотрим.

Похоже, у Go интересный подход к объектам, где вам не требуется беспокоиться / разрабатывать большие деревья объектов.Похоже, что в языке присутствуют инструменты для структурирования ваших данных объектно-ориентированным способом, не привязывая вас к чисто объектно-ориентированной среде.

5) Объектно-ориентированные абстракции четко отображаются на области определенных конкретных видов программ, таких как моделирование и CAD-системы.

...

Другие советы

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

Говоря о Arc, это отстой, и, если я не ошибаюсь, даже люди из сообщества Lisp думают так - я хочу сказать, что даже умные люди совершают ошибки.

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

Подождите, однако, действительно ли Go объектно-ориентированный?Это кажется полным агностицизмом на этом фронте.Вы можете использовать ООП, FP или императивное программирование в Go.Я имею в виду, что "программирование" в стиле prolog было бы натяжкой, но в остальном...

На самом деле, я бы сказал, что Go напоминает scala в этом отношении:есть несколько объектных парадигм, лежащих вокруг, и все же, есть также лямбды и типизация, лежащие вокруг.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top