Vom Problem zum Programm

Sorry aber mit dem Buch kannst du C++ nicht lernen. Ich sag das nicht von irgendwoher sondern ich habe das Buch vor 3-4 Jahren mal durchgearbeitet. Zudem ist es leider auch als Visual C++ Buch recht schlecht.
Hier ist es auch als kostenloses Ebook:
http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/start.htm

Visual C++ in 21 Tagen geht eher auf die MFC ein. Und die MFC ist ziemlich
"Eigen" sprich Programmier untypisch. Ich würde sie fehldesignend nennen.

Du wirst mit dem Buch auf die Nase fallen weil es gar nicht auf die Sprache
C++ eingeht. Und eine IDE zu lernen ohne die Sprache zu können ist geradezu der
absolut falsche Weg. Wenn du die Sprache kannst, kommst du mit jeder IDE (dem Programm) innerhalb kürzester Zeit zurecht. Auch das erlernen der integrierten API wie
MFC und VCL (um nur 2 zu nennen) ist möglich. Ohne die Sprache zu kennen kann mann keine API lernen, das ist unmöglich.

Wie dir von Dario schon richtig geraten wurde, solltest du erst mit Standard C++ anfangen
und dann wenn du C++ kannst (ich sage nicht beherrscht) dir eine bestimmte API anlernen.

Und ob hier MFC (die Visual C++ GUI API) die richtige ist waage ich zu bezweifeln. MFC wird früher oder später komplett durch das .net Framework auf Windows abgelost.
Die VCL (Borland) ist sauberer Designend und auch QT bietet dir alles was dir die MFC bietet, nur auch portabel.

Also wenn C++ dann lerne VCL oder Qt. Wenn du .net API lernen willst dann ist C# eine "passendere" Sprache.

*follgenden Satz muss ich sagen* :)
Aber alles ist nichts gegenüber dem sauberen Design und der vielseitigkeit von Java :)
 
Danke für deine Antwort Christian, dann hab ich wohl wieder das falsche Buch erwischt :-(.

Jo, das man es kostenlos bekommt wusste ich!Hab es allerdings für 1 Euro bekommen, und da es bequemer ist es als Printmedium zu lesen und auch biliger ist als über 800 Seiten ausdrucken dachte ich das es kein schlechter kauf sei.

Deine Erklärung klingt natürlich logisch, kannst du mir denn ein Buch empfehlen was mich zum Ziel bringt?
Ich lese (gerne) trockene Bücher solange sie auch verständlich sind.
Ich bin kein richtiger Programmierer, würde aber behaupten das ich kein blutiger Anfänger bin.

Ich hab jetzt warscheinlich jeden "welches ist die beste Sprache" Thread durchgelesen und bin zu dem Entschluss gekommen das c oder c++ meine Favoriten sind.
Da ich bereits eine vollständige Entwicklungsplattform (Visual C++) besitze wollte ich c++ beginnen, da ich früher oder später nicht drum herum kommen werde/will.

Also wenn Du oder jemand anderes mir ein gutes Buch empfehlen kann bitte posten. Aber auf der Ebene von c/c++ bin ich blutiger Anfänger.


Edit:

So, hab mir jetzt mal die letzten 2 Werke aus der Linkliste des C++ Forums gezogen und hoffe damit erstmal anfangen zu können.

Suche aber immernoch nach guter Literatur zum einsteigen :)
 
Zuletzt bearbeitet:
Ich hab jetzt von Adre Willms ein gutes Buch über C! Ich hab mich mal im C++ Forum schlau gemacht und mir dort Skripte zum C++ Einstieg runtergeladen.Dort wurde zum Beginnen von c++ des öfteren empfohlen erstmal fundierte Kentnisse
in C zu sammeln.
Bin bereits voll dabei das Buch "C-Programmierung lernen . Anfangen, anwenden, verstehen " von Andre Willms zu lesen welches zum Einstieg in C oft empfohlen wird und finde es bis jetzt doch sehr gut und meist leicht verständlich.
Sein "Werk" über C++ soll auch sehr gut sein, was ich mir auch schon als nächstes Ziel gesetzt habe.Allerdings möchte ich erstmal fundierte C Kentnisse bekommen da C++ doch noch ein ganzes Stück anspruchsvoller sein soll.

P.S. Die Bücher von MUT sind meistens(!) Schund, besonders diese XXX in 21 Tagen.
 
Zuletzt bearbeitet:
Original geschrieben von JoKne
Ich hab jetzt von Adre Willms ein gutes Buch über C! Ich hab mich mal im C++ Forum schlau gemacht und mir dort Skripte zum C++ Einstieg runtergeladen.Dort wurde zum Beginnen von c++ des öfteren empfohlen erstmal fundierte Kentnisse
in C zu sammeln.
Bin bereits voll dabei das Buch "C-Programmierung lernen . Anfangen, anwenden, verstehen " von Andre Willms zu lesen welches zum Einstieg in C oft empfohlen wird und finde es bis jetzt doch sehr gut und meist leicht verständlich.
Sein "Werk" über C++ soll auch sehr gut sein, was ich mir auch schon als nächstes Ziel gesetzt habe.Allerdings möchte ich erstmal fundierte C Kentnisse bekommen da C++ doch noch ein ganzes Stück anspruchsvoller sein soll.

P.S. Die Bücher von MUT sind meistens(!) Schund, besonders diese XXX in 21 Tagen.

Richtig! Diese xxx in 21 Tagen Bücher erklären rein gar nichts!
Aber die Kompendien oder Jetzt lerne ich Bücher find ich ganz gut.
 
Schön das du Programmieren lernen willst - aber ich denke man sollte mit einer Sprache anfangen, bei der man nicht auf so viel achten muss (Pointer(arithmethik), Speicherverwaltung ...) und die einem schon viele Aufgaben abnimmt (damit man sich nicht mit allem Kleinkram beschäftigen muss) und einem so Raum für Design und Konzepte (z.B. Objektorientierte(s) Design, Analyse) läßt. Auch ist es schön wenn einem eine einfache GUI Bibliothek zur Ausgabe der Ergebnisse zur Verfügung steht.

Ich würde daher eher JAVA und Smalltalk (falls OO) oder so vorschlagen. Wenn man dann mit den grundlegenden Dingen keine Probleme mehr hat kann man ja immer noch C++/C/Assembler lernen - ich würde es sogar sehr empfehlen.

Tobias
 
Aber ich denke man sollte mit einer Sprache anfangen, bei der man nicht auf so viel achten muss (Pointer(arithmethik), Speicherverwaltung ...) und die einem schon viele Aufgaben abnimmt (damit man sich nicht mit allem Kleinkram beschäftigen muss) und einem so Raum für Design und Konzepte (z.B. Objektorientierte(s) Design, Analyse) läßt.
Das ist exakt der falsche Ansatz. Er ist sogar fatal. Es gibt den schönen Ausspruch, BASIC habe viele potenziell geniale Programmierer korrumpiert und auf ewig für die Praxis untauglich gemacht. Wenn ich sehe, wie an Unis die Studenten mit Java und Konsorten ihren Einstieg in die Programmierung machen, sehe ich schwarz für deren weitere Entwicklung -- es sei denn, es handelt sich um außergewöhnlich begabte Naturen, und die sind leider selten.

Ich beobachte in der Szene an vielen, vielen Beispielen, dass Leute mit Sprachen wie QB oder Java herumhantieren und dabei keine Ahnung davon haben und auch nicht entwickeln, was die Maschine eigentlich tut und wie ihr Programm funktioniert. Die Sprache verbirgt all diese Mechanismen. Dadurch entsteht weder Verständnis für OOP, noch für Design, noch für Problemanalyse. Diese "Programmierer" bleiben oft in diesem Loch stecken und kommen da nicht heraus.

Wer mit Assember beginnt, hat die besten Voraussetzungen für die Praxis. C wird ihm keine Schwierigkeiten bereiten. Wer mit BASIC beginnt, hält C oft für furchtbar schwierig. C ist aber nicht schwierig, C ist sogar sehr einfach. FORTH ist schwieriger zu lernen, und wer FORTH kennt, weiß, wovon ich rede. C ist Kindergarten gegen eine solche Sprache.
Wenn man dann mit den grundlegenden Dingen keine Probleme mehr hat kann man ja immer noch C++/C/Assembler lernen - ich würde es sogar sehr empfehlen.
Das ist genau verkehrtherum. Die grundlegenden Dinge sind doch nicht objektorientierte Programmierung und Anwendungsdesign! Das ist nur was für Leute, die wissen, was sie tun. Anfänger scheitern an diesen Anforderungen bereits im Ansatz -- was übrigens in den Foren hier jeden Tag aufs Neue zu beobachten ist. Der Anfänger muss mit den Grundlagen der Maschine beginnen. Er muss also wissen, was die CPU tut, was der Program Counter tut, wie der Speicher adressiert wird, was auf Maschinenebene effizient ist und was nicht, was der Unterschied zwischen Division durch 2 und einem Rechtsshift ist. Nachdem er all diese Basics wirklich gründlich verstanden hat, kann er daran gehen, sich mit höheren Themen wie OOP zu beschäftigen.

Ich denke, die ganzen BASIC-Hobbyprogrammierer, die auf unterstem Niveau herumkrebsen und C als Sprache für Masterminds of the highest order betrachten, belegen meine Ansicht. BASIC ist keineswegs einfacher als C -- oder kann hier jemand eine Fourier-Transformation in BASIC einfacher programmieren als in C? Ich wage es zu bezweifeln. BASIC verbirgt nur all diejenigen Dinge vor dem Programmierer, die er wissen müsste, um die Maschine zu verstehen. C setzt dieses Verständnis für die Maschine ganz generell voraus. Nicht C ist das Problem, sondern dies: mangelndes Wissen über Computer, entstanden durch das Lernen mit Java, BASIC oder anderen Ultra-High-Level-Sprachen.

Gawayn
 
Zuletzt bearbeitet:
Hallo,

Aber ich denke man sollte mit einer Sprache anfangen, bei der man nicht auf so viel achten muss (Pointer(arithmethik), Speicherverwaltung ...) und die einem schon viele Aufgaben abnimmt (damit man sich nicht mit allem Kleinkram beschäftigen muss) und einem so Raum für Design und Konzepte (z.B. Objektorientierte(s) Design, Analyse) läßt.

Unterschreib! Low-level Zeugs sollte man IMHO erst NACH den Anfängen anfassen, da dies am Anfang nur verwirrt und die Lernkurve abflachen lässt bzw. als Motivationshemmer wirkt.

Das ist exakt der falsche Ansatz. Er ist sogar fatal. Es gibt den schönen Ausspruch, BASIC habe viele potenziell geniale Programmierer korrumpiert und auf ewig für die Praxis untauglich gemacht.
C kann das auch … kannst Du Dir vorstellen wie viele Schulungen der average C Programmierer braucht um Java zu können?...

Wenn ich sehe, wie an Unis die Studenten mit Java und Konsorten ihren Einstieg in die Programmierung machen, sehe ich schwarz für deren weitere Entwicklung -- es sei denn, es handelt sich um außergewöhnlich begabte Naturen, und die sind leider selten.

Jeder hat irgendwann mal angefangen und Informatik zu studieren heißt nun mal nicht automatisch nur Programmieren. Dort lernt man eben die Basic’s und nicht Hardcore Programming. Leute die sich dafür interessieren lernen die Dinge „unter der Haube“ auch mit der Zeit kennen.

Ich beobachte in der Szene an vielen, vielen Beispielen, dass Leute mit Sprachen wie QB oder Java herumhantieren und dabei ABSOLUT keine Ahnung davon haben und auch nicht entwickeln, was die Maschine eigentlich tut und wie ihr Programm funktioniert.

Das ist doch gerade der Vorteil dieser Sprachen, dass der Entwickler sich nicht mehr in de „Schei ße“ wühlen muss und sich auf seine eigentlichen Aufgaben (Design und fachliche Logik) konzentrieren kann.

Die Sprache verbirgt all diese Mechanismen. Dadurch entsteht weder Verständnis für OOP, noch für Design, noch für Problemanalyse. Diese "Programmierer" bleiben oft in diesem Loch stecken und kommen da nicht heraus.

Das denke ich nicht, da OOP Abstraktion bedeutet auch Abstraktion von Hardwaredetails. Dadurch hat man eben wie schon oft gesagt mehr Zeit für’s wesentliche (Design etc. ) ich sehe nicht, was mich dann davon abhält ein gutes Design unter Java hinzubekommen wenn ich nicht jedes Implementierungsdetail der JVM kenne …?

Wer mit Assember beginnt, hat die besten Voraussetzungen für die Praxis.

Wenn man Prozessoren programmieren will bzw. irgendwelche Hardwarelastigen Themen wie Embedded Systems angeht ansonsten ist dieses Wissen nicht erforderlich oder hast Du schon mal in der letzten Zeit eine Stellenanzeige für einen ganz normalen Softwareentwickler gesehen in der Asm Kenntnisse verlangt wurden (Abgesehen vom Embedded Bereich) …

C wird ihm absolut keine Schwierigkeiten bereiten. Wer mit BASIC beginnt, hält C oft für furchtbar schwierig. C ist aber nicht schwierig, C ist sogar sehr einfach. FORTH ist schwieriger zu lernen, und wer FORTH kennt, weiß, wovon ich rede. C ist Kindergarten gegen eine solche Sprache.
Wenn man dann mit den grundlegenden Dingen keine Probleme mehr hat kann man ja immer noch C++/C/Assembler lernen - ich würde es sogar sehr empfehlen.

Das ist genau verkehrtherum. Die grundlegenden Dinge sind doch nicht objektorientierte Programmierung und Anwendungsdesign!

Schon mal ne Software engineering Vorlesung besucht?

Das ist nur was für Leute, die absolut wissen, was sie tun. Anfänger scheitern an diesen Anforderungen bereits im Ansatz -- was übrigens in den Foren hier jeden Tag aufs Neue zu beobachten ist. Der Anfänger muss mit den Grundlagen der Maschine beginnen. Er muss also wissen, was die CPU tut, was der Program Counter tut, wie der Speicher adressiert wird, was auf Maschinenebene effizient ist und was nicht, was der Unterschied zwischen Division durch 2 und einem Rechtsshift ist. Nachdem er all diese Basics wirklich gründlich verstanden hat, kann er daran gehen, sich mit höheren Themen wie OOP zu beschäftigen.

In Objektorientierten System ist solches Wissen so gut wie gar nicht mehr erforderlich … des weiteren würde ich OOP eher als „Standard Thema“ und Hardware nahe Entwicklung eher als Spezialthema sehen.

Ich denke, die ganzen BASIC-Hobbyprogrammierer, die auf unterstem Niveau herumkrebsen und C als Sprache für Masterminds of the highest order betrachten, belegen meine Ansicht. BASIC ist keineswegs einfacher als C -- oder kann hier jemand eine Fourier-Transformation in BASIC einfacher programmieren als in C? Ich wage es zu bezweifeln.

Man kann das sowohl in der einen Sprache als auch in der anderen Sprache sowohl unidentifizierbar als auch „halbwegs“ gut leserlich gestallten… wobei man dort eher mit dem Problem zu kämpfen hat FFT zu verstehen …

BASIC verbirgt nur all diejenigen Dinge vor dem Programmierer, die er wissen müsste, um die Maschine zu verstehen. C setzt dieses Verständnis für die Maschine ganz generell voraus. Nicht C ist das Problem, sondern dies: mangelndes Wissen über Computer, entstanden durch das Lernen mit Java, BASIC oder anderen Ultra-High-Level-Sprachen.

Gawayn



Gruß Tom
 
Zuletzt bearbeitet:
kannst Du Dir vorstellen wie viele Schulungen der average C Programmierer braucht um Java zu können?
Nein, da habe ich keine Ahnung. Aber wer viele Schulungen für sowas braucht ... na ja, ich weiß nicht, ob der den richtigen Job gefunden hat.
Jeder hat irgendwann mal angefangen und Informatik zu studieren heißt nun mal nicht automatisch nur Programmieren.
In der Tat. Aber darum geht es ja nicht, denn alle schöne informatische Theorie nützt gar nichts, wenn es niemanden gibt, der in der Lage ist, das ganze auch effizient zu implementieren. Das beklagen doch auch die Firmen: Informatikabsolventen haben schlicht keine Ahnung von Computern. Statt dessen werden sie vollgestopft mit mathematischen Theorien, die für die Praxis entweder viel zu speziell oder viel zu allgemein sind -- je nachdem.
Das denke ich nicht, da OOP Abstraktion bedeutet auch Abstraktion von Hardwaredetails. Dadurch hat man eben wie schon oft gesagt mehr Zeit für’s wesentliche (Design etc. )
Was für ein Design denn? Die Anwendung selber wird sowieso auf dem Reißbrett entworfen, dafür brauche ich keine Programmiersprache. Die ist lediglich für die Implementation gut. Ich lerne den Entwurf von Anwendungen nicht deswegen besser oder ich entwerfe meine Anwendungen nicht besser, weil meine Sprache keine Pointer verwendet (wie z.B. Java). Das Gegenteil ist der Fall, denn ich setze mich so über wichtige Hardwareeigenschaften hinweg. In der OOP kann jemand, der keine Ahnung von Hardware hat, schlimme Dinge tun, die nicht auffallen, weil sie immer noch OOP-konform sind.
Wenn man Prozessoren programmieren will bzw. irgendwelche Hardwarelastigen Themen wie Embedded Systems angeht ansonsten ist dieses Wissen nicht erforderlich oder hast Du schon mal in der letzten Zeit eine Stellenanzeige für einen ganz normalen Softwareentwickler gesehen in der Asm Kenntnisse verlangt wurden (Abgesehen vom Embedded Bereich) …
Darum geht es ja nicht. Man soll nicht Assembler lernen, um damit zu programmieren, sondern um zu erfahren, wie ein Computer funktioniert. Genausowenig soll man C lernen, weil das "die beste Sprache" sei oder so. Die ganzen Diskussionen um die beste Programmiersprache sind unsinnig, weil der fähige Informatiker nicht danach fragt, welche Sprache er für einen Job können muss, sondern welchen Job er zu erledigen hat. Java ist eine wunderbare Sache -- aber nur, wenn man weiß, wie sie funktioniert. Sonst werden die nachfolgenden Kollegen u.U. die Hände über dem Kopf zusammenschlagen ob des Schundes, den man da verzapft hat. Dass dieser Schund objektorientiert ist, macht ihn nicht besser.

Und warum das alles? Wem dieses Grundwissen fehlt, das man über Assembler etc. erlangt, der hat Probleme, sich schnell in neue Technologien einzuarbeiten. Und das ist Voraussetzung, um in der IT-Branche mithalten zu können.
In Objektorientierten System ist solches Wissen so gut wie gar nicht mehr erforderlich … des weiteren würde ich OOP eher als „Standard Thema“ und Hardware nahe Entwicklung eher als Spezialthema sehen.
In der OOP brauche ich ebensoviel Wissen über die Hardware wie sonst auch. Sonst bin ich nicht in der Lage, einen Algorithmus effizient zu entwerfen und zu implementieren. Mathematisch elegante Theorien lassen sich noch lange nicht deswegen auf einem Mikroprozessor effizient implementieren, weil sie elegant sind. Man muss wissen, wie die Hardware funktioniert, um seine Algorithmen effizient entwerfen zu können. Und das ist auch -- oder vielleicht sogar gerade -- in der OOP ein wichtiges Thema, weil die OOP-Prinzipien so manche Performancebremse in die Entwicklung eingeführt haben.

Gawayn
 
Zuletzt bearbeitet:
Gawayn hat gesagt.:
Das ist exakt der falsche Ansatz. Er ist sogar fatal. Es gibt den schönen Ausspruch, BASIC habe viele potenziell geniale Programmierer korrumpiert und auf ewig für die Praxis untauglich gemacht. Wenn ich sehe, wie an Unis die Studenten mit Java und Konsorten ihren Einstieg in die Programmierung machen, sehe ich schwarz für deren weitere Entwicklung -- es sei denn, es handelt sich um außergewöhnlich begabte Naturen, und die sind leider selten.

Ich beobachte in der Szene an vielen, vielen Beispielen, dass Leute mit Sprachen wie QB oder Java herumhantieren und dabei keine Ahnung davon haben und auch nicht entwickeln, was die Maschine eigentlich tut und wie ihr Programm funktioniert. Die Sprache verbirgt all diese Mechanismen. Dadurch entsteht weder Verständnis für OOP, noch für Design, noch für Problemanalyse. Diese "Programmierer" bleiben oft in diesem Loch stecken und kommen da nicht heraus.

Du wirst jawohl nicht Java mit QB in einen Satz nennen. Kennst du überhaupt Java?
Java ist extrem anspruchsvoll und ist jene Sprache die konzepte moderner Programmiersprachen
am konsquentesten umsetzt.
C++ ist eine alte Sprache die einer anderen Motivation nachgeht, aber es ist garantiert nicht
die Sprache die einem die sauberste Programmierung beibringt.

Gawayn hat gesagt.:
Wer mit Assember beginnt, hat die besten Voraussetzungen für die Praxis. C wird ihm keine Schwierigkeiten bereiten. Wer mit BASIC beginnt, hält C oft für furchtbar schwierig. C ist aber nicht schwierig, C ist sogar sehr einfach. FORTH ist schwieriger zu lernen, und wer FORTH kennt, weiß, wovon ich rede. C ist Kindergarten gegen eine solche Sprache.

Jau gibs mir härter, nur die harten kommen in den garten, habe dennoch schon lange nicht
mehr soviel Mist in 2 Sätzen gehört.

Gawayn hat gesagt.:
Das ist genau verkehrtherum. Die grundlegenden Dinge sind doch nicht objektorientierte Programmierung und Anwendungsdesign! Das ist nur was für Leute, die wissen, was sie tun. Anfänger scheitern an diesen Anforderungen bereits im Ansatz -- was übrigens in den Foren hier jeden Tag aufs Neue zu beobachten ist. Der Anfänger muss mit den Grundlagen der Maschine beginnen. Er muss also wissen, was die CPU tut, was der Program Counter tut, wie der Speicher adressiert wird, was auf Maschinenebene effizient ist und was nicht, was der Unterschied zwischen Division durch 2 und einem Rechtsshift ist. Nachdem er all diese Basics wirklich gründlich verstanden hat, kann er daran gehen, sich mit höheren Themen wie OOP zu beschäftigen.

Es gibt ganz direkte Abstraktionsschemen. Ich stimme mit dir überein das diese Kenntnis von
Vorteil ist, aber schon lange keine Vorraussetzung.
Auch gerade in der Programmierung gibt es eine Evolution. Durch abstraktionsschichten
kann sich der Programmierer auf Dinge konzentrieren die wirkliche Vorteile in diesem Beruf bringen. Der sinn höherer Programmiersprachen ist es eine Verbesserrung zu bringen, dem
Benutzer jener Programmiersprachen die möglichkeit zu geben, sich auf Dinge zu spezialisieren.
So gibt es eine Menge Wissensfelder die mittlerweile extreme Wichtigkeit besitzen und
derren Kentniss eindeutig zu besserer Software führt. So haben sich eben durch diese Abstraktionsschicht Dinge herausgestellt wie Modell Driven Architektur, TestFirst Paradigma...
Es ist absolut unnötig heutzutage Assembler zu lernen. Programmierer die ein interresse an
ihrem Beruf haben, wollen so oder so wissen was Register sind, wie seine Werte gespeichert
werden und ähnlichem. Um dies zu lernen ist es nicht nötig eine Programmiersprache zu lernen
die einem keinen beruflichen und praktischen Nutzen bringt.


Gawayn hat gesagt.:
Ich denke, die ganzen BASIC-Hobbyprogrammierer, die auf unterstem Niveau herumkrebsen und C als Sprache für Masterminds of the highest order betrachten, belegen meine Ansicht. BASIC ist keineswegs einfacher als C -- oder kann hier jemand eine Fourier-Transformation in BASIC einfacher programmieren als in C? Ich wage es zu bezweifeln. BASIC verbirgt nur all diejenigen Dinge vor dem Programmierer, die er wissen müsste, um die Maschine zu verstehen.

Du sprichst von einem Hobbyprogrammierer, weshalb sollte er wenn sein Hobby ihm Spass macht es aufgeben? Deine Logic erschliesst sich mir nicht.

Gawayn hat gesagt.:
C setzt dieses Verständnis für die Maschine ganz generell voraus. Nicht C ist das Problem, sondern dies: mangelndes Wissen über Computer, entstanden durch das Lernen mit Java, BASIC oder anderen Ultra-High-Level-Sprachen.
Gawayn

C hat einen sehr grossen Anteil an der Zeit die allgemein als Softwarekriese in die Geschichte eingegangen ist.
C ist eine veraltete Sprache die mit dafür verantwortlich ist das der meiste Code in den 90`er Jahren nicht weiter nutzbar ist.
Die Anforderrungen an Programmiersprachen sind so unterschiedlich weil die Anforderrungen an die Software exterm unterschiedlich ist.
Die böse Ultra-High-Level Sprache Java hat C / C++ den Rang im grossen Abgelaufen was Kommunikative Programmierung anbelangt, gründe sind sehr restriktive Sicherheit, und typsicherheit und damit verbundene Unanfälligkeit gegen Bufferoverflows.
So basieren 90% aller Produkte der Apache Group auf Java, und deren Web-Strategie geht eindeutig in richtung Java.
Microsoft setzt neuste Produkte auf .net auf, und nimmt Abstand von C / C++ wo es kostentechnisch machbar ist.
IBM setzt voll und ganz auf Java bei neuer Software, und auch Oracle geht den Weg und tauscht
schon eine ganze Weile sämmtliche Sicherheitsrelevante Software gegen Java.
C / C++ hält sich dort wo einerseits Hardwarenahe Programmierung von nöten ist (und dies ist schon lange bei den meisten Projekten nicht mehr nötig) und hält sich bei der Entwicklung von GUI Programmen (dank Javas Katastrophaler GUI Eigenschafften).
Aber auch im Bereich GUI Programmierung gibt es einen Umschwung auf .net. Was früher mit C++ / MFC & VCL bzw WinAPI umgesetzt wurde (auf Windows Seite) wird immer häufiger mit .net umgesetzt (Auf der (Windows GUI Schiene) ist .net im kommen das kann ich zugeben @ Norbert).
C++ wird auch weiterhin eine starke Programmiersprache mit hohem Marktanteil bleiben. C wird mehr und mehr austerben, und auch Stroustroup (wie viele andere) raten davon ab C zu lernen um C++ zu verstehen, was auch meine Meinung ist.
OOP ist nichts was mann nach hinten aufschieben sollte, da OOP grundlegend für moderne Programmiersprachen ist. Langjährige C Programmierer tun sich genauso schwer mit OOP, wenn nicht noch schwerer, als Anfänger.
Natürlich grausts mich wenn ich Anfänger in OOP sehen die irgendwas irgendwo in eine Klasse drängen nur das es wie OOP aussieht, aber ansonsten von Entwurfsmuster + OOA/OOD nichts gehört haben. Aber das gehört zu dem Status des Anfängers, mannche werden es nie lernen, bei anderen wird es irgendwann "klick" machen und verstehen wo der wirkliche Sinn von OOP liegt und damit ein Design erstellen können welches die Kunst der generischen Programmierung / polymorphes Design wunderbar zum Vorteil nutzt.
C & Assembler zu lernen ist aber für korrekte OOP nicht nur nicht notwendig, sondern zudem auch ein schlechter Rat.
 

Neue Beiträge

Zurück