MatzeA: Was war als erstes da?

Beitrag lesen

Servus,

Ein Schalter ist ein Bauteil. Nicht mehr, nicht weniger. Es ist kein Computer.

Genauso wie ein Transistor oder eine entsprechend geschaltene Diode.

Meines wissens war der erste "Computer" bestehend aus Röhren, was letzendlich von der Funktionsweise nicht anderes war als eine vielzahl verschaltener Schütze.

Da liegst du komplett falsch. Nach Historikermeinung ist der Z1 von Konrad Zuse der erste wirkliche Computer. Und der arbeitete mechanisch.

Ja gut mag sein, dann war es doch eine mechanische Maschine.
Geschichte war wohl nie meine stärke :-)

Der erste elektrische Rechner, der Z3, war im Prinzip nur eine Umsetzung des Z1 mit mechanischen Relais. Also auch noch keine Röhren. Die kamen erst danach.

Ob man nun an der Röhre drauf rumreiten muss?
Ging ohnehin erst mal um die Mechanik.

Kennzeichen einer Programmiersprache ist, dass Anweisungslisten eben nicht linear abgearbeitet werden, sondern dass es im Programmfluß auch Entscheidungen basierend auf Vergleichen gibt, welche den Programmfluß dann durch Sprünge in der Anweisungsliste individuell gestalten.

Wo siehst Du nun das Problem, soetwas mechanisch abzubilden?
Ich sehe da keines und wenn man nun den Z1 hernimmt, wobei ich pers. glaube, es gab schon vorher gute ansätze hierzu, steht immer noch die Mechanik im vordergrund die einige Aufgaben übernimmt.

Ich muss natürlich zugeben, dass ich mich mit dem Z1 nicht sonderlich gut auskenne. Die ersten Prozessoren mit denen ich gearbeitet habe, war ab dem Z80.

Aber das ändert nichts an der Tatsache, dass irgendjemand sich mal überlegen mußte, wie er diese Schalter zusammenbaut, und damit er sie sinnvoll zusammenbauen kann, muß er wissen, was er damit überhaupt machen will.

Das ist durchaus richtig, auch mit Deinen schleifen und bedingungen hast Du vollkomen recht.

Dann nehmen wir einfachste Steuerungen und Regelungen mit ins Boot, und Du hast Deine Schleifen und Abfragen.
Entsprechend verkabelt mit den Senoseren hast Du auch entsprechende Zeiger und Sprünge, die je nach anforderung etwas anderes bewirken können und somit gernau das tun, was Du als Programm eben definiert hast.

Einfachstes Beispiel: Wasserkraftwerk.

Zum einen wird anhand des Netzes und der Drehzah der Torbine das einspeisen ins Stromnetz geregelt.
Damit der Lastschütz nicht gerade in Flammen aufgeht wird natürlich zum optimalsten Zeitpunkt die Stromzuführung geschlossen.

Die verschiedenen Wasserstände werden ständig kontroliert.
Schleussen geöffnet und geschlossen.
Gegebenfalls bei Hochwasser z.B. das Turbinenhaus geschlossen.

Natürlich prüft ein Wasserhöhen Messer, ob der Durchfluss noch gross genug ist und betreibt unabhängig den Rechenreiniger.

Selbstverständich habe ich nur mal knapp und grob geschildert was da abläuft.
Eine entscheidung der Schaltkreise anhand Wasserstand zu hoch zu niedrig.... kann man wohl als if Schleife gelten lassen.
Die dadurch geaenderte Funktion oder Aufgabe, dürfte man doch als "Sprung" oder Zeiger in eine andere Funktionsweise gelten lassen oder?

Und wozu brauche ich den nun wirklich? Es ist auch nur ein Bauteil. Mal abgesehen davon, dass ich so einem Taktgeber nicht vertrauen würde, allein aus mechanischen Gründen nicht. :)

Ja das ist war zuverlässig st der bestimmt nicht. :-)

Im übrigen gehen die Forschungen bei Mikroprozessoren dahin, asynchrone Einheite zu entwickeln. Der zentrale Takt fällt also weg, es wird in den einzelnen Einheiten nur dann gearbeitet, wenn Arbeit da ist. Soll toll für die Energiebilanz sein und ganz viel Strom sparen.

»»

Da sind wir aber noch nicht und die Frage, was war vorher da, Sprache oder Interpreter wird damit wohl nicht beantwortet werden.

Und für das zweite Programm baust du wieder eine Maschine gleicher Größenordnung.

Was ist bei der Programierung? Wie oft wird das gleiche zig mal neu gemacht?

Die Softwareentwicklung ist auch nicht immer optimal.

Da ist das Zusammenbauen entsprechender Maschinen aber kein Programmieren. Sondern das Festlegen, was zu passieren hat, das ist das Programmieren. Und das geschieht zweifelsfrei vor dem Bau.

Richtig, nur bei obigem Beispiel mit dem Wasserwerk, wird wohl wirklich keiner der Ingeneure auch nur annähernd "Programieren".
Da sitzt der Entwickler tatsächlich mit dem Schaltpla bzw. einem Kontakt oder Funktionsplan da und baut sich das ganze entsprechend zusammen.

Keine Zeile Code.. aber hinterher trotzdem ein Programm, das "sebständig" ein System am laufen hält. Das nach vorgaben und entscheidung selbst erkennt und regelt.

Die Definition einer Programmiersprache ist, dass sie Abfragen (IF) und Sprünge kennt. Deswegen ist HTML keine Programmiersprache (die Conditional Comments für den IE sind zwar Bedingungen, aber es gibt keine Sprünge, um Dinge mehrfach oder unendlich zu wiederholen).

Sie oben.

Da es hierbei keinerlei "natürliche Vorgaben" gibt, kann man die Befehle frei definieren. Nur: Tun muß man es natürlich, und zwar vor dem Bau, nicht hinterher. Also: Die Programmiersprache entsteht ganz bestimmt vor dem eigentlichen real existierenden Rechner.

Ganz sicher? Du täuscht Dich mit Sicherheit.
Jeder Autmomat, der für sich Messwerte ermittelt, stellt schon ein System dar, das zwar beschränkte aufgaben übernehmen kann, diese jedoch "selbständig" ausführt.
Dass hierbei entscheidungen fallen, das System bzw. der automat anhand randkriterien eine Entscheidung fällen muss ist ohnehin klar.

Das dahinter Abfragen stecken und letzendlich Zeiger auf weitere / andere Funktionen dürfte einleuchten.

Mathematik ist eine mögliche Form der Programmiersprache. Weil sie, wenn auch ungewohnt, Bedingungen und Sprünge kennt.

Für das Beispiel des "Taschenrechners" würde es dann stimmen.

Und dass Mathematik garantiert vor der ersten Rechenmaschine da war, ist wohl unbestritten.

Stimmt.

Dann überzeuge dich selbst von den Fähigkeiten des Z1.

Denk mal über das Wasserkraft Beispiel nach und Du wirst festellen, dass Deine bisher gebrachte Definition einer Programiersprache auf obigen Anwendungsfall wunderbar passt.

Gruss Matze :-))

PS.  Grüble nicht so lange.