Umsteigen nach C++ oder lieber c#?
-
Gregor schrieb:
Real schrieb:
Ist es denn tatsächlich so, dass jeder Depp Java kann?
Nein, aber es ist so, dass jeder Depp denkt, er würde Java können.
Siehe hier.
Die ganzen Klassen verkomplizieren meiner Meinung nach Java mehr als vereinfachen.
Liebe Grüße
Real
-
Real schrieb:
Die ganzen Klassen verkomplizieren meiner Meinung nach Java mehr als vereinfachen.
1. Wie meinst du das?
2. Was ist der Bezug zu diesem Thread?
-
Java sollte ja einfach sein, weil Klassen einem viel Arbeit ersparen soll.
Aber in Java gibt es soviele Klassen, dass es meiner Meinung nach mehr verkompliziert als hilft.ergo V1 => wenn Klassen einem die ganze Arbeit abnehmen, lernt man nicht programmieren
ergo V2 => gibt es dann auch weniger Java-Programmierer, die damit zu Recht kommen
In C++ kann ich zwar nur wenige Konsolenbefehle, dass ich mir damals autodiktatisch beigebracht habe, (wurde dann später durch die Schule zu Java gezwungen) aber schon von Anfang an fand ich Java sehr viel komplexer. Man kann das schon mit einem simplen I/O belegen.
Liebe Grüße
Real
-
Stimmt, System.out.println(String) ist natürlich der Wahnsinn.
Die I/O API von Java ist einfach genial und sie ist genauso komplex wie man will.
-
Naja gibt genausoviele Javagurus wie in anderen Sprachen auch, man kann mit Java leichter
grafische Oberflächen erstellen, was dann dazu führt, dass meine Mitschüler bei den Aufgaben das layout hinbekommen
und bei dem eigentlichen Problem der Aufgabe scheitern.
Ich hätte die anfangs nur mit der Konsole arbeiten lassen und denen die Grundlagen richtig
beigebracht.Am schlimmsten sind die PHPler, da gibt es "Experten" wie Sand am Meer
-
Ui, ein Lehrer hier anwensent?
Muss ich loben, die meisten haben soetwas "nicht nötig" und bleiben genauso dumm wie vorher. Mein Programmiertechnik-Lehrer topp ich schon (was nicht heisst, dass ich kompetent bin!)Liebe Grüße
Real
-
Real schrieb:
ergo V1 => wenn Klassen einem die ganze Arbeit abnehmen, lernt man nicht programmieren
Niemand sagt, dass man von Anfang an alle Klassen der Standardbibliothek nutzen muss. Es ist stattdessen eher üblich, dass man sich vor dem Benutzen von bestimmten Klassen selbst ähnliche Klassen selbst programmiert. Zum Beispiel sollte man vor dem benutzen einer LinkedList selbst mal eine Liste programmiert haben. Man sollte auch schonmal diverse Sortieralgorithmen programmiert haben, bevor man Arrays.sort() nutzt. Ich sehe da auch kein Problem, denn als Anfänger weiß man ja eh erstmal nicht, was es überhaupt für Klassen gibt und wozu die da sind.
-
Ob das dann jeder macht, ist eine andere Fragen.
Ausserdem denke ich nicht, dass Java-Programmierer so kreativ wie C-Programmierer (weiss nicht wie es mit C++ ausschaut) sind, die sich ihre Algorithmen selbst programmieren.Liebe Grüße
Real
-
Was hat das mit kreativ zu tun? Und was wäre dir lieber? Arrays.sort nicht anzubieten?
-
Hallo,
in C++ gibts die STL, also auch da kann man faul sein. Natürlich sollte man Algorithmen kennen und implementieren können, aber man ist imho nicht automatisch ein guter Programmierer, weil man BubbleSort, Verkettete Listen und Binäre Bäume im Schlaf zusammenbasteln kann, wie Gregor schon sagte.
Wieso sollte ich nicht einen hochoptimierten Algorithmus verwenden, der sich schon 1000mal bewährt hat, und stattdessen meinen eigenen, evtl. fehleranfälligen und/oder langsameren, benutzen?
-
Hi,
es müssen ja nicht unbedingt eigene Algorithmen sein. Nur ihn selbst zu implementieren und den Algorithmus zu verstehen finde ich sehr wichtig.In Java gibt man irgendeine Klasse und eine Variable ein und schon hat sich alles erledigt. Das ist zumindest für Anfänger nicht gut (zähle mich selbst darunter)!
Darum bin ich strikt dagegen, dass man Java als erste Sprache lehrt!
Wenn ich jemanden einen Ratschlag geben würde, dann würde ich ihm/ihr sagen zuerst C/C++ zu lernen.Meine Meinung.
Liebe Grüße
Real
-
Hallo,
wie schon erwähnt, in C++ gibts die STL. Da bliebe dann noch C...
Wenn du allerdings der Meinung bist, dass dich das nicht weiterbringt oder der Lerneffekt abhanden kommt (wo ich dir zustimme) musst du diese Dinge ja nicht benutzen. Du wirst nur feststellen, dass du, wenn du länger programmierst, froh bist, dass es diese Dinge gibt.
-
Hi Carsten,
ja kann ich mir gut vorstellen, wenn man nen Algorithmus zum x.ten Mal implementiert, dass das mit der Zeit nervig ist. Aber die Erfahrung sollte man aufjedenfall gehabt haben (nicht nur einmal).Liebe Grüße
Real
-
Das ist die Meinung eines Anfängers.
Ich mein man muss doch nur wissen, wie ein Algorithmus funktioniert. Das implementieren ist dann doch eher nebensache.
Beispiel Quicksort: Wenn man eine leere Liste sortieren soll, ist das Ergebnis eine leere Liste. Sonst: Man nehme ein Element, rufe sich selbst mit den Elemente auf, die kleiner als dieses Element sind und nochmals mit den Elementen, die größer oder gleich diesem einen Element sind. Dann hängt man diese beiden Listen aneinander und alles ist sortiert.Das könnte man doch jetzt mal eben einkloppen:
template<typename T, typename P> vector<T> filter (vector<T> const & source, P pred) { vector<T> tmp; for (vector<T>::const_iterator it=source.begin(); it!=source.end(); ++it) if (pred(*t)) tmp.push_back (*it); } vector<T> quicksort (vector<T> list) { if (list.empty()) return vector<T>(); else { vector<T> result; result.insert (result.end(), quicksort (filter<T>(bind2nd (less<T>(), list[0]))); result.insert (result.end(), quicksort (filter<T>(bind2nd (greater_equal<T>(), list[0]))); return result; } }
(Ungetestet, garantiert Vertipper drin).
Gut man sieht, das C++ nicht die Optimale Sprache für solche Algorithmen ist. Aber es gibt natürlich Sprachen, die für sowas geeignet sind:
quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y < x] ++ [x] ++ quicksort [y | y <- xs, y >= x]
Dafür hast du dann in C++ die Möglichkeit das ganze noch wesentlich effizienter zu bauen.
Nebenbei: Wieso gibt's in C++ eigentlich keine ordentlichen Lsiten (aus funktionaler Sicht)?
-
Real schrieb:
In Java gibt man irgendeine Klasse und eine Variable ein und schon hat sich alles erledigt. Das ist zumindest für Anfänger nicht gut (zähle mich selbst darunter)!
Darum bin ich strikt dagegen, dass man Java als erste Sprache lehrt!
Klar, ich bin auch der Meinung dass man lieber mit ASM anfangen soll. Denn da weiss man noch was man macht. Da wird man nicht so verweichlicht wie bei Hochsprachen.
-
Für Datenbanken und RAD Design??
Was hält Dich denn davon ab, bei Delphi zu bleiben?!?!
P.S.: Sorry, aber habe mir nicht alle 5 Seiten angeschaut, gehe einfach mal davon aus, daß Du es noch nicht erwähnt hast...
-
Shade Of Mine schrieb:
Real schrieb:
In Java gibt man irgendeine Klasse und eine Variable ein und schon hat sich alles erledigt. Das ist zumindest für Anfänger nicht gut (zähle mich selbst darunter)!
Darum bin ich strikt dagegen, dass man Java als erste Sprache lehrt!
Klar, ich bin auch der Meinung dass man lieber mit ASM anfangen soll. Denn da weiss man noch was man macht. Da wird man nicht so verweichlicht wie bei Hochsprachen.
Dann bitte auch kein ASM! Auch er ist kein 1:1 !
Lieber HEX-Code per Zehnertastatur direkt auf nen Chip zu 'nem 8086 senden!
-
@Sgt. Nukem: Sehr komisch. Du verrennst dich da gerade ein wenig.
@Real: Ich verstehe deine Argumentation nicht. Du glaubst, weil die Sprache odere deren Standard-Bibliothek bereits einige Features biete, die dem Programmierer für ihn triviale Grundlagenarbeit abnimmt, ist Sie für Anfänger nicht zu gebrauchen?
Wenn diesen Anfänger interessiert, wie ein Sortieralgorithmus funktioniert, kann er sich damit beschäftigen, unabhängig davon, ob die Sprache bereits etwas Vorgefertigtes bietet. Ein etwas erfahrener Programmierer würde eine Sprache wohl kaum verwenden wollen, wenn er jeden Kleinkram erstmal selbst entwickeln müsste.Bei mir gilt grundsätzlich:
- Es interessant zu wissen, wie etwas prinzipiell funktioniert
- Ich muss wiessen, wie ich es Anwende
- Es ist mir total egal, wie die konkrete, mir vorliegende Implementierung aussieht
-
Hallo,
ich könnte meine Argumente nur noch wiedeholen und ihr würdet dann eure widerholen bis irgendwann keine Argumente gepostet werden, sondern nur noch Müll die keinem weiterhelfen (siehe Shade Of Mine u. Sgt. Nukem die die ganze Diskusssion nach unten ziehen, da sie meine These ohne Argumente lächerlich darstellen und endlos übertreiben).Liebe Grüße
Real
-
Real schrieb:
sondern nur noch Müll die keinem weiterhelfen (siehe Shade Of Mine u. Sgt. Nukem die die ganze Diskusssion nach unten ziehen, da sie meine These ohne Argumente lächerlich darstellen und endlos übertreiben).
Das ist eine gängige Methode Argumente zu entkräften.
Du sagst dass die Sprache keine Algorithmen und so weiter anbieten soll. Folglich schlage ich dir ASM vor, denn diese Sprache tut dir garnix schenken tun.
Du betrachtest dass aus sicht eines Anfängers, das ist natürlich total falsch. Keine Ahnung wie weit du schon bist - aber für Profis ist eine mächtige Sprache wie C++ oder Java recht wichtig. Weil ich eben nicht die Zeit habe QSort zum 750ten Mal zu implementieren.
Und für Anfänger ist eine Sprache wie Java ziemlich nett, weil man recht schnell Erfolge erzielen kann und dennoch halbwegs ordentlich etwas lernt. Bei VB lernt man zB wesentlich weniger, weil man fast nur die GUI zusammenklickt. In Java muss man da mehr tun.
Und warum ist es schlecht wenn die Sprache etwas anbietet? Du musst es ja nicht verwenden.
Man fängt ja am Anfang an die Sprache zu verstehen - klar dass man da keine komplizierten Funktionen einbauen sollte, sondern alles selber schreiben sollte. Aber es ist schwachsinn zu sagen, dass es ein Nachteil einer Sprache ist, wenn sie mehr anbietet als du brauchst.