Welche Sprache lernen?
-
;fricky schrieb:
knivil schrieb:
Hey, wie waere es denn mal mit etwas anderem zum Einstieg? Lisp, Scheme oder Haskell zum Beispiel.
oh, das zeug kam diesmal aber spät dran. *grins*, trotzdem: solche sprachen sind für anfänger ziemlich ungeeignet, finde ich. 's-expressions' und diese UPN-artige schreibweise arithmetischer ausdrücke, sind vielleicht nix, was man nicht lernen könnte, aber sie wirken auf anfänger erstmal sehr abschreckend. so ist es eben mit 'alien technology'.
Lisp hat mit S-Expressions nicht mehr zu tun als ein Bauer mit einem Traktor.
Überhaupt ist "Lisp" mehr ein Prädikat einer Sprache als eine Sprache. (Das Scheme z.B. hat, Haskell z.B. nicht.)Und Haskell kann S und M gleichzeitig.
pumuckl schrieb:
Die ersten Anfänge sind vom Schwierigkeitsgrad her in allen Sprachen minimal, wenn man die Syntax kennt.
Und das ist der Grund, warum das Zeug doch noch kommt: Lisp hat nämlich keine.
Wichtiger als der syntaktische Unterschied ist der semantische, und da sind alle die Sprachen irgendwie großteils gleich, also sich nur nichts einreden lassen:
Ein Anfänger will lernen und gleichzeitig anfallende Probleme lösen. Dazu will er ein Paket herunterladen und dann damit arbeiten können. Die ganze Sprachen-Debatte dreht sich nur darum, das richtige Paket zu finden, die Natur der verwendeten Sprache ist nicht so wichtig.
Das einzige, was ich über das Thema wirklich weiß: man sollte nicht mit ANSI-C anfangen. Man lernt's zwar genauso, aber das Lernen wirft nur selten nützliche Produkte ab.
-
wie siehts eig mit portierbarkeit von c# aus, nebenbei gefragt?
ich bin lieber bei java weil ich weiß dass die lieber keine standards verändern und auf portierbarkeit achten.
Beherrscht mono mittlerweile alle .net sachen?
-
shisha schrieb:
wie siehts eig mit portierbarkeit von c# aus, nebenbei gefragt?
...
Beherrscht mono mittlerweile alle .net sachen?Mono ist zwar recht weit (zwischen 2.0 und 3.5), aber wird IMHO nie alle .Net Bibliotheken abdecken können. Siehe hierzu die nicht unterstützten Bibliotheken.
So ist Beispielsweise WPF eine UI die auf DirectX aufsetzt, und dies müsste man erst einmal mühsam (vermutlich auf OpenGL-Basis) umschreiben müssen.
-
knivil schrieb:
Immer wieder wird mit Beispielen argumentiert, die total an der Realitaet vorbei gehen.
Die Realität ist, daß es keine WM für "obfuscant code" in BASIC gibt.
pumuckl schrieb:
;fricky schrieb:
pumuckl schrieb:
...
du kannst dich einfach nicht in einen anfänger hineinversetzen.
Mag jetzt vielleicht überraschend klingen, aber ich war selbst mal einer...
Schön für Dich, daß Du steile Lernkurven bewältigen kannst. Ich hab' das vierte mal in einem Kart gesessen und den Fuji-Cup- Sieger bis 16 Jahren aus dem Vorjahr in einem 30- Runden- Rennen geschlagen. Das darf man aber nicht verallgemeinern.
Man fängt in einer niedermotorisierten Kiste an und übt, übt, übt, bis man reif für die höheren Klassen ist.
Daß es den einen oder anderen gibt, der schneller lernt als andere, ist überall normal, trotzden kommt niemand auf die Idee, auf's Geratewohl einen Fahrschüler in einen F1- Boliden zu stecken und ihm den Lappen zu verwehren, wenn er damit nur Schrott baut.
Mir war beim Informatikunterricht ja auch langweilig, weil ich zu der Zeit an meinem ersten M68K - EPC herumgebastelt habe.pumuckl schrieb:
Kommt auf den C++-Code an. Vor ner simplen for-Schleife steht man in C++ genausowenig dumm da wie in vor den entsprechenden Schleifen in BASIC, Pascal oder sonstwo.
Nö, kommt auf die Sprache an. IF blubb THEN blah haben in BASIC und FORTH ähnliche syntax, beide zwar menschlicher Sprache nah, völlig unterschiedlich in der Ausführung, aber sie sprechen für sich. Ein for( ; ; ) ist schon so verknappt, daß man ganz genau nachlesen muß, was sich da tut und warum for( ; ; ); ein Fehler sein kann, aber nicht muß, sprengt die meisten Anfängerschädel.
pumuckl schrieb:
Klar, warum nicht BASIC. Oder warum nicht Pascal, oder C++, oder Java. Die ersten Anfänge sind vom Schwierigkeitsgrad her in allen Sprachen minimal, wenn man die Syntax kennt. Und die zu lernen heißt mal eben ne Handvoll Seiten im Buch durchlesen.
Dein Standpunkt ist ziemlich borniert und Du merkst es nichtmal, was? C++ ist kein Anfängerzeugs, da ist der Erfolg mit zuvielen Manpages gepflastert.
Man kann auch in Java oder VB sehr weit kommen, ohne sich auf die C++- typischen Fallstricke einlassen zu müssen.
-
;fricky schrieb:
das ist so erstmal gut lesbar, wenn nur diese ganzen sonderzeichen nicht wären.
die runden Klammern kann man weglassen, die sind hier nur wegen der Analogie zur for-Schleife.
-
Die Realität ist, daß es keine WM für "obfuscant code" in BASIC gibt.
Und das sagt jetzt genau was aus? Ist das hier relevent? Ich denke eher nicht.
Auch frage ich mich gerade, warum Programmiersprachen fuer Einsteiger immer an natuerlicher Sprache angelehnt sein soll. Ich halte das fuer hinderlich. Wenn man Algorithmen oder Vorgaenge wie z.B. das Zubereiten von Speisen mit Worten beschreibt, so baut man auf Wissen und Erfahrung auf. Salz, Hitze oder Butter sind nichts unbekanntes mehr. Im Kontext des Programmierens hat ein Anfaenger aber dieses "Alltagswissen" nicht, gerade weil z.B. die for-Schleife eher selten im normalen Sprachgebrauch verwendet wird. Daneben gibt es noch andere Hindernisse: Der Computer ist dumm und wir muessen deshalb exakt sein.
Auf was dann eine Programmiersprache aufbauen? Mathematik! (Aber das ist meist nicht das Lieblingsfach in Schule und Studium)
Zu allen anderen: Ihr argumentiert mit Beispielen, die vielleicht fuer euch plausibel sind. Aber in einen wirklichen Anfaenger kann sich niemand hinein versetzen, auch wenn ihr alle mal einer gewesen seid.
So what: Es ist egal, mit welcher Programmiersprache begonnen wird. Man sollte vielleicht drauf achten, dass die Community gross ist, viele Buecher drueber gibt ... falls man mal Fragen hat oder nach Antworten sucht. Deshalb bietet Java gegen ueber Basic (C#, C++, ...) keinen Vorteil.
-
µngbd schrieb:
Überhaupt ist "Lisp" mehr ein Prädikat einer Sprache als eine Sprache.
na, das hört sich aber auch nicht gerade anfängertauglich an.
µngbd schrieb:
pumuckl schrieb:
Die ersten Anfänge sind vom Schwierigkeitsgrad her in allen Sprachen minimal, wenn man die Syntax kennt.
Und das ist der Grund, warum das Zeug doch noch kommt: Lisp hat nämlich keine.
wenn lisp keine syntax hat, wie willst du dann einem lisp-interpreter beibringen, was er machen soll? jede programmiersprache besteht doch aus regeln und einer festgelegten art und weise, wie diese zu formulieren sind, damit der mensch einem computerprogramm eindeutige anweisungen geben kann. ohne syntax müsste das ding raten, was du willst.
knivil schrieb:
Auch frage ich mich gerade, warum Programmiersprachen fuer Einsteiger immer an natuerlicher Sprache angelehnt sein soll. Ich halte das fuer hinderlich. Wenn man Algorithmen oder Vorgaenge wie z.B. das Zubereiten von Speisen mit Worten beschreibt, so baut man auf Wissen und Erfahrung auf. Salz, Hitze oder Butter sind nichts unbekanntes mehr. Im Kontext des Programmierens hat ein Anfaenger aber dieses "Alltagswissen" nicht, gerade weil z.B. die for-Schleife eher selten im normalen Sprachgebrauch verwendet wird.
es geht bei BASIC doch gerade darum, einem anfänger, der noch nie programmiert hat, leicht verständliche analogien zu präsentieren, so dass er möglichst viele ähnliche dinge aus der realität beim programmieren wiederfindet. for i=1 to 5 ... next i => mach was 5 mal hintereinander, kommt auch in der wirklichkeit oft vor (z.b. an 5 tagen der woche zur gleichen zeit aufstehen, wenn i die wochentage zählt). in BASIC haste z.b. das schlüsselwort 'let', das gibts nur aus dem einen grund, damit anfänger eine zuweisung besser lesen können. 'let a=1' ist aus anfängersicht verständlicher als einfach 'a=1', auch wenn ihr's nicht glaubt, weil ihr euch schon viel zu weit von der anfänger-sichtweise entfernt habt.
basic ist im prinzip eine 'domain specific language', wobei die domäne 'alle anfänger' ist.
-
realität beim programmieren wiederfindet. for i=1 to 5 ... next i => mach was 5 mal hintereinander
Naja, ich weiss nicht wie deine Realitaet aussieht, aber ich musste noch nie z.B. 500 Mal als Strafarbeit irgendetwas aufschreiben. Dein Wochenbeispiel ist auch nicht gebraeuchlicher, aber durchaus nachvollziehbar fuer mich als Programmierer.
das gibts nur aus dem einen grund, damit anfänger eine zuweisung besser lesen können
Nein! Das gibt es auch in Lisp und macht da auch was ... Irgendwie muss das Ding ja bezeichnet werden. Da ist es doch naheliegend, Formulierungen aus der Mathematik zu verwenden, z.B. "Let n be a natural number and p ... then ...". Genau wie in Mathe fuehrt es eine neue Bezeichnung fuer ein "Ding" ein. Und Ja! Weil mathematische Beweise auch lesbar sein sollen.
prinzip eine 'domain specific language', wobei die domäne 'alle anfänger' ist.
Nein, so ist Domain fuer Sprachen nicht definiert BASIC ist eine general purpose programming language.
-
Ich hab vor fast genau 20 Jahren mit BASIC angefangen und nie im Leben LET für eine Zuweisung benutzt. Ich hab auch nicht begriffen, was LET heißen soll ("Lasse A gleich 10?"). Dass das eine Formulierung aus der Mathematik ist, die man eher mit "Sei A gleich 10" übersetzt, war mir als Fünftklässler nicht klar.
fricky, hast du denn auch mit BASIC angefangen und immer brav dein LET geschrieben?
-
Bashar schrieb:
Ich hab vor fast genau 20 Jahren mit BASIC angefangen und nie im Leben LET für eine Zuweisung benutzt. Ich hab auch nicht begriffen, was LET heißen soll ("Lasse A gleich 10?"). Dass das eine Formulierung aus der Mathematik ist, die man eher mit "Sei A gleich 10" übersetzt, war mir als Fünftklässler nicht klar.
fricky, hast du denn auch mit BASIC angefangen und immer brav dein LET geschrieben?
Noch nie die Beatles gehört? Let it be ...?
Als Fünftklässler "Let A be ten" zu mißinterpretieren, ist auch stark ...Mein erstes größeres BASIC- Programm war eine Umschreibe eines Kalah- Programms für eine VAX11, deren BASIC hat auf "Let" bestanden.
-
Noch nie die Beatles gehört?
Manche sind nicht im imperialistischen Westen gross geworden ...
-
Bashar schrieb:
Ich hab vor fast genau 20 Jahren mit BASIC angefangen und nie im Leben LET für eine Zuweisung benutzt. Ich hab auch nicht begriffen, was LET heißen soll ("Lasse A gleich 10?"). Dass das eine Formulierung aus der Mathematik ist, die man eher mit "Sei A gleich 10" übersetzt, war mir als Fünftklässler nicht klar.
tja, da hatte ich den Vorteil, dass ich damals kein Englisch konnte und ich es einfach als funktionierend hingenommen habe
Ich hatte erst durch BASIC (damals auf dem C64 meines Vaters) den ersten direkten Kontakt mit der englischen SpracheAber auf "Lass A gleich 10 [sein]" bin ich dann auch als Dreikäsehoch gekommen
-
pointercrash() schrieb:
Noch nie die Beatles gehört? Let it be ...?
Ich gehöre eher der Strawberry-Fields-Fraktion an. Wüßte aber nicht, was das mit dem Thema zu tun hat. "Lasse A 10 sein" konnte ich mir schon irgendwie denken, aber es kam mir halt sinnlos umständlich vor. Tut es immer noch.
ObOnT: Englisch natürlich.
-
knivil schrieb:
Nein! Das gibt es auch in Lisp und macht da auch was ... Irgendwie muss das Ding ja bezeichnet werden. Da ist es doch naheliegend, Formulierungen aus der Mathematik zu verwenden, z.B. "Let n be a natural number and p ... then ...". Genau wie in Mathe fuehrt es eine neue Bezeichnung fuer ein "Ding" ein. Und Ja! Weil mathematische Beweise auch lesbar sein sollen.
naja, in BASIC kannste schreiben 'let a = b' und ein paar zeilen später 'let a = c', das ist vielleicht nicht so ganz mathe- und lisp-konform, in BASIC ist es einfach 'ne zuweisung, keine neue definition oder sowas.
Bashar schrieb:
Ich hab vor fast genau 20 Jahren mit BASIC angefangen und nie im Leben LET für eine Zuweisung benutzt. Ich hab auch nicht begriffen, was LET heißen soll ("Lasse A gleich 10?"). Dass das eine Formulierung aus der Mathematik ist, die man eher mit "Sei A gleich 10" übersetzt, war mir als Fünftklässler nicht klar.
damit hatte ich als anfänger kein problem, habs's etwa gelesen wie: 'lass A jetzt 10 sein' und ein anschliessendes 'print A' hat mich davon überzeugt, dass ich richtig lag.
Bashar schrieb:
fricky, hast du denn auch mit BASIC angefangen und immer brav dein LET geschrieben?
kann mich nicht mehr dran erinnern (hatte 'nen C64, da gings auch ohne 'let'), vielleicht am ersten tag, wo ich noch nicht wusste, was variablen sind, kann's wichtig gewesen sein. bestimmt hätte ich A=1 sonst für die lösung einer rechenaufgabe gehalten, oder sowas.
-
naja, in BASIC kannste schreiben 'let a = b' und ein paar zeilen später 'let a = c', das ist vielleicht nicht so ganz mathe- und lisp-konform, in BASIC ist es einfach 'ne zuweisung, keine neue definition oder sowas.
Doch, weil let eine neue Umgebung (Environment, Kontext, ...) anlegt. Und ausserdem ist a ja nur ein Bezeichner, mit dem ich verschiedene Dinge identifizieren kann. Waere schlimm, wenn ich mir in Mathematik als auch beim Programmieren staendig neue Bezeichner ausdenken muss.
-
knivil schrieb:
Doch, weil let eine neue Umgebung (Environment, Kontext, ...) anlegt.
das macht es in BASIC aber nicht. ich sehe schon, von der mathe-schiene her sollte man sich BASIC wohl besser nicht nähern.
(obwohl ich vor jahren mal dieses buch hatte: http://www.amazon.de/Basic-Programme-zur-Höheren-Mathematik/dp/3923923155 )
-
das macht es in BASIC aber nicht.
Hey im Haskellinterpreter ghci kann ich das auch, ohne einen Fehler zu bekommen.
-
knivil schrieb:
das macht es in BASIC aber nicht.
Hey im Haskellinterpreter ghci kann ich das auch, ohne einen Fehler zu bekommen.
aha, also kannst da auch 'let' vor variablenzuweisungen schreiben und es sogar weglassen, wenn du mal nicht magst?
-
;fricky schrieb:
aha, also kannst da auch 'let' vor variablenzuweisungen schreiben und es sogar weglassen, wenn du mal nicht magst?
Geht sogar in C
#define LET #define BE = LET var BE 7;
-
Nein, weglassen darf ich es nicht, zumindest nicht im Interpreter. Was ich damit sagen will: Haskell als programmierte Mathematik ist genauso geeignet fuer Anfaenger, wenn let als Leselichkeitsargument verwendet wird.