Programmier-Matrix: Unterschied zwischen den Versionen

Aus ManiacWiki
Zur Navigation springen Zur Suche springen
(Jagd auf Roter Deadlink)
K (So viele Dead!links!)
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. [[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:
+
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 [[Parser|parser]]basierenden Adventures zu finden, die teilweise nachfragen, ob die Aktion richtig geschrieben wurde oder ob man das ganze auch anders ausdrücken könnte.
+
* '''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 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. [[LUA]]])können eingebunden werden
+
* 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 165: Zeile 165:
 
* Scriptbasierende Programmiersprache
 
* Scriptbasierende Programmiersprache
 
* Open-Source-Engine
 
* Open-Source-Engine
* Setzt auf [[LUA]]
+
* 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 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 [[Edna bricht aus]]
+
** 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

Version vom 2. Dezember 2010, 13:14 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.

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
  • Leichtes Programmieren durch klare Ausdrücke
  • Gute Fehlererkennung
  • assemblernahe Programmierung
  • andere Programmiersprachen lassen sich leicht einbinden
  • echte Realtime-Sprache
  • Benannt nach Aba Byron
3 alle
AGS
  • Arbeit in einer WYSIWYG-Entwicklungsumgebung
  • Scriptbasierende Programmiersprache
  • Objektorientierung möglich
  • sehr viele Plugins und Templates für Adventures
  • sehr große Community
  • keine Realtime-Sprache
  • Name steht für "Adventure-Game-Studio"
  • Speziell für Adventures und Rollenspiele entwickelt
  • sehr viele Fanadventures basieren auf AGS
1 Windows
Adventure Maker
  • Arbeit in einer WYSIWYG-Entwicklungsumgebung
  • viele Funktionen die beim Arbeiten helfen (z. B. Floor plans)
  • Unterstützung für AVI, MPG, WMV etc.
  • Möglichkeit CODECs direkt im Spiel zu Integrieren.
  • Spiele für iPhone/iPOD Touch, PSP und Windows
  • kein freies Skriptsystem, viele Einschränkungen
1 Windows
Algol
  • algorithmische Formelsprache
  • strukturiertes Programmieren möglich
  • Ursprache für neue Programmiersprache
  • keine Realtime-Sprache
  • Name steht für "Algorithmic-Language"
  • Für Adventureentwicklung eher ungeeignet
  • DIN 66 026
3 alle
AGI Studio
  • Original Entwickungstool, von Sierra für ihre frühreren Adventures (KingsQuest, SpaceQuest)
  • Beschränkung auf 160x200 Pixel (Retro-Style)
  • AGI steht für Adventure Game Interpreter
1 Windows
AGAST
  • Scriptbasierende Programmiersprache
  • Möglichkeit mehrere parallel ablaufende Aktionen durchzuführen (z. B. diverse Aktionen von Hintergrundfiguren und Objekten)
  • DirectX 9 wird benötigt
1 Windows
Basic
  • leicht erlernbar
  • problemorientierte Sprache
  • vielfältige Abwandlungen des Basics verfügbar (GW-Basic, Turbo-Basic)
  • bedingte Realtime-Sprache
  • Name steht für "Begginers-All Purpose Symbolic Instruction Code"
  • DIN 66 284
2 alle
C / C++
  • kompakter Code
  • Einsatz u. a. für Programmierentwicklung (z. b. AGS basiert auf C )
  • strukturiertes Programmieren möglich
  • andere Programmiersprachen (z. b. LUA)können eingebunden werden
  • viele Kommerzielle Spiele basieren auf C/C++
  • Name steht für "Combined Programming Language"
  • C++ ist die objektorientierte Variante von C
  • maschinennahe Programmierung
2 alle
Cobol
  • problemorierte Programmiersprache für kaufmännischen und administrativen Bereich
  • Programmcode ist lesbar wie englischer Text
  • Cobol85 ist standardisiert durch ANSI (ANSI-Cobol)
3 alle
Java
  • kleiner, portabler und leichter anwendbar als C++
  • plattformneutral (auch für Handy, PALM etc.)
  • Programme werden in Bytecodes kompiliert
  • Auch für Webadventures etc. geeignet
  • Kommerzielle Spiele (z. B. Edna bricht aus)
2 alle
LISP
  • Programmaufbau besteht auf Funktionen
  • nicht prozedural (keine Aneinanderreihung von Befehlen)
  • Anwendung in der künstlichen Intelligenz
  • wird oft bei Egoshootern für KI verwendet
3 alle
LUA
  • leichte Scriptsprache (einfache Syntax)
  • extrem schnell, hochgradig portabel
  • lässt sich in andere Sprachen (C, C++ etc.) integrieren
  • viele kommerzielle Spiele (u. a. Monkey Island 4
  • sehr große Community
  • Spiele für iPhone/iPOD Touch, PSP und Windows
2 alle
MAD-Engine
  • Scriptbasierende Programmiersprache
  • Open-Source-Engine
  • Setzt auf LUA
  • OxEdit bietet Syntax-Highlights für die Scriptsprache
1 alle
Pascal
  • gute Strukturierung möglich
  • wenige Grundbefehle (einfach zu lernen)
  • mit Turbo-Pascal annährend Realtime-Programmierung
  • benannt nach Blasise Pascal
3 alle
PaCDK
  • Umfangreiches Scriptsystem
  • Skripthilfe und Autovervollständigung
  • Partikeleffekte, EAX
  • Entwickelt von Zimond (Benjamin Maas)
1 Windows
SCI Studio
  • Arbeit in einer WYSIWYG-Entwicklungsumgebung
  • Scriptbasierende Programmiersprache
  • Möglichkeit, ältere Sierra-Adventures zu bearbeiten (z. B. Leisure Suit Larry 2)
1 Windows
Visionaire
  • Arbeit in einer WYSIWYG-Entwicklungsumgebung
  • Scriptbasierende Programmiersprache (ab V#3)
  • Unterstützung der Grafikschnittstellen OpenGL, DirectX und DirectDraw
  • 3 Lizenzmodelle (Freeware-, Werbe- und kommerzielle Spiele)
  • viele "große" Adventureprojekte nutzen Visionaire (u. a. [ZakBTAS] oder Dott2)
1 Windows
SQL
  • Datenbanksprache
  • verschiedene Versionen und Lizenzen (MySQL, MS-SQL)
  • nicht direkt zum Erstellen von Adventureprojekten aber als Backend z. B.
    • für das Inventar oder Aktionsmenü (z. B. bei Edna bricht aus
    • oder für Online Text-Adventures etc.)
3 alle
Z-Code/Frotz
  • Scriptsprache
  • Speziell für Textadventures entwickelt
  • Für den Z-Codestandard gibt es mehrere Interpreten, bekanntester ist Fortz
  • Ursprung der Firma IntoCom
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 />