2009-12-08 18 views
12

Sto considerando di imparare un dialetto Lisp (probabilmente Scheme, dal momento che sento costantemente quanto è buono il linguaggio di apprendimento) al fine di migliorare le mie capacità di programmazione generale.In che modo Lisp può diventare uno sviluppatore C# migliore?

Oltre al fatto che l'apprendimento di una nuova lingua ti aiuta a essere un programmatore migliore in generale, in che modo l'apprendimento di Lisp mi rende un programmatore C# migliore?

+5

Chi ha votato per chiudere questo? – ChaosPandion

+1

Si potrebbe anche considerare F #. Sta diventando mainstream con VS2010. – roufamatic

+1

Questa è una buona idea. Più per l'IDE rispetto alla lingua stessa. – ChaosPandion

risposta

9

penso che il migliore che si può guadagnare da studiare un linguaggio funzionale sta iniziando a pensare in un modo più dichiarativo, meno imperativo. Ciò porterà alla scrittura di codice più leggibile, manutenibile e componibile.

Un'altra cosa che impari quando vai funzionale è l'importanza delle funzioni pure, cioè funzioni senza effetti collaterali.

E poiché C# ha ottenuto caratteristiche sempre più funzionali e dichiarative come chiusure (aka lambdas) e LINQ, è possibile capire meglio la programmazione con tali costrutti. Non ho avuto problemi a capire l'esecuzione differita, la più comune trappola LINQ, perché ho già fatto un grokked Haskell, un linguaggio funzionale valutato pigro.

+0

ti renderà ancora più attrezzato per lavorare con i database –

+0

@somebody: sì, questo è un vantaggio. Poiché SQL è un linguaggio dichiarativo, aiuta a pensare in modo dichiarativo. –

+3

Stavo scrivendo la mia risposta, ma fondamentalmente "quello che ha detto Martinho sopra". Scrivendo in modo dichiarativo, scrivendo funzionalmente - Lisp ti darà una prospettiva esterna sul perché queste sono cose buone. Non solo "gli stili di programmazione funzionale sono più facili da testare", ma "wow, guarda quanto è più corto e più estensibile il mio programma perché è basato su dati, o perché la logica chiave può essere passata come parametro". Come hai detto, C# ha acquisito funzionalità che rendono più semplice lavorare in questo modo. Lisp potrebbe mostrarti il ​​motivo per cui ti interessa. – khedron

2

Per prima cosa, puoi imparare la ricorsione dentro e fuori.

+5

Non intendi dentro e dentro di nuovo? :) – Kevin

+0

@Kevin: A me quella frase sembra più iterativa ("e", "di nuovo") che ricorsiva. Direi "ricorsione nella ricorsione" o qualcosa del genere. –

+0

Beh, per Lisp, dovrebbe essere una ricorsione di tipo tail-end, e non ho idea di come dimostrarlo con l'esempio in inglese. –

1

Una buona ragione per apprendere lo schema è che viene spesso utilizzato come linguaggio pedagogico. Di conseguenza, ci sono molti buoni libri (accademici) e documenti disponibili scritti con Scheme come lingua di arrivo.

Google:

  • EOPL
  • SICP
  • HTDP
  • Piccolo/Condito/motivato Schemer
1

Basta imparare e tornare a meravigliarci e parlarcene.

4

Dovresti imparare Lisp in modo che tu possa capire la potenza di metaprogramming. Se non lo hai già fatto, dovresti imparare a usare Emacs e provare a scrivere un numero Emacs Lisp. Successivamente, provare a passare alla programmazione Common Lisp utilizzando SLIME.

+0

Votato, bit dico di andare a Scheme, invece di Common Lisp. ;) Credo che ci siano alcune implementazioni del sistema che supportano il CLR, che potrebbe essere buono per il poster originale. –

Problemi correlati