Vale la pena leggere le specifiche della lingua? [chiuso]


18

Mi chiedo se vale la pena leggere le specifiche della lingua / i documenti standard (ad es. Le specifiche della lingua Java ) se non hai intenzione di scrivere un compilatore / interprete per la lingua o qualcosa di simile? Capisco che leggere un libro del genere non dovrebbe essere la prima esposizione di nessuno alla lingua, ma potrebbe essere un ottimo modo per apprenderne i dettagli più fini.

Ti sei mai disturbato, e dovrebbero altri?


4
Una specifica del linguaggio non è pensata per essere letta da una copertina all'altra, è semplicemente un riferimento.
Mahmoud Hossam,

Risposte:


18

Fondamentalmente si riduce a una domanda abbastanza semplice: vuoi una conoscenza autorevole e dettagliata della lingua o sei felice di conoscerla abbastanza bene da usarla, rendendoti conto che probabilmente ci sono parti che non conosci bene, e molto probabilmente altre parti che non conosci affatto?

Fondamentalmente, ci sono alcune persone che sembrano quasi nate per essere "avvocati linguisti" - non potranno (non possono) riposare fintanto che ci sono anche alcuni angoli nella lingua che non conoscono e / o capire. Molti di questi gravitano verso lingue relativamente semplici semplicemente perché l'apprendimento di lingue più complesse a questo livello di dettaglio è spesso quasi impossibile per una sola persona.

Per la maggior parte dei programmatori sarebbe una totale perdita di tempo: sono abbastanza felici e produttivi conoscendo abbastanza il linguaggio per essere in grado di usarlo (ragionevolmente) bene. Oltre a ciò, semplicemente a loro non importa. Il linguaggio è uno strumento e fintanto che possono utilizzare lo strumento abbastanza bene per i loro scopi, il fatto che ci siano altre cose che non sanno è in gran parte irrilevante.


3
+1 per l'ultimo paragrafo. Questo è ciò che la maggior parte dei programmatori dovrebbe realizzare - vogliono essere un John Skeet (che sa tutto di C # ma quasi nulla di qualsiasi altra cosa - non lo hanno visto rispondere alle domande su SQL, per esempio) o solo un utente ma di molte altre tecnologie che rende la pratica più pratica e la vita più interessante.

2
@Developer Art: Ma Jon Skeet è dio;)
Anto

1
@sbi: sono d'accordo sul fatto che la lingua (e la sua complessità) sia chiaramente un fattore importante. Le dimensioni standard non significano necessariamente molto però. Ad esempio, la parte dello standard C ++ che copre il linguaggio proprio è lunga solo ~ 400 pagine, mentre la specifica del linguaggio Java è ~ 500. Anche se non credo che Java sia quasi il C ++ "ripulito" che alcuni sostengono, difficilmente credo che sia il 25% più complesso del C ++.
Jerry Coffin,

3
@Developer Art - un po 'duro con Jon Skeet, ha i badge per tutto (incluso SQL!)
SHug

2
@dietbuddha: Certamente non intendo scusare l'ignoranza, ma in tutta onestà, per la maggior parte delle persone è meno una questione se dovrebbero imparare qualcosa, piuttosto che cosa dovrebbero trascorrere il loro tempo imparando. Quale sarà di più beneficio per un programmatore C ++: apprendere un nuovo algoritmo o apprendere le regole esatte utilizzate per scegliere quale funzione sovraccarica chiamare per un determinato set di parametri? Tieni presente che se normalmente ha molte ragioni per preoccuparsi di ciò che viene chiamato, probabilmente abuserà comunque del sovraccarico!
Jerry Coffin,

12

Mai

Non si dovrebbe mai leggere una specifica del linguaggio.

È una totale perdita di tempo.

I grandi programmatori sono in grado di digitare codice casuale, porre domande su Stack Overflow e utilizzare l'IDE per scrivere infine codice che non si arresta in modo anomalo molto spesso.

Non perdere tempo a capire la lingua. Basta trovare un IDE eccezionale con un buon completamento automatico. Poni molte domande SO. È tutto ciò di cui tutti hanno bisogno.


3
Mai? Neanche se stai scrivendo un interprete / compilatore?
greyfade,

1
L'hai inchiodato! Funziona così. ;)
x4u

4
@greyfade: mai. Non fidarti mai dei fatti. Attenersi alle ipotesi.
S.Lott

6
cosa c'è di sottile in quello?
Aditya P,

2
Onestamente non saprei dire se si trattasse di sarcasmo o no. : P
greyfade,

5

Per Java la specifica del linguaggio ha lo scopo di dare una risposta definitiva a qualsiasi domanda sul significato di un dato costrutto sorgente. Non è consigliabile leggerlo come uno studente - invece un buon insegnante ti mostra tutte le trappole e cosa significano effettivamente.

Per uno sviluppatore esperto, Java Puzzlers è davvero ottimo per allenare la tua comprensione dei casi di angolo oscuro.


2

La risposta generale è: Sì, vale la pena.

Se si desidera scrivere un codice portatile, è obbligatorio.

Per alcune lingue, è inevitabile, ad esempio Ada o Perl.

Inoltre, se non solo scrivi il codice ma leggi anche il codice da altri, alla fine dovrai fare riferimento alla specifica.


2

Forse sono solo io, ma questa domanda non ha senso. Comprendere gli strumenti che usi è il segno distintivo di un professionista. Più profonda è la comprensione, migliore è la capacità di utilizzare lo strumento. Per me è una scelta tra essere un dilettante o un professionista.

Ogni volta che sto imparando una nuova lingua, la prima cosa che cerco è la specifica.

Ho letto le specifiche per ANSI C, C ++, Java, Scheme, Python e Javascript. Ho dimenticato la maggior parte dei dettagli in C, C ++ e Java solo perché non uso spesso quei linguaggi. Dopo aver letto le specifiche ero un programmatore migliore perché sapevo usare meglio la lingua.


1

In generale può essere utile capire alcuni momenti difficili che incontri di tanto in tanto.

Ma seriamente, se padroneggiare una lingua richiede di familiarizzare con le sue specifiche dettagliate, allora forse la lingua è sfortunata. Analogamente al detto comune, se hai bisogno di una documentazione per la tua applicazione, allora è progettata male.


Questo è esattamente il motivo per cui tengo a portata di mano una copia dell'ECMA-262.
Greyfade,

1

Lo trovo utile quando ti imbatti in un momento, ma trovo difficile conservarlo come una lettura diretta. Tuttavia, quando l'ho usato dopo non aver capito qualcosa, ha sempre migliorato notevolmente le mie conoscenze.


1

Se sei un programmatore hard core in quella lingua e devi essere in grado di strappargli ogni sfumatura sottile, sì. Ci sono resi evidenti sul vostro investimento di tempo in quel caso .

Altrimenti no. Se non hai intenzione di usare la conoscenza, sicuramente non rimarrà con te. Le specifiche linguistiche riguardano la cosa più noiosa che si possa immaginare.


1

Normalmente non metto molto stock nello Standard. Il semplice fatto è che lo Standard non ti dirà di non usare le eccezioni come flusso di controllo. Non ti dirà di non usare Singleton. Non ti dirà come progettare un'interfaccia di classe gestibile. Non ti dirà perché l'applicazione si blocca quando non sai perché. Puoi avere il programma più ben definito al mondo e sarà comunque orribile.

A mio avviso, il semplice fatto è che la stragrande maggioranza delle sfide di programmazione non consiste nel fare in modo che la lingua faccia quello che vuoi, è sapere qual è la cosa giusta. Finché conosci le funzioni linguistiche di base, sarà come usarle che conta.


1

Vale sicuramente la pena leggerlo. Alcuni linguaggi come C ++ e Java e Python sono abbastanza complessi che leggendo le specifiche del linguaggio imparerai molto su quelle lingue e su tutti i trucchi sintattici / semantici che hanno.

Leggevo le specifiche del linguaggio Scheme R5RS sulla corsa in autobus per il college perché era breve e compatto e ho imparato tutta la sintassi e tutte le funzioni di base disponibili.


0

La parte di doc.python.org etichettata "riferimento linguistico" è estremamente utile. Il capitolo "modello di dati" lo è particolarmente.


0

Penso che se programmare in questo linguaggio è il tuo lavoro e vuoi prenderlo sul serio, dovresti leggere le specifiche del linguaggio, specialmente quando è relativamente facile e veloce da leggere e comprendere come le specifiche del linguaggio Java sebbene abbia recentlyperso molto è semplicità con generici.

Ma anche se hai intenzione di imparare e alla fine padroneggiare una nuova lingua che non conosci ancora, può essere molto perspicace leggere le specifiche di quella lingua prima di perdere tempo con essa. Sono sicuro che se più sviluppatori C ++ avessero letto e cercato di comprendere il Manuale di riferimento con annotazioni C ++ prima di iniziare a usarlo, molti ne sarebbero scappati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.