Говорит ли Google о проблемах в посте Пола Грэма «Почему Arc не особенно ориентирована на объект»? - PullRequest
5 голосов
/ 11 ноября 2009

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

Ответы [ 3 ]

8 голосов
/ 12 ноября 2009

Мое первоначальное чувство к этому: «Слишком рано говорить»

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

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

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

Этот вопрос далеко не субъективен, чтобы ответить.

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

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

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

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

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

...

5 голосов
/ 01 декабря 2009

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

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

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

1 голос
/ 01 апреля 2013

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

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

...