Sollten wir alle uns zurückbesinnen?
-
zB schrieb:
volkard schrieb:
zB schrieb:
Alles was darüber hinaus geht, inklusive OOP-Elementen wie Klassen, ist doch nicht notwendig.
OOP ist nötig. Wie schon in C mit fpopen/fclose und so weiter gezeigt.
Außerdem muß dieser Ansatz mit RAII und Exceptions komplettiert werden.Im Übrigen wäre Bescheidenheit eine gute Idee.
Du hast mich nicht ganz verstanden. Ich will das Prinzip OOP nicht unbedingt verbannen. So wie du es eben erwähnt hast, prorammiert man oop auch ohne explizit Klassen und vererbung zu benötigen. Nein, all das was man sowieso macht, das ist sinnvoll. Aber ich finde man benötigt Klassen & co nicht unbedingt. Denn das verleitet nur dazu, dass man einfach alles in Klassen packt ohne einen Grund, nur um der objektorientierter Vorgabe zu folgen.
Objektorientierung ergibt sich aus dem Kontext und nicht aus der Vorgabe.
Ähm, die Definition einer Klasse ergibt sich aus den Merkmalen, daß sie Klassenvariablen und Klassenmethoden hat, bzw. bei Objekten Objektvariablen und Methoden.
Die Klasse ist also ein sinnvolles Konstrukt um diese Dinge zusammenzufassen.
Wie willst du in C ein Objekt erzeugen, wenn das Struct, welches z.B. die Variablen bzw. Daten enthält, von den Funktionen völlig losgelöst ist?Daher sag ich es mal so, auch wenn man in C objekt orientiert programmieren kann, so sind die ganzen Klassenkonstrukte die man in C++ oder Java hat, sehr sinnvoll.
Und auch Zeigerarithemtik finde ich sinnvoll, wenn es auf das letzte Pünktchen Performance ankommt, auch das sollte eine Sprache weiterhin bieten.
Bei Java fehlt das schon, allerdings sehe ich es dort persönlich nicht als so schlimm an, weil ich Java eh nicht für performancekritische Anwendungen einsetzen würde.
-
zB schrieb:
cooky451 schrieb:
Zeiger loswerden? Warum haben alle Angst vor Zeigern? Ist das irgendwie ein neuer Trend oder so? oO
Ne, aber das sind so Altlasten. C++ hat auch welche. Bei C sind es aber nunmal die Zeiger.
Tolles Argument.
Zeiger sind sicher keine Altlast wenn man sie anzuwenden weiß.cooky451 schrieb:
Und weiter: Abstraktion hilft. Klassen sind doch auch nur C-Structs mit zusätzen. Dabei hilft RAII aber enorm. Spannender wird es, virtuelle Vererbung und Templatemetaprogrammierung anzugreifen.
Die Sache ist: structs sind dazu da Daten, die zusammengehören zusammenzufassen.
Ob man nun Funktionen auf structs anwendet oder Methoden, die zu einer Klasse gehören ist im Endeffekt das selbe. Nur besteht bei der Klasse die Gefahr, dass man viel zu viel in die Klasse packt, sodass mann nicht mehr Sachen zusammenfasst, die zusammengehören sondern alles was einem dazu einfällt im Sinne einer Mindmap. Klassen verführen dazu zu viel, insbesondere Methoden, reinzustecken. Am Ende hat man eine Klasse, die nichts anderes ist, als eine ein wenig anders formulierte main-Funktion.Eine Programmiersprache kann dem Programmierer nicht das Denken abnehmen, wenn der Progammierer so einen Mist baut, dann liegt es sicherlich nicht an der Programmiersprache.
-
C Coder schrieb:
Und auch Zeigerarithemtik finde ich sinnvoll, wenn es auf das letzte Pünktchen Performance ankommt, auch das sollte eine Sprache weiterhin bieten.
Auch wenn ich dir zustimme, dass eine Sprache Zeiger bieten sollte, haben sie dennoch relativ wenig bis gar nicht mit Performance zu tun.
-
314159265358979 schrieb:
C Coder schrieb:
Und auch Zeigerarithemtik finde ich sinnvoll, wenn es auf das letzte Pünktchen Performance ankommt, auch das sollte eine Sprache weiterhin bieten.
Auch wenn ich dir zustimme, dass eine Sprache Zeiger bieten sollte, haben sie dennoch relativ wenig bis gar nicht mit Performance zu tun.
Dann schau dir mal Java an, welches keine Zeiger bietet.
Änderungen in einem String führen bei Java dazu, daß ein neues Stringobjekt angeleegt wird und die Referenz darauf geändert wird.
Das kopieren des alten Strings mit dem neuen Inhalten zu einem neuen Stringobjekt kostet Zeit.In C/C++ kannst du auf deinen String mithilfe von Zeigern zugreifen und darin einzelne Zeichen ändern, ohne das du den String kopieren mußt.
Du arbeitest somit auf dem unveränderten Original.
Und das ist performant!
-
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/java/lang/StringBuilder.html
Das Problem ist also nicht Java, sondern du
-
Und schon wieder bin ich auf einen Troll hereingefallen.
:xmas2:
-
Nein, besser weiterentwickeln. Mit guten Macrostandards und Techniken kann man leicht in Assembler Directx Programmierung machen, mit verbesserter Java-Api und verbesserten Kompilern und Schnittstellen schnellere und flexiblere Handyprogrammen entwickeln. Java steckt noch in den Kinderschuhen, ist aber schon recht verbreitet und standardisiert. Was kann man sich mehr wünschen, als einen gute Standards im unkontrollierten, ausufernden Wildwuchs der "Programmiersprachen"?
Lösungen wie Grafisch Programmieren, Wizards, Gameeditoren usw. sind ein auch ein guter Schritt vorwärts.
-
314159265358979 schrieb:
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/java/lang/StringBuilder.html
Das Problem ist also nicht Java, sondern duHm, ich habe mich mit Java seit 1.4 nicht mehr befaßt.
Früher <= 1.4 war das auf jedenfall so und StringBuilder gab's damals nicht.
Dann wurde in Java ja zumindest mal ein Problem verbessert.
-
nachtfeuer schrieb:
Lösungen wie Grafisch Programmieren, Wizards, Gameeditoren usw. sind ein auch ein guter Schritt vorwärts.
Damit später die Programme für Unternehmen von der Sekretärin im Programm MS Office SoftwareDesinger geschrieben, pardon zusammengeklickt werden?
Es ist ja schon heute schlimm genug, wenn Firmen im Glauben handeln, daß sie keine Informatiker brauchen würden, um ihre Unternehmenssoftware zu realisieren und stattdesssen dafür ihren Mitarbeiter beauftragen, der Spaß an Visual Basic oder PHP hat und Zuhause aus Spaß in der Freizeit an seiner DVD Verwaltungssoftware herumfrickelt.
Mit Grafischen Klick mich Zusammen Officeprogrammierprogrammen wird diese Einstellung des falsche Geldsparen nicht besser werden.
-
C Coder schrieb:
Hm, ich habe mich mit Java seit 1.4 nicht mehr befaßt.
Früher <= 1.4 war das auf jedenfall so und StringBuilder gab's damals nicht.
Dann wurde in Java ja zumindest mal ein Problem verbessert.kleiner tipp: wenn man sich mit einer sprache mehr als 7 jahre nicht mehr befasst hat, kann man sich leicht lächerlich machen, wenn du darüber klugscheisst.
-
C Coder schrieb:
Dann schau dir mal Java an, welches keine Zeiger bietet.
Änderungen in einem String führen bei Java dazu, daß ein neues Stringobjekt angeleegt wird und die Referenz darauf geändert wird.
Das kopieren des alten Strings mit dem neuen Inhalten zu einem neuen Stringobjekt kostet Zeit.achtung: man merkt, dass du von java keine ahnung hast. hör also lieber auf drüber zu sprechen, bevor du dich gänzlich lächerlich gemacht hast.
aber damit du nicht dumm sterben musst: http://en.wikipedia.org/wiki/String_interning
-
C Coder schrieb:
nachtfeuer schrieb:
Lösungen wie Grafisch Programmieren, Wizards, Gameeditoren usw. sind ein auch ein guter Schritt vorwärts.
Damit später die Programme für Unternehmen von der Sekretärin im Programm MS Office SoftwareDesinger geschrieben, pardon zusammengeklickt werden?
Es ist ja schon heute schlimm genug, wenn Firmen im Glauben handeln, daß sie keine Informatiker brauchen würden, um ihre Unternehmenssoftware zu realisieren und stattdesssen dafür ihren Mitarbeiter beauftragen, der Spaß an Visual Basic oder PHP hat und Zuhause aus Spaß in der Freizeit an seiner DVD Verwaltungssoftware herumfrickelt.
Mit Grafischen Klick mich Zusammen Officeprogrammierprogrammen wird diese Einstellung des falsche Geldsparen nicht besser werden.Das ist jetzt aber eine ziemlich einseitige Interpretation. Man sieht aber bei Linux, wohin das führt, wenn zuviele Hirnis meinen, "programmieren" zu können.
Früher gab es Pascal und Basic Kurse an Volkshochschulen, hier und da auch C. Das war gar keine schlechte Zeit. Heute kann man die Bedienung von Officeprogrammen an der Volkshochschule lernen. In den Programmierkursen damals saßen auch Sekretärinnen. Aber nicht vom Chef geschickt, sondern aus Eigeninteresse und Neugier, etwas von dieser neuen Welt zu verstehen und dran teilzuhaben.
Wenn die Unternehmer Geld sparen wollen, dann würde ich empfehlen, mehr auf funktionale Lösungen wie Haskell zu setzen, hängt aber auch stark vom Einsatzgebiet ab. Aber es dürfte prinzipiell kostensparend sein, mit Haskell zu entwickeln.
-
nachtfeuer schrieb:
Java steckt noch in den Kinderschuhen
Die Blütezeit ist spätestens seit Java 7 vorbei. Langsam merken die Devs, dass sie zu vieles falsch gemacht haben, und wollen Dinge wie Lambdas in das Unding reinquetschen. Dafür biegen sie die halbe Sprache mit Gewalt um. :xmas2:
Java 7 ist ja mal sowas von 'n Witz. Die neuen Sprachfeatures braucht man so gut wie nie. Yeah, 123_456_789 ist nun ein valides int-Literal!
-
zB schrieb:
Sollten wir uns nicht lieber zurückbesinen? Bringen uns die modernen Programmier-Konzepte wirklich einen Vorteil, oder sind diese im Endeffekt nur elegant formulierte Klugscheisserei? Bringen diese einen produktiven Vorteil oder blähen diese einfach nur den Code auf?
Im Endeffekt reicht C aus, man sollte nur Zeiger möglichst loswerden und dynamische Datentypen ala Listen etc in die Sprache festeinbauen.
Alles was darüber hinaus geht, inklusive OOP-Elementen wie Klassen, ist doch nicht notwendig. So bekommt man jedes Projekt fertig und ich könnte mir vorstellen, dass das eine oder andere aktuelle Großprojekt dadurch einiges an Komplexität verlieren würde, wenn man sich wirklich auf das zurückbesinnt, was man wirklich benötigt.
Und nein, ich ziele nicht auf C++ ab. Und auch nicht auf das jetzige C.
Perfekt wäre eine schlanke und klar formulierte Sprache, die die obigen Voraussetzungen erfüllt.
Ich könnte wetten, dass dadurch besserer Code generiert wird, da "Code der sich selber als Selbstzweck dient" mitsamt seinen unnötigen Abstraktionen entfällt.Back to the roots, aber nur teilweise.
Ich glaube, da war mal einer, der dachte sich genau das. Ich brauche noch ein paar kleine Features und ich kann auf Zeiger und so verzichten. Auf die Effizienz wollte er nicht verzichten. Er hat also einen Präcompiler geschrieben, welcher seinen Code in C übersetzt. Inzwischen gibt es richtige Compiler für diese Erweiterungen. Und die Erweiterungen sind immer mehr geworden. Aber im Prinzip ist es genau das und es hat sich super bewährt.
Und wer ihn noch nicht erkannt hat: ich meine Bjarne Stroustroup, der C++ erfunden hat.
Wenn man richtige Applikationen entwickelt, hat man mit C++ tatsächlich eine klar formulierte Sprache, die nicht als Selbstzweck dient. Im vergleich zu C funktionieren beispielsweise Strings genau so, wie ein Entwickler das erwartet. Auch Deine gewünschten dynamischen Listen sind in C++ drin.
Wenn Du OOP für unnötig hälst, verzichte einfach darauf. Ich halte Zeiger in den meisten Fällen in Applikationen für verzichtbar. Dynamische Datenstrukturen wie beispielsweise Listen, dynamische Vektoren oder Sets sind besser.
-
314159265358979 schrieb:
nachtfeuer schrieb:
Java steckt noch in den Kinderschuhen
Die Blütezeit ist spätestens seit Java 7 vorbei. Langsam merken die Devs, dass sie zu vieles falsch gemacht haben, und wollen Dinge wie Lambdas in das Unding reinquetschen. Dafür biegen sie die halbe Sprache mit Gewalt um. :xmas2:
Java 7 ist ja mal sowas von 'n Witz. Die neuen Sprachfeatures braucht man so gut wie nie. Yeah, 123_456_789 ist nun ein valides int-Literal!
deine aussage ist nur solange akzeptable, so lange du die wirklich interessanten features ignorierst.
aber wer java auf die sprache und syntax reduziert, hat eh was grundlegendes nicht verstanden. :xmas2:
-
lolhehe schrieb:
deine aussage ist nur solange akzeptable, so lange du die wirklich interessanten features ignorierst.
Welche wirklich interessanten Features? Type-Inference bei Initialisierungen?
lolhehe schrieb:
aber wer java auf die sprache und syntax reduziert, hat eh was grundlegendes nicht verstanden. :xmas2:
*gähn