Maximale Grösse vom Code
Maximale Grösse vom Code
Hallole Ihr,
ich habe eine Frage bezüglich der maximalen Grösse vom Code. Gibt es da eine Grenze?
Meiner hat gerade 40000 Zeilen - ca. 2,4 MB gross, und es soll noch was dazukommen.
Wie gross sind denn eure grössten Programme?
Danke schon mal im Vorraus.
ich habe eine Frage bezüglich der maximalen Grösse vom Code. Gibt es da eine Grenze?
Meiner hat gerade 40000 Zeilen - ca. 2,4 MB gross, und es soll noch was dazukommen.
Wie gross sind denn eure grössten Programme?
Danke schon mal im Vorraus.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
es gab mal vor einiger Zeit ne Bugmeldung, dass die IDE oder der Compiler
ab einer gewissen Quellcode-größe Schwierigkeiten macht.
Ich weiß nicht, ob das Problem behoben ist, oder wieweit es lösbar war,
aber bei über 10K zeilen würd ich mir echt üerlegen, in etliche Includes auszulagern.
..wenn es technisch schwierig wird, in Includes auszulagern,
hat man oft schon etliche Schwachpunkte seines Codes entlarvt.
wenn man wirklich soviel Code programmiert, muss er eigentlich
sehr streng strukturiert sein, um überblickbar zu bleiben....
ab einer gewissen Quellcode-größe Schwierigkeiten macht.
Ich weiß nicht, ob das Problem behoben ist, oder wieweit es lösbar war,
aber bei über 10K zeilen würd ich mir echt üerlegen, in etliche Includes auszulagern.
..wenn es technisch schwierig wird, in Includes auszulagern,
hat man oft schon etliche Schwachpunkte seines Codes entlarvt.
wenn man wirklich soviel Code programmiert, muss er eigentlich
sehr streng strukturiert sein, um überblickbar zu bleiben....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Mal zum Vergleich: Mein aktuelles Projekte hat bisher um die 5100 Zeilen
inkl. Kommentare und Leerzeilen. Aber trotzdem ist es in 14 Includes
unterteilt. Die größte Include ist die GUI.pbi, die kleinste die main.pbi:
Ich finde, mehr muss auch nicht in einer Main stehen.
inkl. Kommentare und Leerzeilen. Aber trotzdem ist es in 14 Includes
unterteilt. Die größte Include ist die GUI.pbi, die kleinste die main.pbi:
Code: Alles auswählen
EnableExplicit
;LArray
;PArray
;SArray
;StringPointer
XIncludeFile "common.pbi"
XIncludeFile "Misc.pbi"
XIncludeFile "File.pbi"
XIncludeFile "DateEx.pbi"
XIncludeFile "Artist.pbi"
XIncludeFile "Song.pbi"
XIncludeFile "Setlist.pbi"
XIncludeFile "Termin.pbi"
XIncludeFile "GUI.pbi"
Define EventID.l
Song_LoadDB() ;Läd alle Artisten und Songs anhand der Verzeichnisstruktur
Setlist_LoadDB() ;Läd alle Setlisten
Termin_LoadDB() ;Läd alle Termine
Song_RenewIDs() ;Ändert die Links zu Setlisten, auf die neue Setlisten-IDs (Pointer)
Setlist_RenewIDs() ;Ändert die Links zu Songs und Terminen auf die neuen IDs (Pointer)
Termin_RenewIDs() ;Ändert die Links zu Setlisten und Kasse auf die neuen IDs (Pointer)
GUI_Main_Open()
Repeat
EventID = WaitWindowEvent(15)
GUI_Main_Event(EventID)
GUI_Song_Edit_Event(EventID)
GUI_Setlist_Edit_Event(EventID)
GUI_SC_Event(EventID)
GUI_Artist_Edit_Event(EventID)
GUI_Termin_Edit_Event(EventID)
Until GUI_Quit
Song_SaveDB()
Setlist_SaveDB()
Termin_SaveDB()
Jo, den Code strukturieren ist schon wichtig finde ich.
Weil ich immer so viel vergesse
und auch zeitweise ein Projekt liegen lassen muss, komme ich persönlich ohne gute Strukturierung nicht sehr weit. 
Meine Projekte teile ich meist pro Fenster oder Funktionsgruppe in verschiedene Includes auf. Allgemeine Prozeduren, die in mehreren Fenstern aufgerufen werden, bekommen ein weiteres, eigenes Includefile.
Die Eventbehandlung versuche ich komplett vom PureForm Designer handlen zu lassen und inkludiere die erzeugte Datei einfach nur. Anpassungen daran versuche ich alle als code-injection in PureForm zu hinterlegen. Naja, den PureForm nutze ich erst kurz, von daher sind meine workflows dort selbst alle noch "beta".
Die einzelenen Prozeduren bekommen bei mir alle einen kurzen Header, damit man auch im zugeklappten Zustand sieht was sie tut, welche Argumente sie erwartet und welchen Wert sie zurückgibt.
Der main-Quellcode bekommt einen großzügigen Header, der alle wichtigen Daten enthält um auch nach 4 Monaten wieder in das Projekt einsteigen zu können. Und natürlich viele Kommentare im Code, ansonsten machste dich tot.
Darüber hinaus erstelle ich für ein größeres Projekt eine Projektbeschreibung, die die Programmfunktion, die geplanten Arbeitsschritte (Programmnutzung) und die grobe Umsetzung in PB beschreibt. Etwaige eigene Dateiformate für Datendateien, die erzeugt oder gelesen werden, sind ebenfalls in der Projektdoku beschrieben.
Hier mal ein Beispielheader für das mainfile:
So sehen die Header für Prozeduren aus:
Bei jedem Projekt versuche ich meine Strukturierung und die Kommentierung noch weiter zu verbessern.
Allerdings habe ich noch kein so grosses Projekt gehabt, daß da 40.000 Zeilen bei rauskommen.
Das größte Projekt (noch in Arbeit) hat mit allen Includes 52 KB Sourcecode und ist auf 8 Dateien verteilt.
Markus
Weil ich immer so viel vergesse


Meine Projekte teile ich meist pro Fenster oder Funktionsgruppe in verschiedene Includes auf. Allgemeine Prozeduren, die in mehreren Fenstern aufgerufen werden, bekommen ein weiteres, eigenes Includefile.
Die Eventbehandlung versuche ich komplett vom PureForm Designer handlen zu lassen und inkludiere die erzeugte Datei einfach nur. Anpassungen daran versuche ich alle als code-injection in PureForm zu hinterlegen. Naja, den PureForm nutze ich erst kurz, von daher sind meine workflows dort selbst alle noch "beta".

Die einzelenen Prozeduren bekommen bei mir alle einen kurzen Header, damit man auch im zugeklappten Zustand sieht was sie tut, welche Argumente sie erwartet und welchen Wert sie zurückgibt.
Der main-Quellcode bekommt einen großzügigen Header, der alle wichtigen Daten enthält um auch nach 4 Monaten wieder in das Projekt einsteigen zu können. Und natürlich viele Kommentare im Code, ansonsten machste dich tot.

Darüber hinaus erstelle ich für ein größeres Projekt eine Projektbeschreibung, die die Programmfunktion, die geplanten Arbeitsschritte (Programmnutzung) und die grobe Umsetzung in PB beschreibt. Etwaige eigene Dateiformate für Datendateien, die erzeugt oder gelesen werden, sind ebenfalls in der Projektdoku beschrieben.
Hier mal ein Beispielheader für das mainfile:
Code: Alles auswählen
;*************************************************************************
;*
;* GiMeG - Gisi's Mencoder GUI
;* Grafisches Interface für den Video/Audio-Encoder "Mencoder"
;* (http://www.mplayerhq.hu)
;*
;*************************************************************************
;*
;* Title : GiMeG
;* Version : 0.01
;* Date : xx.xx.2007
;* Autor: : xxx
;* Programming lang. : Purebasic 4.10 beta3
;* -----------------------------------------------------------------------
;* BESCHREIBUNG:
;*
;* GiMeG ist ein Frontend für den Kommandozeilenorientierten Mediakonverter
;* "Mencoder" und hauptsächlich für die grafische Bedienung bzgl der Konvertierung
;* von Videos gedacht.
;*
[... usw... ]
;* -----------------------------------------------------------------------
;*
;* -----------------------------------------------------------------------
;* Historie:
;* 0.01 - xx.xx.07:
;* Erste Version
;*
;*
;*************************************************************************
Code: Alles auswählen
;*************************************************************************
;* Procedurename: Set_AusgabePfad()
;* Description : Hängt gedropte Filenamen an das Listview an
;* Arguments : -
;* Results : -
;*************************************************************************
Allerdings habe ich noch kein so grosses Projekt gehabt, daß da 40.000 Zeilen bei rauskommen.

Das größte Projekt (noch in Arbeit) hat mit allen Includes 52 KB Sourcecode und ist auf 8 Dateien verteilt.
Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Wäre die 3.94 IDE nicht so lahmarschig beim Laden eines 50 KB-Codes mit 3.000 Zeilen und mehr gewesen (auch auf einem 3,4 GHz Rechner!), wäre ich vermutlich immernoch dabei, Enumerations, Gadgets, Macros und Proceduren in eine Main File zu packen...
Insofern habe ich es 3.94 zu verdanken, dass ich es mir angewöhnt habe, Teile des Codes auszulagern.
Alles lagere ich jedoch nicht aus, denn es gibt ja noch das Code-Folding. Was ich zum Beispiel auslagere sind allegemeine Prozeduren, Enumerations, und sonstige Kleinigkeiten, die man zwar braucht, an die man aber selten ranmuss.
Mittlerweile bin ich aber wieder einen Schritt zurückgegangen: Ich lagere Codes nur dann aus, wenn es länger dauert, einen gefalteten Bereich aufzuklappen und zur passenden Stellle zu scrollen
Was ich mal toll fänd, ist, wenn man wie in Word einen Fensterteiler einführt: Der Editor kann frei wählbar geteilt werden, man hat also 2x denselben Source in einem Panel und kann in beiden Bereichen unabhängig voneinander scrollen und schreiben.
Insofern habe ich es 3.94 zu verdanken, dass ich es mir angewöhnt habe, Teile des Codes auszulagern.
Alles lagere ich jedoch nicht aus, denn es gibt ja noch das Code-Folding. Was ich zum Beispiel auslagere sind allegemeine Prozeduren, Enumerations, und sonstige Kleinigkeiten, die man zwar braucht, an die man aber selten ranmuss.
Mittlerweile bin ich aber wieder einen Schritt zurückgegangen: Ich lagere Codes nur dann aus, wenn es länger dauert, einen gefalteten Bereich aufzuklappen und zur passenden Stellle zu scrollen

Was ich mal toll fänd, ist, wenn man wie in Word einen Fensterteiler einführt: Der Editor kann frei wählbar geteilt werden, man hat also 2x denselben Source in einem Panel und kann in beiden Bereichen unabhängig voneinander scrollen und schreiben.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Das hatte ich (neben anderern Vorschlägen) vor nem 1/2 Jahr im engl. Forum mal angemerkt. Wurde aber leider bisher nicht umgesetzt.AND51 hat geschrieben:Was ich mal toll fänd, ist, wenn man wie in Word einen Fensterteiler einführt: Der Editor kann frei wählbar geteilt werden, man hat also 2x denselben Source in einem Panel und kann in beiden Bereichen unabhängig voneinander scrollen und schreiben.
Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Theoretisch gibt´s eigentlich keine Grenze, seitdem PB in 4.0 unbegrenzte Strings verpasst bekommen hat, aber ich würd mal schätzen, dass sowohl Fred als auch Freak in GUI und Compiler für die Längenangabe des Codes Longs benutzen. Somit darfst du maximal 2.147.483.646 Zeichen benutzen. Aber keine Angst, bei etwa 100 Zeichen pro zeile darfst du noch 21.434.836
Zeilen schreiben. Viel Spass
PS: PGS lag glaub ich mal bei 70000 Zeilen. Aber das gibt´s ja leider nicht mehr. :'-(
Zeilen schreiben. Viel Spass

PS: PGS lag glaub ich mal bei 70000 Zeilen. Aber das gibt´s ja leider nicht mehr. :'-(
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden 
