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

Asked
Viewd2314

5

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

  • Какие проблемы?В этом посте говорится о проблемах с чрезмерным использованием объемных объектно-ориентированных проектов, а не о проблемах с языками.

    mqp11 ноября 2009, 09:21
  • @mquander: и на самом деле пост о мнимых преимуществах больше, чем о проблемах.

    ctd11 ноября 2009, 19:17

3 ответов

8

Мое первое чувство по этому поводу: «Еще рано говорить»

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

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

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

Ответ на этот вопрос далек от субъективного.

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

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

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

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

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

...

  • Go поддерживает функции первого и высшего порядка, так что это круто. Кроме того, он поддерживает определение типов в стиле ML / Haskell / Racket. Что мне лично нравится в Go, так это то, что, хотя в нем есть идиомы, дизайнеры, кажется, понимают, что разные ситуации требуют разных инструментов - в отличие от Грэма. Не поймите меня неправильно, Грэм потрясающий.Просто споры об идиомах программирования в конечном итоге бесплодны: они сводятся либо к спору об инструментах между предвзятыми мастерами, либо между мыслительными процессами между предвзятыми философами языка.

    jcc33331 марта 2013, 20:40
1

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

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

  • Go объектно-ориентирован.Он использует подход общей диспетчеризации к объектной ориентации, как и Common Lisp и Dylan.

    PuercoPop10 августа 2013, 22:55
5

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

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

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