Hallo, zusammen.
Ich bin auf der Suche nach einer guten Einstiegsliteratur für die
Programmiersprache C. Im Internet finde ich leider häufig, so meine
Erfahrung, eher nur Literatur, die mal schnell in C rein hüpfen will.
Von anderen Rezensenten kriege ich dann auch immer wieder mit, dass die
meisten modernen C-Einstiegsbücher nur so von Fehlern durchtränkt sind.
Daher hoffe ich, dass hier einige vielleicht gute C Einstiegsliteratur
kennen, die vor allem die Konzepte von C für Anfänger ausführlich
erklärt und dabei auch die Praxis nicht außer Acht lässt. Vielleicht
liegt es an mir, dass die Theorie mich fesselt, aber so war das bei mir
schon immer. Ich verstehe und arbeite besser, wenn ich den Hintergrund
genauer verstehe.
Ich hoffe einige haben ein paar gute Empfehlungen. Vielen Dank im
Voraus!
Gute Konzepte? Da musst du diejenigen fragen, die mit 1-2 Leuten Systeme
zustande bringen, für die andere Firmen 100 Leute und 10 mal so viele
Programmzeilen brauchen. Nicht die Eunuchen, die Lehrbücher schreiben,
weil sie sonst nichts zustande bringen.
Die beste Literatur sind die Quelltexte der genialen Programme. Das alte
Mysql oder Ghostscript oder so etwas. Programme, die du locker
durchlesen kannst. Bei denen du glaubst, das sei doch alles trivial.
Ein Kommentar schrieb:> Gute Konzepte? Da musst du diejenigen fragen, die mit 1-2 Leuten> Systeme> zustande bringen, für die andere Firmen 100 Leute und 10 mal so viele> Programmzeilen brauchen. Nicht die Eunuchen, die Lehrbücher schreiben,> weil sie sonst nichts zustande bringen.>> Die beste Literatur sind die Quelltexte der genialen Programme. Das alte> Mysql oder Ghostscript oder so etwas. Programme, die du locker> durchlesen kannst. Bei denen du glaubst, das sei doch alles trivial.
Also ich weiß nicht so recht was diese Antwort soll. Sie hilft hier
leider nicht weiter. Woher soll ich denn einfach Programmcode lesen und
verstehen, wenn mir gerade die Grundlagen zu dem Thema fehlen und ich
nicht mal weiß, was besagter Programmcode macht? Das ist doch Unfug.
> Programme, die du locker durchlesen kannst. Bei denen du glaubst, das sei doch >alles trivial.
Ich habe nirgendwo behauptet, dass das alles trivial sei.
Kaje F. schrieb:> Ich habe nirgendwo behauptet, dass das alles trivial sei.
So war es auch nicht gemeint.
C-Code ist dann sehr gut, wenn er sich liest, als sei alles trivial.
Und ist nicht klar, brauchst Du ein Buch zum Programmieren lernen? Dann
nimm dir einen c-compiler und ein Buch mit interessanten
Themen/Beispielen.
Oder kannst Du programmieren, kennst EBNF und suchst jetzt C theoretisch
zu erforschen? Dann nimm einen alten C standard (90-99) und ließ ihn
durch.
Ich würde die folgenden beiden Bücher empfehlen:
"Effective C" von Robert Seacord
"Modern C" von Jens Gustedt
Im Gegensatz zum oben empfohlenen "The C Programming Language" beziehen
sich diese beiden auf aktuellere Sprachstandards. Beide Autoren sind
auch in der Normierung der Sprache C aktiv.
P.S.: Auch der C Sprachstandard selbst ist halbwegs lesbar (nicht ganz
so gut wie der von Scheme, aber immer noch deutlich besser als bei den
meisten Sprachen).
Kaje schrieb:> Daher hoffe ich, dass hier einige vielleicht gute C Einstiegsliteratur> kennen, die vor allem die Konzepte von C für Anfänger ausführlich> erklärt und dabei auch die Praxis nicht außer Acht lässt.
Du brauchst mindestens 2 Bücher.
Eines über die Sprache C, wie den Kernighan&Ritchie,
der immer noch eines der besten und kürzesten Einstiegsbücher ist.
Den ganzen modernen C Firlefanz hast du da nicht drinnen,
aber das ist alles erst mal unwichtig.
Dann brauchst du ein Buch über Algorithmen und Datenstrukturen,
wie den Sedgewick "Algorithm in C", der dir die benötigten
Datenstrukturen
(und Denkstrukturen) nahebringt.
Beides sind sehr gute und praktische Bücher, die ich empfehlen kann.
Gruss,
Udo
> von Kernighan und Ritchie immer noch eines der besten Bücher
Jain... die Ansichten haben sich inzwischen geändert. Heutzutage haben
wir doch ganz andere Konzepte.
Damals wollten K&R ein Mehrbenutzersystem in 1MB quetschen und nahmen
dafür fehleranfälligen Code in Kauf. Heutzutage haben wir Gigabyte an
Programmcode. Finden die Fehler nicht mehr. Wir benutzen Konzepte, die
zumindest einen Teil der Fehler vermeiden.
Ich befürchte, das einzige man aus K&R noch lernen kann, ist die Sache
mit Pointen und Arrays.
> Woher soll ich denn einfach Programmcode lesen...
Das lesen ist kein Problem. Hast du mit einem beliebigen
Internettutorial in ein paar Tage drauf.
Das Problem liegt wo anders. Du musst deine Konzepte so anlegen, dass du
die Stärken der Sprache und der Libraries ausnutzen kannst. Erst gar
nicht über die Unzulänglichkeiten stolperst.
Ein Kommentar schrieb:>> von Kernighan und Ritchie immer noch eines der besten Bücher>> Jain... die Ansichten haben sich inzwischen geändert. Heutzutage haben> wir doch ganz andere Konzepte.
Und welche wären das konkret in C? Klingt so als hättest du keine
Ahnung von C?
Kaje F. schrieb:> Woher soll ich denn einfach Programmcode lesen und> verstehen, wenn mir gerade die Grundlagen zu dem Thema fehlen und ich> nicht mal weiß, was besagter Programmcode macht?
Das mußt Du Dir erarbeiten. Arschbacken zusammen kneifen und
durchkämpfen. Oder glaubst Du etwa, jemand kaut Dir was mit einem Buch
mundgerecht vor und Du kannst das dann auch? Was meinst Du, wo all die
ihr Wissen herhaben, die guten Code schreiben können? Sicher nicht vom
Bücherlesen.
Ist wie Eiskunstlaufen: Du kannst 1000ende Bücher darüber lesen, selber
machen mußt Du selber lernen.
Erfahrung kann man nicht weitergeben. Die muß man sich selbst aneignen.
Google mal nach Design Patters und Design Principles. Die sind
sprachunabhängig, aber wertvoll, sie verstanden zu haben.
Wer 2022 noch mit dem K&R C lernt, hat die Kontrolle über sein Leben
verloren ... (das war der Troll zum Sonntag) Im Ernst: Als historisches
Dokument ist der K&R sicher sehr interessant und man kann sich den auf
jeden Fall mal ins Regal stellen.
Aber die Welt hat sich nun mal - sogar in C - weiter gedreht. Für die
Basics sollten sich im Netz genügend und vor allem halbwegs aktuelle
Informationen finden lassen. Zum Thema C gibt es halt leider sehr viele
Bücher, die einfach Schrott sind ...
Wenn es dann in die Tiefe geht, lernt man auch viel aus den
Sprachstandards selbst oder auch aus den Handbüchern von Compilern und
statischen Analyse-Tools.
Wenn Embedded ein Thema ist, kann man sich für ne schmale Mark auch ein
Exemplar des MISRA-C-Standards holen. Egal was man von diesem Standard
halten mag: Die Code-Beispiele und Erklärungen ("Rationals") zu den
einzelnen Regeln sind sehr lehrreich und Vertiefen das Verständnis. Vor
allem über die dunklen Ecken von C ;)
So oder so wirst du aber am wahrscheinlichsten vernünftige
Lernergebnisse erzielen, wenn du ein konkretes Projekt hast, an dem du
arbeiten und dich von Problem zu Problem durch hangeln kannst. Auf jeden
Fall kann ich mir kaum vorstellen, dass nur "Programmcode lesen" einen
nachhaltig weiter bringt.
Markus L. schrieb:> Das mußt Du Dir erarbeiten. Arschbacken zusammen kneifen und> durchkämpfen.
Ach was... 🙄 Das weiß ich selber auch. Aber erarbeiten tut man schon
mal, indem man eine gute Referenz hat, an der man sich orientieren kann.
Und da ich unerfahren in diesem Gebiet bin, kann ich schlecht beurteilen
welche Bücher über C nun gut oder schlecht sind und es wäre blödsinnig
jetzt irgendeinen voreiligen Unfug anzustellen und nachher mir falsche
Gewohnheiten anzugewöhnen, die danach wieder schwer abzugewöhnen sind.
Genau deswegen frage ich doch euch, die erfahrener sind auf dem Gebiet.
Markus L. schrieb:> Oder glaubst Du etwa, jemand kaut Dir was mit einem Buch> mundgerecht vor und Du kannst das dann auch?
Nein, das tue ich selbstverständlich nicht und man sieht doch auch in
meiner Frage, dass es mir eben nicht darum geht irgendwas vorgekaut zu
bekommen in einem Buch und schon gar nicht irgendwas einfach auswendig
zu lernen, sondern zu verstehen :) Daher weiß ich nicht so ganz auf was
deine Frage abzielt (oder andeuten möchte). Ich meine... das weiß ich
offensichtlich ja wohl selbst :P Ich bin nicht mehr drei.
Markus L. schrieb:> Was meinst Du, wo all die> ihr Wissen herhaben, die guten Code schreiben können? Sicher nicht vom> Bücherlesen.
Das mag ja sein, aber sicher haben die das Wissen auch nicht einfach
nur, indem sie ohne Referenz und ohne Vorwissen einfach Code angeschaut
haben. Sprachen lernt man schließlich auch nicht indem man einfach nur
Wörter der Fremdsprache anschaut, sondern zusätzlich ein Wörterbuch zur
Hand hat, in welchem man die Wörter der Fremdsprache in die eigene
übersetzen kann und eine Referenz hat bzgl. der grammatikalischen
Struktur der Fremdsprache damit man auch selber Sätze bilden kann in
dieser und dann erst kann man sich Sätze von anderen in der Fremdsprache
anschauen und davon entsprechend lernen. Und nochmal: Hier redet ja
niemand nur vom Bücherlesen. Wenn ich nur Bücher hätte lesen wollen,
hätte ich mir ja auch gleich irgendein X-beliebiges C Buch kaufen können
zum Zeitvertreib und das Thema gar nicht erst eröffnen müssen :P
Markus L. schrieb:> Google mal nach Design Patters und Design Principles. Die sind> sprachunabhängig, aber wertvoll, sie verstanden zu haben.
Vielen Dank :) Ich habe es mir mal notiert.
P. S. schrieb:> Für die> Basics sollten sich im Netz genügend und vor allem halbwegs aktuelle> Informationen finden lassen. Zum Thema C gibt es halt leider sehr viele> Bücher, die einfach Schrott sind ...
Richtig. Und daher ist für die Basics immer noch der K&R, 2. Ausgabe,
eine gute Wahl.
Für die modernen Erweiterungen dann noch eins der o.a. Bücher.
P. S. schrieb:> Aber die Welt hat sich nun mal - sogar in C - weiter gedreht.
Natürlich hat sich die Welt ernsthaft weitergedreht. All die anderen
Programmiersprachen wurden ja nicht erfunden, weil C so toll ist.
Oliver
P. S. schrieb:> Wer 2022 noch mit dem K&R C lernt, hat die Kontrolle über sein> Leben> verloren ... (das war der Troll zum Sonntag) Im Ernst: Als historisches> Dokument ist der K&R sicher sehr interessant und man kann sich den auf> jeden Fall mal ins Regal stellen.
Vielen Dank für deine Antwort erstmal :) Nun davon das K&R schon
veraltet ist habe ich auch schon öfter gelesen bei meiner Recherche
gestern, deshalb war ich mir nicht so sicher, und hab mal abgewartet was
andere Erfahrene hier noch so sagen. Ich habe aber trotzdem mal vor das
K&R C Buch im Hinterkopf zu behalten als zukünftige Referenz, weil ist
ja immerhin von den Machern selbst, wenn ich das richtig sehe.
P. S. schrieb:> Aber die Welt hat sich nun mal - sogar in C - weiter gedreht. Für die> Basics sollten sich im Netz genügend und vor allem halbwegs aktuelle> Informationen finden lassen. Zum Thema C gibt es halt leider sehr viele> Bücher, die einfach Schrott sind ...
Ja, ich habe da auch viele Rezensionen gelesen von welchen, die da
explizit vor solchen Büchern gewarnt haben. Nun ja, nach Tutorials habe
ich schon gesucht, aber ich fand, dass mir da immer so ein bisschen der
Hintergrund gefehlt hat bzw. man da gewisse Dinge einfach für
selbstverständlich genommen hat, obwohl ich fand, dass man dazu hätte
ausführlicher sein können. Oder ich habe bisher nur schlechte Tutorials
gefunden.
P. S. schrieb:> Wenn es dann in die Tiefe geht, lernt man auch viel aus den> Sprachstandards selbst oder auch aus den Handbüchern von Compilern und> statischen Analyse-Tools.
Ja, ich glaube ich verfolge jetzt zunächst mal den folgenden Ansatz: Ein
gutes C-Tutorial finden, das die Basics beibringt, danach wenn es in die
Tiefe geht, dann deinen Vorschlag umsetzen und dabei vorher auch mal
natürlich konkrete Projekte mal umsetzen. Da hätte ich schon einige
kleine Ideen. Ich denke nämlich auch, dass das sehr lehrreich sein kann.
Dabei kann ich mir dann auch mal Code aus anderen Projekten ansehen und
wie die bestimmte Probleme gelöst haben, usw.
Kaje schrieb:> Vielleicht> liegt es an mir, dass die Theorie mich fesselt, aber so war das bei mir> schon immer.
Dann such nach Programmiertechniken oder Methodiken und fachspezifischen
Lösungsansätzen, aber nicht nach eine konkreten Programmiersprache wie
'C'. Das Stichwort dazu ist "Software-Engineering"
Wahrscheinlich musste auch das Anwendungsgebiet
(Embedded,DSP,Datenbanken,App,OS) benennen um das Zutreffende unter den
teilweise widersprechenden Ansätzen (bspw. Hardwarespezif. vs.
Abstraktion) zu finden.
Für den Anfang ist vielleicht das hilfreich:
ISBN:978-3897215672
Ansonsten schauen was hier diesbezüglich durchgekaut wurde:
https://www.google.com/search?q=Software+engineering+site%3Amikrocontroller.net
My favoured bookz about:
"Effective C", Robert Seacord
"Modern C", Jens Gustedt
"21st Century C", Ben Klemens
"C Programming - A Modern Approach", K. King
"Moderne_C-Programmierung", Helmut Schellong
You can find all bookz here libgen.rs !
Ein Kommentar schrieb:> Die beste Literatur sind die Quelltexte der genialen Programme.
Ganz dick unterstrichen, immer und immer wieder diagonal source code
lesen!!!
Damit lernt man sehr schnell zu unterscheiden zwischen gut, weniger gut
und crap.
Kaje schrieb:> Ich hoffe einige haben ein paar gute Empfehlungen.
Du schreibst eingangs viel unsinniges Zeug, also auch mal strukturierter
Denken lernen UND selbstwirksam werden!
Apollo M. schrieb:> My favoured bookz about:>> "Effective C", Robert Seacord> "Modern C", Jens Gustedt> "21st Century C", Ben Klemens> "C Programming - A Modern Approach", K. King> "Moderne_C-Programmierung", Helmut Schellong>> You can find all bookz here libgen.rs !
Vielen Dank, die Bücher hab ich mir mal gerade notiert :)
Apollo M. schrieb:> Du schreibst eingangs viel unsinniges Zeug, also auch mal strukturierter> Denken lernen UND selbstwirksam werden!
Welche Stelle genau war denn an meinem Text deiner Meinung nach
unsinnig? Das ich den Hintergrund beleuchtet habe und wiedergegeben habe
was ich bisher selbst recherchieren konnte oder was genau? Ich
jedenfalls sehe keinen Grund da mein strukturiertes Denken in Zweifel
ziehen zu müssen (lernen tut man jedoch immer), denn ich kenne mich
selber gut genug und kenne meine Fähigkeiten. Selbstwirksamkeit besitze
ich, aber ich bin auch nicht naiv übermütig, weshalb ich hier auch
nachfrage. Aber trotzdem danke nochmals für die Buchempfehlungen :)
Lerninstructor schrieb:> Dann such nach Programmiertechniken oder Methodiken und fachspezifischen> Lösungsansätzen, aber nicht nach eine konkreten Programmiersprache wie> 'C'. Das Stichwort dazu ist "Software-Engineering"
Ahh, verstehe :) Ich behalte das mal im Hinterkopf. Auch dir danke
vielmals für die Buchempfehlung. Und ja, ich werde mich mal durch die
Seite durchstöbern. Da gibt es bestimmt viel zu finden.
Kaje schrieb:> Ich bin auf der Suche nach einer guten Einstiegsliteratur für die> Programmiersprache C.
Da erhebt sih die Gegenfrage: Von welchem Kenntnis-Stand gehst du aus?
Im Grunde braucht man 3 Dinge:
1. Kenntnisse, wie man ein Ziel erreichen kann, also Algorithmen
2. Ein Gefühl für sinnvolle Ordnung, also Sinn für Struktur in einer
Software
3. Kenntnis der formalen Schreibweise einer Programmierspeache, also wie
man etwas in der betr. Sprache formuliert. Das ist auch zum Verstehen
beim Lesen von Quellcode vonnöten.
Punkte 1 und 2 sind sprachunabhängig und Punkt 3 bringt rein garnix,
wenn man zumindest bei Punkt 1 nix weiß.
Also nochmal: was weißt du bereits? Das ist entscheidend für weitere
Ratschläge.
Ansonsten: Es ist immer ein guter Weg, sich irgendwelche
Software-Projekte vorzunehmen, die man dann in der betreffenden
Programmiersprache macht. Dabei stößt man wie von selbst auf all die
Dinge, die man lernen muß. Und wenn man dann das Projekt lauffähig hat,
fällt einem auf, daß man an tausend Stellen es hätte besser schreiben
können. Das ist mMn wesentlich besser, als existierendes Zeugs nachäffen
zu wollen.
W.S.
Kaje F. schrieb:> Sprachen lernt man schließlich auch nicht indem man einfach nur> Wörter der Fremdsprache anschaut, sondern zusätzlich ein Wörterbuch zur> Hand hat, in welchem man die Wörter der Fremdsprache in die eigene> übersetzen kann und eine Referenz hat bzgl. der grammatikalischen> Struktur der Fremdsprache damit man auch selber Sätze bilden kann in> dieser und dann erst kann man sich Sätze von anderen in der Fremdsprache> anschauen und davon entsprechend lernen.
Ja, so die klassische Lehre. Eine Fremdsprache lernt man aber am
schlechtesten mit Wörter- und Grammatikbuch. Ein Lexikon in der
Fremdsprache bringt 1000x mehr als ein Wörterbuch. Es befreit einem vom
Korsett, immer das Wort in der eigenen Muttersprache im Kopf haben zu
müssen und in der eigenen Muttersprache zu denken.
Eine Sprache muß gesprochen werden, am besten zusammen mit
Muttersprachlern. So, wie ich auf der Schule Fremdsprachen gelehrt
bekam, Wörter und Grammatikregeln pauken, viel zu selten im Sprachlabor,
viel zu wenig Konversation, habe ich in 13 Jahren Schulenglisch weniger
mitgenommen als in einem Jahr mit meiner damaligen Freundin aus England
zusammen in einer Clique aus Briten, Iren und Amerikanern.
"habe ich in 13 Jahren Schulenglisch weniger
mitgenommen als in einem Jahr mit meiner damaligen Freundin aus England
zusammen in einer Clique aus Briten, Iren und Amerikanern."
Das hat aber noch ganz andere Gründe, weshalb das deutlich mehr bringt.
Ganz so einfach herunterbrechen, wie du es gemacht hast, kann man es
nicht.
So einfach ist die Welt dann doch nicht;-)
Nicht umsonst gibt es extra das Auslandsjahr in England z.B:
Ist jetzt also kein wirklicher Geheimtipp
Ein Problem ist wohl auch - naja, dass z.B. K+C super mit gewissen
technischen Sachen, für die man sich vielleicht interessiert,
interagiert. D.h. nicht zu knappes Interesse für gewisse technische
Dinge wären so schlecht nicht.
Markus L. schrieb:> Ja, so die klassische Lehre. Eine Fremdsprache lernt man aber am> schlechtesten mit Wörter- und Grammatikbuch. Ein Lexikon in der> Fremdsprache bringt 1000x mehr als ein Wörterbuch.> [...] habe ich in 13 Jahren Schulenglisch weniger> mitgenommen als in einem Jahr mit meiner damaligen Freundin aus England> zusammen in einer Clique aus Briten, Iren und Amerikanern.
Das eine schließt das andere jedoch nicht aus, Markus. Ergänzend:
Jemanden ohne irgendwelche Vorkenntnis in einer Fremdsprache ins
entsprechende Land hineinzuwerfen (und darauf bezog sich auch meine
Analogie) wird ebenso wenig bringen wie nur die ganze Zeit Bücher über
die Sprache zu lesen. In meiner Antwort oben ging es lediglich darum
eben genau schon mal so ein gewisses Fundament zu haben, damit man dann
in der Praxis (in der Analogie bleibend: im Ausland) dann richtige
Erfahrungen sammeln kann. Aber ich hatte das ja oben schon erklärt
gehabt, weshalb das jetzt nicht noch weiter ausgeführt werden muss, da
off-topic. Praxis und Theorie sollten selbstverständlich Hand in Hand
gehen. Das bestreitet hier niemand :)
W.S. schrieb:> 1. Kenntnisse, wie man ein Ziel erreichen kann, also Algorithmen
Wir sprechen hier von Heuristik? Ja, in der Hinsicht habe ich einige
Erfahrung, also was das Finden von Lösungen zu Problemen angeht.
Allerdings kann ich bisher Algorithmen allgemein z.B. nicht mathematisch
formulieren oder in einer Programmiersprache umsetzen bzw. solche
Ausdrücke lesen und verstehen, da die Sprache mir unbekannt ist. Würde
man einige Algorithmen mir dagegen mit reinen Worten erklären, würde ich
diese relativ schnell begreifen können. Auch könnte ich selbst Lösungen
finden und diese verbal, in reinen Worten, ausdrücken, aber bisher, wie
erwähnt, nicht mathematisch oder programmiersprachlich abbilden können.
W.S. schrieb:> 2. Ein Gefühl für sinnvolle Ordnung, also Sinn für Struktur in einer> Software
Also ich würde sagen, dass ich (allgemein) dieses Gefühl für sinnvolle
Ordnung habe. Ich meine, mein Alltag alleine ist schon sehr strukturiert
und geordnet. Aber einen Sinn für Struktur in einer Software habe ich
natürlich nicht, da mir natürlich bisher die Kenntnis darüber fehlt, wie
so eine sinnvolle Struktur in einer Software eigentlich auszusehen hat
(ich könnte hier lediglich spekulieren und mutmaßen). Sprechen wir von
oberflächlichen Dingen, also das, was der Endnutzer sieht, dann würde
mir das leichter fallen, da ich durchaus sagen könnte, was man hier
vielleicht besser strukturieren oder anordnen könnte. Sprechen wir
dagegen vom Hintergrund, also das was sich softwaretechnisch alles
abspielt, was der Endnutzer nicht sieht, dann fehlen mir dazu natürlich
bisher noch die Kenntnisse.
W.S. schrieb:> 3. Kenntnis der formalen Schreibweise einer Programmierspeache, also wie> man etwas in der betr. Sprache formuliert. Das ist auch zum Verstehen> beim Lesen von Quellcode vonnöten.
Richtig. Wie erwähnt oben, hadert es bei mir auch an Punkt 3.
Kaje F. schrieb:> Allerdings kann ich bisher Algorithmen allgemein z.B. nicht mathematisch> formulieren oder in einer Programmiersprache umsetzen
Wenn du noch überhaupt keine Programmiersprache beherrschst, warum dann
gerade C?
In C programmiert man doch nur noch, weil die Umstände einen dazu
zwingen. Hat man die Wahl, gibt es sehr viel Schöneres. Denn wie ja
weiter oben schon angemerkt wurde, hat sich die Welt seit der Erfindung
von C weitergedreht.
Oliver
Kaje F. schrieb:> Wir sprechen hier von Heuristik? Ja, in der Hinsicht habe ich einige> Erfahrung, also was das Finden von Lösungen zu Problemen angeht.> Allerdings kann ich bisher Algorithmen allgemein z.B. nicht mathematisch> formulieren oder in einer Programmiersprache umsetzen bzw. solche> Ausdrücke lesen und verstehen, da die Sprache mir unbekannt ist.
Ähem... nein. Wir (zumindest ich) spreche hier nicht von Heuristik.
Das wäre etwa so, als wenn du "Germanistik" sagtest, wenn ich über
Lösungsansätze wie z.B. das Horner-Schema reden würde. Bloß weil ich
dabei die deutsche Sprache gebrauche.
Ich gebe dir mal 2 Beispiele, eines sozusagen Low-Level aus
mathematischer Sicht und ein zweites vom gegententeiligen Ende:
1. Als ich mit den PIC16 Controllern anfing, mißfiel mir der damalige
'PICALC' von Microchip so sehr, daß ich mir nen eigenen Assembler für
diese µC schrieb. So ein Programm(chen) beinhaltet einige Algorithmen
wie z.B. wie man Marken, Mnemonics und Parameter im Quelltext erkennt
und wie man Ausdrücke in Parametern auseinander nimmt und wie man
Markennamen mit zugehörigen Adressen sozusagen buchhalterisch führt und
so weiter.
2. Als ich für den Empfang von Radiosignalen begann, mir digitale
Bandfilter zu schreiben, habe ich lange Zeit daran gekaut, wie man
Bandfilter mit gleichzeitiger Phasendrehung schreibt, weil man das für
den Empfang von SSB Aussendungen benötigt.
In beiden Beispielen ist die zum finalen Schreiben des Quelltextes
benutzte Programmiersprache nebensächlich. Es kommt vielmehr darauf an,
wie man das jeweilige Problem angeht und löst. So etwas kann man auf
verschiedene Arten schriftlich machen. Struktogramme,
Programmablaufpläne oder reine Prosa gehen.
Ich habe so den Eindruck, daß es für dich am besten wäre, das
mittlerweile recht alte Buch "Arithmetische Algorithmen der
Mikrorechentechnik" von Lampe,Jorke,Wengel zu lesen. Das ackert zwar
letztlich in Assembler auf dem Z80 herum, ist aber im Grunde
numerisch-mathematisch angelegt und behandelt arithmetische Algorithmen
recht gründlich. Allerdings ist dort von C kein Wort zu finden. Aber
bedenke, daß die Grundlagen eben die Grundlagen sind für alles, was man
darauf aufbauen kann.
Ansonsten rate ich dir, zunächst erstmal die Begleitbücher zu Borlands
Pascal 7 zu besorgen und mit dem Programmieren in Pascal mittels des
aktuellen Delphi-Radstudios von Embarcadero zu beginnen. Anschließend
schaust du dir die Sprachdefinition von C an.
W.S.
Pandur S. schrieb:> Der Standard fuer C waere eigentlich : Kernigham & Ritchie
Auch C entwickelt sich weiter? Ist dann noch ein Buch von 1970
empfehlenswert?
jens schrieb:> Auch C entwickelt sich weiter? Ist dann noch ein Buch von 1970> empfehlenswert?
um C zu lernen finde ich es auch heute noch empfehlenswert (nach dem
Buch wirst Du auch modernen C-Code lesen und verstehen können), um
heutzutage Programmieren zu lernen eher nicht!
Stellt euch vor, ein Physikprofessor würde seinen Studenten sagen "Liest
bloss keine Originalveröffentlichungen von Einstein oder Planck - das
Zeug ist hundert Jahre alt!".
Darum ist Informatik auch keine Wissenschaft ;-) Und die theoretische
Informatik - das ist einfach nur angewandte Mathe.
Der Rest erfindet immer wieder das Rad neu. Und es ist jedes mal noch
runder als das Alte ;-)
jens schrieb:> Pandur S. schrieb:>> Der Standard fuer C waere eigentlich : Kernigham & Ritchie>> Auch C entwickelt sich weiter? Ist dann noch ein Buch von 1970> empfehlenswert?
Nein, natürlich nicht. Abgesehen davon, daß die erste Ausgabe erst 1978
erschien, wurde die auch nicht empfohlen.
Und wie schon gesagt wurde, ist die Frage die falsche. Wenn es darum
geht, modernes Programmieren zu lernen, lernt man gar kein C, wenn es
(danach) darum geht, C zu lernen, gehen die Grundlagen auch mit dem K&R.
Oliver
klammern schrieb:> Stellt euch vor,...
Nanana, die Naturgesetze gab es schon seit ewig, bloß die Leute hatten
die noch nicht gekannt. Das ist der prinzipielle Unterschied zwischen
Naturwissenschaften und Ingenieurswissenschaften.
Aber Programmiersprachen sind kein Teil der Ingenieurswissenschaften.
Und schon gar nicht haben sie etwas mit Naturwissenschaften zu tun.
K&R steht für das C, was vor ANSI-C war. K&R sollte inzwischen gründlich
in der Versenkung verschwunden sein.
W.S.
W.S. schrieb:> Aber Programmiersprachen sind kein Teil der Ingenieurswissenschaften.> Und schon gar nicht haben sie etwas mit Naturwissenschaften zu tun.>
Was aber nichts daran ändert, das C sich bewährt hat.
Die Sprache ist einfach zu lernen, und die Tools und Bibliotheken sind
sehr stabil.
> K&R steht für das C, was vor ANSI-C war. K&R sollte inzwischen gründlich> in der Versenkung verschwunden sein.
Und warum?
Das wichtige am Ansi Standard 1990 ist eigentlich nur, das C ab da
ein offizieller Standard ist.
Inhaltlich hat sich nicht viel geändert, vor allem nichts was Compiler
nicht schon Jahre zuvor unterstützt hatten.
Die neuere K&R Edition richtet sich übrigens am Ansi Standard aus.
Das sind gerade mal 200 Seiten die keine Fragen offenlassen.
Im Vergleich dazu hat das 2013 Stroustrup Standard C++ Buch 1300 Seiten,
und es bleiben nachher sehr viele Fragen offen.
Eigentlich müsste man am Ende gleich wieder von vorne zu lesen anfangen.
Alleine die eigentlich triviale Frage, wie man ein Objekt
richtig kopiert, füllt viele Internetseiten...
udok schrieb:> Die neuere K&R Edition richtet sich übrigens am Ansi Standard aus.> Das sind gerade mal 200 Seiten die keine Fragen offenlassen.
Ich bin auch der Meinung, dass es sich lohnt, den K&R 2ed zu lesen. Aber
der lässt schon noch viele Fragen offen. Selbst der Standard mit ~700
Seiten lässt Fragn offen.
Apollo M. schrieb:> "C Programming - A Modern Approach", K. KingMombert H. schrieb:> Ich bin auch der Meinung, dass es sich lohnt, den K&R 2ed zu lesen.
"C Programming - A Modern Approach", K. King ist eher das bessere buch,
umfangreicher und mit vielen beispielen sowie c99 standard mit
abgedeckt.
Apollo M. schrieb:> Mombert H. schrieb:>> Ich bin auch der Meinung, dass es sich lohnt, den K&R 2ed zu lesen.>> "C Programming - A Modern Approach", K. King ist eher das bessere buch,> umfangreicher und mit vielen beispielen sowie c99 standard mit> abgedeckt.
Manchmal ist umgangreicher nicht besser, Mehr als 800 Seiten finde ich
für ein C-Buch schon etwas viel. Mit 200 Seiten mehr ist man schon beim
"Der C++ Programmierer" ;-)