Welche Sprachen muss man kennen um alle zu können?
-
Scheme enthält keine Exceptions, es enthält Werkzeuge, um Exceptions zu bauen.
Aber wie aufwendig wird es wohl sein, etwas aehnliches wie Exceptions zu realisieren? Genauso wie der amb-Operator nirgends in Scheme oder Lisp zu finden ist, da er leicht zu implementieren ist, genauso braucht man Exceptions nicht definieren. Obwohl manche Schemesysteme wie Chicken Scheme sie enthalten (z.b. ueber Makros), ist man nicht auf ein Sprachfeature angewiesen. Wahrscheinlich um Continuations zu verbergen, wenn nur das Verhalten Exit-Continuation/Exception benoetigt wird. In diesem Zusammenhang sei noch dynamic-wind zu erwaehnen.
(begin ... (let ((ex (call/cc (lambda (throw) ; try ( ... (throw MyException) ... ))))) (cond ((eq? ex MyException) ... ) ; catch ((eq? ex MyOtherException) ... ) ... (else ; no exception ... ; next code )
Aber ich will mich jetzt nicht an Exceptions und so aufhaengen, andere Konzepte sind Closures, Funktionen hoeherer Ordnung oder hygienische Makros. Wobei diese Features mehr Verbreitung gefunden haben. Sicher gibt es Konzepte, die nicht in Scheme enthalten sind, wie die ganzen Designpatterns. Aber manche sind in Scheme (oder anderen funktionalen Sprachen) einfach ueberfluessig.
-
Wir werden uns sicher einig, dass Scheme viel bietet und sich definitiv lohnt. Es ist leichter zu lernen als Lisp, und enthält doch vieles, was einen zu einem besseren Programmierer machen kann.
Aber eben nicht alles! Was zum Beispiel extrem durch Abwesenheit glänzt ist statische Typisierung.
(Zumindest in R5RS. Es gibt ja angeblich Dialekte, die teilweise statische Typen haben.)
-
Wenn ich das richtig verstanden habe ist Scheme also eine Programmiersprache die man programmieren kann?
-
supertux schrieb:
Ich würde sagen, gar keine? Eine Programmiersprache kann man nie "innerhalb von ein paar Wochen" lernen. Eine Programmiersprache ist viel mehr als nur Syntax.
Ich habe c++ innerhalb von einer woche gelernt (ausgehend von C und Java) und seitem programmiere ich c++ code der bei unseren Kunden im Produktivbetrieb läuft
Die ganzen Konzepte kann man schnell lernen. Die wesentlichen Probleme sind Funktionskenntnisse, z.B. kenn ich viele typen der stream lib, und der STL lib nicht, da ich sie noch nicht verwenden musste.(Bei Java kenne ich auch nur ein kleines subset der Klassen in den 3 millionen mitgelieferten packages)
Ich denke beim Programmieren geht es darum die wesentlichen Konzepte der Sprache zu verstehen, und nicht um reines Lernen von Funktionsheadern.
-
Die armen Kunden, die einen brauchen Jahre für C++ trotz Vorkenntnisse und die anderen halt eine Woche. Was stimmt hier nicht
Ich möchte bitte als Kunde das du mir kein Framework zusammenfrickelst, tut mir leid.
-
Kinski schrieb:
Ich habe c++ innerhalb von einer woche gelernt (ausgehend von C und Java) und seitem programmiere ich c++ code der bei unseren Kunden im Produktivbetrieb läuft
Na, wenn der Kunde gar keine Exceptions und kaum Metaprogrammierung benutzt, kann das sogar sein, wobei ich mir vorstellen könnte, daß in einer Woche Du RAII nicht verinnerlichst, sondern weiter open/close benutzt.
Kinski schrieb:
Die ganzen Konzepte kann man schnell lernen. Die wesentlichen Probleme sind Funktionskenntnisse, z.B. kenn ich viele typen der stream lib, und der STL lib nicht, da ich sie noch nicht verwenden musste.
C++ ohne vector? Kommt mir wie 1999 vor. Der Rest hat sich wohl erledigt.
Wenn man erstmal ein paar Sprachen kann, lernt man jede weitere in ein paar Tagen gut genug, daß man in normalen Projekten produktiv mitarbeiten kann.
-
Assembler
-
hibbes schrieb:
Wenn ich das richtig verstanden habe ist Scheme also eine Programmiersprache die man programmieren kann?
Ja, aber das gilt auch fuer Lisp ebenfalls. Sehr eindrucksvoll das PLT-Scheme/Racket Macro-System: click
extrem durch Abwesenheit glänzt ist statische Typisierung.
Ja das stimmt.
-
mazal schrieb:
Vll. auch noch Prolog, obwohl es keine große Rolle mehr spielt. Ich wurde damit in der Uni gequält, kann aber nicht behaupten, dass es mir geschadet hat.
Hat Prolog jemals eine wirklich große Rolle gespielt?
Naja, ich habs jedenfalls exzessiv in meiner Diplomarbeit für diversen Compilerbaukrams benutzt und ich kenne auch jemanden, der irgendwelche Ampelsteuerungsgeschichten damit implementiert
-
Wer will schon alle Programmiersprachen kennen und können?
Da man aus Zeitgründen nicht vieles parallel lernen kann, sollte man sich gute Kenntnisse in C und C++ aneignen. Damit ist dann prozedurales Programmieren, OOP, und eine gewisse Systemnähe gut abgedeckt. Auch hat man eine grosse Portabilität zwischen den heute verfügbaren Betriebssystemen. Dies war der Grund, warum die Mehrzahl der alten Programmierer von ALGOL, FORTRAN, BASIC, PL1, PASCAL, etc. erst auf C und dann auf C++ umgestiegen sind. Man fand das bekannte wieder und bekam neue Möglichkeiten hinzu.
Für Webzeug gilt das allerdings nicht unbedingt.
-
Wenn du Kiddie bist und unsichere Webapps (Clanhomepage) frickeln
willst: PHPWenn du mittelgroße Webapps entwickeln willst, Latte-Macchiato
schlürfender Hipster und Twitterer der ersten Stunde bist: RubyWenn du große Webstores und n-tier Enterprise-SOA-Architekturen
entwickeln willst: JavaWenn dir Java zu langweilig geworden ist, du aber auf der gleichen
Plattform bleiben willst: ScalaWenn du Microsoft-Fanboy bist: C#
Wenn du Kernel, Kerneltreiber, Systembibliotheken oder für
Microcontroller entwickeln willst: CWenn du Apple-Kram entwickeln willst: Objective C
Wenn du Hobbyentwickler bist und eine einfache und saubere
Programmiersprache suchst, die auch von Profis geschätzt wird: PythonWenn du 3D-Engines oder Office-Suites entwickeln willst und kein
Problem mit einem barocken Frankenstein-Monster als Sprache hast: C++Wenn du das bessere C++ suchst und dir nichts ausmacht, dass das kaum
jemand benutzt: D oder EiffelWenn du Java-Entwickler bist und ein wenig neidisch auf die
Latte-Macciato-schlürfenden Ruby-Hipster blickst aber noch nicht von
Scala gehört hast: GroovyWenn du WinBriefmarkenverwaltung 2000 zusammenklicken willst: Visual
BasicWenn du schnauzbärtiger Unix-Admin bist, Logdateien parsen willst und
Hieroglyphen deine Passion sind: PerlWenn du graumelierter Herr bist, der in den 80er und 90ern seine
größten Erfolge feierte, dessen Regal mit Data-Becker-Büchern gefüllt
ist (von denen er selbst eins geschrieben hat) und der nicht mehr
jeden Hype ("Java") mitmachen will: DelphiWenn du das Web zappeln lassen willst: ECMAScript (JavaScript,
ActionScript)Wenn du Gamelogik skripten willst: Lua
Wenn du Informatikstudent im Grundstudium bist, der endlich mal
Funktionale Programmierung beigebracht kriegen soll: Scheme oder
HaskellWenn du Informatikstudent im Grundstudium bist, der endlich mal
Logische Programmierung beigebracht kriegen soll: PrologWenn du zottelbärtiger Ex-Hippie-Nerd der 70er bist und/oder Emacs
benutzt: LISPWenn du Hacker werden willst: C und LISP
Wenn du wissen willst wie Objektorientierung gemeint ist: Smalltalk
Wenn du "Rocket Science" betreibst: Ada
Wenn du planst dich einfrieren zu lassen um beim Jahr-10000-Problem
kräftig abzukassieren: COBOLWenn du sonst nix zu tun hast: Google Go
-
Wenn und keine Ahnung hast, aber viel Kohle verdienen willst, dann ABAP.