Literatur Programmierkonzepte

minimike

Berufsrevolutionär
Hi

Ich bin seit Jahren im Bereich Operations zu Hause und fühle mich dort eigendlich sehr wohl. Da ich mich sehr für Cloudtechnologien interessiere und mich mittlerweile auch beruflich im Bereich DevOPS engagiere komme ich mittlerweile an meine Grenzen. Ich bin in der Lage mit Puppet eine Produktionsumgebung oder ein ganzes Datacenter aufzusetzen. Ich kann sehr gut Bash und ein wenig Groovy. Auch komplexe Angelegenheiten von Jboss bis ELK Stack schrecken mich schon lange nicht mehr ab. Ich habe sogar Icinga2 ojektorientiert konfiguriert und in einer großen Umgebung ausgerollt. Früher wollte ich mal Java lernen aber ausser mit MVN was fertiges kompilieren und JAR's mit Klassen zusammenklauben, ab und zu noch Verstehen was im Code gerade drin steht kam es nie darüber hinaus. Ich interessiere mich aus beruflichen Gründen stark für Ruby wegen Chef und Puppet. Infrastructure as Code wird imho Erfolg haben und am Ende dominieren. Ich möchte mit dabei sein. Nebenher aber auch für GO , OjectiveC und Python. Aber bevor ich jetzt wieder anfange mir Bücher über die Programmiersprache X zu holen die Ich beginne zu Lesen aber dann doch nicht verstehe wollte ich es diesmal richtig machen und erst einmal das Programmieren und die Konzepte dahinter an sich erlernen. Welche Literatur wäre zu Empfehlen?
 
Ich würde vorschlagen mal nach "Design Patterns" zu suchen. Der Klassiker von GO4 ist vielleicht nicht mehr ganz up to date und da gibt es wohl eine Menge neueres, aber sicherlich noch brauchbar. Allerdings bezieht sich das alles auf OOP im Sinne von C++/ Java etc. In anderen Sprachen ( Lisp, Erlang etc) wird dann ganz anders vorgegangen, - meist bottom-up. Also grundlegende Kennisse in 3-4 praradigmatische Sprachen wären nicht schlecht. OOP ist nicht das Ende aller Weisheit .;)
 
Ich bin ein Freund des Top-Down-Ansatzes, also auf einer möglichst hohen Abstraktionsebene anzufangen und sich dann schrittweise nach unten in Richtung Assembler hinabzuarbeiten. Es fällt mir einfacher Dinge wegzulassen, als gerade erarbeitete Denkweisen wieder über den Haufen zu werfen. Ich halt daher Objects first with Java noch immer für eines der besten Bücher zur Softwareentwicklung, gerade wenn man autodidaktisch arbeitet. Es nutzt Java als Grundlage, legt den Schwerpunkt aber das Vermitteln von Konzepten und geht auch auf zwar wichtige, in reinen sprachfokusierten Büchern aber unterrepräsentierte Themen ausführlich ein. Der Klassiker ist dort Polymorphie. Andere Themen wir GUI-Entwicklung werden zumindest angeschnitten, man sollte dort aber auf eigene Bücher mit entsprechendem Schwerpunkt zurückgreifen.
 
Ich habe einen etwas anderen Ansatz als Yamagi aber keine Literaturempfehlungen. Da hatte ich etwas länger ausgeholt und mich dann dagegen entschieden das zu posten, weil mir das nicht hilfreich erschien.

Es gibt hier 3 Ebenen zu betrachten. Die Programmierparadigmen, Patterns und Entwicklungsansätze.

Dazu könnte man auch noch den Entwicklungsprozess zählen aber das wird IMHO überschätzt. Es ist meist offensichtlich was schief läuft und sich ein Korsett anzulegen hilft nicht beim Probleme lösen.

Ich habe paar Empfehlungen zu Paradigmen.

Funktional (Lambdas, Closures):
Dieses schicke Tutorial (in JavaScript, man kann also direkt in der Browserkonsole lostippen) zeigt die Mächtigkeit von Lambdas:
http://stevelosh.com/blog/2013/03/list-out-of-lambda/

Objektorientierung:
Unter dem Überbegriff sind eine Menge Konzepte zusammengefasst, die man unabhängig voneinander verstehen sollte um in der Lage zu sein die Richtigen anzuwenden. Polymorphismus, Vererbung (Hierarchien), Seperation of Concerns, Messaging …
OO Empfehlungen gibt es hier viele, da brauche ich nichts nach zu liefern. Denk beim Lesen einfach daran das Polymorphismus nicht Vererbung heißt. In Java besteht ein Zwang das über Vererbung zu machen. In python gibt es dynamischen Polymorphismus, der nicht auf Vererbung angewiesen ist.

In C++ kann man Polymorphismus über Vererbungen machen (Stichwort virtual) aber auch statisch über Generic Programming (Templates).

Da wären wir dann auch beim letzten Konzept, das wohl hauptsächlich C++ betrifft, Generic Programming. Der Text erklärt das im historischen Kontext, so ab Seite 18 geht es ins Eingemachte:
http://www.stroustrup.com/hopl-almost-final.pdf

Zu guter letzt lohnt es sich immer die C++11 FAQ zu lesen. Auch wenn man eine andere Sprache wählt halte ich das für lehrreich:
http://stroustrup.com/C++11FAQ.html

Edit: s/Cosures/Closures/
 
Zuletzt bearbeitet:
Zurück
Oben