Welche Sprachen muss man kennen um alle zu können?
-
Welche Programmiersprachen (möglichst wenige) muss man beherrschen, damit man praktisch jede zur Zeit vorhandene Sprache innerhalb von ein paar Wochen lernen kann? Esoterische Programmiersprache können vernachlässigt werden.
-
Ich fange mal an, so wie ich es denke:
Maschinennah: Assembler
Prozedural: Basic
Funktional: Haskell
Imperativ: C
OOP: C++, JavaWenn Du die kannst biste gut gewappnet gegen andere Sprachen. Ich denk mal in 20 Jahren kann man sagen dass man die sehr gut kann
G hibbes
-
Ein reicht, wenn man sie gut genug kann.
For normalen Gebrauch sollten C++/CLI und Haskell sehr viel abdecken. Von C++/CLI muß man nur dies, das, jenes Konzept weglassen, um fast punktgenau Java, C++, C, PHP, Perl und so weiter zu kommen. Und die anderen, da dürfte Haskell viel helfen, vermute ich mal.
-
Es geht nicht um Syntax zu lernen sondern Konzepte zu begreifen und sie auf eine andere Programmiersprache zu adaptieren.
-
hibbes schrieb:
Prozedural: Basic
Imperativ: CZurück zur Hochschule.
-
Eine Antwort: Irgendeine.
(Selbst Malbolge. Oder besonders Malbolge, denn wer das kann ist ein allwissendes Genie. Würde ich aber nicht als erste Lernsprache empfehlen
.)
Syntax lernt man sowieso schnell. Unterschiedliche Paradigmen etwas langsamer, aber schnell genug, wenn man sich anstrengt. Das wichtige ist, dass man überhaupt Übung darin hat, seine Gedanken logisch sauber zu strukturieren.
Wenn man ganz faul ist, dann lernt man irgendeine der Sprachen mit C-Syntax, weil diese am verbreitetsten ist. Dann muss man nur noch die unterschiedlichen Herangehensweisen in anderen Sprachen lernen.
-
hibbes schrieb:
Prozedural: Basic
Imperativ: C
OOP: C++, JavaAhja. Wenn du die drei so schön nebeneinander stellst: erklärst du uns bitte, wieso Basic prozedural ist und C nicht prozedural, dafür imperativ?
LOL Alter! Wenn ich solche Posts lese, lolt es mich schlicht weg.
-
hibbes schrieb:
I
OOP: C++, Java*lol*
auf dir nen keks
-
Scheme (Objektsystem als Bibliothek a la CLOS), C und Assembler.
-
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.
-
LOLAlter schrieb:
hibbes schrieb:
Prozedural: Basic
Imperativ: C
OOP: C++, JavaAhja. Wenn du die drei so schön nebeneinander stellst: erklärst du uns bitte, wieso Basic prozedural ist und C nicht prozedural, dafür imperativ?
LOL Alter! Wenn ich solche Posts lese, lolt es mich schlicht weg.
Rein imperativ sind doch sowieso nur die concatenativen Sprachen wie Forth oder Factor. Typendeklarationen/Definitionen oder mathematische Ausdrücke sind doch schon deklarative Teile, erst Recht bei Sprachen wie Ada. Bei den Concatenativen reihst du dagegen einen Befehl hinter dem anderen an. Selbst neue Wortdefinitionen sind Anweisungen, den Systemmodus von Interpretieren auf Kompilieren umzustellen. Mathematische Ausdrücke gibt es nicht. "2 4 +" sind 3 voneinander völlig unabhängige Anweisungen, auch wenn, wie bei einem mathematischen Ausdruck in umgekehrter polnischer Notation danach 6 auf dem Stack liegt.
Ich sehe es auch eher so, dass man die Paradigmen lernen sollte. Syntax hat man schnell drauf, solange man keine esoterischen Sprachen mit Fokus auf Unlesbarkeit verwendet. Wie beispielsweise Malbolge oder C. :p
-
allescoder schrieb:
Welche Programmiersprachen (möglichst wenige) muss man beherrschen, damit man praktisch jede zur Zeit vorhandene Sprache innerhalb von ein paar Wochen lernen kann? Esoterische Programmiersprache können vernachlässigt werden.
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.
-
Ihr habt ja recht, das war sehr ungenau beschrieben.
Das mit C und imperativ habe ich hier her. http://de.wikipedia.org/wiki/Programmiersprache@Imperator: streite dich mit denen dann lollen die sich weg.
Und von Basic habe ich noch vom GFA-Basic(AtariST) in Erinnerung das dort alles über Prozeduren lief und daher sah ich es als gutes Beispiel dafür. Meine Aufzählung sollte auch nicht bedeuten das die Sprachen nur diese Paradigmen zuzuordnen sind.
@volkard:
Bitte um Erklärung warum Basic nicht eine typische prozedurale Sprache ist und C keine imperative?
-
hibbes schrieb:
@volkard:
Bitte um Erklärung warum Basic nicht eine typische prozedurale Sprache ist und C keine imperative?Beide sind imperativ.
Allerdings ist C darüberhinaus auch prozedural. Und zwar schon immer.
Basic hingegen ist erst seit so modernen Dialekten wie GFA-Basic (1986) prozedural. Schauen wir uns mal das berühmte Basic V2 (1982) an, da wird es schon knapp. Man hat mit gusub/return sowas wie Prozeduren, dort Routinen genannt, machen können. Aber ohne lokale Variablen und ohne Rückgabewert. gosub/return hat Basic schon immer.Damit ist
Prozedural: Basic
Imperativ: C
gar nicht vertretbar.Hingegen könnte man bei
Prozedural: C
Imperativ: Basic
gut argumentieren, daß gosub/return nicht als Mittel reicht, um die Routinen auch Prozeduren zu nenne.
Wikipedia machts zum Beispiel "Der Begriff der prozeduralen Programmierung wird oft synonym gebraucht, setzt aber die Verwendung von Prozeduren voraus, was nicht für jede imperative Programmiersprache gelten muss. Beispielsweise kennen ältere BASIC-Varianten keine Prozeduren."Eigentlich tendiere ich eher dazu, jedes Basic auch prozedural zu nennen. Aber dann muß ich auch ASM, sofern mit Stack und call/return prozedural nennen. Da bin ich unsicher.
-
Ok, danke für die Erklärung. Ist ja doch sehr schwierig alles in seine Schublade zu packen.
Gut an die vielen Basicversionen habe ich jetzt nicht gedacht, sondern habe mich nur an die typsichen Prozeduren von meinem damaligen Basic erinnert(Atari ST, man bin ich alt
)
Eigentlich war meine Absicht nur von jedem so gebräuchlichen Paradigma eine oder zwei Sprachen anzuführen und dazu noch Assembler.
Welche Sprachen würdet ihr denn mit diesem Vorhaben eintragen?Maschinennah: ?
Prozedural: ?
Funktional: ?
Imperativ: ?
OOP: ?
-
OOP: Smalltalk (sehr rein), C++/Java (sehr verbreitet)
-
Eine Programmiersprache kann man nie "innerhalb von ein paar Wochen" lernen. Eine Programmiersprache ist viel mehr als nur Syntax.
Ja, aber vielleicht gibt es eine Programmiersprache, in der alle Konzepte enthalten sind. Wie in Scheme ... eine Implementation a la Prolog ist ohne Probleme mittels Continuations moeglich, siehe Schelog. Das ist auch ein Killerfeature und in wenigen (Mainstream)Programmiersprachen zu finden. Desweiteren unterliegen sie in anderen Programmiersprachen einigen Einschraenkungen und sind durch die Syntax manchmal schwerer benutzbar.
Welche Sprachen würdet ihr denn mit diesem Vorhaben eintragen?
Dreimal darfst du raten ...
-
Assembler (kann man wohl als separate Kategorie nehmen; hier geht es nicht um einen konkreten Assembler, sondern um die Art, wie man damit programmiert) und C++/CLI enthalten in diesem Sinn wohl etwa 95% von allem ab, was wirklich jemals gemacht werden muss. C++/CLI alleine deckt ein so grosses Spektrum ab und ist so schwer, dass man, wenn man es einmal wirklich beherrscht, die meisten anderen Sachen im Handumdrehen lernt.
Ich habe C++/CLI gelernt und arbeite nun ohne weitere Vorkenntnisse so ziemlich mit allem, an was ich mich erinnern mag, ohne nennenswerte Probleme. Von C bis C# hat man eigentlich alle C-basierten Sprachen gratis dabei. Man bekommt Erfahrung mit verschiedenen Welten, der komfortablen Welt von grossen Frameworks wie .NET/Java, die hocheffiziente Welt von nativen Bibliotheken wie boost und der Standard Library, wo man fast alles selbst machen muss. Und bis man das alles einmal beherrscht, hat man einen solchen Krieg mit der Sprache, dass einem danach die meisten Sachen recht simpel erscheinen.
Ich konnte so z.B. ohne grosse Einarbeitung recht effektiv im Microsoft Dynamics CRM mit JavaScript programmieren (mit viel XML und SQL), an einem bestehenden, komplexen Silverlight Projekt mit Visual Basic.NET und LINQ weiterarbeiten oder einen ganzen Haufen T-SQL Skripte für die Wartung einer Reihe von Microsoft SQL Server 2008 schreiben. Ich kann über diese Arbeiten mit gutem Gewissen sagen, dass sie einfach waren, solange man eine Dokumentation für die Bibliotheken hatte.
Dann braucht man wohl noch etwas funktionales, aber damit kenne ich mich nicht aus.
-
knivil schrieb:
Eine Programmiersprache kann man nie "innerhalb von ein paar Wochen" lernen. Eine Programmiersprache ist viel mehr als nur Syntax.
Ja, aber vielleicht gibt es eine Programmiersprache, in der alle Konzepte enthalten sind. Wie in Scheme ... eine Implementation a la Prolog ist ohne Probleme mittels Continuations moeglich, siehe Schelog. Das ist auch ein Killerfeature und in wenigen (Mainstream)Programmiersprachen zu finden. Desweiteren unterliegen sie in anderen Programmiersprachen einigen Einschraenkungen und sind durch die Syntax manchmal schwerer benutzbar.
und das kann man bestimmt in wenigen Wochen lernen und meistern, oder? Deine Ausage ändert trotzdem nicht an meiner, du kannst keine Sprache in wenigen Wochen lernen (und beherrschen).
-
Nein, ich habe die Frage so verstanden: Welche Sprache muss man koennen (vielleicht 10 Jahre lang gelernt), um andere Sprachen binnen weniger Wochen zu lernen. Es heisst also nicht, Scheme sei in wenigen Wochen zu lernen.