C oder C++?
-
@_kermit was die alte leier? die ablehnung kommt nicht vom programmieren her, sondern vom userblickwinkel. und dass ich nicht von mir behaupte dass ich java kann ist... 'die alte leier'?
-
compul schrieb:
@_kermit was die alte leier? die ablehnung kommt nicht vom programmieren her, sondern vom userblickwinkel. und dass ich nicht von mir behaupte dass ich java kann ist... 'die alte leier'?
Die beiden zitierten Aussagen hört man in der Art häufig kurz nacheinander, wenn es um die Programmiersprache Java geht. Deshalb die alte Leier.
Ansonsten ist die Java-Plattform bzw. Plattformen im Allgemeinen ja nicht per se schlecht. Ich weiß gerade ehrlich gesagt nicht, ob du jetzt Java grundsätzlich ablehnst oder nur für dein Ziel (systemnahe Programmierung) ausschließen willst.
-
@_kermit komplett grundsaetzlich natuerlich nicht... warum haette ich mich sonst frueher damit beschaeftigt. fuer das ziel 'systemnahe programmierung' natuerlich, und seitdem ich den ansonsten supertollen wm 'awesome wm' nutze hab ich einen leichten hass auf jedes programm was mit java daherkommt, einfach weils dort verbuggt ist. wird mit sicherheit was mit dem wm zu tun haben. trotzdem isses so der eindruck dens auf mich macht...
ausserdem kam mir java schon immer ~ auch wieder nur son gefuehl ~ etwas plastikmaessig vor. ich lass es jetzt das weiter zu beschreiben, geht eh schief..
ist auch keine anfeindung, und fuer einige sachen is java sicherlich cool. zum beispiel zum schreiben chinesischer zeichen per hand auf mdbgund vermutlich noch fuer ne menge anderer dinge. aber halt jetzt erstmal nicht meine erste baustelle
-
Für OOP erstmal Java schrieb:
Anstatt von C auf C++ umzusteigen ist es besser nach C erstmal auf Java umzusteigen und erst dann am Schluß C++, wenn nicht andere Sprachen wie Hasjell oder Python dazwischen kommen.
Grund:
Die objekt orientierte Programmierung lernt man mit Java besser und leichter.
In C++ kann man so viel zwischen Objekt Orientiertem Design und prozeduralen Design vermixen, daß am Ende nur halbgarer Müll rauskommt, das weder gutes C noch gutes Objekt orientiertes Design ist.Deswegen sollte man diese Reihenfolge einhalten:
1. C
2. Java
3. ne Scriptsprache wie Python
4. C++
5. HaskellVor Java C zu können erleichtert es auch zu verstehen, was Java intern mit Objekten macht.
Das sehe ich ganz anders. Lernst Du vor C++ Java, wirst Du erstmal in C++ überall abstrakte Klassen (statt Interfaces) definieren wollen und alles in Klassen zwingen wollen. Das ist auch großer Käse. Ich spreche da aus eigener Erfahrung (Basic/Pascal/Java/C++/Python). Du stellst den OOP/Prozedural-Mix als etwas schlechtes dar. Das ist er aber gar nicht. Es macht einfach keien Sinn, alles irgendeiner Klasse zuzuordnen. Und eines der wenigen Abstraktionsmittel, die ein Java Programmierer kennt, ist die Sache mit der Vererbung und den Interfaces. Da hat C++ noch ein bisschen mehr zu bieten. Die Stile, die sich nach und nach in Java und in C++ rauskristallisieren sind sehr verschieden. Wenn Du C++ programmieren willst, lern C++ und nicht vorher noch zig andere Sprachen, die mit C++ kaum etwas zu tun haben.
Wenn es um das Programmieren an sich geht, was zu lernen ist, dann würde ich mir die erste zu erlernende Sprache gut überlegen und eine aussuchen, die am Anfang den Frustfaktor minimiert ... vielleicht Python.
Cheers!
kk
-
krümelkacker schrieb:
Für OOP erstmal Java schrieb:
Anstatt von C auf C++ umzusteigen ist es besser nach C erstmal auf Java umzusteigen und erst dann am Schluß C++, wenn nicht andere Sprachen wie Hasjell oder Python dazwischen kommen.
Grund:
Die objekt orientierte Programmierung lernt man mit Java besser und leichter.
In C++ kann man so viel zwischen Objekt Orientiertem Design und prozeduralen Design vermixen, daß am Ende nur halbgarer Müll rauskommt, das weder gutes C noch gutes Objekt orientiertes Design ist.Deswegen sollte man diese Reihenfolge einhalten:
1. C
2. Java
3. ne Scriptsprache wie Python
4. C++
5. HaskellVor Java C zu können erleichtert es auch zu verstehen, was Java intern mit Objekten macht.
Das sehe ich ganz anders. Lernst Du vor C++ Java, wirst Du erstmal in C++ überall abstrakte Klassen (statt Interfaces) definieren wollen und alles in Klassen zwingen wollen. Das ist auch großer Käse. Ich spreche da aus eigener Erfahrung (Basic/Pascal/Java/C++/Python). Du stellst den OOP/Prozedural-Mix als etwas schlechtes dar. Das ist er aber gar nicht. Es macht einfach keien Sinn, alles irgendeiner Klasse zuzuordnen. Und eines der wenigen Abstraktionsmittel, die ein Java Programmierer kennt, ist die Sache mit der Vererbung und den Interfaces. Da hat C++ noch ein bisschen mehr zu bieten. Die Stile, die sich nach und nach in Java und in C++ rauskristallisieren sind sehr verschieden. Wenn Du C++ programmieren willst, lern C++ und nicht vorher noch zig andere Sprachen, die mit C++ kaum etwas zu tun haben.
Wenn es um das Programmieren an sich geht, was zu lernen ist, dann würde ich mir die erste zu erlernende Sprache gut überlegen und eine aussuchen, die am Anfang den Frustfaktor minimiert ... vielleicht Python.
Cheers!
kkEs geht darum erstmal ordentliches OOP Design zu lernen und das geht eben mit Java am Besten, weil Java nicht mehr bietet als OOP.
Bei C++ wird er ein gutes ordentliches OOP Design nie lernen, da wird es dann Kraut und Rüben.
-
Statt Java wäre C# auch noch eine gute Alternative.
-
Java ist krampfhaftes OOP, da kann ich kruemelkacker nur zustimmen.
-
314159265358979 schrieb:
Java ist krampfhaftes OOP, da kann ich kruemelkacker nur zustimmen.
Inwiefern?
-
Man muss Dinge in Klassen stopfen, die mit Klassen absolut nichts am Hut haben.
-
314159265358979 schrieb:
Man muss Dinge in Klassen stopfen, die mit Klassen absolut nichts am Hut haben.
Das ist kein spezielles Java-Problem, sondern ein Problem der klassenbasierten Objektorientierung.
-
Das mag schon sein. Was aber dann trotzdem gegen Java spricht.
-
314159265358979 schrieb:
Das mag schon sein. Was aber dann trotzdem gegen Java spricht.
...und gegen alle anderen, nicht-hybriden OO-Sprachen. Heureka.
-
Was du nicht sagst.
-
Bist du im echten Leben eigentlich auch so unsympathisch Pi?
-
Hängt von der Person ab, die mir gegenübersteht.
Generell: Ja. :p
-
Für OOP erstmal Java schrieb:
Es geht darum erstmal ordentliches OOP Design zu lernen und das geht eben mit Java am Besten
nö. Am besten geht das mit einer lupenreinen objektorientierten Sprache (smalltalk)
Für OOP erstmal Java schrieb:
, weil Java nicht mehr bietet als OOP.
java ist ein Kompromiß aus C-ähnlicher Syntax, statischer Typisierung (die eigentlich dem Grundgedanken der OOP zuwiderläuft) und OOP.
-
volkard schrieb:
Und am Wichtigsten: Nicht so auf die C++-Basher hören.
Es gibt hier ein paar (oder einen mit mehreren Namen), die wollen damit nur provozieren. Im Zweifelsfall bei kontroversen Themen nicht auf Unregistrierte hören.Oder man kann es so sehen: volkard hat sich einfach zu sehr auf C++ verkrampft.
-
!rr!rr_. schrieb:
[...] statischer Typisierung (die eigentlich dem Grundgedanken der OOP zuwiderläuft) [...]
Oho, wie das denn?
-
weil statische Typisierung die "späte Bindung" erschwert bis verunmöglicht. C++ wird formal seit STL unter anderem deshalb immer komplexer, weil man in C++ die ganz offenbar gewünschte Flexibilität der dynamischen Typisierung mit den Mitteln statischer Typisierung simulieren muß.
Eine Figur aus Metall so zu bauen, daß sie hinterher die Flexibilität einer Figur aus Knetmasse hat, ist eben komplizierter als die Figur gleich aus Knetmasse zu bauen.
-
!rr!rr_. schrieb:
weil statische Typisierung die "späte Bindung" erschwert bis verunmöglicht. C++ wird formal seit STL unter anderem deshalb immer komplexer, weil man in C++ die ganz offenbar gewünschte Flexibilität der dynamischen Typisierung mit den Mitteln statischer Typisierung simulieren muß.
Eine Figur aus Metall so zu bauen, daß sie hinterher die Flexibilität einer Figur aus Knetmasse hat, ist eben komplizierter als die Figur gleich aus Knetmasse zu bauen.
Metall? Knete? Was hat das mit Late-Binding zu tun? Fragen über Fragen...
Aber lass dir gesagt sein, das Late-Binding in C++ mit dem virtual Keyword erreicht wird. Und wenn das nicht für OO ausreicht, solltest du nochmal die Schulbank drücken.
Übrigens benutzt Smalltalk doch gar keine Member-Function-Aufrufe, sondern Nachrichten. Aber was haben Nachrichten mit OO zu tun? Dann hat das ja das Win32-Nachrichten-System schon lange perfekt OO-artig gemacht?
NAchrichten sind also nicht das Maß der Dinge, um OO zu erfüllen. Es ist allein entscheidend, zur Laufzeit zu entscheiden, welches Verhalten (sprich Code) aufgerufen wird. Und das erfüllt C++ mit virtual vollständig.