|
w3group
Philosophie
|
|
Mündig
|
Einem mündigen Softwareentwickler braucht der Compiler nicht
vorzuschreiben was er tun und zu lassen hat. Dennoch
ist eine Unterstützung in Form von Warnings gerne gesehen.
C/C++ bietet hier einen optimalen und breiten Spielraum an.
Das Prinzip ist, Basistechnologien zu verstehen und zu beherrschen
und nicht durch den ausschließlichen Einsatz von Frameworks davor
geschützt oder gekapselt zu werden. Nur wenn
die zu Grunde liegende Technologie (Linux, C, HTML, CSS, CPU,
HDD, Linux) verstanden wurde kann dieses Know-how immer und
überall angewendet werden. Im professionellen Business ein
absolutes Muss.
|
| | Einfach
|
- Eine einzelne Person kann das gesamte System beherrschen.
- Das Erlernen des Systems dauert nur wenige Tage.
- Das System ist leicht an individuelle Erfordernisse anzupassen.
- Wenig Fehler, wenig zu dokumentieren, wenig zu programmieren,
wenig zu debuggen
|
| | Kleine Funktionen
|
- sind leicht zu testen,
- sind zu klein für Fehler,
- sind leicht zu verstehen,
- können einfach wieder verwendet werden,
- können wie Bausteine zusammengesteckt werden (Skill erforderlich),
- eliminieren Conditionals (Skill erforderlich),
- haben sprechende Namen und bilden so das Vokabular der Anwendung.
Das Programm 'wird' zur Dokumentation.
|
| | Programmier-Regeln
|
- Einsatz statisch typisierter Sprachen gewährleisten Konsistenz bei
Änderungen und helfen dem Compiler beim Optimieren.
- Der Laufzeitspeicher wird stackorientiert verwaltet.
- Objekte werden nicht frei gegeben sondern wieder verwendet.
- Ist eine Businessfunktion (z.B. rechnung_druck) zu Ende, wird
der Laufzeitspeicher - wie ein Stack - wieder frei. Diese Art der
Speicherverwaltung ist ohne Aufwand für das System und zu 100% vorhersagbar
und fehlerfrei.
- Einfach verkettete Listen und Arrays bilden die wichtigsten Datenstrukturen.
|
| | Datenbank
|
Die Stärke ist, dass die Objekte nicht erst aus einem Zwischenspeicher
zusammengesetzt werden müssen, sondern das gesamte Objektnetz zur
freien Verwendung direkt vorliegt.
- Es besteht kein Unterschied zwischen Datenbanksprache und
Programmiersprache. Das vereinfacht erheblich das Programmieren komplexer
Abfragen.
- Der Compiler prüft auf Typsicherheit und Vorhandensein aller Attribute.
- Alle Programme greifen auf den gleichen physikalischen Speicher zu,
nicht auf eine lokale Kopie.
- Kein SQL-Protokolloverhead: Übertragen des Statements, Syntaxcheck,
Zugriffspfad ermitteln, Daten verpacken, übertragen und entpacken.
- Keine Administration.
|
| | Performance
|
| Dell Laptop: 2,1GHz Dual Core Pentium, 4GB Ram
|
|
| Iterieren über 1.000.000 Datensätze
| 0.036s
|
Die w3store Datenbank ist hierarchisch
(also wie ein Filesystem) und nicht relational aufgebaut.
Daher ist es unwahrscheinlich dass einzelne
'Directories' 1 Million Records enthalten werden. Im Schnitt werden
zwischen 100 bis 10.000 Records pro Directory verwaltet.
|
| | Beispiel
| // Alle Athleten die zu einem Kader gehören aufsammeln
athlet_t **athlet_collect_for_kader(kader_t *kader) {
athlet_t *a; // Iterator
push(0); // Startkennzeichen
for(a=R->athleten;a;a=a->next) if(a->kader==kader && a->is_athlet) push(a);
return result; // Ergebnismenge typsicher zurückgeben
}
int athlet_cmp_name(athlet_t *a1, athlet_t *a2) { // Comperator-Sortierfunktion
return strcasecmp(a1->name, a2->name); // Stringvergleich ohne groß/klein
}
void athlet_render_list(kader_t *kader) {
// Alle Athleten aus der Datenbank holen und sortieren
sort(athlet_collect_for_kader(kader), athlet_cmp_name);
while(athlet_render_item(pop())); // Alle Athleten anzeigen
}
|
http://w3group.de - Entwicklung hochverfügbarer Internet-Anwendungen
| |