Frage von xMasterChiief, 63

All In One Buch für Informatik?

Ich habe vor ein paar Tagen schon einmal dieselbe Frage gestellt, allerdings für den Bereich Medizin.

Gibt es ein derartiges Buch für Informatik? Wo alle Programmiersprachen oder zumindest die wichtigsten erklärt sind und man diese lernen kann? Wo der Aufbau eines PCs drin ist und so weiter.

Danke im Voraus.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von sarahj, 30

so ein Buch vermisse ich auch.
Aber peterwolf hat Recht: es wäre ein Wälzer mit 10000Seiten...

Dann die Frage, wie tief es gehen sollte, denn Informatik ist nicht nur die Kenntnis einiger Programmiersprachen (tats. ist das ziemlich unwichtig), oder dem Aufbau von Rechnern (und auch da gibt es viele unterschiedliche Ansätze).
Wichtig ist auch der theoretische Unterbau (Mathematik, Berechenbarkeit, usw).

Ich könnte hier ein paar Klassiker empfehlen:

Theorie:
Knuth: The Art of Computer Programming (TAOCP)
.
(Band 1 online: http://e-x-a.org/stuff/books/knuth/Addison.Wesley.Donald.E.Knuth.The.Art.of.Comp...)
Knuth hat sich zur Aufgabe gemacht, genau das zu machen: alles was man wissen muss in einem Buch zu schreiben. Es wurde dann ein Lebenswerk, was noch nicht fertig ist... Ein mehrbändiges Werk, das jeder kennen sollte.
z.B. gibt es ein ganzes Buch, was sich nur mit Suchen und Sortieren beschäftigt!
Das Buch ist alt, da es sich aber mit grundlegenden Dingen beschäftigt ist es unabhängig von Programmiersprachen und zeitlos gültig
(tats. hat er eine eigene Assemblersprache erfunden, damit er nicht allzu spezifisch wird. Was es zuweilen ein bisschen schwer macht, den Code zu verstehen...). Sehr fundiert. Sehr theoretisch.

Algorithmen:
Abelson+Sussman: Structure and Interpretation of Computer Programs (SICP)
(online: http://deptinfo.unice.fr/~roy/sicp.pdf)

Das Standard Lehrbuch für Hacker (nicht Penetrators!).
Auch hier: nicht das Lehren einer bestimmten Programmiersprache, sondern von grundlegenden Konzepten, die unabhängig von Syntax sind. Daher verwenden sie eine Sprache die eigentlich so gut wie keine Syntax hat, nämlich Scheme.
Wer das Buch durchgekaut hat, versteht alle anderen Sprachen schneller und besser.

Hardware:
Patterson: Computer Architecture: a Quantitative Approach

(online: http://www.cpp.edu/~kding/materials/Computer%20Architecture%20A%20Quantitative%2...)

Das Standard Lehrbuch für Computer Hardware.
Wer wissen will, wie eine CPU funktioniert: hier steht es.
Wenn Du das verstanden hast, kannst Du Dir selber eine CPU bauen!

Noch ein paar persönliche Favoriten, um mal über den Tellerrand zu gucken:
Objekt Oriented Programmierung:
Goldberg, Robson: Smalltalk-80

(online: https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd...)

Java und C# sind ja nun mainstream Sprachen. Das ganze gab's aber schon 1980 in einer genialen Programmiersprache in Reinstform. Gegen die Ästhetik und Klarheit von Smalltalk sind heutige Programmiersprachen ein Abklatsch.
Wer Smalltalk verstanden hat, versteht auch moderne dynamische Sprachen wie Ruby, Python, Lua etc. viel besser. Und denkt sich: "man o man - wie läppisch sind doch Java und C# im Vergleich..."

Funktionales Programmieren:
Bird, Wadler: Introduction to Functional Programming

(http://usi-pl.github.io/lc/sp-2015/doc/Bird\_Wadler.%20Introduction%20to%20Funct...)

Was Smalltalk für OO ist Haskell für funktionales Programmieren.
Muss man ebenso durchgearbeitet haben, als Informatiker.

Und zum Schluss, ein bisschen Praxis:
Software Engineering
Brooks: The Mytical Man Month
(http://www.cs.cmu.edu/~15712/papers/mythicalmanmonth00fred.pdf)
Warum Software Projekte scheitern. Es geht also um Software Engineering, Projektverlauf, und soziale Aspekte.
Ein Klassiker, auch lesenswert für nicht-Informatiker.

Wenn Du die Bücher durch hast (nicht in der Reihenfolge - man durchaus mal hier mal diort ein bisschen lesen), hast Du eigentlich alle Grundlagen beisammen. Viel Spaß!

PS: zum Spielen:
Pharo Download
DrRacket Download

Kommentar von sarahj ,

PS: wenn Du diese Bücher nicht magst, ist Informatik nicht das richtige für Dich ;-D

Kommentar von sarahj ,

PPS: der Knuth link zeigt auf eine alte Ausgabe.
Besser ist die hier: http://www.mediafire.com/view/sb22la7szxob476/Vol.+1+FundamentalAlgorithm-Donald...

sorry.

Kommentar von xMasterChiief ,

Ich programmiere seit 6 Jahren und mache auch genug anderes am Rechner. Also das ist schon das richtige für mich :D Danke für deine Hilfe und diese ausführliche Antwort!

Kommentar von sarahj ,

wirst staunen - unerschöpfliche Quellen für Inspiration ;-D

Kommentar von xMasterChiief ,

Ausgezeichnet :D

Kommentar von sarahj ,

hier noch ein schönes Übersichtsbild:
https://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng108.pdf

man sollte aus jedem Zweig eine Sprache kennen, die das dortige Konzept in "Reinstform" bietet.

Aus meiner Sicht sind das:
Prolog (deklarativ, Logik), Scheme (dynamisch getypt, funktional), Haskell (static typed, lazy, funktional), Smalltalk (dynamisch getypt, stateful, OO, multi), Java/C# (statisch getypt, stateful, OO).

Sehr nteressant ist auch Oz/Mozart, welches als Lehrsprache multiparadigm ist.

Am Anfang würde ich die Finger lassen von C, C++, da man sich hier die meiste Zeit mit low-level Problemen herumschlagen muss (Speicherverwaltung), und so schwer zum Kern des Pudels vordringt.

Alternativ zu Smalltalk: Ruby oder Python (aber Smalltalk/Squeak/Pharo haben eine super IDE).

Kommentar von sarahj ,

danke für den *!
Hoffe es inspiriert ;-D

Kommentar von sarahj ,

noch ein später Nachtrag: die 5.Auflage von Computer Architecture ist leider m.E. schlechter als meine 1.Auflage im Schrank, da die Grundlagen fehlen. Vermutlich haben sie 2 Bücher daraus gemacht, weil im Lauf der Zeit der Stoff immer umfangreicher wurde.

Die wichtigen Grundlagen (Instruktionssatz, Zahlendarstellung, Arithmetic etc.) sind jetzt in "Computer Organisation & Design"

http://www.cse.hcmut.edu.vn/~vtphuong/KTMT/Slides/TextBookFull.pdf

zu finden.

Antwort
von Franz1957, 10

Eine Fundgrube, wo man "alle" Programmiersprachen im Vergleich zueinander anschauen kann, ist rosettacode.org. Hier die Links zu den Sprachen...

http://rosettacode.org/wiki/Category:Programming\_Languages


Kommentar von Franz1957 ,

...und hier die Links zu den Programmieraufgaben, an denen gezeigt wird, wie sie mit den verschiedenen Sprachen angegangen werden:

http://rosettacode.org/wiki/Category:Programming_Tasks

Antwort
von PeterWolf42, 29

Nein, so etwas kann es garnicht geben. Die Menge an Informationen ist viel groß dafür. Es gibt hunderte von Programmiersprachen, wobei jede ihre Daseinsberechtigung hat. Und gerade zum lernen solcher Sprachen sind Bücher eher weniger geeignet, da man Programmieren am Besten durch praktisches Ausprobieren lernt. 

Wenn du dich wirklich mit dem Thema auseinandersetzen willst, kann ich nur empfehlen, dich mit den Grundlagen vertraut zu machen.

Keine passende Antwort gefunden?

Fragen Sie die Community