WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 16.03.2002, 08:29   #1
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Ich sag's ja: Man sollte nicht mit C beginnen.

Die NICHT apodiktisches Reihenfolge ist, so oder so ähnlich:

Basic, Modula 2 und Pascal, Cobol und dann C

Es stinkt mir aber schon, immer wieder betonen zu müssen, daß das ein Weg ist, und nicht der,die,das Weg ! *schönlangsamverzweifel* *nichtseinemeinungausdrückendarf,warumdennnicht*

Egal, es ist also mein Weg gewesen und PL I und andere Sprachen sind genauso geeignet oder ungeeignet wie eben wieder andere. Nur darf sich das alles doch nicht in gänzlicher Beliebigkeit ergehen.

Von Basic nach C über diese Zwischenstufen macht Sinn, anderes, z.B. gleich mit C zu beginnen, erscheint mir undurchführbar zu sein, manche können es schaffen, viele - meiner Meinung nach fast alle - gehen über Basic und andere Sprachen an die Sache mit der Programmierung in C heran.

Wichtig ist es die Prinzipiellheit von Basic am eigenen Leib zu erfahren. Die Abgeschlossenheit der Variablen - sprich die Angesichertheit gegen Absturz und die mangelnde Zugriffsmöglichkeit - in Basic ist die Grundlage für das Vertrauen, daß es ohne diese Abgesichertheit und nach Überwindung von Irrungen und Wirrungen bezüglich der Zugriffsmöglichkeit auf Variablen in C auch und gerade in C möglich ist konsistent und zügig und effektiv und nachhaltig und mit wenig(er) Aufwand (als in seiner eigenen C Vergangenheit und in anderen Sprachen, das sowieso) zu programmieren.

Modula 2 wiederum und auch Pascal zeigen das Wesen des Unterprogramms in perfekter Art und Weise auf, zu perfekt - leider - für C Verhältnisse fehlt die Abgefracktheit von C, das Lapidare, das Unmittelbare, das Segensreiche ... durch eben das Weglassen von Ballast. Es gibt zuviel Strukturwörter end und end. und all die netten Klauseln und was es da alles gibt.

Cobol kommt aus der Geschäftswelt und behandelt dezimale Zahlen und sonst schon überhaupt nichts. Die binären Datentypen sind zum internen Rechnen vorgesehen. Die kaufmännische Variante von Zahlen repräsentieren die BCD-Zahlen oder besser gesagt, ein Datentyp, der BCD Datentyp.

Wichtig ist es, daß 1 immer 1 bleibt, das ist in Cobol so, deswegen ist Cobol grundverschieden von anderen Sprachen. In anderen Sprachen ist 1 ab einem gewissen Punkt (Zeitpunkt, rechnerische Grenze, Begrenztheit der Darstellung von - irrationalen - Zahlen) plötzlich nur mehr 0.99999999. Ist es jetzt klar, warum ich sage, Basic Modula 2 Cobol und irgendwann vielleicht einmal C ?

In Cobol wird eine Fraktion gebildet, kaufmännisch auf eine bestimmte Stellenanzahl vor oder nach dem Komma gerundet und danach ist auch die Differenz zu dieser Fraktion - zu diesem Teil des Ganzen - zugänglich.

Nämlich so:

GESAMT = 4850

FRAKTION = 4850 / 0.11111

DIFFERENZ = GESAMT - FRAKTION

Das ist der Unterschied von Cobol zu anderen Sprachen, wo ich plötzlich für die Fraktion 0.6666666 erhalte und für die Differenz 0.333333. Das Gesamte sollte 1 sein, ist aber nun 0.999999.

Der Grund warum alles so einfach ist in Cobol bezüglich kaufmännischer Rechnungen ist die Speicherung von Werten als BCD Zahlen und die - allerdings bewußt zu initiierende - Rundung, gemeint ist die 'kaufmännische Rundung', die zur endgültigen Vermeidung von irrationalen Ergebnissen wie auch überhaupt zu Unterlaufsergebnisproblemen jenseits der definierten Anzahl an Nachkommsatellen von Rechnungen führt.

Weiters ist es klar, daß man diese Dinge in C nicht benötigt - die BCD Zahlen, also der BCD Datentyp, ist hier gemeint. Eine kaufmännische Rundung auf eine bestimmte Stellenanzahl ist ausreichend und sogar hinreichend, wenn man weiß, daß der C Datentyp float wie double und long double nach Mantisse und Exponent gespeichert werden. Es gibt Assemblerbefehle, die Rundung nach einer bestimmten Stellenanzahl effektiv durchzuführen. Das ist die Aufgabe der - korrekten, sprich aufkommensarmen - Implementation des jeweiligen C Compilers.

Ein Satz zum Thread 'angewandter Unterricht':

Das Wort dir_list als Funktionsname zum Einlesen einer Liste an Verzeichniseinträgen (nicht rekursiv) ist DESWEGEN eine Baustelle, WEIL es ein Underscore (=einen Unterstrich) enthält. Die Bedeutung kommt ganz gut hinüber, also eine Verzeichnisliste einlesen, aber ReadDir ist die endgültige Fassung, eben Verzeichnis(liste) einlesen.

Das sind Nuancen, die schon eine Tragkraft haben. Wenn der _m3 natürlich daherkommt und immer Anwürfe bringt, lasse ich einen Erklärungssatz wie "Das Wort dir_list ..." nicht heraus, weil meine Erklärung mitsamt mir selbst zerpflückt wird mit halbwegs so zu verstehenden relativ persönlich werdenden Untergriffen. Auf so etwas steht sich's wahrscheinlich keiner hier im Forum, wenn man etwas sachlich erklären will, und ich auch nicht. Punktum. Ich bin dem _m3 auch nicht gram. Ich hoffe nur, daß ab jetzt mal ein bißchen "ein Toleranzpatent" für Leute wie den _m3 Einzug halten kann.

Nix für ungut, und Entschuldigung für die eigene Ungerechtigkeit ...

<sollte hier wahrscheinlich nicht fehlen> Kikakater
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:38 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag