2009-12-08 5 views
12

Ich überlege, einen Lisp-Dialekt zu lernen (wahrscheinlich Scheme, da ich ständig höre, wie gut eine Lernsprache ist), um meine allgemeine Programmierfähigkeit zu verbessern.Wie kann Lisp mich zu einem besseren C# -Entwickler machen?

Abgesehen davon, dass das Erlernen einer neuen Sprache Ihnen hilft, ein besserer Programmierer im Allgemeinen zu sein, wie kann das Lernen von Lisp mich zu einem besseren C# -Programmierer machen?

+5

Wer hat dafür gestimmt, das zu schließen? – ChaosPandion

+1

Sie könnten auch F # betrachten. Mit VS2010 wird es Mainstream. – roufamatic

+1

Das ist eine gute Idee. Mehr für die IDE als die Sprache selbst. – ChaosPandion

Antwort

9

ich glaube, das Beste, was Sie aus dem Studium eine funktionale Sprache zu gewinnen beginnt zu denken in einer deklarativen, weniger imperativen Art und Weise. Dies wird dazu führen, dass lesbarer, wartbarer und zusammensetzbarer Code geschrieben wird.

Eine andere Sache, die Sie lernen, wenn Sie funktional gehen, ist die Wichtigkeit von reinen Funktionen, d. H. Funktionen ohne Nebenwirkungen.

Und weil C# mehr und mehr funktionale und deklarative Features wie Closures (alias Lambda) und LINQ erhält, können Sie die Programmierung mit diesen Konstrukten besser verstehen. Ich hatte keine Schwierigkeiten, die verzögerte Ausführung, die häufigste LINQ-Falle, zu verstehen, weil ich Haskell, eine faul bewertete funktionale Sprache, schon groked hatte.

+0

es wird sogar machen Sie besser ausgestattet mit Datenbanken arbeiten –

+0

@ jemand: ja, das ist ein Vorteil. Da SQL eine deklarative Sprache ist, hilft es, deklarativ zu denken. –

+3

Ich schrieb meine eigene Antwort, aber es ist im Grunde "Was Martinho oben sagte". Declarativ schreiben, funktional schreiben - Lisp wird Ihnen eine Perspektive geben, warum diese Dinge gut sind. Nicht nur "funktionale Programmierstile sind einfacher zu testen", sondern "wow, schau dir an, wie viel kürzer und erweiterbarer mein Programm ist, weil es datengesteuert ist, oder weil Schlüssellogik als Parameter übergeben werden kann". Wie Sie gesagt haben, hat C# Funktionen bekommen, die es einfacher machen, auf diese Weise zu arbeiten. Lisp kann Ihnen zeigen, warum Sie sich interessieren. – khedron

2

Zum einen können Sie Rekursion innerhalb und außerhalb lernen.

+5

Meinst du nicht drinnen und drinnen? :) – Kevin

+0

@Kevin: Für mich fühlt sich dieser Satz mehr iterativ ("und", "wieder") als rekursiv. Ich würde sagen "Rekursion in Rekursion" oder so etwas. –

+0

Nun, für Lisp sollte es wirklich eine Tail-End-Rekursion sein, und ich weiß nicht, wie ich das auf Englisch demonstrieren soll. –

1

Ein guter Grund für das Erlernen von Scheme ist, dass es oft als pädagogische Sprache verwendet wird. Infolgedessen gibt es viele gute (akademische) Bücher und Papiere, die mit Scheme als Zielsprache geschrieben wurden.

Google:

  • EOPL
  • SICP
  • HTDP
  • Little/Seasoned/Begründete Schemer
4

Joel schrieb einen Essay vor einigen Jahren about programmers knowing anything but Java, und warum sollte es sein, eine gute Idee, etwas wie Scheme zu lernen. Ich denke, dass diese Argumente auch für C# gelten. Ein weiterer guter Grund ist, dass es ein wirklich gutes Buch über Programmierung gibt, 'Structure and interpreation of computer programs' by Abelson and Sussman, das Scheme verwendet und Ihnen viele neue Einblicke in verschiedene Programmierkonzepte geben kann.

1

Lernen Sie es einfach und kommen Sie erstaunt zurück und erzählen Sie uns davon.

4

Sie sollten Lisp erlernen, damit Sie die Energie von metaprogramming verstehen können. Wenn Sie dies noch nicht getan haben, sollten Sie lernen, Emacs zu verwenden und versuchen, einige Emacs Lisp zu schreiben. Versuchen Sie danach, mit Common Lisp unter Verwendung von SLIME in die Programmierung zu wechseln.

+0

Abgestimmt, Bit sage ich gehen Sie für Scheme statt Common Lisp. ;) Ich glaube, es gibt einige Implementierungen von Schemata, die die CLR unterstützen, was für das ursprüngliche Poster gut sein könnte. –

Verwandte Themen