Deutsch
Wünsche und Anregungen

Anzahl Zeilen in Profan

 

RGH
[quote:841da19663=Dietmar Horn]... bis er so fett geworden ist, daß er platzt, oder ich aufgeben muß, weil XProfan wegen der begrenzten Zahl von Codezeilen nicht mehr mitspielt.[/quote:841da19663]
Das wird nicht passieren! Ich experimentiere bereits mit einer Version, die in dieser Hinsicht nur durch den Speicher begrenzt wird, auch was die Anzahl der Variablen oder die Rekursion betrifft ...

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
13.12.2006  
 




Dietmar
Horn
Prima!

Allmählich ist ja bald zu befürchten, daß Du von den Borland-Anwälten Abmahnungen bekommen wirst, weil Du denen mit Deinem XProfan die Kunden wegschnappst. Und unlauteren Wettbewerb scheinst Du mit Deiner Preispolitik ebenfalls noch zu betreiben, Du böser Schlingel, Du! Denn wer wird sich denn dann noch das fette Borland-Delphi-Paket für über 4000 Euro kaufen (laut Borland-HP), wenn er Ähnliches, was den Funktionsumfang betrifft, zu über 90 Prozent auch für 60 Euro bekommen kann?

Ich befürchtete bereits, nur wegen der begrenzten Zahl von XProfan-Codezeilen in 1 - 2 - 3 Jahren aufgeben zu müssen. Zur Zeit sind es im XProfan-Manager ein bißchen was über 130000 Codezeilen - in kleinen Schritten kommt da aber fast täglich noch immer was hinzu.

Falls Du zu gegebener Zeit Beta-Tester mit etwas umfangreicheren Codes suchen solltest, würde ich mich wieder zur Verfügung stellen (so wie damals bei der letzten Erhöhung). Mail genügt!

Ich habe leider absolut keine Ahnung vom Compilerbau. Aber aus welchen Gründen mußte die Zeilenzahl denn überhaupt begrenzt werden?

Nach meinem Verständnis dürfte die Zeilenzahl dem Interpreter und Compiler doch schnurz-piep-egal sein, wenn er den Source in einer Schleife Zeile für Zeile abarbeit und ausführt oder in Maschinencode übersetzt, oder?

Gruß
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
14.12.2006  
 




RGH
[quote:2dfbd4e337=Dietmar Horn]Ich habe leider absolut keine Ahnung vom Compilerbau. Aber aus welchen Gründen mußte die Zeilenzahl denn überhaupt begrenzt werden?

Nach meinem Verständnis dürfte die Zeilenzahl dem Interpreter und Compiler doch schnurz-piep-egal sein, wenn er den Source in einer Schleife Zeile für Zeile abarbeit und ausführt oder in Maschinencode übersetzt, oder?[/quote:2dfbd4e337]
Das stimmt leider so nicht ganz. In den ersten Profan-Versioinen gab es GOTO und GOSUB und diese funktionierten natürlich mit Sprungzielen die nach der aktuellen Zeile folgten. Würde der Interpreter (oder Compiler) bei einem GOTO oder GOSUB erst den Code von der Platte einlesen müssen, bis er das entsprechende Label findet, würde das Ganze unerträglich langsam werden. Und selbst für Sprünge zurück müßte er dann wiederum die Zeilen aus der Datei lesen. Das wäre schlicht nicht praktikabel.

Also lesen Interpreter und Compiler den kompletten Code ein, um ihn dann abzuarbeiten. Die ersten Profan-Versionen wurden mit TurboPascal für Windows 1.0 und später Delphi 1 erzeugt. Unter 16 Bit war die Größe einer Datenstruktur auf 64kB (=2^16 Byte) beschränkt. Man konnte auf Speicher also nur in 64kB-Portionen (genannt Segmente) zugreifen. Um das Programm im Speicher zu halten, wählte ich also ein Array aus 16348 Zeigern (ein Zeiger benötigte auch damals schon 4 Byte: 2 für das Speichersegment und 2 für die Adresse in diesem) auf Strings, die damals maximal 255 Zeichen.lang sein konnten. Dynamische Arrays gab es in Delphi noch nicht. Die 16-Bit-Versionen von Profan konnten also maximal mit 16384 Zeilen zu je 255 Zeichen umgehen, was rein rechnerisch immerhin schon 4 MB große Programme ermöglichte.
(Gewiß wäre schon damals unter entsprechendem Aufwand eine dynamische Speicherverwaltung möglich gewesen, aber das wäre zum Einen auch recht langsam gewesen und zum anderen wollte ich mir diesen Aufwand nicht antun.)

Dann kamen Windows NT 3.5 und Windows 95 und damit die 32-Bit-Welt mit linear adressierbaren Speicher und dazu passende Delphi 2. Hier wurde jetzt die Begrenzung der Zeilenzahl durch meine Profan-Architektur, bzw. das Format des Compilates vorgegeben: Für compilierte Zeilennummern (Sprungadressen innerhalb des Codes) benutzte ich einen 2-Byte-Wert. Daher erhöhte sich zunächst die theoretische Grenze auf 65535 Zeilen.

Nachdem ein gewisser Programmierer sich nicht mehr auf 64k Zeilen disziplinieren konnte, schrieb ich Compiler und Runtime um, und verwandte für Sprungadressen im Compilat nun ein LongInt mit 4 Byte, wobei wir bei einer theoretischen Zeilenzahl von bis zu 2 Milliarden sind. (Delphi 2 kannte noch keine vorzeichenfreien 4-Byte-Integer.) Da Delphi 2 aber noch keine offenen Arrays (dynamische Arrays, die nicht bei Deklaration in der Größe festgelegt werden müssen) kannte, setzte ich die Zeilenzahl auf die derzeit gültigen 256k Zeilen fest. (Das Array mit 256k Zeigern belegt beim Programmstart immerhin bereits 1 MB Speicher.) So entstand ein XProfan 8 XXL, das jener Programmierer (und nach dessen Test auch die Kunden mit Update-Abo) erhielt. In XProfan 9 wurde diese Erweiterung dann Allgemeingut.

Inzwischen bin ich über Delphi 5 zu TurboDelphi aufgestiegen und Delphi verfügt nun über erstaunlich schnelle offene Arrays. Damit kann ich mein XProfan nun mit vertretbarem Aufwand umstellen. Das hat neben der nun unbegrenzten (im Rahmen des verfügbaren Speichers) Zeilenzahl den Vorteil, daß Programme, die weniger als 256k Zeilen haben, nun weniger Speicher beanspruchen.

Ähnliches wie für die Zeilenzahl gilt auch für die Zahl der Variablen eines Typs. Auch diese wird vermutlich künftig unbegrenzt sein. Bei ersten Tests konnte ich keine signifikante Verlangsamung von XProfan durch die neue Dynamik feststellen, aber eine deutliche Reduzierung des Speicherverbrauchs von Programmen, die die bisherigen Grenzen nicht ausschöpfen. XProfed benötigt derzeit etwa 35 MB, in meiner dynamischen Testversion nur noch 14 MB.

Und was das Testen betrifft, werde ich sicher wieder gerne auf Dich zurückkommen. Aber noch bin ich nicht ganz so weit ...

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
14.12.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.756 Betrachtungen

Unbenanntvor 0 min.
RudiB.26.04.2020
holmol9330.05.2013

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

RGH (2x)
Dietmar Horn (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie