Programmier-Matrix: Unterschied zwischen den Versionen
(Bugs, Bugs, Bugs - every OS Sucks...) |
Blount (Diskussion | Beiträge) K (Dead Link Korrektur) |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
== Qualitätsmerkmale == | == Qualitätsmerkmale == | ||
− | Für die Programmierung einer Anwendung gibt es verschiedene Ansätze hinsichtlich Konzeption und Realisierung<ref>Beispielsweise wird auf [http://www.99-bottles-of-beer.net/abc.html 99-bottles] mit über 1200 Programmiersprachen das Lied 99-Flaschen in einer Schleifenvariante gelöst</ref>. Grundlegende Qualitätsmerkmale, sowohl bei einem Computerspiel (Adventure) als auch bei Anwendungen (z. B. | + | Für die Programmierung einer Anwendung gibt es verschiedene Ansätze hinsichtlich Konzeption und Realisierung<ref>Beispielsweise wird auf [http://www.99-bottles-of-beer.net/abc.html 99-bottles] mit über 1200 Programmiersprachen das Lied 99-Flaschen in einer Schleifenvariante gelöst</ref>. Grundlegende Qualitätsmerkmale, sowohl bei einem Computerspiel (Adventure) als auch bei Anwendungen (z. B. Visionaire) sind jedoch fast immer identisch und sind eben so oder in abgewandelter Form in der Literatur anzutreffen. Zur Qualitätssicherung gibt es verschiedene Qualitätsmodelle. Klassische Bestandteile eines solches Modells sind: |
* '''Korrektheit:''' Damit ist die Übereinstimmung von Realisierung und Anforderung gemeint (also die möglichst Exakte Erfüllung der Anforderung) | * '''Korrektheit:''' Damit ist die Übereinstimmung von Realisierung und Anforderung gemeint (also die möglichst Exakte Erfüllung der Anforderung) | ||
− | * '''Zuverlässigkeit:''' Fehleingaben von Usern (z. B. falsche Eingabe bei parserbasierenden Adventures) soll nicht zum Absturz führen. Idealerweise weist das Programm oder das Spiel auf eine Fehleingabe hin. Beispiele sind vor allem bei | + | * '''Zuverlässigkeit:''' Fehleingaben von Usern (z. B. falsche Eingabe bei parserbasierenden Adventures) soll nicht zum Absturz führen. Idealerweise weist das Programm oder das Spiel auf eine Fehleingabe hin. Beispiele sind vor allem bei parserbasierenden Adventures zu finden, die teilweise nachfragen, ob die Aktion richtig geschrieben wurde oder ob man das ganze auch anders ausdrücken könnte. |
* '''Benutzerfreundlichkeit:''' Der Quellcode sollte nicht unnötig verschachtelt oder umständlich aufgebaut sein (Spaghetticode<ref>''Der bildhafte Ausdruck Spaghetticode bezeichnet ein Programm, in dem, durch unbedingte Sprünge (z.B. zahlreiche verschachtelte Sprunganweisungen), der Programmablauf schwer nachzuvollziehen ist, wie bei einem Berg Spaghetti, bei dem es sehr schwer ist, herauszufinden, welche Nudelenden zusammen gehören.'' Zitat: [http://de.wikipedia.org/wiki/Programmiererjargon Wikipedia]</ref>) | * '''Benutzerfreundlichkeit:''' Der Quellcode sollte nicht unnötig verschachtelt oder umständlich aufgebaut sein (Spaghetticode<ref>''Der bildhafte Ausdruck Spaghetticode bezeichnet ein Programm, in dem, durch unbedingte Sprünge (z.B. zahlreiche verschachtelte Sprunganweisungen), der Programmablauf schwer nachzuvollziehen ist, wie bei einem Berg Spaghetti, bei dem es sehr schwer ist, herauszufinden, welche Nudelenden zusammen gehören.'' Zitat: [http://de.wikipedia.org/wiki/Programmiererjargon Wikipedia]</ref>) | ||
* '''Effizenz:''' Möglichst unnötige Funktionen vermeiden. Dafür gibt es diverse Möglichkeiten (z. B. Variablen anstatt Strings oder objektorientierte Programmierung). | * '''Effizenz:''' Möglichst unnötige Funktionen vermeiden. Dafür gibt es diverse Möglichkeiten (z. B. Variablen anstatt Strings oder objektorientierte Programmierung). | ||
Zeile 84: | Zeile 84: | ||
|Windows | |Windows | ||
|- | |- | ||
− | |class="hintergrundfarbe9" | + | |class="hintergrundfarbe9" | AGAST |
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* Scriptbasierende Programmiersprache | * Scriptbasierende Programmiersprache | ||
Zeile 110: | Zeile 110: | ||
* Einsatz u. a. für Programmierentwicklung (z. b. [[AGS]] basiert auf C ) | * Einsatz u. a. für Programmierentwicklung (z. b. [[AGS]] basiert auf C ) | ||
* strukturiertes Programmieren möglich | * strukturiertes Programmieren möglich | ||
− | * andere Programmiersprachen (z. b. | + | * andere Programmiersprachen (z. b. LUA)können eingebunden werden |
* viele Kommerzielle Spiele basieren auf C/C++ | * viele Kommerzielle Spiele basieren auf C/C++ | ||
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
Zeile 135: | Zeile 135: | ||
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* Auch für Webadventures etc. geeignet | * Auch für Webadventures etc. geeignet | ||
− | * Kommerzielle Spiele (z. B. [http:// | + | * Kommerzielle Spiele (z. B. [http://www.daedalic.de/de/Game/Edna-Bricht-Aus/ Edna bricht aus]) |
| 2 | | 2 | ||
|alle | |alle | ||
Zeile 149: | Zeile 149: | ||
|alle | |alle | ||
|- | |- | ||
− | |class="hintergrundfarbe3" | | + | |class="hintergrundfarbe3" |LUA |
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* leichte Scriptsprache (einfache Syntax) | * leichte Scriptsprache (einfache Syntax) | ||
Zeile 165: | Zeile 165: | ||
* Scriptbasierende Programmiersprache | * Scriptbasierende Programmiersprache | ||
* Open-Source-Engine | * Open-Source-Engine | ||
− | * Setzt auf | + | * Setzt auf LUA |
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* [http://www.doornik.com/products.html#OxEdit OxEdit] bietet Syntax-Highlights für die Scriptsprache | * [http://www.doornik.com/products.html#OxEdit OxEdit] bietet Syntax-Highlights für die Scriptsprache | ||
Zeile 200: | Zeile 200: | ||
|Windows | |Windows | ||
|- | |- | ||
− | |class="hintergrundfarbe9" | | + | |class="hintergrundfarbe9" | Visionaire |
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* Arbeit in einer WYSIWYG-Entwicklungsumgebung | * Arbeit in einer WYSIWYG-Entwicklungsumgebung | ||
Zeile 217: | Zeile 217: | ||
|class="hintergrundfarbe2" | | |class="hintergrundfarbe2" | | ||
* nicht direkt zum Erstellen von Adventureprojekten aber als Backend z. B. | * nicht direkt zum Erstellen von Adventureprojekten aber als Backend z. B. | ||
− | ** für das Inventar oder Aktionsmenü (z. B. bei | + | ** für das Inventar oder Aktionsmenü (z. B. bei Edna bricht aus |
** oder für Online Text-Adventures etc.) | ** oder für Online Text-Adventures etc.) | ||
| 3 | | 3 |
Aktuelle Version vom 31. Juli 2015, 11:13 Uhr
Es gibt sehr viele verschiedene Programmiersprachen, viele davon wurden für bestimmte Probleme und Anforderungen entwickelt und optimiert. So sind zum Beispiel spezielle Datenbanksprachen wie SQL oder dBase für die Sammlung von Informationen<ref>Das ManiacWiki beispielsweise basiert auf einer MySQL-Datenbank und eine rauf PHP basierenden WikiEngine</ref> gedacht, andere wie VHDL oder Verilog sind hardwarenahe Sprachen, die zum Beispiel für Grafikkarten verwendet werden. Fanentwickler für Adventurespiele finden in der unten aufgelisteten Matrix einige Programmiersprachen.
Der Fokus liegt dabei auf der Entwicklung von Adventures, sodass sich Interessierte hier einen ersten Überblick verschaffen können. Der Verbreitungsgrad einer Programmiersprache kann maßgeblich für den unter Umständen notwendigen Support sein, so befinden sich auf freshmeat mehr als 9000 (aktive) Projekte in der Programmiersprache C und weniger als hundert Projekte in der Programiersprache Pascal<ref>Freshmeat ist eine Portalseite für Linux Applikationen, diese basieren traditionell auf "C", dementsprechend ist der Vergleich zwischen "C" und Pascal nur exemplarisch zu sehen</ref>. Die meisten Episoden von Maniac Mansioin Mania basieren auf AGS. |
Inhaltsverzeichnis |
Qualitätsmerkmale
Für die Programmierung einer Anwendung gibt es verschiedene Ansätze hinsichtlich Konzeption und Realisierung<ref>Beispielsweise wird auf 99-bottles mit über 1200 Programmiersprachen das Lied 99-Flaschen in einer Schleifenvariante gelöst</ref>. Grundlegende Qualitätsmerkmale, sowohl bei einem Computerspiel (Adventure) als auch bei Anwendungen (z. B. Visionaire) sind jedoch fast immer identisch und sind eben so oder in abgewandelter Form in der Literatur anzutreffen. Zur Qualitätssicherung gibt es verschiedene Qualitätsmodelle. Klassische Bestandteile eines solches Modells sind:
- Korrektheit: Damit ist die Übereinstimmung von Realisierung und Anforderung gemeint (also die möglichst Exakte Erfüllung der Anforderung)
- Zuverlässigkeit: Fehleingaben von Usern (z. B. falsche Eingabe bei parserbasierenden Adventures) soll nicht zum Absturz führen. Idealerweise weist das Programm oder das Spiel auf eine Fehleingabe hin. Beispiele sind vor allem bei parserbasierenden Adventures zu finden, die teilweise nachfragen, ob die Aktion richtig geschrieben wurde oder ob man das ganze auch anders ausdrücken könnte.
- Benutzerfreundlichkeit: Der Quellcode sollte nicht unnötig verschachtelt oder umständlich aufgebaut sein (Spaghetticode<ref>Der bildhafte Ausdruck Spaghetticode bezeichnet ein Programm, in dem, durch unbedingte Sprünge (z.B. zahlreiche verschachtelte Sprunganweisungen), der Programmablauf schwer nachzuvollziehen ist, wie bei einem Berg Spaghetti, bei dem es sehr schwer ist, herauszufinden, welche Nudelenden zusammen gehören. Zitat: Wikipedia</ref>)
- Effizenz: Möglichst unnötige Funktionen vermeiden. Dafür gibt es diverse Möglichkeiten (z. B. Variablen anstatt Strings oder objektorientierte Programmierung).
- Kompatibilität: Einfachheit, mit der Software mit anderer Software verbunden werden kann.
- Portabilität: Ersatzbarkeit erstellter Software auf anderen Zielsystemen (andere Hard- und Software). Gerade hier punkten Sprachen wie dotNet oder Java.
- Integrität: Schutz der einzelnen Komponenten gegen unberechtigten Zugriff und Veränderung. Inbesondere bei Online-Textadventures ist dies wichtig, da sonst ein unerlaubter Zugriff auf den Server möglich sein kann.
Matrix
Der Status ist wie folgt gegliedert: 1 (empfehlswert), 2 (neutral), 3 (eher ungeeignet). Bei Plattform ist die Entwicklungsumgebung gemeint. Meistens ist diese auch gleichzeitig die verwendbare Plattform, die Runtime (das fertige Produkt). Emulatoren, die bestimmte Applikationen auch auf anderen Systemen nutzbar machen (z. B. AGS unter Linux) werden nicht berücksichtigt.
Anmerkung | Anwendung/Eigenschaft | Status | Plattform | |
---|---|---|---|---|
Ada |
|
|
3 | alle |
AGS |
|
|
1 | Windows |
Adventure Maker |
|
|
1 | Windows |
Algol |
|
|
3 | alle |
AGI Studio |
|
|
1 | Windows |
AGAST |
|
|
1 | Windows |
Basic |
|
|
2 | alle |
C / C++ |
|
|
2 | alle |
Cobol |
|
|
3 | alle |
Java |
|
|
2 | alle |
LISP |
|
|
3 | alle |
LUA |
|
|
2 | alle |
MAD-Engine |
|
|
1 | alle |
Pascal |
|
|
3 | alle |
PaCDK |
|
|
1 | Windows |
SCI Studio |
|
|
1 | Windows |
Visionaire |
|
1 | Windows | |
SQL |
|
|
3 | alle |
Z-Code/Frotz |
|
|
1 | alle |
Anmerkung: "Grün" markierte Programmiersprachen sind für Adventures empfehlenswert (z. B. speziell dafür Entwickelte), "Gelb" markierte sind komplex aber durchaus empfehlenswert für Spieleprogrammierung (z. B. solche, die im kommerziellen Umfeld erfolgreich verwendet wurden), "Blau" sind Sprachen, die nicht oder nur mit viel Aufwand sinnvoll sind (z. B. ist SQL eine Datenbanksprache, aber für ein Online-Textadventure durchaus ein Ansatz).
Quelle / Referenzen
<references />