Seite 2 von 3

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Donnerstag 26. Januar 2012, 21:12
von needsch
webspider hat geschrieben:@Hyperion: Nein, es fängt ja damit an, dass ich zur Objektorientierung gezwungen werde (bisher halte ich sie noch so lange aus meinem Geschreibsel raus wie ich nichts größeres baue). Wenn man das mit der gewissen Umständlichkeit kombiniert, dem Fakt, dass man ohne IDE wahnsinnig werden kann beim Entwickeln und dass man die meiste Zeit aufgrund uneinheitlicher Benennungen und Vorgehensweisen viel eigentlich unnötigen Code schreiben muss. Wenn so Objektorientierung generell aussieht, na dann gute Nacht. Ich nutze es bisher nur wegen der Uni.
Wunderbar auf den Punkt gebracht! :!:
Hyperion hat geschrieben:
webspider hat geschrieben:Aber Java ist so schrecklich bürokratisch :(
Du meinst Bondage and Discipline?
Schön wär's. :lol: Aber nicht mal dafür taugt Java. Viel zu frigide und viel zu hysterisch. Wenn ich nur an die 1000+ zeiligen XML-Konfigurationsdateien und die episch langen Stacktraces denke...

Zum Thema:
C++ zu beherrschen ist eine tolle Sache, man muss sich allerdings sehr intensiv damit befassen. C++ ist deutlich komplexer als andere Programmiersprachen*. Ansonsten solltest du es meiden, wenn es nicht unbedingt auf Performance ankommt.

*Es gibt viele Leute, die behaupten, dass niemand wirklich C++ beherrscht und dass niemals 2 Programmierer die gleichen Aspekte von C++ beherrschen. Dem stimme ich ausdrücklich nicht zu. Man muss bei C++ einfach ein paar harte Nüsse knacken, aber danach kann man sich sehr schnell alles Weitere aneignen (nach Bedarf). Wenn Programmierer zu faul sind, sich in alle zentralen Konzepte einer Sprache einzuarbeiten, dann sind es eben schlechte Programmierer - Ende.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Donnerstag 26. Januar 2012, 21:37
von lunar
@needsch: Es fällt mir angesichts der Aussage, man könne sich "alles weitere sehr schnell aneignen", sehr schwer, zu glauben, dass Du Dich wirklich mit C++ beschäftigt hast. C++ wirklich in Gänze zu beherrschen, erfordert jahrelange Übung und unglaublich viel Erfahrung. Es ist illusorisch, anzunehmen, dass jeder Programmierer, der C++-Anwendungen warten muss, diese Zeit zur Verfügung hat, oder jede Firma es sich leisten könnte, ihre Entwickler zu C++-Experten auszubilden. Und es ist anmaßend, zu behaupten, alle anderen wären schlechte Programmierer. Solche Aussagen fallen früher oder später knallhart auf Dich zurück...

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Donnerstag 26. Januar 2012, 21:40
von deets
@lunar

du sprichst mir aus der seele - genau dieses cowboy-coder-denken ist unter C++-Freunden halt sehr verbreitet.

Und das Problem ist ja nicht alleine die Semantik der Sprache. Die ist schon komplex genug. Nein, auch noch die vielen verschiedenen Abstraktionen, die operator-ueberladung, templating und macro-expansion in den ganzen Libs beherrscht werden wollen.

Gehen tut das alles. Nur nicht so richtig gut.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Donnerstag 26. Januar 2012, 22:31
von snafu
Zum "Klassen-Vorwurf" an Java: Naja, es müssen zwar "offiziell" immer Klassen genutzt werden, aber sobald ich ein `static` davor schreibe, fühlt es sich im Grunde auch nicht viel anders an, als ein Modulattribut in Python.

In Python mag vieles leichter von der Hand gehen, aber Java ist keinesfalls völlig unbrauchbar. Es kommt halt stark auf den Anwendungsfall an. Soweit ich das überblicken kann (und das beruht zugegebenermaßen noch nicht auf allzu viel Erfahrung), ist Java für den Einsatz in Wirtschaft und Verwaltung in Betrieben und Ämtern recht gut geeignet - gerade wenn's auf Datenbankabfragen in Netzwerken, Verwaltung von Zugriffsrechten, etc ankommt (was in dem Bereich naturgemäß viel zum Einsatz kommt). Womit ich jetzt natürlich nicht sagen will, dass man das in Python *nicht* könnte - schon klar...

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Donnerstag 26. Januar 2012, 23:30
von needsch
lunar hat geschrieben:@needsch: Es fällt mir angesichts der Aussage, man könne sich "alles weitere sehr schnell aneignen", sehr schwer, zu glauben, dass Du Dich wirklich mit C++ beschäftigt hast. C++ wirklich in Gänze zu beherrschen, erfordert jahrelange Übung und unglaublich viel Erfahrung. Es ist illusorisch, anzunehmen, dass jeder Programmierer, der C++-Anwendungen warten muss, diese Zeit zur Verfügung hat, oder jede Firma es sich leisten könnte, ihre Entwickler zu C++-Experten auszubilden. Und es ist anmaßend, zu behaupten, alle anderen wären schlechte Programmierer. Solche Aussagen fallen früher oder später knallhart auf Dich zurück...
1. Punkt: Zugegeben, mit einem Hochschulabschluss im Bereich Informatik habe ich eine etwas elitäre Sicht auf diese Dinge.
2. Punkt: Ich verlange nicht, dass man 20%, 50% oder 80% einer Programmiersprache beherrscht, geschweige denn 100%. Ich verlange die Bereitschaft, sich bei Bedarf "alles Weitere", was notwendig ist, anzueignen (bemerke: ich habe meinen vorherigen Beitrag in diesem Punkt präzisiert). Programmierer, die dazu nicht bereit oder nicht fähig sind, sind schlechte Programmierer. Die Komplexität der Programmiersprache ist keine Entschuldigung.

Viele Grüße

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 01:24
von Hyperion
needsch hat geschrieben: 1. Punkt: Zugegeben, mit einem Hochschulabschluss im Bereich Informatik habe ich eine etwas elitäre Sicht auf diese Dinge.
Mit ersterem bist Du hier sicher nicht der einzige - mit letzterem eher schon; wobei mir auch etwas unklar ist, was ein "elitärer" Blick sein soll! Meinst Du das im Sinne von "abfällig"?
needsch hat geschrieben: Die Komplexität der Programmiersprache ist keine Entschuldigung.
Die Komplexität einer Sache ist aber oftmals die Motivation, etwas zu verändern und weniger komplex zu gestalten - u.a. deswegen erfinden ja Leute neue Programmiersprachen.
Ob man einen schlechten Programmierer daran erkennt, ob er vor zu großer Komplexität kapituliert, weiß ich nicht - aber einen guten Informatiker erkennt man daran, dass er mit möglichst wenig Komplexität zum Ziel kommt ;-)

Ich kann Deine negative Einstellung zu Java diesbezüglich nicht nachvollziehen (Du hast ja weiter oben die Zusammenfassung von webspider als "wunderbar" bezeichnet). Laut Deiner eigenen Definition eines "guten" Programierers müsste Dir ja Java keine Probleme bereiten. Es ist nämlich weit weniger komplex als C++ und mittels einer guten IDE durchaus komfortabel zu programmieren. Und modernes Java kommt dank Annotationen immer mehr ohne XML-Config-Dateien aus. Also fehlt da nur die Bereitschaft, sich das anzueignen? :twisted:

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 09:40
von BlackJack
@needsch: Ich habe nicht die Bereitschaft mir bei Bedarf *alles* anzueignen, weil ich im Falle von C++ schon den Bedarf in Frage stelle. Ich bin der Meinung das eine Sprache nicht so komplex sein muss, und habe auch genug Sprachen angeschaut um das jetzt nicht nur auf mein eingeschüchtert sein vor der Komplexität von C++ zu schieben. Es ist eher so, dass mir die Motivation fehlt auf so viele Sachen achten zu müssen, um die sich bei anderen Sprachen der Compiler oder die Laufzeitumgebung kümmert. Macht mich das jetzt tatsächlich zu einem schlechten Programmierer?

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 09:49
von deets
@needsch

"Bei Bedarf" aneignen also. Woran, wenn man's nicht weiss, erkennt man denn so den Bedarf? Schlechtes Programmieren ist nicht notwendigerweise bedingt durch ein Glasdecke an welche der eine stoesst - und ein anderer hat sie halt nicht.

Sondern oft auch durch schlichtes Unwissen. Und je weniger man wissen muss, und je orthogonaler das ist, was man wissen muss, desto besser. Darum bevorzuge ich Python. Auch gegenueber zB Ruby (wo es dann doch irgendwie immer 3 Arten gibt, dasselbe simple Ding zu machen).

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 13:45
von needsch
Also nochmal für die Begriffsstutzigen:
"Es gibt viele Leute, die behaupten, dass niemand wirklich C++ beherrscht und dass niemals 2 Programmierer die gleichen Aspekte von C++ beherrschen. Dem stimme ich ausdrücklich nicht zu. Man muss bei C++ einfach ein paar harte Nüsse knacken, aber danach kann man sich sehr schnell alles Weitere aneignen (nach Bedarf). Wenn Programmierer zu faul sind, sich in alle zentralen Konzepte einer Sprache einzuarbeiten, dann sind es eben schlechte Programmierer - Ende."

Bedarf kann es dann geben, wenn man
- in fremden Code, an dem man arbeiten muss, Konstrukte sieht, die man nicht versteht.
- von Arbeitskollegen darauf hingewiesen ist, dass es schlechtes C++ ist, wenn man überwiegend C schreibt
- wenn man den Coding Styleguide liest und darin Begriffe vorfindet, die man noch gar nicht kennt, z.B. Smart pointer
- wenn man ganz konkret von Arbeitskollegen darauf hingewiesen wird, std::string statt C-Strings oder std::vector statt Arrays zu verwenden
- uvm.

Ein professioneller Programmierer wird - und da stimmen mir doch hoffentlich alle hier zu - sich in diesen Fällen zügig das fehlende Wissen aneignen.

Das heißt für mich: Die oben beschriebene Kritik an C++, die Sprache sei so komplex, dass niemals 2 Programmierer die gleichen Teile der Sprache kennen (und daher kaum zusammenarbeiten können), trifft nicht zu. Es sei denn, es handelt sich um unprofessionelle, schlechte Programmierer.

Weiteres:
- Wer kein C++ kann, der ist kein schlechter Programmierer. Wo kämen wir da hin?
- Ich mag Java nicht, das ist korrekt. Bin trotzdem mindestens durchschnittlich im Umgang mit Java und hätte mit Sicherheit keine Probleme im professionellen Einsatz in kürzester Zeit (3-6 Monate) mit den Profis aufzuschließen. Das ist mein persönlicher Anspruch, den konnte ich bisher auch immer einhalten. So war auch das "elitär" gemeint.

Viele Grüße

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 15:40
von BlackJack
@needsch: Ich bin zu faul mich in alle Konzepte von C++ einzuarbeiten. Ich bin trotzdem so vermessen mich nicht für einen schlechten Programmierer zu halten. Unnötige Komplexität zu vermeiden halte ich für eine gute Eigenschaft bei einem Programmierer.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 15:59
von lunar
@needsch: Diese Diskussion ist bisher ohne Beleidigungen ausgekommen, fange also bitte nicht daran. Andere als "begriffsstutzig" zu bezeichnen, bringt niemanden weiter, sondern disqualifiziert allenfalls Deine Positionen.

Die Komplexität von C++ geht im Übrigen auch ein klitzekleines bisschen über "std::vector" und sichere Zeiger hinaus. Darüber sind wir doch schon längst hinaus.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 19:23
von needsch
lunar hat geschrieben:@needsch: Diese Diskussion ist bisher ohne Beleidigungen ausgekommen, fange also bitte nicht daran. Andere als "begriffsstutzig" zu bezeichnen, bringt niemanden weiter, sondern disqualifiziert allenfalls Deine Positionen.
Ich zitiere: "cowboy-coder-denken".
lunar hat geschrieben:Die Komplexität von C++ geht im Übrigen auch ein klitzekleines bisschen über "std::vector" und sichere Zeiger hinaus. Darüber sind wir doch schon längst hinaus.
Vorschlag zur Güte:
Ein guter Programmierer unterscheidet sich von anderen Programmierern dadurch, dass er stets bemüht ist, besser zu werden. Das schließt den Willen zum Dazulernen mit ein. Dazu braucht es auch keine Fortbildungen der Firma, das sollte das persönliche Anliegen und der Anspruch jedes Programmierers sein. Eigentlich halte ich das aber für eine Selbstverständlichkeit und für die Pflichten eines jeden Programmierers. Wer das also nicht hinkriegt, der ist in diesem Sinne ein schlechter Programmierer.

Ich bleibe aber dabei, dass ein guter Programmierer keine Probleme damit haben sollte, sich in C++ einzuarbeiten. 6 Monate und man sollte das meiste drauf haben.
BlackJack hat geschrieben:@needsch: Ich bin zu faul mich in alle Konzepte von C++ einzuarbeiten. Ich bin trotzdem so vermessen mich nicht für einen schlechten Programmierer zu halten. Unnötige Komplexität zu vermeiden halte ich für eine gute Eigenschaft bei einem Programmierer.
Fein.

--

Damit ist die Diskussion von meiner Seite beendet. Ich hoffe, ich konnte mich gut erklären. Mehr ist dazu auch nicht zu sagen.

Viele Grüße

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 20:02
von BlackJack
@needsch: Ob das jetzt wirklich vergleichbar ist… Ich kenne Leute die würden sich stolz selbst als „Cowboy-Coder” bezeichnen; bei „begriffsstuzig” fällt mir jetzt gerade niemand ein.

Nun muss ich mir nur noch überlegen ob mir das was ausmacht von Dir für einen schlechten Programmierer gehalten zu werden. Ich habe nämlich massive Probleme mich in C++ ein zu arbeiten. Beim letzten Anlauf mal bin ich daran gescheitert als ich zum Thema „exception safety” gekommen bin, und nicht wusste ob ich lachen oder weinen sollte. Ich *konnte* danach einfach nicht weiter machen.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Freitag 27. Januar 2012, 20:40
von DasIch
Sicherlich kann sich ein guter Programmierer in C++ einarbeiten. Allerdings ändert dass nichts daran das C++ unnötig kompliziert, nicht sonderlich lehrreich und nur selten eine sinnvolle Wahl ist. Einem guten und halbwegs erfahrenen Programmierer sollte dies auch klar sein, dementsprechend reduziert sich die Zahl der Leute die C++ benutzen auf schlechte Programmierer, Programmierer die zu faul/nicht gut genug sind um einen brauchbaren anderen Job zu finden und der Minderheit der guten Programmierer die einen sinnvollen Anwendungszweck gefunden haben.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Samstag 28. Januar 2012, 09:41
von lunar
@DasIch: Es ist ziemlich unverschämt, mal eben so die Mehrheit der C++-Programmierer zu schlechten oder faulen Programmierern zu erklären, oder ihnen zu unterstellen, sie wären nicht in der Lage, einen anderen Job zu finden. Die Aussage ist schon deswegen dumm, weil man in bestimmten Anwendungsfeldern gar nicht arbeiten kann, ohne mit C++ konfrontiert zu werden. Und wenn man genau dieses Anwendungsfeld trotz C++ interessant findet, macht einen das weder schlecht noch faul.

@needsch: Man kann in sechs Monaten einen Kenntnisstand in C++ erreichen, der einem ermöglicht, an einem bestimmtem Projekt zu arbeiten. In der Regel kennt man dann allerdings nur einen kleinen Ausschnitt, und wahrscheinlich nicht einmal die Hälfte der gesamten Sprache C++.

Re: "Zur C/C++/Java/Python-Diskussion"

Verfasst: Samstag 28. Januar 2012, 11:56
von snafu
Hier mal ein Artikel (http://www.oop-trainer.de/Themen/EmbeddedCPP.html), wo auf die Eignung von C++ (nach Meinung des Autors) speziell für Embedded Systems eingegangen wird. Als großer Vorteil wird hervorgehoben, dass C++ den praktischen Aspekt, seine Programmteile in Klassen zu modellieren, verbindet mit der Abwärtskompatibilität zu C, wodurch - wenn nötig - auch hardwarenahe Programmierung auf unterster Ebene möglich gemacht wird. Am Ende erfolgt noch ein kleiner Vergleich mit Java (weiter im Hinblick auf die Eignung für Embedded Systems). Vielleicht interessiert's ja jemanden...