Dove posso trovare un confronto autorevole delle lingue dei computer? [chiuso]

5

Ho raggiunto un punto della mia carriera in cui voglio considerarmi meno un "ingegnere" in cui {x} è un linguaggio di programmazione specifico e voglio essere più un ingegnere del software indipendente dal linguaggio.

L'ovvio passo successivo è iniziare a imparare quante più lingue possibile per creare esperienza, ma ci sono solo tante ore al giorno e preferirei fare questo in un modo più efficiente. Inoltre, il mio obiettivo finale non è quello di essere praticamente esperto in 20 lingue, ma piuttosto di comprendere più profondamente la variazione tra i linguaggi di programmazione e quali sono i compromessi e le scelte progettuali che hanno fatto e perché.

Tendo a imparare meglio quando riesco a vedere prima una panoramica del paesaggio topico, prima di immergermi nei dettagli. Esiste un buon lavoro a lungo termine (cioè non un post sul blog) sull'analisi comparativa del linguaggio che fa un buon lavoro esplorando le variazioni nelle caratteristiche del linguaggio di programmazione? O forse, alternativamente, un buon testo di copertura sulla programmazione del linguaggio di programmazione?

    
posta Jonathan Hanson 13.09.2013 - 23:19
fonte

3 risposte

6

Il Linguaggi di programmazione: storia e principi fondamentali di Jean Sammet è un buon punto di partenza . Dalla prima recensione di Amazon, offre una panoramica di circa 120 lingue, con esempi a partire da circa 30.

Cronologia dei linguaggi di programmazione di Wexelblat e Bergin & La Cronologia delle lingue di programmazione di Gibson, Volume 2 di Gibson copre un bel po 'di territorio.

Tutti questi sono abbastanza datati, coprono le lingue da anni, persino decenni fa. Questa è una buona cosa. Ti insegnerà che c'erano cose come computer e linguaggi di programmazione prima che IBM inventasse il PC e Microsoft inventasse il sistema operativo. (Sì, sto scherzando.) Vi darà anche una prospettiva su dove siamo venuti, e su come e perché alcune delle vecchie lingue sono in effetti miglioramenti considerevoli sui loro successori più moderni.

Oltre a questo, devi iniziare a scavare nella vecchia letteratura, nelle lingue usate da tuo padre e anche da tuo nonno.

Ho 58 anni. Mio padre e io abbiamo imparato FORTRAN IV a UT Austin nel 1970. Ho imparato BASIC e PASCAL alcuni anni dopo, mentre ero ancora alle superiori. Ho iniziato a studiare CDC 6600 COMPASS (linguaggio di assemblaggio del processore centrale) in quel periodo, e mi sono messo seriamente in questione nell'estate del 1973. Solo alcuni anni più tardi ho iniziato a programmare realmente in C. (penso che fosse il 1987 , hacking il MIDI su un Atari 1040. Avevo una copia del software Toolworks C basato su floppy per CP / M, ma non ho mai fatto niente con esso.)

Devi assolutamente imparare LISP. Personalmente raccomando il dialetto Scheme e concordo con la raccomandazione SICP nell'altro post. C'è una versione online al MIT e un supporto sito.

Raccomando vivamente di imparare FORTH, o almeno di leggere Starting FORTH di Leo Brodie . Ti darà una prospettiva molto diversa sul calcolo. Esiste una versione online presso FORTH, Inc. e offrono un free (come nella birra) sistema di prova a durata illimitata . FORTH, Inc. sono brave persone, anche se Liz Rather si è ritirata, e anche se lei ed io non siamo d'accordo su un punto chiave di ciò che rende FORTH un ambiente fantastico.

Per una prospettiva completamente diversa, leggi il testo di Henry Ledgard "Dieci Mini-lingue: uno studio di problemi di attualità nei linguaggi di programmazione ". Piuttosto che parlare di lingue complete, costruisce "mini-lingue" che illustrano concetti importanti nella programmazione della teoria e della progettazione del linguaggio.

Questo ti darà qualcosa da masticare

    
risposta data 14.09.2013 - 05:21
fonte
6

Bene, dal momento che il tuo obiettivo è comprendere la progettazione della lingua, penso che due bei libri siano

  1. Struttura e interpretazione dei programmi per computer

    Questo è più di un "intro to computer science" in generale. Insegna Scheme e lo utilizza come veicolo per esplorare una discreta area informatica. Se non altro, questo ti insegnerà a programmare in modo funzionale poiché Scheme è essenzialmente un calcolo lambda non tipizzato + alcune primitive.

  2. Tecniche e modelli di programmazione computerizzata

    Passa attraverso diversi paradigmi in un linguaggio delizioso chiamato Oz. Un modo eccellente per apprendere su funzionale, concorrente, logica, vincolo, (reale) orientato agli oggetti e molti altri paradigmi. Questo è importante se vuoi veramente capire la differenza tra le lingue.

Questi sono libri, non saggi. Ma stai chiedendo di coprire un lotto di terreno. Ti raccomando particolarmente (skimming) CTMCP dato che parlerà molto della progettazione della lingua, è anche un'ottima lettura.

Se vuoi solo una panoramica generale di quali sono i paradigmi principali, in realtà ti consiglio i vecchi confronti wikipedian . Questa è solo una panoramica di superficie comunque.

    
risposta data 13.09.2013 - 23:39
fonte
4

Non conosco un libro del genere e dubito che un libro del genere possa esistere, perché ogni comparazione linguistica sarà intrinsecamente parziale. Ognuno ha un linguaggio di programmazione che domina la percezione di altri linguaggi di programmazione. Un saggio pertinente su questo argomento è "Beating The Average" di Paul Graham , un veterano Lisp hacker.

Quando esci per avere una panoramica delle diverse lingue, è meglio prima ottenere una panoramica dei diversi paradigmi, della loro storia e della loro interazione.

  • Programmazione strutturata
  • Programmazione procedurale
  • Programmazione orientata agli oggetti
  • Programmazione funzionale
  • Programmazione logica
  • Programmazione del flusso di dati
  • Programmazione parallela
  • ...

Alcune lingue possono essere categorizzate lungo assi di

  • tipizzazione statica e dinamica
  • verbose vs. tipizzazione dedotta
  • digitazione strong o debole
  • tipi parametrizzati?
  • compilato vs. interpretato
  • Metaprogrammazione?

Alcune lingue condividono anche un discendenza comune. Per esempio. l'ampio ramo dei linguaggi in stile C è dominante nelle lingue di oggi.

Ora abbiamo una grande matrice multidimensionale con proprietà diverse e possiamo scegliere lingue interessanti.

  • C fa programmazione strutturata e procedurale, ha una battitura verbosa e statica debole ed è compilata. È significativo della lingua franca del mondo di programmazione.
  • Haskell è un linguaggio di programmazione compilato funzionale con un sistema di tipo statico, inferito e strong estremamente espressivo. Per molti aspetti rappresenta l'avanguardia del design del linguaggio.
  • La famiglia Lisp contiene molti linguaggi di programmazione funzionali e imperativi, in genere con una digitazione strong e dinamica. Le caratteristiche interessanti sono il codice sorgente omoiconico e le capacità di metaprogrammazione risultanti.
  • C # è un linguaggio di programmazione compilato in stile C imperativo orientato agli oggetti con un sistema di tipi statici e dinamici ricco che include funzionalità generiche, di inferenza del tipo e metaprogrammazione. È uno dei linguaggi più moderni e flessibili per quanto riguarda le lingue tradizionali.
  • Perl è un linguaggio di programmazione in stile C interpretato in modo imperativo, funzionale e orientato agli oggetti con una digitazione strong e dinamica. È significativo qui perché è strongmente influenzato dalle tradizioni Lisp, Shell e C, e ha caratteristiche insolite nella sua progettazione linguistica.
  • ...

Ecc. Io stesso scelgo una nuova lingua una volta ogni tanto, e la gioco per un mese. Anche se non riesco a programmare efficacemente con esso, di solito sono in grado di leggere con fiducia le fonti in seguito.

Un'idea interessante è leggere le critiche dei linguaggi di programmazione e vedere cosa fanno sbagliato . Ad esempio php è stato criticato come "Frattalo di cattivo design" in un post del blog. Molte altre lingue condividono queste debolezze, ma è interessante vedere come gli altri spediscono attorno a queste scogliere.

    
risposta data 13.09.2013 - 23:49
fonte

Leggi altre domande sui tag