PB-STL (in Entwicklung - Brauche eure Meinungen)

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von Josef Sniatecki »

Hallo Community,

Ich weiß zwar nicht, ob schon jemand auf die Idee gekommen ist, eine ganze Bibliothek von Templates zu programmieren und diese sogar schon mal hier bereitgestellt hat, aber trotzdem nehme ich das Risiko auf und möchte auch mein Projekt hier erwähnen. :)

Beschreibung: Meine Bibliothek soll ähnlich wie die STL (standard template library) in C++ fungieren. Dabei steht jedes Template (eine PBI-Quelldatei) mit einer Hauptquelldatei in Verbindung, die standarisierte Makros, Konstanten und auch Prozeduren beinhaltet. Jedes Template ist so aufgebaut, dass es für jede Plattform verfügbar ist. Natürlich habe ich jetzt nur alles für Windows programmiert, jedoch habe ich schön auf "CompilerSelect"s geachtet (dazu später).

Welche Befehle sollen da noch drinn sein?: Natürlich ist die native PB-Lib sehr umfangreich und ich möchte auch darüber nicht klagen, im Gegenteil. Jedoch gibt es da die ein oder anderen Befehlssammlungen, die meist an eine einzelne Plattform gebunden sind, oder auch einfach nur für eine mit PB entwickelte Engine gedacht sind.

Nun zu euch: Sobald das ganze startbereit ist und ich die nachfolgenden Fragen geklärt habe, würde ich mir sowas wie eine Sammlung von euren Engines und Prozeduren vorstellen. Ihr kennt das wahrscheinlich selbst, wenn ihr in das CodeArchiv geht oder hier im Board sucht. Meistens muss man sich selbst die Mühe geben, um eine Prozedur aus einem Snippet zu basteln. Daher die Idee mit der STL.

Meine Fragen: Da natürlich jeder User seinen eigenen Programmierstil besitzt, muss ich auch wissen, wie ich die Templates, die für den Anfang zustehen, genau aussehen sollen.

1. Der Quelllcodekopf:

Code: Alles auswählen

;**************************************************************
;     Dateiname ohne Erweiterung
;
; Authors: Name [, anderer Name ...]
; Copyright (c) 2010 Josef Sniatecki
;**************************************************************
;DEUTSCH:
;  Beschreibung
;ENGLISH:
;  Description
;...
Unter "Authors" kämen alle Autoren, die sich an dem jeweiligen Quellocode beteiligt haben. Jedoch bin ich mir nun nicht mit dem Copyright sicher. Wenn da jetzt mehrere User dran gearbeitet haben, wer steht dann nach dem Copyright? Bin ja jetzt wirklich kein Jurist bei sowas. :mrgreen:

Vielleicht hat ja der ein oder andere eine Äußerung zum Rahmen. Die Wahl der Sprachen für die Beschreibungen ist frei für den Quellcodeautor und den Übersetzern.

2. Prüfung:
Da ich kein besonderer Fan von "XIncludeFile" bin (sieht mir einfach nicht schön aus ^^) und ich gerne auch explizit prüfen möchte, ob ich einen Quellcode schon eingebunden habe, nutze ich folgenden Code direkt nach dem Header:

Code: Alles auswählen

CompilerIf Defined(Filename_PBI, #PB_Constant) = #False
#Filename_PBI = #True

[... Quellocde ...]

CompilerEndIf
Meine Frage hierzu ist, ob die Notation "Filename_PBI" für jeden Quellocde wirklich OK ist. Vielleicht hat ja jemand Vorschläge dazu.

3. Betriebsystem
Falls die jeweilige Quelldatei wirklich nur für ein bestimmtes Betriebsystem verfügbar sein kann, verwende ich immer folgenden Code direkt nach der Prüfung:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS <> #PB_OS_Windows
  CompilerError "Only available for Windows."
CompilerEndIf
Hat jemand einen Einwand zur Formulierung? :mrgreen:

4. Untertitel:

Code: Alles auswählen

;******************************************
; Title
;******************************************
Diese Untertiteln verwende ich in den Quellcodes meist für Objektive unterteilungen. Also z.B. "Constants", "Functions", "Data sections" usw.

5. Prozeduren:

Code: Alles auswählen

Procedure.i Name(...)
  ;  Author: Josef Sniatecki
  ;  Gegebenfalls auch Datum (Date: bl.ab.labl)
  ;  Vielleicht Thanks to anybody aus http://www.pure-board.de/ + Thread
  ;
  ;DEUTSCH:
  ;  Allgemeine Beschreibung mit Erläuterung der Parameter.
  ;
  ;ENGLISH:
  ;  Description with explanation of the parameters.
  
  Code
EndProcedure
Dies ist der Teil, für den ich die meisten Kommentare und Vorschläge wünsche, da ich mir hierbei nicht wirklich sicher bin. Der Aufbau einer Prozedur ist eigentlich recht übersichtlich: Zuerst Informationen zum Autor, ein paar Danksagungen mit optionalen Quellen (Hauptsache da ist die Rede von einem User mit Name aus einem Board) und vielleicht auch ein paar andere externe Quellen wie MSDN usw.

Danach folgt die allgemeine Beschreibung in allen Sprachen, die man am besten beherrscht. Dabei setze ich immer die Namen der Parameter zwischen Anführungszeichen. Ich kenn aber auch einige, die gerne eckige Klammern verwernden oder auch garnix. ;)

6. Mehrere Plattformen unterstützen:
Falls mehrere Prozeduren plattformabhängig sind, verwende ich folgendes Schema:

Code: Alles auswählen

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    Procedure.i Bla()
    EndProcedure
    ...
  CompilerCase #PB_OS_Linux
    ...
CompilerEndSelect
Dabei rücke ich auch die Prozeduren und alle anderen Elemente mit ein.

7. Namensgebung:
Viele haben bestimmt bereits gemerkt, dass die meisten die Befehle ihrer Engine mit dem Namen starten, dann ein Unterstrich setzen und danach den eigentlichen Befehlsnamen - Davon bin ich kein Freund. Ich versuche immer die Schreibweise von Fred zu verwenden. Falls die Bibliothek einen Eigennamen hat, dann einfach zuerst den Namen verwenden und direkt danach (ohne Unterstrich) den eigentlichen Prozedurnamen.

Beispiel:

Code: Alles auswählen

OpernoDeclareVariable(...)
AddVector(...) ;Vector ist kein Eigenname, deshalb nach "add" setzen
8. Allgemeines zum Stil:
Zu einem "sauberen" Quellcode gehört für mich:
- Leerzeichen zwischen Operatoren ("also 1 + 2 und nicht 1+2")
- Zwei Leerzeichen zum einrücken
- Wenn möglich Übersicht schaffen durch folgende Tricks:

Code: Alles auswählen

abc = 2
a   = 3

f(a    , b + 1, c)
f(a + 1, b    , c)
- Namen im Binnenmajuskel, oder auch Ungarisch, wenn Unterelement einer API-Struktur:

Code: Alles auswählen

MeinName.s = "Josef"
DiesIstEinLangerName = 123

Info\lpText = @"Bla"
- Ich verwende keine Dollarzeichen für Zeichenketten (stattdessen ".s")
- Kommentare bezüglich zu Anweisungen immer mit einem Satzzeichen beenden.



Und jetzt nicht denken, dass das nur eine Idee ist. Ich habe schon 22 Templates von denen ich oft welche verwende. Ich denke mal, dass jeder selbst sich schon eine kleine oder auch größere Bibliothek mit eigenen Befehlen programmiert hat, daher habe ich daran gedach, dass ganze mal zusammenzuführen, um jeden fortgeschrittenen User das Programmieren noch leichter zu machen.

Und bevor ich weiter programmiere, oder gar schon alles veröffentliche, wollte ich nun um Kommentare und Vorschläge zu dem ganzen Zeugs da oben bitten. Sonst wird das am Ende noch mehr Schreibarbeit als es schon ist. ;)

Gruß Josef
Zuletzt geändert von Josef Sniatecki am 02.01.2010 20:47, insgesamt 1-mal geändert.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von ts-soft »

:allright:

Im grossen und ganzen halte ich es genauso, bis auf ein paar Kleinigkeiten vielleicht.
Das RealSource-TEAM ist gerade dabei seine Snippet-Sektion umzubauen, wobei das
aber noch ein Weilchen dauern wird. Wäre schön, wenn wir dort auch Deine Snippets
(Templates) zur Verfügung stellen dürften, aber da werde ich Dich dann, wenns dann
soweit ist, nochmal persönlich ansprechen.

Gruß
Thomas
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von Josef Sniatecki »

Danke ts-soft für deinen Hinweis zu deiner Page. Wenn sie bald bereit ist, dann werde ich natürlich mein Feedback leisten.

PS: Die "Kleinigkeiten" würden mich schon interessieren :mrgreen:
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
Shadow-Gamer
Beiträge: 152
Registriert: 06.09.2009 13:31
Computerausstattung: NB: Intel P8700, Mobility ATI HD4650, 4GB, Win 7

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von Shadow-Gamer »

klingt gut, wie wäre es mit einem Programm,welches das einschicken&updaten der Schnipsel erleichtert?
Ich versuche ja nicht faul zu sein. :)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von ts-soft »

Josef Sniatecki hat geschrieben:PS: Die "Kleinigkeiten" würden mich schon interessieren :mrgreen:
Zu 8.
Die Spaces innerhalb der Klammern gefallen mir nicht, vor Gleichheitszeichen u. ä. ist es Okay.
Kommentare mit Satzzeichen abschliessen halte ich nicht für nötig, jedenfalls solange es nur
ein Punkt ist, der ja nichts weiter ausdrückt im Gegensatz zum Ausrufungszeichen.
Shadow-Gamer hat geschrieben:klingt gut, wie wäre es mit einem Programm,welches das einschicken&updaten der Schnipsel erleichtert?
Sowas wird gerade für http://www.realsource.de programmiert. Soll unsere bisherige Snippetsektion ersetzen.
Dazu gibts aber erst mehr Infos, wenns dann Online und auch was zu sehen ist. Und natürlich in einem eigenem
Thread.

Gruß
Thomas
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von Josef Sniatecki »

ts-soft hat geschrieben:Die Spaces innerhalb der Klammern gefallen mir nicht, vor Gleichheitszeichen u. ä. ist es Okay.
Kommentare mit Satzzeichen abschliessen halte ich nicht für nötig, jedenfalls solange es nur
ein Punkt ist, der ja nichts weiter ausdrückt im Gegensatz zum Ausrufungszeichen.s
Gut, dass sind wirklich nur ein paar Kleinigkeiten. Zu den Satzzeichen am Ende jedes Kommentars: Manchmal erstrecken sich manche Kommentare über mehrere Zeilen, deshalb gehe ich systematisch dran. Ist klar, dass man selbst erkennen kann, ob nun zwei Kommentare zusammenhängen - aber trotzdem: Ein Satzende soll nun mal ein Satzende sein. :wink:
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von ts-soft »

Josef Sniatecki hat geschrieben:Ein Satzende soll nun mal ein Satzende sein. :wink:
Deshalb sollte man auch den Rechtschreibregeln folgen, insoweit sinnvoll:
Kein Leerzeichen nach einer öffnenden Klammer, kein Leerzeichen vor einem Komma,
kein Leerzeichen vor einer schließenden Klammer.
Leerzeichen nach einem Komma.
Leerzeichen vor und nach einem Plus, Minus, Mal usw. Zeichen.

Das ist aber nicht jedermanns Geschmack. Manche kommen aus der Interpreter Ecke,
die verabscheuen Leerzeichen :mrgreen: .

Gruß
Thomas
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von inc. »

ts-soft hat geschrieben:Sowas wird gerade für http://www.realsource.de programmiert. Soll unsere bisherige Snippetsektion ersetzen.
Klasse .... Realsource scheint eh auf Joomla aufgebaut zu sein, da wäre ja so einem CMS vielleicht die Option gegeben, dass auch User Einträge generieren können (wie z.B. ein Blog bzw. in Wordpress). Das müsste dann nur noch vom Team freigegeben werden (Funktion & Code-Stil z.B.) und sodann ists online.
Ich finde es schade, dass es immer wieder interessante Codeschnipsel gibt und die PureArea.net nicht wie früher des Öfteren in jenem Bereich mit Neuem versorgt wird. :-( . Aber sowas zu pflegen kostet ja auch Zeit.
Die Übersichtlichkeit der PureArea.net Codebeispiele waren es nämlich, die mich zu PureBasic geführt haben.

Frohes Neues übrigens!
Andrej
Hier gibts die OOP Option für PureBasic.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von Josef Sniatecki »

Veröffentlichung

Bin jetzt schon mal dazu gekommen, den Anfang (Beta) der ganzen Arbeit hochzuladen:
Download

Vielleicht will schon jemand etwas zu dieser Sammlung beitragen. Ich nehme gerne eure Werke an. Und wenn ihr zu Faul seit meine oberen Regeln zur Syntax einzuhalten, kann ich auch die Arbeit übernehmen. :wink:

Also, einfach per PN, oder hier posten.

Gruß Josef
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Re: PB-STL (in Entwicklung - Brauche eure Meinungen)

Beitrag von inc. »

Wenn ich mir das Projekt auf SF ansehe, scheint es, als ob du die GPL Lizenz gewählt hast?
Das würde bedeutet, dass alle die jene Lib für ihr Projekt nutzen, selber den Quellcode zur Verfügung stellen müssen.
Schaue dir mal die MIT Lizenz an, oder BSD, oder ... LGPL, aber selbst da bin ich mir nicht sicher, ob sodann die Lib nicht statisch gelinkt werden darf, sondern nur als Dll genutzt werden kann, wenn man den eigenen Quellcode nicht offen legen will.
Hier gibts die OOP Option für PureBasic.
Antworten