Hallo,
Wenns nach dem gefallen geht, müsste man eigentlich eine Sprache wie Pascal oder auch Modula nehmen. Diese sind sehr gut lesbar, sehr klar und relativ nah an der menschlichen Ausdrucksweise ohne dabei aber übermäßig viel Schreibarbeit zu erzeugen.
Ich persönlich habe früher (bevor ich C gelernt habe) reht viel mit Pascal (für DOS) gearbeitet
Das kann ja dann fast nur Turbo Pascal gewesen sein. :-)
und C gefällt mir besser. Das liegt vor allem daran, dass ich bei C deutlich mehr 'Luft' habe, da die ganzen Konstrukte nicht den kompletten Bildschirm zukleistern.
Du meinst die Übersichtlichkeit ist besser ... ja bisschen was dran ist schon.
Allerdings verführt C mit seinen Abkürzungsmöglichkeiten auch dazu letzlich unleserlichen Code zu schreiben. Man muss viel mehr Disziplin an den Tag legen und deutlich mehr dokumentieren.
So kann ich mich schneller am Code orientieren und erkennen, was dieser macht (sofern er ordentlich eingerückt ist, versteht sich). Bei Pascal etc. fällt mir das deutlich schwerer - und daher brauche ich auch länger, um in Pascal etwas zu programmieren, was nicht unbedingt an der Schreibarbeit liegt.
Dafür sind viele Dinge in C katastrophal gelöst.
Das fängt schon bei ganz simplen Dingen an wie Arrays. So beginnen Arrays in C immer mit 0 auch wenn ich das gar nicht haben will.
In Pascal kann ich sagen Array[5..15] usw. falls ich das mal brauche (das konnte sogar BASIC schon) und vorallem ist auch gleich klar wenn man sich den Code anschaut, wo dass Array beginnt und wo es endet.
Die Splittung von Headerdateien und Programmdateien bringt ebenfalls viele Probleme mitsich (doppelter Pflegeaufwand) und tragen nicht gerade zur Übersichtlichkeit bei.
C kennt nicht die häufig benötigten Strings sondern nur nullterminierte Array of Char. Das ist fehleranfällig und schon einfache Operationen wie das Feststellen der Länge eines Strings nötigt mich die Bytes zu zählen (was auch nicht gerade positiv für die Perforamce ist).
Mengen und Bereiche fehlen gänzlich in C.
Ich kann nicht einfach mal sagen
if ch in ['ä','ö','ü','ß','Ä','Ö','Ü'] usw.
sondern muss immer
if (ch=='ä' || ch=='ö' || ch=='ü' || ch=='ß' || ch=='Ä' || ch=='Ö' || ch=='Ü')
Das soll übersichtlicher sein?
Das fehlen von Bereichen macht Programme fehleranfällig. In Pascal kann ich sagen:
Type jahreszahlen = 1970..2500
Und die Realisierung von Aufzählungstypen in C ist ein Witz:
enum wochentag = {Mo, Di, Mi, Do, Fr, Sa, So};
...
wochentag=Di; //funktioniert
wochentag=2; // funktioniert auch!!!
Da kann ich gleich mit int-Konstanten arbeiten. Da weiß ich wenigstens, woran ich bin.
Letzlich ist es aber Geschmacksfrage. Und über Geschmack läßt sich bekanntlich streiten. :-)
Gruß
MichaelB
PS: In Java (oder auch C#) hat man zumindest einige Dinge etwas besser gelöst als in C. Trotzdem hat man eine eine an C angelehnte Syntax. Ich könnte mir vorstellen, dass das eine interessante Sprache für Dich wäre.