Programmiersprache für Anfänger

Lotos

Member
Hallo,

ich möchte eine Programmiersprache lernen. Vermutlich hängt die Wahl der Programmiersprache etwas vom Anwendungsgebiet ab. Mein Ziel ist es Webseiten und sehr einfache Spiele programmieren zu können. Wie verbreitet die Sprache ist, ist mir ziemlich egal. Es ist mir allerdings wichtig, dass sie modern ist, Low- sowie High-Level-Programmierung erlaubt und kompilierbar ist.

Auf meiner Suche bin ich auf Rust und D gestoßen, kann allerdings nicht einschätzen, ob die Sprache für meine Anwendungsgebieten geeignet sind. Falls sie nicht geeignet sind, zu welcher Sprache würdet ihr mir raten?

MfG karotte

PS: Verzeiht mir bitte meine dämlichen Fragen
 
Ist dir das Konzept "Programmieren" denn schon bekannt und du willst nur den Horizont erweitern, oder willst du programmieren lernen?

Wenn du noch gar nichts kannst, dann schmeiße erst mal all deine Anforderungen weg und lerne erst mal überhaupt die Programmierung an sich. Ist da auch völlig egal, welche Sprache du da nimmst.

Typischerweise fängt man mit etwas an, wo man viele Anfänger-Informationen zu findet... C oder Python sind da Kandidaten.
 
Webseiten sind keine Programme, sondern Dokumente. Daher solltest du im Idealfall HTML/CSS eingehend studieren. Es dann dynamisch zu generieren ist mit fast jeder beliebigen Programmiersprache möglich. Zum Thema Spiele kann ich nicht viel sagen.

Rob
 
Hallo,

ich möchte eine Programmiersprache lernen. Vermutlich hängt die Wahl der Programmiersprache etwas vom Anwendungsgebiet ab. Mein Ziel ist es Webseiten und sehr einfache Spiele programmieren zu können. Wie verbreitet die Sprache ist, ist mir ziemlich egal. Es ist mir allerdings wichtig, dass sie modern ist, Low- sowie High-Level-Programmierung erlaubt und kompilierbar ist.

Auf meiner Suche bin ich auf Rust und D gestoßen, kann allerdings nicht einschätzen, ob die Sprache für meine Anwendungsgebieten geeignet sind. Falls sie nicht geeignet sind, zu welcher Sprache würdet ihr mir raten?

MfG karotte

PS: Verzeiht mir bitte meine dämlichen Fragen

Lustiges Anforderungsprofil *g
Gibt's dafür auch Gründe oder hat dich dieses Bedarfsprofil halt irgendwie ereilt?

Bei "Anfänger, Webzeug, kleine Spiele" fällt mir prompt Python ein.

Ist aber nicht kompiliert. Oder nur quasi. Je nachdem. Du merkst schon, das Thema ist etwas komplizierter ...

Mit Python kannst du das machen, was du beschrieben hast. Und anfängerfreundlich ist es auch. Aber auch für durchaus professionelle Sachen geeignet. Und, wichtig: Es gibt freie (Bier und Rede) ziemlich anständige Entwicklungsumgebungen.

Manche werden dir vielleicht C empfehlen. Weil linux in C ist. Und FreeBSD. Und überhaupt so ziemlich alles. Und low level ist es auch. Aber nicht high level. Und nicht modern.
Manche werden dir Java empfehlen. Ich definitiv nicht. Dann lieber noch C++, obwohl auch das eher ein Problem als eine Lösung ist.

Ich würde dir noch Pascal empfehlen. Gilt als uncool. Ist aber eine sehr gute Sprache zum Lernen, inzwischen auch modern, kann auch low-level, hat (als FreePascal) auch GUI Schnick-Schnack Möglichkeiten eingebaut. Wenn du's ernst meinst und charakterlich stark bist (die meisten werden es entweder nicht kennen oder dir sagen wie uncool es ist), dann wäre das die erste Wahl.

Was ich dir noch empfehle sind Ada und Eiffel. Nicht zum programmieren Lernen sondern zum (genau) ansehen und viel über software engineering, design und Philosophie lernen, teils in schöner Form, teils in erschreckender Form, aber jedenfalls sehr lehrreich.

Nur am Rande und unter uns: Mit Unix plus programmieren Lernen hast du dir für etliche Jahre was vorgenommen ...
 
Im Webbreich sind wohl PHP, Python und Ruby am weitesten verbreitet was sicherlich gute Gründe hat. Im Spielebreich wird u.A. aus Geschwindigkeitsgründen auch Lua bzw. LuaJIT verwendet. Allerdings unterstützt LuaJIT kein bsd, entfällt hier also Ich würde mir an deiner Stelle erst einmal einen Webserver aufsetzen, z.B. Hiawatha, und den mit einigen statischen Seiten zum laufen bringen. Dann kannst du dich mit JavaScript.beschäftigen, das brauchst du eh und kannst dabei Programmieren lernen. Danach steht dir dann die ganze Welt offen...:)
 
Diese Frage hatte ich mir auch schon gestellt, einfach aus dem Lerntrieb heraus. Und weil es so'was wie die Essenz aller Software ist, also quasi um Software überhaupt zu verstehen.

Schon in der Schule (damals noch an Apple SE) hatte ich erste Schrittchen und ein altes TimeLife Buch lag noch im Keller. Dazu ein neues LernBuch über C.
Und gab's nach relativ wenigen Schritten auf.
Weil : ich hatte kein eigentliches Ziel. Lernen um des Lernen willen's ist nicht so mein Ding. Hätte ich zuvor wissen mssen. Ja, und erst mal mein OS richtig konfigurieren lernen.
 
Also eigentlich gibts da nur eine Kombo für Webseiten ausgiebig JS, HTML, CSS und wenn Spieleprogrammierung dann C++ oder C#. Eine Menge Game Engines können auch mit JS arbeiten. Alles andere ist Nische.
 
Klar, für die zeitkritischen Bereiche wird im Spielebereich C++ eingesetzt, ansonsten aber u.A. auch Lua. Das ist der einzige Bereich in dem Lua nicht Nische ist. Aber Spiele heißt durchaus nicht immer Geschwindigkeit. Ein Tetris u. Ä., besonders im Web, bekommt man auch mit JS, Lua, Python oder eine der anderen Scriptsprachen hin. Und dem OP C++ nahezulegen erscheint mir allzu heftig. :rolleyes:
 
Ich finde auch, als Anfänger und sich gleich auf C++ zu stürzen ist selbstmörderisch. :)
Ich glaub in C gibts auch paar Spiele. ;)

Ansonsten hängt meiner Meinung nach nicht an der Programmiersprache sondern am Buch und da alle Bücher "Arsch" ^^ sind, ist das doch irgendwie Asche mit programmieren lernen. Also für den Anfang zum Lernen meine ich nur, damit man es nicht so schwer hat. :)
Ich habe mit Bash angefangen. Einerseits gut fürs Unix-Wissen, anderseits kriegst du auch nicht so steinhart rübergeschoben wie ein C Buch.
Dann kannst du schon Bash und nicht irgendeine Sprache, die du später vielleicht doch nicht benutzen wirst?

dass sie modern ist,
Na ja, modern ist wohl C nicht mehr, lass ich mir immer sagen. :)
Wundere mich nur, warum jetzt C11 rausgekommen ist, wenn sie doch irgendwie "tot" ist?

Was ich dir noch empfehle sind Ada und Eiffel. Nicht zum programmieren Lernen sondern zum (genau) ansehen und viel über software engineering, design und Philosophie lernen, teils in schöner Form, teils in erschreckender Form, aber jedenfalls sehr lehrreich.
Wie ist das gemeint? Gibts da eine Demonstration?
Hast du dazu ein gutes Buch?

Modern, high- und low-Level, da sag ich auch nur Python, wobei leider nicht kompilierbar ist.
Glaub da kann man auch Assambler Code einfügen - oder halt wie sich das nennt.
Spiele weiß ich jetzt nicht, aber da gibts so viele Bibliotheken, da findest bestimmt was. :D

kompilierbar?
Gibts da eigentlich viele Programmiersprachen?
Ich kenne bis jetzt nur C und C++, Asm kannst du noch kompilieren, denke ich. :)
Wenn es keine anderen gibt, dann würde ich auch C++ sagen.
Mit C++ kannst du auch C Code benutzen!

Wie verbreitet die Sprache ist, ist mir ziemlich egal != modern - ne :)
Dh, wenn es dir egal ist, wie verbreitet sie ist, dann ist dir auch egal, wenn sie nicht modern ist - so logisch gedacht, aber ich denke immer umgekehrt, vielleicht deshalb ist mir das nur aufgefallen. ;)
 
Kommt eigentlich auf das Niveau der Spiele an. Will man sich einen abbrechen und neben der Eingeschränkheit der Engines auch mit der Doku kämpfen, dann kann man auch Freepascal und SDL verwenden. Am einfachsten und verbreitesten sind Lösungen auf Basis von Javascript und C#. C++ riecht in diesem Kontext nur übel aus dem Mund. Langfristig wird man mit Unity glücklicher.
 
Kann man denn mit C# auf low-level-Basis arbeiten?

Ich sehe auch, seine Anforderungen beißen sich etwas und wollen nicht harmonieren. :)
 
Hi,

also ich wuerde es mit Java (oder Scala) versuchen...

bzgl. Web-developement kann ich aufgrund positiver Erfahrungen
das PlayFramework bzw. https://www.playframework.com empfehlen.

Da muss man sich nicht mit sowas wie php rumaergern. :-)
 
Oh je ...

"Nische" - scheiss drauf, Porsche ist auch Nische und Maserati erst recht. Und Raumfahrt ist auch Nische. Unsere ganze Galaxis ist auch Nische.
Was soll das? Das ist doch nun wirklich kein Maßstab.
Selber Mist, andere Farbe: PHP und Ruby nehmen alle, muss also gut sein. Unsinn.

Also: Mit irgendwas muss man anfangen. Und ja, am Besten mit etwas das man nicht nur zum Lernen lernt sondern das man auch praktisch brauchen kann. Von Shells rate ich ab; das sind Krücken und verbogene dazu. Wohlgemerkt, ja, bissl Shell sollte man schon draufhaben, aber hier ging's ja um Programmieren lernen und wäre es schon gut, wenn vernünftiges design gleich mit im Lern-Paket ist.

Ergo Python. Ist ein guter Kompromiss aus "echtem software design" (hardcore) und easy going, bietet viel Spielraum für diverse Paradigmen, erzieht zu Diszplin ohne ständig auf einen einzuprügeln und man kann wirklich viel damit machen. Übrigens auch besser Web-Kram (als mit PHP, das eigentlich "zusammengeschmissenes web-Basic" heissen sollte oder auch "Sicherheitsproblem-Generator").

Zu kompilierten Sprachen: Da gibts Dutzende halbwegs aktuelle Bekannte und Hunderte Derivate und Veraltete, heute nicht mehr verwendete.

Gleich vorweg: *Die* Sprache gibt's nicht. *Jede* ist irgendwo Kompromiss. Die eine ist gut für den hardwarenahen Teil von kerneln, die andere ist gut für riesige komplexe Systeme, die eine begünstigt (oder ermöglicht überhaupt mal) die Erstellung von sicheren Anwendungen, die andere ist sehr "effizient" weil großzügig, die eine ist super für Systemkram, die andere wunderbar für Gui Zeug, die eine kann auf allem laufen was auch nur vage binär ist, die andere taugt wunderbar für bestimmte Architekturen, die sie ausreizt, die eine ist nackig aber flexibel, die andere ist gut ausgestattet aber weniger von allerlei libraries unterstützt, usw, usw.

Wie aussuchen? Nach dem, was ich machen will. Also: Welchen Bereich in der ziemlich weitläufigen IT Welt will ich im wesentlichen abdecken? Zum Beispiel: Eher kernel oder eher Anwendungen mit GUI?
Auch: Wofür, auf was, wo soll mein Zeug laufen? Auf vielen vielen Platformen oder halt auf den gängigen? Und viele weitere Aspekte. Nicht zuletzt: Welche Unterstützung, wieviel IDE (vs. editor und gdb reicht doch) will ich? Oder: Will ich spielen oder muss ich produzieren?

Ad Eiffel/Ada: Beide Sprachen wurden von verfickt intelligenten Profis entworfen, von Leuten, die wirklich und lange und ausgiebig bis ins Philosophische nachgedacht haben über Sprachen und Entwicklung unter verschiedensten Aspekten. Beide landeten bei relativ ähnlichen Ergebnissen, kamen aber aus grundverschiedenen Ansätzen. Beide entstammen auch einer intellektuellen Befassung, die typisch europäisch ist und die es in den usa kaum so gibt (die gehen fast schon ignorant pragmatisch ran). Beide konnten prinzipiell jede Ausgangsbasis nehmen und entschieden sich für eine Algol Basis (bekannter als "Pascal"). Beide haben kapiert - und entsprechend gehandelt - dass *Lesbarkeit* *weit* wichtiger ist als "ease of typing" (klassische Vertreter: C/C++). Beide hatten von Anfang an auch praktischen Nutzen, Kosten, design und engineering management im Hinterkopf. Beide haben einen *erheblich* besseren track record in Sachen Sicherheit als C/C++/Java.
Und beide sind praktisch nahezu unbrauchbar für Otto Normal Programmierer. Eiffel weil's gnadenlos objektorientiert ist, weil's abgefahren teuer war und mittlerweile open source ist, aber nur für open source Projekte und nur unter gpl knebel-Lizens. Und Ada weil's zwar von Version zu Version geiler wurde, der Standard aber mittlerweile aber deutlich dicker als die Bibel ist und das Ganze auch nur "seltsam open source" ist (ähnlich wie Eiffel, eigentlich nur für open source Projekte "frei" (gpl Knebel-Lizenz) und ansonsten für teuer Geld bei Firmen zu kaufen).

Aber Prof. Meyer, der Mann hinter Ada, hat z.B. design by contract erfunden, ein überaus bedeutsamer (und noch weithin ignorierter) Ansatz. Wie gesagt, unbedingt ansehen und lesen und ausgiebig nachdenken. Das Zeug hat die Qualität, (weitgehend) unabhängig von der benutzten Sprache Zen Effekte zu erzeugen und aus mittelprächtigen Entwicklern richtig gute zu machen.

Ach und: D könnte dir noch gefallen. Das ist, mal locker formuliert, C++ richtig gemacht. Ganz erheblich effizienter, begünstigt guten Code, macht Spass, ist aber halt noch jung (aber wohl schon durchaus brauchbar).
 
So auf die schnelle würde ich auch noch Go von Google in den Raum schmeißen, ist kompilierbar und man kann es für kleinere Spiele und Websiten nutzen. Einziger Nachteil meiner Meinung nach ist das Fehlen von Generics und const correctness:(.
 
rmoe schrieb:
Gleich vorweg: *Die* Sprache gibt's nicht. *Jede* ist irgendwo Kompromiss. Die eine ist gut für den hardwarenahen Teil von kerneln, die andere ist gut für riesige komplexe Systeme, die eine begünstigt (oder ermöglicht überhaupt mal) die Erstellung von sicheren Anwendungen, die andere ist sehr "effizient" weil großzügig, die eine ist super für Systemkram, die andere wunderbar für Gui Zeug, die eine kann auf allem laufen was auch nur vage binär ist, die andere taugt wunderbar für bestimmte Architekturen, die sie ausreizt, die eine ist nackig aber flexibel, die andere ist gut ausgestattet aber weniger von allerlei libraries unterstützt, usw, usw.
Schön geschrieben, Beispiele für eine Programmiersprache fehlen da nur.

Das mit der Nische hast du vollkommen recht!
 
Man kann über Programmiersprachen eine Menge diskutieren aber eine Programmiersprache lernen und Programmieren lernen sind 2 paar Schuhe.

Hier gibt es zum Beispiel ein tolles Tutorial, das erklärt was man mit Lambdas und Clojures machen kann. Das sind Konzepte aus den funktionalen Sprachen aber de Clou des Tutorials ist das man das direkt in JavaScript machen kann. D.h. direkt im Browser die Web-Console öffnen und los tippen.

Ich bin kein Fan von JavaScript, trotzdem ist das Tutorial sehr lehrreich, unterhaltsam und spannend.

Meine klare Empfehlung ist also, nimm irgend etwas für das Du ein gutes Tutorial findest. Ein Sprache lernen dauert nur 1-2 Wochen, Porgrammieren lernen dauert Jahre. Konzentriere Dich also auf Material das Dir neue Konzepte vermittelt und dein Verständnis verbessert. Am Ende deiner Reise solltest Du mal über das ganze Spektrum Sprachen (von Assembler bis Interpretiert) drübergerutscht sein.
 
Zwei Sprachen auf einmal lernen, geht aber oft schief. Deshalb schon weil die Konzepte und Strukturen sich völlig voneinander unterscheiden können. Zumal wahrscheinlich auch die Grundlagen der Algorithmik und Datenstrukturen fehlen.
 
Ergo Python. Ist ein guter Kompromiss aus "echtem software design" (hardcore) und easy going, bietet viel Spielraum für diverse Paradigmen, erzieht zu Diszplin ohne ständig auf einen einzuprügeln und man kann wirklich viel damit machen. Übrigens auch besser Web-Kram (als mit PHP, das eigentlich "zusammengeschmissenes web-Basic" heissen sollte oder auch "Sicherheitsproblem-Generator").
Hieß PHP nicht "pretty hard to protect"? *scnr*

Python halte ich auch für geeignet, da die Sprache erlaubt, verschiedene Konstrukte, Techniken und Stile (OOP, funktional, prozedural) zu erlernen, und gleichzeitig aber immer noch unter die Haube zu gucken (z. B. OOP ==> special members, special methods - da lernt man schnell, wie Vererbung technisch umgesetzt ist). Viele Low Level Konzepte wie etwa Pointer, Function Pointer, Call by Reference etc. sind vorhanden und trotzdem gut und einfach zugänglich. Außerdem können Masochisten sich in C eigene Extensions schreiben - falls wer tatsächlich mal das Bedürfnis verspürt, ein paar Bits umzuschubsen ;)

Ein Bekannter von mir, mittlerweile pensionierter Gymnasiallehrer für Physik, Mathe und Informatik schwört aber auf JavaScript - teilweise aus ähnlichen Gründen (verschiedene Konzepte umsetzbar), z. T. aber aus demselben Grund heraus, warum wir früher im Studium mit SmallTalk gequält wurden (Joe is a box...:ugly:) - wobei ich finde, dass Python mit Werkzeugen wie bpython auch eine brauchbare interaktive Umgebung zum Ausprobieren bereitstellt.
 
Also, wenn ich ehrlich bin, dann mag ich Python zwar sehr und empfehle es auch wohlbegründet Anfängern, aber auch nur, weil der mMn richtige Weg den meisten unzumutbar erschiene.

Meine Studenten, jedenfalls denen, an denen mir wirklich lag, habe ich's auf die harte Tour beigebracht. Der einzige Fehler, den ich heute aus der Retrospektive sehe, ist der, dass ich sie anfangs mit C lernen ließ. Modula-2 wäre besser gewesen, aber soweit das wirklich kapiert zu haben, war ich selbst noch nicht.
Was meine ich mit "harte Tour"? Zum Beispiel strenge statische Typisierung. Anfangs nur minimale Verwendung der standard library; Was der Student will, soll er selbst bauen. Stundenlange, teilweise quälende (aber interessante) Übungen und Diskussionen, z.B. über while vs. for und pre- bzw. post condition. Viel auf papier, wenig Hacken.
Später dann nur Gebrauch von libraries nach plausibler Begründung - auch der Angemessenheit.

Und, sehr wichtig, wieder und wieder "Verteidigung". Warum ist das da als Objekt ausgearbeitet? Warum ist das da rekursiv und nicht als Schleife? Usw, usw.

Später dann Vergleiche zu anderen Sprachen und Paradigmen. Der krönende Abschluss war immer "Suchen Sie sich eine Sprache aus. Aber begründen Sie ihre Entscheidung gut und führen Sie als Vergleich mindestens 2 andere erheblich unterschiedliche Sprachen an" mit anschließender Fertigung einer nicht trivialen Projektarbeit in eben der ausgesuchten Sprache. C++ wollte übrigens keiner. Die wussten das dann besser *g

Heute dagegen geht's ja eher darum, einen Neuling nicht gleich in einen der vielen bereitstehenden und von "coolen" Kaspern empfohlenen Misthäufen rennen zu lassen.
 
Der einzige Fehler, den ich heute aus der Retrospektive sehe, ist der, dass ich sie anfangs mit C lernen ließ. Modula-2 wäre besser gewesen, aber soweit das wirklich kapiert zu haben, war ich selbst noch nicht.
Mich interessiert jetzt inwieweit sich Modula-2 von C unterscheidet.
 
Was meine ich mit "harte Tour"? Zum Beispiel strenge statische Typisierung. Anfangs nur minimale Verwendung der standard library; Was der Student will, soll er selbst bauen. Stundenlange, teilweise quälende (aber interessante) Übungen und Diskussionen, z.B. über while vs. for und pre- bzw. post condition. Viel auf papier, wenig Hacken.
Full ACK - Theorie gehört dazu; die Frage ist, wo grenzt man "programmieren" (als handwerkliche Tätigkeit) von Softwaredesign und Architekturfragen ab. Für ein solides Fundament würde ich nicht nur einfach auf das erlernen einer Sprache zielen, sondern erst mal auf theoretischer Ebene erarbeiten, was dahinter steckt (also Kenntnis formaler Sprachen, Definition einer Grammatik etc.). Dann kann man über Algorithmen (wie beschreibt man sowas eigentlich, was sind Pre- und Post Conditions, was ist ein Automat, etc.) und Datenstrukturen (sozusagen vom Array zum RB-Tree) sprechen, und parallel sollte man sich mal mit der Rechnerhardware auseinander setzen (was ist eigentlich eine CPU, wie ist sie aufgebaut, was ist eine ALU und was tut sie, was ist Speicher und wie funktioniert er). Wenn man das drauf hat, ist die Programmiersprache hinterher - nun ja, vielleicht nicht sekundär, aber sie wird vom Mysterium zum Werkzeug, und man lernt, das alle Werkzeuge für einen bestimmten Bereich mehr oder weniger geeignet sind.

Bei mir damals an der Uni wurden übrigens bewusst exotische Sprachen eingesetzt, um Studenten mit "Vorbelastung" dazu zu bringen, sich auf Methodik und Theorie dahinter einzulassen, anstatt sich mit oberflächlichen Hacks durch's Studium zu mogeln. In den Pflichtfächern wurden entweder Pseudo-Sprachen eingesetzt (Algorithmen und Datenstrukturen) oder Exoten wie SmallTalk, Oberon & Co. (Programmiermethodik). C hab ich damals als Seminar im Studium Generale angeboten, als Ergänzung zu den Pflichtfächern Hardwaretechnik und Betriebssysteme.

Wie gesagt, das zielt aber mehr in den Bereich Studium oder sehr fundierte Programmier-Ausbildung. IMO kann man kaum verlangen, dass sich jemand mit dieser Bandbreite auseinandersetzt, der (wie der OP) programmieren auf eigene Nase lernen will. Für Autodidakten würde ich empfehlen, sich neben einer Hochsprache (wie eben Python) einmal durch Jon Erickson's "Hacking" zu quälen (zumindest die ersten ca. 100 Seiten) und die Beispiele wirklich selbst nachzuvollziehen. Dann besteht wenigstens ein Grundverständnis darüber, was eigentlich "unter der Haube" so passiert. Dann einfach je nach Neigung mal schauen; wer mit C weiterbasteln will, findet in den OpenBooks von Rheinwerk (ex. Galileo) brauchbare Bücher von Jürgen Wolf ("C von A bis Z" und "Linux-Unix Programmierung"). Das Python Buch ist leider von der Seite verschwunden, aber da gibt's IMO auch bessere Online-Quellen (z. B. Dive into Python)
 
Für ein solides Fundament würde ich nicht nur einfach auf das erlernen einer Sprache zielen, sondern erst mal auf theoretischer Ebene erarbeiten, was dahinter steckt (also Kenntnis formaler Sprachen, Definition einer Grammatik etc.
Ja nur, auch wenn sich die verschiedenen Sprachen ähneln, sind sie doch unterschiedlich.
Schleifen, Arrays scheinen ja überall die gleichen zu sein, aber das ist ja nicht alles.
Was will man da schon viel lernen? Funktion ist ein Baukasten, Array eher eine Liste usw. so etwas wird nicht mal abendfüllend sein.
Deshalb ist auch meine Devise, was willst du - dann tu es jetzt und nicht erst über andere Programmiersprachen.
Der Weg ist sowieso steinig, dann gleich richtig gelernt und gut.

Für Algorithmen allein gibts noch andere Bücher :)
Ich habe auch schon festgestellt, bevor man Programmieren lernen will, sollte man auch erst 3 Jahre Mathe studieren ^^
Dann versteht man auch die Algorithmen bzw. Formeln in den Büchern. :)

Jürgen Wolf ("C von A bis Z"): Ja zu dem Buch kann ich nur sagen, kauf es dir nicht. :)
Habe schlechte Kritik gelesen und durch massige Fehler ist es eher was für die Fortgeschrittenen.
Zu Jürgen Wolf kann ich auch nicht gerade positives sagen, da ich schon sein Buch für Bash gelesen habe.

Kauf dir dann doch die übersetzte Fassung von den Machern, also wenn es jetzt C sein soll. :)
 
Ja nur, auch wenn sich die verschiedenen Sprachen ähneln, sind sie doch unterschiedlich.
Schleifen, Arrays scheinen ja überall die gleichen zu sein, aber das ist ja nicht alles.
Was will man da schon viel lernen? Funktion ist ein Baukasten, Array eher eine Liste usw. so etwas wird nicht mal abendfüllend sein.
Da bin ich entschieden anderer Meinung - wer behaupten will, programmieren zu können, sollte auch konzeptionell fit genug sein, um komplexere Algorithmen und Datenstrukturen selbst zu implementieren - nur dann wurden sie nämlich auch verstanden (z. B. suchen in rot-schwarz Bäumen oder B-Trees). Außerdem erwarte ich von einem Programmierer, dass er die Komplexität seiner Implementierung selbst bestimmen kann (ich hab genug Idioten-Code gesehen, der exponentielle Komplexität hatte, wo's auch linear oder logarithmisch gegangen wäre). Interessant wird sowas dann z. B., wenn man in einer höheren Sprache wie Python vor der Entscheidung steht, ob man range oder xrange benutzt - und diese Entscheidung kann man nur dann gut treffen, wenn man das Konzept dahinter versteht und auch nachvollziehen kann, wann welche Möglichkeit das bessere Laufzeitverhalten zeigt.

Für Algorithmen allein gibts noch andere Bücher :)
Natürlich. Mein persönliches Lieblingsbuch zu dem Thema wird allerdings nicht mehr verlegt, scheint aber noch Restbestände zu geben (B. Owsnicki Klewe - Algorithmen und Datenstrukturen). Allerdings warne ich davor, das Buch ohne die begleitende Vorlesung verstehen zu wollen :ugly:

Ich habe auch schon festgestellt, bevor man Programmieren lernen will, sollte man auch erst 3 Jahre Mathe studieren ^^
Dann versteht man auch die Algorithmen bzw. Formeln in den Büchern. :)
Das ist übertrieben - wenn man nicht grade in die Krypto einsteigen will, reichen i. d. R. gute Algebra-Kenntnisse völlig aus (dass die leider nicht in jedem Bundesland in der Schule vermittelt werden, steht auf einem anderen Blatt und nötigt Unis und FHs mehr und mehr zu Vorkursen). Ansonsten sind Formeln oft nur eine Art Fachsprache (z. B. bei der o. a. Komplexität - jeder Informatiker weiß (hoffentlich), was mit O(n) gemeint ist, weil es eine Konvention ist, das so aufzuschreiben).

Jürgen Wolf ("C von A bis Z"): Ja zu dem Buch kann ich nur sagen, kauf es dir nicht. :)
Habe schlechte Kritik gelesen und durch massige Fehler ist es eher was für die Fortgeschrittenen.
Zu Jürgen Wolf kann ich auch nicht gerade positives sagen, da ich schon sein Buch für Bash gelesen habe.
Bevor Du ein Buch kritisiert, solltest Du es selbst gelesen haben - Empfehlungen basierend auf Hörensagen halte ich für keine so gute Idee. Im Übrigen habe ich nicht empfohlen, das Buch zu kaufen - es ist schlicht eines der wenigen deutschsprachigen umfassenderen Werke zu C, die kostenfrei (Online-Ausgabe) genutzt werden können, es schadet also nicht (auch nicht dem eigenen Geldbeutel), mal einen Blick hinein zu werfen. Das gleiche gilt übrigens auch für die "Insel"-Bücher zu Java - auch wenn ich selbst kein Java-Fan bin, dümmer wird man davon nicht, sich das auch mal aus der Nähe anzuschauen, schon allein um zu wissen, warum man sich dagegen entscheidet.

Kauf dir dann doch die übersetzte Fassung von den Machern, also wenn es jetzt C sein soll. :)
Dann würde ich schon auf's Original setzen, die Übersetzung ist nicht so dolle. Das aber wirklich nur, wenn Du tiefer einsteigen willst. Wer sich nur mal mit Speicherverwaltung im Hintergrund einer Hochsprache befassen will, kann das auch einfacher haben. Meinen Seminar-Opfern hatte ich damals aber verboten, K&R Formatierung zu nutzen - ich steh da mehr auf ANSI, so wie OpenBSD das auch vorgibt; K&R sieht mir immer zu sehr wie Java aus :D
 
.....wenn man das Konzept dahinter versteht und auch nachvollziehen kann, wann welche Möglichkeit das bessere Laufzeitverhalten zeigt.
Das scheint mir auch ziemlich spezifisch zu sein. Was ich eigentlich meine ist, dass die Funktionen, Bibliotheken usw. bzw. deren Namen eben verschieden sind und auch verschieden arbeiten.
Bei einem muss man penibel sein, bei dem anderen total schlampig bzw. ist das letzte \0 egal.
Ich habe mehrere Beispiele von den verschiedenen Sprachen gesehen und auch wenn sie sich ähnelten, arbeiten sie je nach Sprachen anders.
Von Konzept her sagt printf in C das gleiche wie print glaub das war Python?
Aber was ich meine ist eher die genaue Syntax.
Außerdem was will man da auch viel von Konzepten lernen? Es gibt einen Eingang und einen Ausgang. :D Speicher wird belegt und wieder freigemacht. :)
Und wie ich schon sagte, Algorithmen und Datenstrukturen sind irgendwie wie eine Sprache in der Programmiersprache selber.
Ist wie Mathe, das du eben fürs Coden brauchst.


wenn man in einer höheren Sprache wie Python vor der Entscheidung steht, ob man range oder xrange benutzt - und diese Entscheidung kann man nur dann gut treffen
Ganz genau, und da muss man auch ganz genau wissen wie die Syntax ist und wie das ganze funktioniert. Und in einer anderen Sprache funktioniert das auch, aber wieder mit völlig neuen Namen und Syntax.
Allerdings warne ich davor, das Buch ohne die begleitende Vorlesung verstehen zu wollen :ugly:
Gut dass du mich daran erinnerst, in YT hab so ein Video gefunden. :)

Ja, Programmieren ist nicht einfach deshalb bin ich der Meinung, man soll nicht über Hügel gehen, wenn man noch vor sich Berge hat.
Man sollte den Berg gleich erklimmen. Gutes Buch ist dabei eigentlich jedes, dass mehr als 400 Seiten hat.
Was ich gerade lese kann ich auch nur zur 80% empfehlen, aber dafür werden Sachen 3x erklärt ^^

gute Algebra-Kenntnisse
Kannst du da ein Buch empfehlen? Weil ich mit meinem Buch manchmal durchdrehe, weil die Formeln mir nichts sagen. :(

Bevor Du ein Buch kritisiert, solltest Du es selbst gelesen haben
Na gut, sollte eher eine Warnung sein bzw. was ich in einem anderen Forum gelesen habe.
Aber eigentlich kann man sich auf kein Buch 100% verlassen.

K&R Formatierung zu nutzen
Na ja, ich bleibe schon bei C99, da es wohl der Standard ist.
Wird überhaupt noch ANSI verwendet?

Andere Frage:
Gibts denn ein Buch für das Konzeptionelle für/zum Programmieren?
 
Zurück
Oben