Ich bin ein Universitätsstudent, der im kommenden Semester einen Programmierkurs belegen wird. Eine der Kursanforderungen ist die Spezialisierung (für den Kurs) in einer Sprache, in der Sie keine vorherige Erfahrung haben und nicht im Kurs behandelt werden. Ich habe angefangen, Listen von Sprachen durchzusehen, aber ich möchte ein Feedback bekommen und vielleicht etwas über einige Sprachen herausfinden, die mir vielleicht nicht bekannt sind.
Sprachen, die abgelehnt wurden / ich weiß:
Java (Universitätsfavorit)
(Lisp (unterrichtet im Kurs, spezieller Scheme) (und ich lerne es bereits)))
Assembly (in Comp Org gelehrt)
BASIC (anscheinend auch ... einfach ...)
Ich habe darüber nachgedacht, Haskell oder VB6 zu lernen, aber ich habe immer noch das Gefühl, dass es Sprachen gibt, die für meinen Denkprozess, die ich übersehen habe, nützlicher sein könnten. Ich freue mich über alle Rückmeldungen und hoffe, dass dies nicht zu subjektiv ist.
EDIT: Meine persönlichen Ziele für den Kurs sind entweder ein Paradigma zu erleben, das sowohl für meinen Denkprozess in der zukünftigen Programmierung (zB funktional, etc.) herausfordernd als auch nützlich sein könnte, oder eine Sprache zu studieren, die mir tiefer geht Verständnis der Interpreter / Compiler-Theorie und der Übergang zwischen Assembly und High-Level-Code (zB C).
Ich betrachte stark die Schule und die Forschung als Berufswahlen, aber das hindert mich nicht daran, den Nutzen von alten Sprachen und Sprachen zu verstehen, die in kommerziellen Umgebungen verwendet werden. Alle Informationen über Sprachen, die in AI-Programmen verwendet werden, wären jedoch besonders willkommen.
Warum nicht für Erlang gehen?
Intro von wikipedia :
Erlang ist ein Allzweck-Concurrent Programmiersprache und Laufzeit System. Die sequentielle Teilmenge von Erlang ist eine funktionale Sprache, mit strenge Bewertung, Einzelauftrag, und dynamisches Tippen. Für Nebenläufigkeit es folgt dem Actor-Modell. es war von Ericsson zur Unterstützung konzipiert verteilt, fehlertolerant, Soft-Echtzeit, Non-Stop-Anwendungen. Die erste Version wurde von Joe entwickelt Armstrong im Jahr 1986. 1 Es unterstützt heiß swapping so kann code geändert werden ohne ein System zu stoppen. 2 Erlang war ursprünglich eine proprietäre Sprache in Ericsson, wurde aber als veröffentlicht Open Source im Jahr 1998.
Während Threads sind als eine komplizierte und fehleranfälliges Thema in den meisten Sprachen, Erlang bietet Sprachlevel Funktionen zum Erstellen und Verwalten Prozesse mit dem Ziel der Vereinfachung gleichzeitige Programmierung. Obwohl alle Nebenläufigkeit ist explizit in Erlang, Prozesse kommunizieren über Nachrichten Übergabe statt geteilter Variablen, Das macht die Notwendigkeit für Sperren.
Was ist mit C? Es ist ähnlich genug zu Java, dass Sie nicht viel Zeit mit Syntax verbringen werden, aber so unterschiedlich, dass es schwierig wird. Außerdem ist es immer noch eine der am häufigsten verwendeten Programmiersprachen (lesen Sie: Sie müssen es sowieso irgendwann lernen).
Nachdem Sie Ihre Ziele erklärt haben, danke ich Ihnen:
Lerne einen (oder mehr, wenn du willst) Haskell, Lisp oder ML in dieser Reihenfolge. Jedes dieser Programme wird Ihre Ziele erreichen und Sie dazu herausfordern, über eine neue Programmierung nachzudenken, und alle oder einige von ihnen sind ideal für die Implementierung von Compilern (siehe SICP, Appels Implementierung eines modernen Compilers in ML).
Funktionale Sprachen werden (zu Recht meiner Ansicht nach) in der Wissenschaft wegen ihrer schönen Eigenschaften sehr häufig verwendet. Ich denke, dass Haskell momentan der heißeste ist. Springe auf den fahrenden Zug, die Fahrt wird interessant und eine gute Vorbereitung für die Diplomarbeit sein.
Jede Sprache ist nützlich (sogar GolfScript ... nur ein Scherz)
Ich würde Ihnen alle (und alle) von
empfehlen weil diese Sprachen sehr vielseitig sind und eine breite Anwendung genießen.
Beachten Sie, dass bei der gemeinsamen Verwendung desselben einzelnen Buchstabens in ihrem Namen und einiger syntaktischer Ähnlichkeiten jede dieser Sprachen sehr unterschiedliche Semantiken, Merkmale und Zwecke aufzeigt . Dies gilt sogar für C und C ++, die zur selben "Familie" gehören und oft als C / C ++ bezeichnet werden.
Obwohl die einzelnen Sprachen sehr individuell sind, bieten sie eine unvollständige, aber aufschlussreiche "Zusammenfassung" der "Evolution" der imperativen Programmierung und eine Einführung in einige Schlüsselparadigmen und -konzepte. Das Wort " Zusammenfassung " wird hier lose verwendet, da viele dieser Konzepte sogar der C-Sprache vorausgingen, wenn auch nicht in einer Mainstream-Art. Darüber hinaus sollte " Evolution " nicht in seinem üblichen Sinn des linearen Fortschritts zum Besseren verstanden werden und wo das Neue das Alte ersetzt Wie auch immer, der Schnappschuss dieser Evolution in Mainstream-Sprachen kann wie folgt aufgelistet werden
mit C:
Zeiger,
eine abstraktion der assemblersprache,
kleine, aber nützliche Laufzeitbibliothek, die die wenigen grundlegenden Typen und Dienstprogramme der Tage bedient (hauptsächlich Stringmanipulation, FILE I / O, mathematische Funktionen, explizite Speicherverwaltung)
mit C ++
objektorientierte Programmierung,
Vorlagen,
"eingebaute" Unterstützung für allgemeine Datenstrukturen und Behälter,
Ausnahmebehandlung,
einige Art Sicherheit (hauptsächlich zur Kompilierzeit erzwungen)
mit C #
automatische Speicherverwaltung,
umfangreiche "Standard-" und "erweiterte" Bibliotheken (die die extreme Vielfalt und Breite von Systemen und Technologien widerspiegeln, die mit modernen Anwendungen verbunden sind: XML, Internetprotokolle, Event Driven Frameworks, Datenbankzugriff, Design Patterns, um nur einige zu nennen)
Kämpfe der funktionalen Programmierung,
starkes Tippen, auch zur Laufzeit,
Reflexion / Introspektion,
etwas unscharfe Unterscheidung zwischen Sprache und Rahmen.
Notiz bearbeiten:
Meine ursprüngliche Absicht bei der Bearbeitung dieser Antwort bestand darin, die Tatsache zu klären, dass C, C ++ und C # tatsächlich sehr unterschiedliche Sprachen sind. Die Idee, dass die Serie eine ungefähre und etwas aufschlussreiche Zusammenfassung der Mainstream-Programmierung in den letzten 35 Jahren darstellt, hat sich mir auferlegt, während ich über diese Sprachen nachdachte. Ich entschuldige mich bei Petr Peller für eine Erweiterung weit über das hinaus, was die Absicht seines ursprünglichen Posts war; Bitte zögern Sie nicht, die Bearbeitung rückgängig zu machen und / oder ändern Sie sie, wenn dies nicht Ihren Vorstellungen entspricht!
Prost,
-mjv -
Als ich Programmiersprachen gelernt habe, musste ich 6 neue Sprachen lernen. Um ehrlich zu sein, geht es dir ziemlich leicht.
Ich denke, Sie sollten etwas wählen, das einen Marktwert hat. Ich denke, die meisten Programmiersprachenkurse werden von Juniorjahr unterrichtet, so dass die Tatsache, dass Sie keine Erfahrung mit C haben, ein bisschen beunruhigend ist. Sie kennen Java bereits, also würde ich mich wirklich nicht auf C # konzentrieren. Sie kennen wahrscheinlich keine logischen Sprachen wie Prolog, aber es ist nicht sehr marktfähig. Also meine Liste in der Reihenfolge der wichtigsten wäre
C
ML
Erlang
Prolog
Python
Als ich an der Universität studierte, begannen wir mit Lisp, was ich für sehr merkwürdig hielt (ich hatte vor dem Studium viel programmiert). Nach ein paar Wochen begann man, die Eleganz von Lisp zu sehen - die Syntax der Sprache ist extrem einfach und lässt den Fokus auf den Algorithmen und Konzepten. Cenceptually Lisp ist eine funktionale Sprache, im Vergleich zu den meist verwendeten imperativen Sprachen, die eine andere Denkweise beim Programmieren zwingt.
Für mich persönlich war das Verständnis von Programmierkonzepten, die ich aus dem Lisp-Kurs gewonnen habe, extrem wertvoll für alle Entwicklungsarbeiten in verschiedenen Sprachen, die ich seither gemacht habe, also stimme ich für Lisp.
Sie könnten versuchen, sich auf COBOL für den Kurs zu spezialisieren. Ja, ich verstehe COBOL ist Old-School, aber höre mich aus.
Es stellt eine interessante Anwendung in der Praxis dar, da viele ältere Systeme, die von Unternehmen verwendet werden, immer noch darin enthalten sind, und die Unternehmen haben keinen Grund, dies zu ändern - der Code funktioniert immer noch. Die Leute, die den Code in den 70er und 80er Jahren geschrieben haben, ziehen sich jedoch aus der Branche zurück. Das erzeugt große Mengen von nicht unterstütztem Code, den Sie vielleicht selbst einmal in einer Branchenumgebung pflegen müssen.
Sie könnten OpenCOBOL als Ihren Compiler verwenden. Es ist hier verfügbar: Ссылка
Betrachte Scala.
Es ist wahrscheinlich die "Multi-Paradigma" -Sprache, in einem Sinne, dass es mehr unzusammenhängende Konzepte als jede andere "echte" Sprache enthält. Nicht etwas, das du in einem Job verwenden möchtest, aber es sollte großartig zum Lernen sein - denn wenn du es beherrschst, könnten dich wenige Dinge später überraschen.
C für eine Programmiersprache. Erlang oder Haskell für etwas Außergewöhnliches. J oder K für komplette WTF.
Vielleicht möchten Sie auch Like, Python in Betracht ziehen. Ein Auszug:
%Vor%Ich denke, es kommt darauf an, was Sie lernen wollen und wie weit Sie damit gehen wollen. Ich hatte schon immer einen Faible für Java, ich denke wahrscheinlich, weil es eine lustige Sprache zu lernen ist und wenn du aus einem Hintergrund kommst, in dem du vielleicht nicht viel über OOP weißt, dann bietet es auch einige großartige Grundlagen wie eine Sprache geht.
Ich sehe, dass Sie Python nicht erwähnt haben - aber wenn Haskell zu konventionell für Sie ist, sollten Sie sich vielleicht woanders umsehen .... Eigentlich empfehle ich, Haskell nur für das Typsystem zu testen, was alles das macht Eine moderne funktionale Sprache sieht im Vergleich krank aus.
Sie könnten eine stackbasierte Sprache wie Forth oder Postscript in Erwägung ziehen. Das ist ein bisschen anders als alles oben erwähnte.
Für eine Lernerfahrung können Sie CLU nicht schlagen. Für diese Arbeit erhielt Barbara Liskov den Turing Award. Ihr Team löste eine Reihe von Problemen, die heute noch relevant sind. Wie bereits bei Algol 60 gesagt wurde, war CLU eine Verbesserung gegenüber den meisten Nachfolgern.
Eine gute Möglichkeit, den Zeh ins Wasser zu tauchen, ist, früh zu lesen Papier von Liskov und Zilles , obwohl man bedenkt, dass das statische System noch nicht entwickelt wurde, und das ist eines der interessanteren Stücke.
Tags und Links programming-languages