Nachdem ich an dem diesjährigen Google Code Jam- Wettbewerb teilgenommen und ihm gefolgt war, bemerkte ich die unglaubliche Anzahl [erfolgreicher] Teilnehmer, die C / C ++ und Java verwendeten. Die Verteilung der während des Wettbewerbs verwendeten Sprachen ist hier zu sehen .
Nachdem ich einige Jahre in C / C ++ programmiert hatte, habe ich mich kürzlich in Python verliebt, weil es lesbar und unkompliziert ist. In jüngerer Zeit habe ich funktionale Sprachen wie OCaml, Scheme und sogar Logiksprachen wie Prolog gelernt. Diese Sprachen haben sicherlich ihre Vorzüge und können meiner Meinung nach in bestimmten Situationen einfacher angewendet werden als C ++ und Java. Beispielsweise vereinfacht die Verwendung von call / cc durch Scheme das Backtracking (ein Tool, das zur Beantwortung mehrerer Probleme erforderlich ist), und die Logikspezifikation von Prolog kann, obwohl sie aufgrund ihrer Brute-Force-Natur ineffizient ist, bestimmte Probleme, die schwer zu lösen sind, drastisch vereinfachen (und sogar automatisch lösen) das Gehirn umhüllen.
Es ist klar, dass ein Wettbewerbsteilnehmer die Werkzeuge verwenden sollte, die für die Herausforderung am besten geeignet sind. Sogar die x86-Assembly ist vollständig - das rechtfertigt nicht die Lösung von Problemen damit. Warum sind in diesem Fall die Teilnehmer, die weniger gebräuchliche Sprachen wie Scheme / Lisp, Prolog und sogar Python verwenden, signifikant weniger erfolgreich als Teilnehmer, die C / C ++ und Java verwenden? Anders ausgedrückt, warum verwenden erfolgreiche Teilnehmer keine Sprachen, die zwar weniger Mainstream sind, aber wohl bessere Werkzeuge für den Job sind?
Für meine Frage gibt es mehrere Gründe. Vor allem möchte ich ein besserer Programmierer werden - sowohl im praktischen als auch im Wettbewerbsbereich. Nach der Einführung in so schöne Paradigmen wie funktionale und logische Programmierung ist es entmutigend zu sehen, dass so viele Leute sie zugunsten von C / C ++ und Java verwerfen. Ich stelle sogar meine Bewunderung für diese Paradigmen in Frage und mache mir Sorgen, dass ich als Lisp / Scheme / Prolog-Programmierer in einem Programmierwettbewerb nicht erfolgreich sein kann.



