Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

31

17.06.2009, 21:40

1. C/C++ ist allgegenwärtig
2. Maschinennahe Programmierung
3. All diese schönen Sachen muss auch jemand mal programmiert haben, oder?
4. Lerneffekt. Schadet auch nicht etwas mehr zu wissen.

Ob man das einem Einsteiger empfehlen kann oder nicht ist eine andere Sache.

32

17.06.2009, 22:28

Zitat

Original von patr1K

Sorry, aber Pointer sind ja wohl mal totaler Käse und wie Orca schon geschrieben hat, deswegen in der Form auch nicht mehr in z.B. Java vertreten. Warum sich also noch damit beschäftigen?


Zitat

Original von ZwerGOrca
Deswegen würde ich auch jedem Anfänger davon abraten sich heute noch mit C oder C++ zu beschäftigen.


Sondern? Java?
also ich hab nämlich kein peil was das is ;)
oder auch c++ ich weiß noch überhaupt nix.
außer das man mit c++ mods für Teeworlds programmieren kann
sprich das es statt fights halt in der gegend rumfliegen und löcher in die luft starren is ;)
deswegen wollt ich mir das anschaun, aber wenn das eh nix bringt? Oo

33

17.06.2009, 22:36

Zitat

Original von patr1K

Zitat

Original von AtroX_Worf
Das Konzept von Pointern zu verstehen finde ich wichtig genug, um deswegen C~ zu lernen.


Sorry, aber Pointer sind ja wohl mal totaler Käse und wie Orca schon geschrieben hat, deswegen in der Form auch nicht mehr in z.B. Java vertreten. Warum sich also noch damit beschäftigen?

Ohne Pointer kann ich eine bestimmte Effizienz nicht erreichen.
Außerdem geht es mehr um das Konzept der Pointer, nicht um die Pointer selbst - dafür gibt es Smart Pointer.

Ich finde es wichtig, maschinennahes Denken beim Programmieren mit zu lernen, d.h. es ist wichtig die Dualität zwischen (Speicher)Adresse und Variable zu erkennen.

In wieweit man dies auch in Java lernt, da bin ich überfragt. In C und C++ ist es aber integrabler Bestandteil, es ist gerade am anfang einer der wichtigsten Aspekte, den es zu lernen und zu verstehen gilt.

€dit: Es geht bei einem "maschinennahen" Denken auch darum, dass man als Programmierer die Möglichkeit hat, sich selbst über die Speicherbelegung Gedanken zu machen, wenn man dies denn wünscht. Also ist imho automatic garbage collection kein Argument gegen Pointer und für Java.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »AtroX_Worf« (17.06.2009, 22:42)


34

17.06.2009, 23:43

Zitat

Original von ZwerGOrca
Deswegen würde ich auch jedem Anfänger davon abraten sich heute noch mit C oder C++ zu beschäftigen.


Klingt so, als ob du denkst c/c++ ist am sterben... mit nichten.

http://www.tiobe.com/index.php/content/p…tpci/index.html

DRDK_Fragman

Fortgeschrittener

Beiträge: 526

Wohnort: Düsseldorf

Beruf: GER

  • Nachricht senden

35

18.06.2009, 00:19

Naja, ich bin auch Informatiker und kann Java und C++ - und nach reiflicher Überlegung würde ich in deinem konkreten Fall Java nehmen wenn dein Vorwissen bisher HTML ist. Die Lernkurve für Java ist flacher. Wenn du alles beherscht was Java so zu bieten hat (was sich etwas hinziehen wird), ist es nie zu spät C++ zu lernen. Dann wird man sich vielleicht anfangs etwas schwer tun mit Pointern, aber dann muss man auf sehr viele andere Dinge nicht mehr achten, weil man das aus schon Java kennt. Von daher hat mans dann leichter als wenn man sich als total Anfänger auf C++ stürzt.

Zur Anwendungsmöglichkeit sei gesagt: Es klingt nicht als würdest du in naher Zukunft Anwendungen schreiben die effizient sein müssen (schon garnicht solche in denen der "C++ ist maschinennah" Vorteil greift). Auch um Plattformunabhängigkeit kann man sich als Anfänger vielleicht erstmal drücken (wegen des System("PAUSE")).

Ich denke es geht hier erstmal darum, dass du ein paar angenehme Erfolgserlebnisse hast bevor du dir den Frust mit den Pointern gibst.

Und zur IDE: Unter dem selben Gesichtspunkt wie oben argumentiert ist es vielleicht am Anfang nicht verkehrt ein wenig Syntaxvervollständigung zu haben. So wirst du zwar erstmal kein Programm zusammenkriegen wenn dir die IDE mal fehlt, aber da es ja offenbar mehr um Hobby und Spaß geht wirst du ja auch selten gezwungensein in vim zu programmieren und in der bash zu kompilieren...

36

18.06.2009, 00:50

Zitat

Original von kOa_Borgg

Zitat

Original von ZwerGOrca
Deswegen würde ich auch jedem Anfänger davon abraten sich heute noch mit C oder C++ zu beschäftigen.


Klingt so, als ob du denkst c/c++ ist am sterben... mit nichten.

http://www.tiobe.com/index.php/content/p…tpci/index.html


Klingt so also ob du keine Ahnung von Statistik hättest.

C++ verliert von Monat zu Monat immer mehr an Marktanteil an C#


Sich heutzutage noch mit C++ zu beschäftigen ist zwar keine Zeitverschwenung doch im professionellen Bereich setzt sich immer mehr c# durch. Es ist nur noch ein Frage der Zeit( wenige Jahre) bis C++ und VB in der Bedeutungslosigkeit verschwunden sind. C# bietet die Möglichkeiten von c++ und die Flexibilität und Einfachheit von Java. Ansi C++ ist duch seine fehlende Speicherverwaltung einfach zu unsicher geworden und c++/cli ist für die breite Masse syntaxmäßig zu kompliziert um damit effektiv zu programmieren.

Auch wenn C#-Code heute noch langsamer als C++ ist würd ich jedem C++ Programmierer die Entwicklung in C# nahelegen wenn die Schnelligkeit kein essentielles Produktkriterium ist.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »GWC_Vegeta« (18.06.2009, 17:06)


37

18.06.2009, 01:15

Es stimmt zwar, dass C++ an C# verliert. Aber C# gehört zur selben Sprachfamilie wie C++ und außerdem würde ich absolut nicht unterschreiben, dass C++ in einigen Jahren verschwunden sein wird.

Wenn ich einen Tipp abgeben müsste, welche Programmiersprache es in 20 Jahren immer noch gibt, dann wäre es C++.

Die große aktuelle Schwachstelle von C++ ist, dass es nativ nicht gut auf Parallel Computing ausgelegt ist, Dies wird sicherlich in Zukunft immer wichtiger werden.
Aber der Hype um Java der 90er/Jahrtausendewende ist vorbei, Java hat sich stabilisiert. Genauso wie Jave nicht aussterben wird, wird es C bzw. C++ auch nicht, weil einfach zu viele Menschen diese Sprachen können.

Das Problem sind u.a. die Bibliotheken. In Java gibt es mittlerweile wohl sehr viele Bibliotheken, in C u.a. mit der GNU Scientific Library oder in C++ mit Boost auch sehr gute.

C# hat zu recht Marktanteile gewonnen, weil man mit ihr wirklich schnell Windows-Programme und nette GUIs programmieren kann. Bei den wissenschaftlichen Bibliotheken fehlt es aber noch, da wurde noch nciht alles gut portiert. Die Stärke dieser Programmiersprachen ist es sowieso, dass man für Algorithmen wieder auf C bzw. C++ zurückgreifen kann und diesen Code einfach in die andere Sprache einbettet.

C++/CLI ist sicher ein guter Ansatz, der aber noch ganz am Anfang steht und noch gar nicht richtig verwendet wird. Ansonsten kann mit C++/CLI jeder C++-Programmierer Anwendungen für MS .NET schreiben.

Ich finde sowieso, deine Sichtweise ist stark von MS .NET geprägt und ganz auf Microsoft ausgerichtet.

Ein Vorteil, wenn man C++ lernt ist eben der, dass es eine Multiparadigmensprache ist. Deswegen eignet es sich auch als erste Programmiersprache, weil man so besser verschiedene Programmierparadigmen parallel lernt. So ist die Gefahr geringer, dass man als erstes nur ein Programmierparadigma lernt und dann zeit seines Lebens diesem verhaftet bleibt.

Der Unterschied zwischen C und C++ ist ja weniger der Syntax als die Frage, wie man programmiert, d.h. prozedural oder objektorientiert. Zählt man C und C++ zusammen, dann ist die C-Familie immer noch dominierend und schlägt sogar Java + C# (bei beiden dürfte die Produktivität in etwa gleich groß sein).

Gerade bei der ersten Programmiersprache kommt es imho weniger darauf an die zu lernen, in der man am produktivsten in Sicht Problem/Zeit oder Code/Zeit ist, sondern in der man das meiste lernen kann. C++ ist der Kandidat dafür, von maschinennahen Programmieren über verschiedene Programmierparadigmen bis hin zu vielen verfügbaren Bibliotheken kann man extrem viel lernen.

Letzlich stimme ich aber überein, dass nicht zeit- bzw. performancekritische Apps für Win in Zukunft verstärkt mit C# programmiert werden.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »AtroX_Worf« (18.06.2009, 01:18)


38

18.06.2009, 09:45

Zitat

Original von GWC_Vegeta

Zitat

Original von kOa_Borgg

Zitat

Original von ZwerGOrca
Deswegen würde ich auch jedem Anfänger davon abraten sich heute noch mit C oder C++ zu beschäftigen.


Klingt so, als ob du denkst c/c++ ist am sterben... mit nichten.

http://www.tiobe.com/index.php/content/p…tpci/index.html


Klingt so also ob du keine Ahnung von Statistik hättest.

C++ verliert von Monat zu Monat immer mehr an Marktanteil an C#

Bitte suche den Optiker deines Vertrauens auf ?(.

C++ ist seit ca 4-5 Jahren stabil. C ist auch genau da, wo es mitte 2004 war. Bitte stelle jetzt einen Zusammenhang mit "monatlich mehr und mehr verlieren" her. Aber hier groß rum tönen "keine Ahnung von statistik". Du kannst nichmal ne linie auf ner Grafik ziehen... :stupid:

39

18.06.2009, 15:23

jo bevor das hier in großen Krieg zwischen Java und C++/C# endet (ich weiß nich ma was c# ist , c#= normales c? xD)
hab ich mich kurzer hand entschieden bei c++ zu bleiben.

da es das tutorial das ich eigentlich vorhatte zu benutzen nich mehr gibt, brauche ich nun ein neues. das hatte mir ein freund empfohlen und ich kenn mich halt nich aus ;)
weiß jemand ein gutes?
und bitte keine 1200 seiten englisch ;)

und was is ein Pointer? Oo
Danke =) :bounce:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Coold0wn« (18.06.2009, 15:24)


40

18.06.2009, 15:50

finde das hier ganz gut, da is alles drin was du brauchst für einen guten überblick.

zeiger bzw. pointer würd ich mir jetzt noch keine gedanken machen, das sind -naja sagen wir spezialvariablen - die auf andere variablen verweisen, is relativ schnell relativ komplex. in java gibts sowas gar nicht.

41

18.06.2009, 16:18

Dankö =)
ich schaus mir an ;)

42

18.06.2009, 16:32

Zitat

Original von SenF_Toddi
finde das hier ganz gut, da is alles drin was du brauchst für einen guten überblick.

zeiger bzw. pointer würd ich mir jetzt noch keine gedanken machen...

Kommt aber schon in Kapitel 3 vor Funktionen. ;)
Finde ich aber auch richtig, weil man zuerst verstehen muss, was im Computer vor sich geht, bevor man sinnvoll programmieren kann. Wenn man es gleich am Anfang lernt, findet man es natürlich.

43

18.06.2009, 17:11

Zitat

Original von kOa_Borgg
Bitte suche den Optiker deines Vertrauens auf ?(.

C++ ist seit ca 4-5 Jahren stabil. C ist auch genau da, wo es mitte 2004 war. Bitte stelle jetzt einen Zusammenhang mit "monatlich mehr und mehr verlieren" her. Aber hier groß rum tönen "keine Ahnung von statistik". Du kannst nichmal ne linie auf ner Grafik ziehen... :stupid:


Entschuldigung. Streiche Monate, setze Jahre. Der Trend ist doch dennoch Fakt.

44

18.06.2009, 17:38

Don't Cry Loud - Take it Proud =)
Den hab ich mir grad selbst überlegt hehe
is gut oder?

45

18.06.2009, 18:42

Zitat

Original von GWC_Vegeta

Entschuldigung. Streiche Monate, setze Jahre. Der Trend ist doch dennoch Fakt.


Ach nu komm. Wenn du danach gehts ist sogar Java auf nem Absteigenden Ast. Klar, die haben durch das Erscheinen von php und python mal nen knick bekommen. aber seit dem hält sich das sehr konstant. wie sich c# entwickelt wird sich zeigen. selbst wenn es sinkt... bis das im unwichtigen bereich ankommt wird es noch _sehr_ lange dauern, bei der jetzigen sinkrate.

46

18.06.2009, 20:30

Da die Diskussion sowieso im Gange ist und sich ja einige hier scheinbar etwas auskennen: Ich habe bis jetzt eher aus Bequemlichkeitsgründen Dev C++ benutzt, möchte aber umsteigen. Zur Auswahl habe ich Eclipse mit g++ und Microsoft Visual C++ (Vollversion, gibts bei uns an der Uni kostenlos). Ich studiere Mathematik, möchte als Nebenfach Informatik wählen und mich auch sonst weitergehend mit Programmierung beschäftigen.
Welche Entwicklungsumgebung würdet ihr da also empfehlen?

47

18.06.2009, 20:44

Werde ein Bouncer :bounce:
ne aber ich denke in Informatik hat man auch in zukunft gute möglichkeiten oder?
ich mein pc technologie wird immer wichtiger und so
oder lieg ich da komplett daneben ;)

48

18.06.2009, 20:57

Zitat

Original von plizzz
Da die Diskussion sowieso im Gange ist und sich ja einige hier scheinbar etwas auskennen: Ich habe bis jetzt eher aus Bequemlichkeitsgründen Dev C++ benutzt, möchte aber umsteigen. Zur Auswahl habe ich Eclipse mit g++ und Microsoft Visual C++ (Vollversion, gibts bei uns an der Uni kostenlos). Ich studiere Mathematik, möchte als Nebenfach Informatik wählen und mich auch sonst weitergehend mit Programmierung beschäftigen.
Welche Entwicklungsumgebung würdet ihr da also empfehlen?


Wenn du hauptsächlich Windows-Sachen programmierst, würde ich (persönliche Meinung) auf Visual Studio setzen, da der Debugger besser ist.
Prinzipiell ist aber gegen beide nichts einzuwenden.


Zitat

Original von Coold0wn
ne aber ich denke in Informatik hat man auch in zukunft gute möglichkeiten oder?
ich mein pc technologie wird immer wichtiger und so
oder lieg ich da komplett daneben ;)


Wenn du gut bist/wirst hast du immer gute Chancen (aber das ist wohl in nahezu jedem Bereich der Fall)

DRDK_Fragman

Fortgeschrittener

Beiträge: 526

Wohnort: Düsseldorf

Beruf: GER

  • Nachricht senden

49

18.06.2009, 21:00

@plizzz:
Ich habe bisher nur mit Eclipse un CDT gearbeitet und finde es ganz passabel. Schlechter als Eclipse für Java, aber das liegt an C++, nicht an der IDE. Eclipse hat für mich immer den Vorteil das ich da alle Sprachen nebeneinander benutzen kann, ich benutze es für Java, C++, Ruby, HTML/CSS und auch den auf Eclipse aufbauenden Flex Builder. Wenn du aber eh nur C++ benutzt ist Visual C++ vielleicht die bessere Wahl - da müssten sich mal andere zu äußern.


@Worf:
Ich kann ja verstehen das du meinst es ist nett zu wissen wie ds alles intern funktioniert. Aber so wie du es formulierst ("weil man zuerst verstehen muss, was im Computer vor sich geht, bevor man sinnvoll programmieren kann") ist das völliger schwachsinn, genau genommen kannst du Informatik betreiben ohne je in die Nähe eines Computers zu kommen und ohne näher zu spezifizieren wie der Computer arbeitet. Ich meine um Algorithmen zu verstehen und zu entwickeln ist es doch völlig egal wie der PC arbeitet (wenn man die Laufzeiten der Basisoperationen kennt). Auch würde ich behaupten das man ein erfülltes Leben als Anwendungsprogrammierer führen kann ohne je zu erfahren, was ein Pointer ist (wenn man in den entsprechenden Bereichen arbeitet). Die meisten Menschen können Auto fahren, und das geht (wenn es nicht wie bei mir ein Oldtimer ist) ganz gut auch wenn man nicht die geringste Ahnung hat wie ein Ottomotor funktioniert.

50

18.06.2009, 22:07

Zitat

Original von plizzz
Da die Diskussion sowieso im Gange ist und sich ja einige hier scheinbar etwas auskennen: Ich habe bis jetzt eher aus Bequemlichkeitsgründen Dev C++ benutzt, möchte aber umsteigen. Zur Auswahl habe ich Eclipse mit g++ und Microsoft Visual C++ (Vollversion, gibts bei uns an der Uni kostenlos). Ich studiere Mathematik, möchte als Nebenfach Informatik wählen und mich auch sonst weitergehend mit Programmierung beschäftigen.
Welche Entwicklungsumgebung würdet ihr da also empfehlen?


Unter Windows -> Visual Studio!
Eclipse fass ich nicht mehr an, jedanfalls nicht für c/c++. So wie man ein paar größere Libs in den Parser mit rein läd läuft der sich tot und die GUI wird ekelhaft hakelig. Das Intellisense ist ein graus. Zwar nur unter Linux beobachtet, aber ich wüßte nicht, warum das unter Windows besser gehen soll. Ich würde unter Windows eh nicht mit diesem g++ & mingw rum hampeln. Wozu so eine umständliche Krücke?

51

18.06.2009, 22:08

Eclipse an sich ist schon das bessere Programm, allerdings ist C++ da wirlich nicht ganz so gut (wie z. B. java) - deswegen ist Visual Studio da evtl. schon besser.

52

18.06.2009, 22:32

Zitat

Original von DRDK_Fragman
...genau genommen kannst du Informatik betreiben ohne je in die Nähe eines Computers zu kommen und ohne näher zu spezifizieren wie der Computer arbeitet.

Theoretische Informatik sicher, aber praktisches Programmieren?

Zitat

Original von DRDK_Fragman
Ich meine um Algorithmen zu verstehen und zu entwickeln ist es doch völlig egal wie der PC arbeitet (wenn man die Laufzeiten der Basisoperationen kennt).

Naja, ich bin Mathematiker. Was wir unter "Algorithmen entwickeln" verstehen, ist vielleicht noch einmal was anderes. Da geht es eben um Effizienz. Nicht hardcore, aber im großen und ganzen schon.

DRDK_Fragman

Fortgeschrittener

Beiträge: 526

Wohnort: Düsseldorf

Beruf: GER

  • Nachricht senden

53

19.06.2009, 01:14

Naja, das du für das Schreiben einer Matrixbibliothek nicht Java nehmen solltest ist jawohl klar. Nur kann man sehr viel sinnvoll abseits dieser Domäne programmieren - und für asymptotische Laufzeitanalyse brauchste keine Pointer kennen. Gut wenn du dann mit Lokalität oder konstanten Faktoren um die Ecke kommst macht das vielleicht nen Unterschied - aber das sind schon die Extremsituationen, das interessiert einen ja doch meistens (zumindest bei uns) nicht so sehr. Was macht ihr denn da so wo du dir Gedanken darüber machst wie die Sachen im Speicher liegen?

54

19.06.2009, 02:04

Höherdimensionale numerische Integration bzw. Sparse Grids.

In Bonn wird z.B. das hier gemacht: Sparse Grids, Numerical Quadrature in Finance

Es geht mir weniger darum, das man jetzt das absolute Optimum aus einem Programm rausholen muss, sondern dass man die Sprachelemente sinnvoll einsetzt.

Man muss sich immer dann Gedanken über den Speicher machen, wenn man große Datenmengen verwendet.

DRDK_Fragman

Fortgeschrittener

Beiträge: 526

Wohnort: Düsseldorf

Beruf: GER

  • Nachricht senden

55

19.06.2009, 09:36

Hehe, cool. Ich schreibe grade meine Bachelorarbeit und muss unter anderem Gleichungssysteme Ax=b lösen, wobei A eine positiv semidefinite, symmetrisch Pentadiagonalmatrix ist. Im Moment benutze ich nur ein von mir verbrochenes SOR, aber wenn sich gegen Ende herraustellt das ich zu langsam bin werde ich mich mal nach entsprechenden Sparse Matrix Libraries umschauen. Ich weiß nicht ob euer Sparse Grid das selbe macht, aber ich behalts mal im Hinterkopf.

56

19.06.2009, 14:18

Zitat

Original von DRDK_Fragman
Hehe, cool. Ich schreibe grade meine Bachelorarbeit und muss unter anderem Gleichungssysteme Ax=b lösen, wobei A eine positiv semidefinite, symmetrisch Pentadiagonalmatrix ist. Im Moment benutze ich nur ein von mir verbrochenes SOR, aber wenn sich gegen Ende herraustellt das ich zu langsam bin werde ich mich mal nach entsprechenden Sparse Matrix Libraries umschauen. Ich weiß nicht ob euer Sparse Grid das selbe macht, aber ich behalts mal im Hinterkopf.

Sparse Matrices benutzt man begrifflich eher, wenn es in der Matrix (weit) weniger als 10% von Null verschiedene Einträge gibt, aber man wenig bis gar nichts über die Struktur weiß.

Bandmatrizen sind ein anderes Thema, da würde man fast immer speziellere Verfahren drauf anwenden.

Wie kommst du denn auf so eien Bandmatrix? Differentialgleichung, und du schaust insgesamt 2 Schritte vor und zurück? Kann man die Matrix eventuell in Tridiagonalgestalt bringen?

btw, was studierst du?

DRDK_Fragman

Fortgeschrittener

Beiträge: 526

Wohnort: Düsseldorf

Beruf: GER

  • Nachricht senden

57

19.06.2009, 17:15

Ich studiere Informatik. Naja, es handelt ich um Matrizen die bei der Lösung der Euler-Lagrange Gleichungen von Funktionalen auftreten. Das Anwendungsgebiet ist das Berechnen sogenannter Optischer Flußfelder in Bildsequenzen.
Es handelt sich um Gleichungen mit vielen Unbekannten (eine pro Pixel in den Bilder der Sequenzen), also so in der Größenordnung von 16384 (128x128 Bilder) oder 65536 (256x256 Bilder). Das bedeutet Pentadiagonalmatrizen haben deutlich weniger als 10% nicht null Einträge.

Ich benutze derzeit für manche Sachen die newmat Bibliothek, aber die kann zwar Bandmatrizen, aber nur solche wo das Band in der Mitte verläuft. Meine haben aber die Struktur das in der Mitte 3 Diagonalen sind und und dann außen noch mal (auf der Hälfte der Seiten) (bin nicht sicher ob man die dann überhaupt Pentadiagonal nennt). Die Methoden die verwende sind mit Differentialgleichungen recht eng verwand.

Ich schreibe die Arbeit beim Lehrstuhl für Angewandte Mathematik. Die verwenden selbst Multigrid Verfahren die sie selbst in C implemtiert haben, aber da die nicht sonderlich modular sind ist es mir zu Blöd die von Hand so anzupassen das man sie einsetzen kann. Möglicherweise ist SOR in meinem Fall auch ausreichend, das konvergiert für den geringen Aufwand ja auch schon ganz gut. Aber wenn das nicht reicht werde ich mich nochmal nach geeigneten Bibliotheken umsehen.

58

19.06.2009, 17:53

Zitat

Gerade bei der ersten Programmiersprache kommt es imho weniger darauf an die zu lernen, in der man am produktivsten in Sicht Problem/Zeit oder Code/Zeit ist, sondern in der man das meiste lernen kann. C++ ist der Kandidat dafür, von maschinennahen Programmieren über verschiedene Programmierparadigmen bis hin zu vielen verfügbaren Bibliotheken kann man extrem viel lernen.


Genau das ist der Punkt. C++ ist nicht nur schlecht für Anfänger weil C# und Java wesentlich durchdachter sind, sondern eben genau auch deswegen weil C++ viel zu überfrachtet ist. Verschiedene Programmierparadigmen in einer Sprache zu lernen ist doch gerade furchtbar schlecht da insbesondere für einen Anfänger völlig der Überblick verloren geht welche Konzepte Teil von was sind.

Ausserdem sind solche Sachen wie Maschinennahe Programmierung einfach heute in vielen Anwendungsgebiten nicht mehr wichtig. Sodass vieles was man durch C++ lernt veraltet ist und man sich dafür lieber mit anderen Konzepten beschäftigen sollte.

Bei Java hat man genau das Gegenteil. Die Sprache ist gerade zu vorbildlich im Bezug auf Klarheit und Konzeption. Das macht es gerade für Anfänger wesentlich leichter die Sprache zu erlernen.

59

19.06.2009, 18:31

Zitat

Original von ZwerGOrca

Zitat

Gerade bei der ersten Programmiersprache kommt es imho weniger darauf an die zu lernen, in der man am produktivsten in Sicht Problem/Zeit oder Code/Zeit ist, sondern in der man das meiste lernen kann. C++ ist der Kandidat dafür, von maschinennahen Programmieren über verschiedene Programmierparadigmen bis hin zu vielen verfügbaren Bibliotheken kann man extrem viel lernen.


Genau das ist der Punkt. C++ ist nicht nur schlecht für Anfänger weil C# und Java wesentlich durchdachter sind, sondern eben genau auch deswegen weil C++ viel zu überfrachtet ist. Verschiedene Programmierparadigmen in einer Sprache zu lernen ist doch gerade furchtbar schlecht da insbesondere für einen Anfänger völlig der Überblick verloren geht welche Konzepte Teil von was sind.

Ausserdem sind solche Sachen wie Maschinennahe Programmierung einfach heute in vielen Anwendungsgebiten nicht mehr wichtig. Sodass vieles was man durch C++ lernt veraltet ist und man sich dafür lieber mit anderen Konzepten beschäftigen sollte.

Bei Java hat man genau das Gegenteil. Die Sprache ist gerade zu vorbildlich im Bezug auf Klarheit und Konzeption. Das macht es gerade für Anfänger wesentlich leichter die Sprache zu erlernen.

Stimmt. Würde einem Anfänger auch jeder Zeit Java anstelle von C++ empfehlen - genau aus diesen Gründen.

Wenn man C++ vollständig beherrscht, mag man mehr gelernt haben, als wenn man Java in allen Aspekten kennt - aber bis es soweit ist vergeht ein vielfaches an Zeit. C++ ist nur dann ein netter Einstieg in das Objektorientierte Programmieren, wenn man C schon kennt. Ansonsten -> Java.

60

19.06.2009, 19:02

natürlich +1 für java :-)
wobei ... um OOP zu lernen finde ich eigentlich SmallTalk am geeignetsten.
Java ist nicht unbedingt soo vorbildlich in dieser Beziehung und viele der gängigen Best Practices sind sehr prozedural (Enterprise Java Beans zum Beispiel). Oft arbeiten Frameworks um diese Beschränkungen herum (massiver Einsatz von Annotationen, dynamischen Proxies und Bytecode Manipulation).

Für Anfänger ist das aber wohl alles total uninteressant ;)

Man kann mit Java schon objektorientiert programmieren... es gibt aber halt sehr viel elegantere Sprachen dafür .. (C++ gehört sicher nicht dazu ^^)