das gilt nur in der Euklidischen Geometrie, und nicht immer ist der kürzeste auch der effektivste
(und nach "Weg" steht kein Komma ;) )
Druckbare Version
Sehr richtig. Es gibt doch verschiedene Anforderungen, die auch jeder unterschiedlich gewichtet.
Würdest du die Steilwand denn senkrecht hochklettern, oder die Serpentienen nebenan nehmen? Und unabhängig von deiner Entscheidung, was würdest du einem Rollstuhlfahrer empfehlen?
Ich schreibe aktuell mein erstes, "richtiges" Programm (bin eigentlich HW-Entwickler, kein Programmierer) und benutze das erste Mal das MVC-Pattern. Da schiebe ich extra Objekte hin und her, die nur dafür da sind, Daten zum präsentieren in der GUI zu kapseln. Damit ich eine saubere Trennung zwischen GUI und Datenmodel habe, und die GUI nicht die Möglichkeit hat irgendwelche Nutzdaten überschreiben zu können.
Da kommt natürlich viel Hin- und Herkopiererei zusammen, und auf einem Mikrocontroller würde ich so nicht programmieren. Da mein Programm aber auf normalen PCs/Laptops läuft ist es mir egal ob da jetzt ein paar hunderttausend Taktzyklen mehr bei der Ausführung benötigt werden und ob das Programm jetzt mit 30MB oder 50MB im Speicher rumliegt. Was mir jedoch viel wichtiger ist, ist idiotensichere Codelesbarkeit, eine gute Struktur in der ich mich auch nach einem Jahr wieder zurecht finde, und mich selber vom Scheißebauen abhalten (wie z.B. aus der GUI herraus irgendwelche Daten zu ändern). Denn das kann die Weiterentwicklung eines Programms erheblich behindern bishin zum kompletten Erliegen bringen.
Danke für das Feedback. Tatsächlich ist C++ formal nicht einfach nur eine Erweiterung von C, sondern gilt als eigenständige Programmiersprache. Es gibt Konstrukte, die nur in C funktionieren, aber nicht in C++.
Ich denke auch die Unterschiede von objektbasierter (C) und objektorientierter (C++) Programmierung könnten interessant für einen Beitrag sein.
Das Gesetz von Demeter ist sicher auch Interessant.
die Fälle, in denen C-Konstrukte nicht sofort in C++ funktionieren, kann man an 1 Hand abzählen - meist liegt es daran, dass z.B. C gewisse Ungenauigkeiten zulässt, die bei C++ nicht direkt funktionieren, weil es reservierte Keywords sind oder man Statements präzisieren muss, z.B. :
Das ist aber derart ausgesucht, dass es IMO vernachlässigbar ist.Zitat:
1) new is a keyword in C++ so can't be used as a variable name.
2) C++ doesn't allow automatic pointer conversion.
3) C++ doesn't allow you to call undeclared functions.
4) in C++ struct and typedef have the same scope so the same identifier can't be used for each, in C they are separate.
5) ISO C++ forbids converting a string constant to ‘char*’ )
Tatsächlich ist C++ definierbar als {C plus Objekte plus Stream plus Überladung}, und von daher ist C durchaus eine Untermenge von C++.
C würde ich als prozedural vs. C++ = objektorientiert definieren - C++ lässt aber auch weiterhin rein prozedurales Programmieren zu oder Mischformen (weil es die vormalige C-Syntax samt ihrer Möglichkeiten ebenfalls noch zulässt), anders als andere rein objektorientierte Sprachen wie Java.
Viele meiner prozeduralen C-Programme (mit wiringPi, openVG und pthread auf dem Raspi) lassen sich sowohl mit gcc (C99 oder C11 usw.) als auch - völlig unverändert - mit g++ (C++11/14) kompilieren und starten, und wenn man dann Objekte hinzunimmt, läuft alles nach wie vor mit C++ weiter (aber dann ntl nicht mehr mit ANSI-C).
Das ist die Entwicklung die ich bedauert habe.Zitat:
Da mein Programm aber auf normalen PCs/Laptops läuft ist es mir egal ob da jetzt ein paar hunderttausend Taktzyklen mehr bei der Ausführung benötigt werden und ob das Programm jetzt mit 30MB oder 50MB im Speicher rumliegt.
das halte ich angesichts der Vorteile bei Nutzerfreundlichkeit, der Programm-/Ausführungs-Sicherheit, Skalierbarkeit, Flexibilität/Veränderbarkeit und auch aus Wartungsgründen für reichlich überholt und weltfremd.
Warum nutzt man heute wohl auf PCs (Windows, Linux) und Androids objektorientierte Fenster- und Menütechnik als Userinterfaces statt reine Textterminals mit Programmzeilenparameter-Tohuwahobu?
Scheint mir auch so.Zitat:
reichlich überholt und weltfremd.
Wie mir mein Chef mal gesagt hat wird z.B. bei EIB das Programmieren nach Mausklicks und die Visualisierung dazu nach Anzahl verwendeter Objekte bezahlt.
Zudem musste ich auch alles ausdrucken, im Schnitt 800 Seiten die von der Software automatisch für den Auftraggeber nachvollziehbar erstellt wurden. Bei Erstellung der Visualisierung wurde ich angehalten es "aufzublasen".
Wenn ich mit einer 50MB Software ankomme klingelt die Kasse.
Das Ausdrucken hat 2 Tage gedauert in der Firma, wurde auch nach Anzahl Seiten bezahlt.
- - - Aktualisiert - - -
Die Beutelschneiderei ist ein Service der Hersteller für die Firmen.
Die ist nicht mehr zu trennen.
ich sehe dieses Forum vorwiegend für Hobbyuser, die sogar überwiegend Freeware und Public Domain Software/Hardware verwenden, und daher fallen hier Beutelschneiderei und Missbrauch weg, zugunsten von Funktionilät und optionalen, potentiellen Möglichkeiten (siehe Arduino, Borland C++ Builder, Raspberry Pi, openCV, qtcreator, gcc/g++)