Est-ce que go-langue de Google face aux problèmes dans le poste de Paul Graham « Pourquoi Arc est pas particulièrement orienté objet »?
Question
Est-ce que Google golang régler les problèmes liés langues abordées dans le poste de Paul Graham « Pourquoi Arc est pas particulièrement orienté objet ?
La solution
Mon premier sentiment envers c'est « Il est trop tôt pour dire »
1) La programmation orientée objet est passionnant si vous avez un statiquement typé sans fermetures lexicales ou macros. pour certains degré, il offre un moyen de contourner ces limites. (Voir le dixième de Greenspun Règle.)
Go prend en charge les littéraux de fonction (voir docs ) qui, si je lis ceci correctement permettent vous de passer des fonctions comme params, qu'ils soient définis ailleurs ou créé ad hoc.
2) La programmation orientée objet est populaire dans les grandes entreprises, car elle convient la façon dont ils écrivent des logiciels. À les grandes entreprises, les logiciels ont tendance à être écrit par un grand (et souvent l'évolution) des équipes de médiocre programmeurs. Orienté objet programmation impose une discipline ces programmeurs qui empêche toute l'un d'entre eux de faire trop dommage. Le prix est que le le code résultant est gonflé avec protocoles et pleine de duplication. Ce n'est pas un prix trop élevé pour le grand entreprises, parce que leur logiciel est va probablement être pléthorique et complète de duplication de toute façon.
Ce point est loin de répondre à l'appréciation de.
3) La programmation orientée objet génère beaucoup de ce qui ressemble travail. Retour dans les jours de fanfold, il y avait un type de programmeur qui ne placeront cinq ou dix lignes de code sur une page, précédée de vingt lignes formatées minutieusement commentaires. Programmation orientée objet est comme le crack pour ces personnes: il vous permet d'intégrer tout cela droit d'échafaudage dans la source code. Quelque chose qu'un pirate Lisp pourrait gérer en poussant un symbole sur une liste devient un fichier entier de classes et méthodes. Il est donc un bon outil si vous voulez vous convaincre, ou quelqu'un d'autre, que vous faites beaucoup du travail.
Comme go est pas un langage objet vraiment orienté, vous pouvez probablement résoudre le problème dans tout ce fashon vous êtes à l'aise avec.
4) Si une langue est elle-même un programme orienté objet, il peut être étendu par les utilisateurs. Eh bien, peut-être. Ou peut-être vous pouvez faire encore mieux en offrant les sous-concepts de à la programmation orientée objet carte. Surcharge, par exemple, est pas intrinsèquement liée aux classes. Nous verrons.
Go semble avoir une approche intéressante à des objets, où vous n'êtes pas obligé de vous inquiéter / développer de grands arbres d'objet. Il semble que les outils sont présents dans la langue de structurer vos données dans un objet mode orienté sans vous enfermer dans un environnement orienté objet pur.
5) abstractions de l'objet orienté plan soigneusement sur les domaines de certaines certains types de programmes, tels que des simulations et des systèmes de CAO.
...
Autres conseils
Paul a quelques points intéressants, en général, j'ai lu beaucoup de ses rêveries. Dans cette affaire, nous ne partageons pas. Il est un écrou Lisp, et un écrou de programme merdique. Il semble difficile de mettre en gage de comprendre les programmes que le travail des grands programmeurs. Oui, je me rends compte qu'il est plus nuancée que cela, mais il se résume à cela. A la fin de la journée, que ce soit votre code est un travail facile avec, ou ce n'est pas. Et certains programmeurs, les programmeurs que Paul estimerait grand, sera en mesure de mettre en place avec plus de merde que d'autres et encore être en mesure de faire des têtes ou queues de ce que le code prévoit. C'est une compétence, mais assurément pas le seul apanage d'un bon programmeur.
En parlant d'Arc, il suce, et à moins que je me trompe même les gens dans la communauté Lisp pense donc -. Mon point étant ici que même les gens intelligents font des erreurs
Encore une fois, Paul est un gars intelligent, mais toute son approche dans cette pièce particulière est hors de la marque, il semble.
Attendre, cependant, est d'aller vraiment orienté objet? Il semble tout à fait agnostique sur ce front. Vous pouvez utiliser OOP ou FP ou la programmation dans les Impératif Go. Je veux dire, style Prolog « programmation » serait un bout droit, mais autrement ...
En fait, je dirais que Go ressemble scala à cet égard. Il y a certains paradigmes d'objets qui traînent, et pourtant, il y a aussi lambdas et typecasing qui traînent