Ha go-lingua di Google affrontare i problemi in post di Paul Graham: 'Perché Arc non è particolarmente Object Oriented'?
Domanda
Google di Golang affrontare i problemi con le lingue affrontati nel post di Paul Graham ' Perché Arc non è particolarmente Object Oriented '?
Soluzione
La mia sensazione iniziale verso questo è "E 'troppo presto per dire"
1) Programmazione orientata agli oggetti è entusiasmante se si dispone di un linguaggio staticamente tipizzato senza chiusure lessicali o macro. A certi laurea, offre un modo per aggirare questi limitazioni. (Vedi Decima di Greenspun Regola.)
Go supporta letterali logici (vedere docs ), che se sto leggendo questo permettono correttamente di passare funzioni come params, se definiti altrove o creati ad-hoc.
2) Programmazione orientata agli oggetti è popolare nelle grandi aziende, perché adatta il loro modo di scrivere software. A le grandi aziende, il software tende ad essere scritto da grande (e frequentemente mutevoli) squadre di mediocre programmatori. Orientato agli oggetti programmazione impone una disciplina questi programmatori che impedisce qualsiasi uno di loro di fare troppo danno. Il prezzo è che il risultante codice è gonfio di protocolli e piena di doppioni. Questo non è un prezzo troppo alto per la grande le aziende, perché il loro software è probabilmente ad essere gonfio e pieno della duplicazione in ogni caso.
Questo punto è molto soggettiva di rispondere.
3) Programmazione orientata agli oggetti genera un sacco di quello che sembra lavoro. Torna nei giorni di moduli continui, c'era un tipo di programmatore che avrebbe messo solo cinque o dieci righe di il codice in una pagina, preceduto da venti linee di elaborato formattato Commenti. Programmazione orientata agli oggetti è come il crack per queste persone: si consente di incorporare tutto questo ponteggi a destra nella vostra fonte codice. Qualcosa che un hacker Lisp potrebbe gestire spingendo un simbolo su un elenco diventa un intero file di classi e metodi. Quindi è un buon strumento, se si vuole convincere te, o qualcun altro, che si sta facendo un sacco di lavoro.
Dal momento che andare non è un linguaggio vero orientato agli oggetti, probabilmente si può risolvere il problema in qualunque fashon hai dimestichezza con.
4) se un linguaggio stesso è un programma orientato agli oggetti, può essere esteso dagli utenti. Beh forse. O forse si può fare ancora meglio per offrendo i sub-concetti di programmazione orientata agli oggetti alla carte. Sovraccarico, per esempio, è non intrinsecamente legato alle classi. Staremo a vedere.
Vai sembra avere un approccio interessante per gli oggetti, dove non sono tenuti a preoccuparsi / sviluppo di alberi di oggetti di grandi dimensioni. Sembra che gli strumenti sono presenti nella lingua di strutturare i dati in maniera orientata agli oggetti senza di te blocco in un ambiente puro orientato agli oggetti.
5) astrazioni orientate agli oggetti mappa ordinatamente sui domini di alcuni specifici tipi di programmi, come simulazioni e sistemi CAD.
...
Altri suggerimenti
Paul ha alcuni punti interessanti, in generale, ho letto un sacco di sue riflessioni. In questa materia, non siamo d'accordo. E 'un dado Lisp, e un dado programma di merda. Sembra impegnare off difficile da comprendere programmi come il lavoro di grandi programmatori. Sì, mi rendo conto che è più sfumata di quella, ma che realmente si riduce solo a questo. Alla fine della giornata, sia il codice è facile lavorare con, o non lo è. E alcuni programmatori, programmatori che Paolo avrebbe considerato grande, sarà in grado di mettere in su con più schifo di altri e ancora in grado di fare testa o croce di quello che il codice si propone. Si tratta di un'abilità, ma la maggior parte sicuramente non l'unico bisogno un buon programmatore.
A proposito di Arco, fa schifo, e se non mi sbaglio anche le persone nella comunità Lisp la penso così -. Il mio punto qui è che anche le persone intelligenti sbagliano
Ancora una volta, Paul è un ragazzo intelligente, ma tutto il suo approccio in questo particolare pezzo è fuori luogo che sembra.
Aspetta, però, è andare veramente orientata agli oggetti? Sembra del tutto agnostico su questo fronte. È possibile utilizzare OOP o FP o programmazione imperativa all'interno Go. Voglio dire, Prolog-style "programmazione" sarebbe una forzatura, ma per il resto ...
In realtà, direi che assomiglia a Go scala a questo proposito:. Ci sono alcuni paradigmi di oggetti in giro, e tuttavia, ci sono anche lambda e typecasing giro