Se si vuole imparare un nuovo linguaggio di programmazione ogni anno, quale dovrebbe essere la lista? [chiuso]

19

Nel primo capitolo di "Il programmatore pragmatico" il primo obiettivo di apprendimento è:

Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getter struck in a rut. [...]

Per raggiungere questo obiettivo nel corso di una carriera, è probabile che l'elenco delle lingue diventi piuttosto lungo (in particolare se non vuoi "progredire" nella gestione). Chiaramente l'educazione di un programmatore (o di qualsiasi altra forma) ti consentirà di iniziare con un nucleo di linguaggi commercialmente utili (la solita lista di post di lavoro: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. .). Inoltre, è probabile che un programma di apprendimento formale o informale abbia coperto approcci funzionali (tramite qualcosa come Haskell, LISP o un linguaggio derivato dalla ML)

Ma una volta che un sottoinsieme ragionevole di quella lista è stato appreso, quali sono i prossimi, e perché ?

    
posta Richard 12.09.2014 - 21:54
fonte

8 risposte

19

Rendilo interessante e passa ogni anno a scrivere un interprete o un compilatore per il tuo linguaggio di programmazione che riempie una nicchia per la quale non hai mai utilizzato un linguaggio di programmazione. Ogni anno, scrivi il tuo prossimo compilatore / interprete usando la lingua che hai scritto l'anno precedente.

    
risposta data 10.09.2010 - 02:56
fonte
13

Dovresti massimizzare la "rilevanza marginale", ovvero avventurarti sempre in nuove aree in cui non sei ancora strong. Varia sia i linguaggi di programmazione che i concetti . Se non conosci alcun linguaggio orientato agli oggetti, prova Java e un framework ad alta astrazione come Hibernate. Quindi scrivi alcuni elementi di amministrazione dei sistemi in un linguaggio di script come Python o Perl. Quindi acquisisci alcune competenze di basso livello in C o C ++, scrivendo codice server multithread ad alte prestazioni. Se non conosci la programmazione funzionale, prova Haskell con alcuni problemi di teoria dei grafi come risoluzione di Peg Solitaire , ecc. È molto fattibile farlo in modo che tutto ciò che impari abbia un valore di mercato immediato, fino a quando non colpisci argomenti eruditi o per scopi speciali come sicurezza delle capacità degli oggetti , Prolog o VHDL .

Buon esercizio a proposito! Questo ti insegnerà a pensare in un secondo momento ea immaginare problemi in termini indipendenti dalla lingua, invece di basarsi su troppe tecniche specifiche della piattaforma. Ad esempio, una volta acquisite le somiglianze e le differenze nella distribuzione del metodo virtuale tra C ++ e Python, avrai praticamente "capito" istantaneamente per qualsiasi altra lingua.

    
risposta data 13.09.2010 - 15:25
fonte
9

Un linguaggio che non influisce sul modo in cui pensi di programmare, non vale la pena di saperlo. - Alan Perlis

Come hanno reagito alcune delle altre risposte, se stai imparando una nuova lingua all'anno, perché? è quello di espandere le tue capacità come programmatore. Come? è imparando le lingue con paradigmi distinti da quelli delle lingue che già conosci, e fare il punto sui paradigmi che già conosci determina quale lingua imparare.

Quali sono questi paradigmi? Il libro avanzato Concetti, tecniche e modelli di programmazione per computer fornisce un eccellente overview con una mappa grafica .

Quindi, se conosci solo le lingue imperative simili a C, allora l'apprendimento di Scheme / Lisp è estremamente utile. Se conosci già le lingue imperative e funzionali, allora l'apprendimento di Prolog sarà utile, ecc.

Un libro recente che cerca di insegnare più lingue e paradigmi è Seven Languages in Seven Weeks . Naturalmente, dopo una settimana di studio non parlerai fluentemente in ogni lingua, ma sembra offrire una prospettiva multi-paradigma orientata al praticante e orientata al praticante.

Quando fai un altro paradigma, è veramente un momento Zen; passare dalla programmazione imperativa a quella funzionale mi ha fatto vedere il mondo del computing in una luce completamente nuova. Buon apprendimento!

    
risposta data 17.09.2010 - 23:38
fonte
9

C - come essenziale, "alla base di tutto", linguaggio di programmazione dei sistemi

Lisp (Scheme) - lo strano ma incredibilmente potente linguaggio ur che i grandi hacker ritengono sia definito

Smalltalk - perché questo è ciò che OO doveva essere

Erlang (o altro linguaggio attore) per capire gli attori

Haskell - per capire le Monade

Javascript - perché è ovunque ed essenziale per lo scripting del browser

Uno di Python / Ruby / Perl (ma non importa quale) - quindi sai che linguaggio di scripting popolare, moderno e di alto livello con un buon supporto per le librerie sembra

SQL: così puoi parlare con i database relazionali

Prolog - perché hai ancora bisogno di farti saltare la testa

    
risposta data 26.09.2010 - 07:03
fonte
4
  • Go (nuovo linguaggio di programmazione a livello di sistema con un buon supporto per la concorrenza e concetti non così tradizionali)
  • Lua (linguaggio di scripting semplice, espressivo, estremamente flessibile ed equilibrato paradigma imperativo, funzionale e meta-programmazione, che consente OOP)
  • D (C / C ++ fatto bene)
  • Groovy (espressività e meta-programmazione nel mondo Java)
  • Eiffel (Design by Contract e un diverso approccio a OOP)
  • Prolog (IL linguaggio di programmazione logica)
risposta data 26.09.2010 - 13:44
fonte
2

1) Prolog: è completamente diverso da tutte le lingue imperative che hai utilizzato finora e cambierà il tuo modo di pensare ai problemi

2) Lisp: senza di esso, si potrebbe anche usare Vi

3) Erlang: Ancora una volta, è completamente diverso, sembra abbastanza alla moda.

4) Qualcosa da Turing Tarpit (ad esempio Brainfuck), e probabilmente scrivere un compilatore o un interprete per questo: non riesco a pensare a una ragione per farlo, ma mi sembra una buona idea.

    
risposta data 27.09.2010 - 11:42
fonte
1

Oltre a quelli che hai elencato,

Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.

    
risposta data 13.09.2010 - 23:30
fonte
1

Anche se sono d'accordo, è bello imparare nuove lingue (e anche imperativo per una lunga carriera), penso che un anno sia troppo oltre i primi cinque-dieci anni. Quello che preferirei vedere è qualcuno con questo livello di esperienza che apprende cose nuove sulle lingue che già conoscono. Ad un certo punto hai bisogno di profondità e di conoscenza. Quindi puoi scrivere un costrutto If in 12 lingue, grande grido. Preferirei vedere qualcuno che si scava davvero e diventa esperto in almeno una cosa. E poi i prossimi anni diventeranno esperti in qualcos'altro. In una carriera di oltre 30 anni, voglio che qualcuno abbia una conoscenza approfondita, non solo le basi in molte cose.

    
risposta data 17.11.2010 - 17:44
fonte

Leggi altre domande sui tag