Entwickler-Ecke

Open Source Projekte - Gödelnummer


Fiete - Sa 15.02.20 14:26
Titel: Gödelnummer
Moin,
das Programm berechnet zu einem Text die Gödelnummer bzw. wird durch Primfaktorzerlegung der Text aus einer Gödelnummer rekonstruiert.
GödelNummer
Eine Gödelnummer ist eine natürliche Zahl, die einem Wort einer formalen Sprache nach einem bestimmten Verfahren zugeordnet wird und dieses Wort eindeutig kennzeichnet. Ein solches Verfahren bezeichnet man als Gödelisierung. Die Bezeichnungen beziehen sich auf Kurt Gödel, der erstmals ein solches Verfahren angab, um seinen Unvollständigkeitssatz zu beweisen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
unit LangZahlRechnen;
interface
 uses StdCtrls, SysUtils;

 const T=1000000000;BL=9;
 type TFeld=Array of Int64;

// IntegerVariable B umwandeln in ein Array vom Typ TFeld
 procedure LangInt(var A:TFeld;B:Integer);
 function LangKleiner(A,B:TFeld):Boolean; // A<B ?
 function LangGleich(A,B:TFeld):Boolean;  // A=B ?
 procedure LangRead(Zahl:String;var Z:TFeld); // Zahl eingeben
 procedure LangAdd(var S:TFeld;A,B:TFeld);  // S=A+B
 procedure LangSub(var D:TFeld;A,B:TFeld);  // D=A-B
 procedure LangMul(var E:TFeld;A,B:TFeld);  // E=A*B
 procedure LangDivision(var E,R:TFeld;A,B:TFeld); // E=A div B; R= A mod B
 procedure LangAusgabe(LMemo:TMemo;S:TFeld); // Ergebnis S im Memo ausgeben
 procedure LangWurzel(var XA:TFeld;A:TFeld); // W=trunc(sqrt(A))
 procedure LangPotenz(var E:TFeld;B:TFeld;Expo:Cardinal); // E:=B^Expo
Aktuell arbeitet das Programm mit 78498 Primzahlen, die Unit LangZahlRechnen enthält die Methoden zur Berechnung.

Unter Service sind theoretische Hinweise, Grundbegrife zu formalen Sprachen und zum Algorithmusbegriff.

Das Alphabet besteht aus 101 Zeichen.

Viel Spaß beim Testen und Studieren
Gruß Fiete

Version 2: Unter <Rechenart> kann zwischen Primzahl- oder Dualzahlcodierung gewählt werden


Delphi-Laie - Sa 15.02.20 23:35

Das finde ich sehr interessant!

Am meisten interessiert mich allerdings die Unit für das Rechnen mit langen Zahlen. Ich schrieb mal einen "Langzahlentaschenrechner" (auch hier im Forum zu finden), der vor allem meiner Neugier geschuldet war und ist, wie leistungsfähig die einzelnen, in Pascal geschriebenen und im Internet zu findenden Langzahlenbibliotheken sind (ja, die in den C-Sprachen geschriebenen sind anzunehmenderweise tendenziell noch schneller). Leider dümpelt besagtes Projekt seit längerem vor sich hin (ganz eingeschlafen ist es jedoch noch nicht), weil mich mein Programmierhauptprojekt, mit dem ich endlich Ordnung in der Welt schaffen möchte (kleiner Scherz), derzeit noch sehr in seinen Bann zieht.

Mal noch eine Frage, Fiete: Das, was in den beiden RTF-Dateien zu finden ist, ist oder besser war das bereits Thema im Informatikstudium (ich vermute bis befürchte es), oder hast Du Dir das erst später erarbeitet?


jaenicke - So 16.02.20 09:12

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Mal noch eine Frage, Fiete: Das, was in den beiden RTF-Dateien zu finden ist, ist oder besser war das bereits Thema im Informatikstudium (ich vermute bis befürchte es), oder hast Du Dir das erst später erarbeitet?
Ja, ist es. Wenn ich mich richtig erinnere, war beides im Kurs "Theoretische Grundlagen der Informatik 2" im zweiten Semester Thema.


Gausi - So 16.02.20 10:20

Ja, die "Grundbegriffe"-Datei über formale Sprachen ist so ziemlich Standard im Informatikstudium. Sieht auf den ersten Blick für Laien (kein Wortwitz beabsichtigt!) im Bereich theoretische Informatik vermutlich furchtbar abschreckend aus, aber das liegt nur am "Vokabular", das dort verwendet wird. Dinge wie G = (\Phi, \Sigma, R, S ) sind da dann irgendwann völlig alltäglich. Der Inhalt ist relativ leicht zu verstehen, und wenn man dann zu "praktischen" Dingen wie Compilerbau geht, baucht man das.

Das ist einfach nur die klare Sprache der Mathematik, die dort verwendet wird. Wenn man die halbwegs draufhat und versteht, verlieren solche Zeichenwüsten ihren Schrecken. Wobei RTF dafür ja auch nicht das ideale Format ist.

Mein Prof hat uns früher z.B. immer eingebleut:
Zitat:
Wenn Sie in einer Prüfung gefragt werden, was eine Turingmaschine ist, dann antworten Sie mit "Das ist ein 5-Tupel". Punkt. Im Anschluss erläutern Sie die Bedeutung der einzelnen Elemente im Tupel, und ggf. die Bedeutung für den Begriff der Berechenbarkeit. Fangen Sie nicht an mit "Ja, also, da hat man ein Band und da liest ein Kopf die Eingabe." Das ist Murks. ;-)

Andere definieren das auch als 7-Tupel - das ist etwas Geschmackssache, was man in das Tupel direkt rein nimmt, und was man in die Erläuterungen steckt.

@Fiete: Super Sache! :zustimm:


Delphi-Laie - So 16.02.20 13:35

Dank Euch beiden!

Ja, das ahnte ich: Ein Informatikstudium ist eben in gewisser Weise ein "anderes Mathematikstudium". Kein Wunder, daß so viele daran scheitern, weil denen das vorab nicht klar ist.


Fiete - So 16.02.20 15:11

Moin Delphi-Laie,
alles was unter <Service> abrufbar ist habe ich im Informatikstudium kennen und schätzen gelernt.
Die Ursache liegt darin, dass ich das Mathematikstudium bis zum Vordiplom durchgehalten habe.
Professor Collatz(Uni HH)) stellte 1970 in seiner Vorlesung Funktionalanalysis uns den neuen Studiengang Informatik vor.
Die reine Mathematik war für mich zu abstrakt, die theoretische Informatik dagegen ein Genuss.
In meiner Diplomarbeit habe ich mich mit Klammersprachen beschäftigt.
1974 verließen wir die Uni als zweiter Jahrgang das Institut.
1971 wurde das Institut für Informatik eingeweiht, einer der Redner war Prof. Joseph Weizenbaum.
Mehr zu meinen Wurzeln:
https://www.inf.uni-hamburg.de/home/about/history.html
Übrigens: Informatik ist nicht programmieren!


Delphi-Laie - So 16.02.20 15:42

user profile iconFiete hat folgendes geschrieben Zum zitierten Posting springen:
Übrigens: Informatik ist nicht programmieren!


Natürlich nicht. Wer behauptet denn so etwas? Also ich tat es hier nicht.

Ich bin der Meinung, daß Computer in einem Informatikunterricht bzw. -studium kaum bis gar nichts zu suchen haben. Höchstens zum Schluß bei der programmatischen Umsetzung der Ideen, um deren Korrektheit zu verifizieren bzw. doch irgendwelche konzeptionellen Fehler zu finden.


Fiete - So 16.02.20 17:26

Moin Delphi-Laie,
Zitat:
Übrigens: Informatik ist nicht programmieren!

Dies ist eine allgemeine Bemerkung, hat mit Dir persönlich natürlich nichts zu tun.
Diesen Hinweis haben wird 1973 den Anfängern mit auf den Weg gegeben.


Fiete - Di 18.02.20 18:14

Moin,
es gibt eine neue Version zur Berechnung einer Gödelnummer.
Gruß Fiete