Ergebnis 1 bis 8 von 8

Thema: Welche Programmiersprache nehme ich, wenn ... ?

  1. #1

    Welche Programmiersprache nehme ich, wenn ... ?

    Oft tauchte bisher die Frage auf: "Welche Programmiersprache nehme ich, wenn ich ... machen will ?"

    Um das Ganze mal etwas theoretischer zu formulieren ...
    A) Jedes Programm ist idR ein (endlicher) Algorithmus.
    B) Eine Programmiersprache ist eine Sprache zur Beschreibung beliebiger Algorithmen.

    Folglich sollte man mehr oder weniger jeden Algorithmus in jeder Sprache formulieren koennen.

    Soviel zur Theorie, jetzt zur Praxis

    Nicht jede Sprache ist fuer jede Aufgabe gleichermassen geeignet. Sprachen wie LISP oder PROLOG werden idR fuer Wissensbasierte Systeme und KI eingesetzt, COBOL hat sich im Hinblick auf Business und Banking entwickelt, und FORTRAN war mal dafuer gedacht, einfach wissenschaftliche Formeln zu uebertragen. Allerdings finden sie in der heutigen Zeit nur noch begrenzt Anwendung, weil sich einige Sprachen herauskristallisiert haben, die eine breitere Anwendung und Flexibilitaet aufweisen koennen.

    Im Grunde lassen sie sich auf 3 Gruppen einteilen.

    1) Die Basic Familie - Oldtimer mit aufgebohrtem Motor

    BASIC - Beginners All Symbolic Instruction Code ist eine Programmiersprache, die vor allem einfach zu lernen sein sollte. Mittlerweile gibt es hunderte von Dialekten, von Visual Basic, geeignet fuer die GUI Entwicklung unter Windows, bis zu BlitzBasic3D, dass den Einstieg in die Spieleprogrammierung erleichtern soll. Einige dieser Dialekte, z.B. der letztgenannte, haben mitgelieferte Bibliotheken, die ausgewaehlte Funktionen von bekannten Graphischen Schnittstellen, wie z.B. DirectX in einfacherer Syntax bereitstellen, damit man schnell, aber dafuer ohne volle Kontrolle damit arbeiten kann.

    Fuer kleine Programme, mit weniger als 1000 Zeilen, und kleine Spielereien, wie ein SinglePlayer Pong, lassen sich damit relativ einfach gestalten. Wenn es allerdings an komplexe Vorgaenge geht, die ein hoechstmass an Kontrolle durch den Programmierer verlangen, oder die ein Hoechstmass an Abstraktion verlangen, ist mMn BASIC absolut ueberlastet.

    Einfache Programmierung eines Taschenrechners , Spieleprogrammierung

    Fazit: schnell zu lernen , langsam , unstandardisiert , idR kein OOP , interpretiert

    2) Die Pascal Familie - Leistungsfaehiger Schreibaufwand in neuem Kleid

    Pascal wurde urspruenglich als einfach zu lernende aber dennoch leistungsfaehige Sprache entwickelt. Mit der Firma Borland und ihrer Version Turbo Pascal, die den damals schnellsten Compiler der Welt besass, stieg Pascal zu einer weitverbreiteten Sprache auf. Anders als in Basic war bereits in den Grundzuegen der Sprache Funktionale Programmierung sowie Datentypen festgelegt. Die Sprache ist dank ihrer Schluesselwoerter wie "begin" leicht zu lernen, werwehrt einem aber dennoch nicht den Zugriff zur Hardwarenahen und damit schnellen Programmierung.

    Relativ zeitig wurden mit ObjectPascal, was ab Version 5 in TurboPascal integriert war, die Konzepte der OOP (Object Orientierte Programmierung) zum wesentlichen Bestandteil der Sprache integriert, so dass sie sich natlos anpassen konnte. Die OOP in Pascal ist mMn eine der schluessigsten Implementierungen. Pascal war eine der ersten Sprachen, die OOP unterstuetzte und trug massgeblich zur Bildung des Konzeptes bei. Komplexe Projekte sind heutzutage ohne OOP kaum noch denkbar.

    In der heutigen Zeit sind vor allem zwei Implementierungen nennenswert. Zum einen freePascal, dass in der GCC enthalten ist und unter der GPL vorliegt, und mit dem ebenfalls unter der GPL fallenden Lazarus eine (Delphi nachempfundene) IDE samt RAD (Rapid Application Development) besitzt. Die Alternative ist Borlands TurboPascal Nachfolger Delphi, im Grunde der Urvater der RAD unter Windows, und stellt eine konsequente Weiterentwicklung von Pascal dar.

    Delphi wird vor allem dann eingesetzt, wenn es um die Entwicklung von GUI unter Windows geht, da ein Grossteil der Arbeit in der exzellenten VCL (Visual Components Library) versteckt ist, und man sich nur noch um das Wesentliche kuemmern muss. Delloch bieten beide Pascal Varianten weiterhin die Moeglichkeit, systemnah zu programmieren, also die vorgegebenen Erleichterungen nicht zu benutzen, und sein Schicksal selber in die Hand zu nehmen, was volle Kontrolle bedeutet. Zudem gibt es fuer sehr viele der fuer C++ entwickelten Komponenten Portierungen fuer Pascal, so dass diese (unter Beachtung von Parameteruebergabekonventionen etc) ebenfalls verwendbar sind.

    Zwar ist Pascal nur unwesentlich langsamer als C++, jedoch erlangte es unter weit fortgeschrittenen Programmierern nicht eine derart weiter Verbreitung wie C++, da der Vorteil fuer Einsteiger, Schluesselwoerter zu verwenden, fortgeschrittenen Programmierern als umstaendlich erscheint. ein "begin" in Pascal ist in C einfach ein "{"

    Fazit: Flexibilitaet , Systemnah sofern gewollt , Schnell , OOP , einfach zu lernen , Profis fehlt der Biss

    3. Die C Familie - Das Ü-Ei der Programmierung: Schnell, Verbreitet, Kryptisch

    3.1 C - Assembler fuer Arme

    C wird nach Assembler als Schnellste Programmiersprache der Welt angesehen. Dafuer bringt sie von Haus aus einerlei Schnickschnack mit (was sogar soweit geht, das von Haus aus keine Zeichenketten implementiert sind), was sie einserseits portabel macht, andererseits dafuer gesorgt hat, dass sich viele verschiedene Standards gebildet haben, die zueinander nicht kompatibel sind. Mit C kann man prinzipiell alles machen, vom Schreiben neuer Betriebssysteme ueber Treiber fuer Hardware bis hin zu kompletten Spielen. Allerdings hat C keine Unterstuetzung fuer OOP, was das entwickeln grosser Projekte oder die Abstraktion von Problemen erschwert. Zudem ist C so hardwarenah, dass man sich mehr um die Realisierung einfachster Dinge kuemmern muss, als auf das eigentliche Problem, was man loesen will.

    C verwendet statt Schluesselwoertern einzelne Zeichen, was die Sprache fuer Anfaenger sehr ungeeignet macht, da nicht auf den ersten Blick zu sehen ist, was ein Code macht. Andererseits haben erfahrene Programmierer dadurch die Moeglichkeit sehr schnell komplexen Code zu schreiben, ohne viel tippen zu muessen.

    Fazit: Wer sich Assembler spraren will und wirklich weiss, was er tut, und es zusaetzlich extrem auf Geschwindigkeit ankommt, wird zu C greifen. Alle anderen sind vor Ehrfurcht gelaehmt.

    3.2 C++ - Die wohl verbreitetste Sprache der Welt

    C++ ist eine Weiterentwicklung von C, bei der die Konzepte der OOP in die Sprache intigriert , sowie in diesem Zuge einige andere Erleichterungen aus der Taufe gehoben wurden. C++ ist in etwa um den Faktor 4 langsamer als C. Dafuer wurden mit der STL standardisierte Strukturen geschaffen, die einem das Programmieren sehr stark erleichtern, z.B. Listen, Vektoren, Streams. C++ ist eine der wenigen Sprachen, die in der OOP echte Mehrfachvererbung unterstuetzen. Zudem wurden durch Templates und Operatorenueberladung einem sehr maechtige Programmierwerkzeuge in die Hand gegeben.

    Da C eine Untermenge von C++ ist, wurde seine Syntax beibehalten. Daraus resultiert, dass fuer Anfaenger der Quellcode schwer zu lesen ist, Profis allerdings kompakten Code schreiben koennen.

    Die Kompaktheit des Codes, die Moeglichkeit Operatoren zu ueberladen und die Maechtigkeit der Templates gaben C++ letztlich den entscheidenden Vorteil gegenueber (allen) anderen Programmiersprachen, insbesondere gegenueber (Turbo)Pascal.

    Durch die weite Verbreitung der Sprache finden sich im Internet sehr viele Tutorials und Musterloesungen, die man auf seine eigenen Probleme adaptieren kann. Auch liegen die meisten professionellen und zum Teil auch kostenlosen Engines und Bibliotheken in der Regel fuer C++ fertig verwendbar vor.

    Fazit: Schnell , Nutzung von professionellem Fremdcode , OOP , STL , maechtige Programmierwerkzeuge (Operatorenueberladung, Templates, ...) , Kryptischer Code , flache Lernkurve

    3.2 Java - Unabhaengige Insel im Meer aus Bytecode
    <wird noch ergaenzt>

    Geändert von Ineluki (12.07.2005 um 23:25 Uhr)

  2. #2
    Ist eine gute Sache, hier mal genauer auf die Sprachen einzugehen. Allerdings, wie das bei Menschen so ist, sind durchaus Vorurteile mit dabei, wo du manchen Sprachen nicht gerecht wirst.
    Etwa Basic, was du persönlich ja überhaupt nicht leiden kannst.
    Basic ist mittlerweile mehr compiliert als interpretiert.
    Als Beispiel nenne ich mal:
    - PureBasic (Libraries sind in Assembler und C geschrieben und der Compiler erstellt 32bit Maschinencode.)
    - Freebasic (Ebenfalls compiliert und nicht interpretiert, geht so aus der Website hervor: http://www.freebasic.net/index.php/about)
    - Blitzmax, Blitz3D und Blitzplus: (compiliert laut Herrsteller: http://www.blitzmax.com/Products/_index_.php)
    - Visual Basic (Afaik seit Version 6 NICHT mehr Interpretiert sondern compiliert, benötigt dennoch Runtimemodule)
    Auf dieser Seite gibts zahlreiche Basic-Varianten, viele davon sind compiliert und nicht mehr interpretiert: http://www.thefreecountry.com/compilers/basic.shtml

    Ich finde du solltest in deiner Beschreibung aufnehmen, dass es interpretierte sowie auch compilierte Sprachen gibt und keines davon überwiegt.

    Dann hast du noch was zu den Programmlängen geschrieben, kleine Programme mit 1000 Zeilen oder so. Ich denke mal, es ist Ansichtssache, was ein kleines Programm ist. Aber eine Zeilengrenze ist wieder recht direkt. Wobei ich persönlich auch mit PB Programme mit weitaus mehr als 1000 Zeilen zu Stande gebracht habe. Eine Zeilengrenze sollte man, wenn man sie nennt, höher ansetzen, oder ganz rauslassen. Kleinere Programme reicht aus, denn für viele sind auch 10.000 Zeilen noch kleine Programme.

    Ansonsten, was noch einige hier interessieren sollte, gehst du für Pascal oder Delphi nur auf GUI und nicht auf Spieleprogrammierung ein (Bei C oder C++ aber auch nicht). Ist es möglich, kleinere (oder auch größere) 2D oder 3D Spielchen in Pascal oder Delphi zu erstellen? Werden Sachen wie DirectX oder OpenGL unterstützt? Ich bin ja eher der Meinung, dass Delphi eben weniger für Spiele geeignet ist und das auch erwähnt werden sollte, da es zur Findung der richtigen Sprache beiträgt.

    Bei C und C++ solltest du noch erwähnen, dass die Library sich auf die Console beschränkt. Es gibt viele Leute hier die meinen, eben mal mit C++ ein Spiel oder eine GUI-Anwendung schreiben zu können, ohne zu wissen, dass es so einfach ohne weiteres mit C nicht geht. Dass man dort auf andere APIs zurückgreifen muss, sollte erwähnt sein.
    Und da muss man Sprachen wie den Basics einen +Punkt anrechnen, wo es direkte Anbindung an OpenGL, DirectX oder die WinAPI gibt, ohne sich mit dieser API grundlegend auseinander setzen zu müssen.

    Ansonsten ist es schön, mal eine genaue Auflistung der Sprachen mit Vor- und Nachteilen zu haben. Man könnte sie noch ergänzen mit einigen der genannten Dinge, um zukünftigen Fragen im Forum, die sich an die Sprachwahl richten, entgegen zu kommen.

    Geändert von Ynnus (12.07.2005 um 13:16 Uhr)

  3. #3
    Recht gute Zusammenstellung.
    Evtl. sollte man noch eine vierte Kategorie für Scriptsprachen (Ruby Python,...) machen. Diese Sprachen werden ja auch bei größeren Programmen eingesetzt.

  4. #4
    Zitat Zitat von Ineluki (im C-Teil)
    Allerdings hat C++ keine Unterstuetzung fuer OOP, was das entwickeln grosser Projekte oder die Abstraktion von Problemen erschwert.
    Also das ist mir neu. Natürlich soll das wohl 'C' heißen. Aber wenn man's nicht weiß, kann es an der Stelle leicht mal zu Missverständnissen kommen. Tja, es gibt sogar Leute, die deine Posts mit pedantischer Aufmerksamkeit lesen.
    Sonst gefällt mir der Text sehr gut. Obwohl er fortgeschrittenen Programmierern eigentlich nicht viel Neues sagt und für Anfänger doch teilweise etwas kompliziert (streckenweise langatmig) ist, denke ich (z.B. zu viele Fachbegriffe, die ein Anfänger nicht kennt). Ich glaube nicht, dass sich die Zielgruppe 'absolute Programmieranfänger' davon sehr angesprochen fühlt. Ist aber vielleicht nur meine Ansicht. Auf jeden Fall eine nette Auflistung.

    freundliche Grüße, Rolus

    Geändert von Rolus (14.07.2005 um 15:53 Uhr)

  5. #5
    Danke fuer die Blumen .. allerdings musste ich nur wegen zeitlichen Problemen unterbrechen ... Natuerlich steht es euch allen frei, ebenfalls Sprachen vorzustellen.

    @Rolus ... Jap, da hatte sich der Fehlerteufel eingeschlichen ... auch ich bin nicht perfekt ^^ Mittlerweile ists aber korrigiert

    @Ynnus .. ich denke, dass ich sehr Vorurteilsfrei an Basic rangegangen bin. Die Punkte, die du positiv hervorhebst, habe ich (fast) alle schon erwaehnt gehabt, nur in anderen Worten. Du hattest ja nach Pascal gefragt. Ich hatte in meinem Post erwaehnt, dass praktisch (fast) alles, was es fuer C(++) gibt, auch fuer Pascal zu haben ist. Somit stehen natuerlich DirectX und OpenGL genau so zur Verfuegung wie andere Engines, z.B. TrueVision3D. Zudem wird Delphi bzw Pascal auch zur professionellen Spieleentwicklung verwendet, z.B. bei Age of Wonders und AoW II

  6. #6
    Mich stoert es irgendwie ein bisschen, dass Du C++-Code bezichtigst, kryptisch zu sein ^^; IMHO ist ein "begin" auch nicht wesentlich besser oder leicht verstaendlicher als ein "{".
    Ausserdem sollte man ja nicht vergessen, dass es letztendlich Sache des Programmierers ist, wie kryptisch sein Code aussieht. Ich weiss, dass man mit C++ sehr sauberen Code schreiben kann und ich gehe auch mal davon aus, dass es mit Pascal moeglich ist, wahnsinnig unverstaendlichen Code zu schreiben.

  7. #7
    Eigentlich wollte ich das nicht zu einem Spamthread verkommen lassen, sondern ehr zu einer tabellarischen uebersicht, aber was solls ...

    Das "kryptisch" bezieht sich auf die Ansicht der Allgemeinheit der Programmieranfaenger, die noch nie eine Sprache gesehen hat.

    Wer ein wenig Englisch kann, kann sich in der Regel noch vorstellen, was ein Pascal Programm in etwa macht, wen er die Schluesselwoerter verfolgt. Mit C(++) ist das wesentlich schwieriger, da er in der Regel nicht weiss, was { && || ? & | ^ ~ bedeutet. Wenn er sich in die Sprache eingearbeitet hat, und weiss, was die Zeichen bedeuten, dann ist das natuerlich kein Problem sondern ein Vorteil im Schreibaufwand. Allerdings hat die Erfahrung gezeigt, dass Personen, die noch nie eine Programmiersprache gesehen haben, und einen Pascal und einen C++ Quelltext (unkommentiert) nach Verstaendlichkeit beurteilen muessten, meist fuer Pascal votiert haetten.

  8. #8
    Fuer eine tabellarische Uebersicht koennte man es ja spaeter noch einmal komplett zusammenfassen und als neuen, geschlossenen Thread anpinnen.

    @kryptisch:
    So gesehen hast du natuerlich Recht. Wenn man noch nie eine Zeile Code geschrieben hat, wirkt C++ Code bestimmt nicht sonderlich einladend. Wobei ich zum Beispiel immer ein Freund von Klammern war und mit C++-Code deswegen besser gefaellt als z.B. Basic-Code. Aber das ist natuerlich geschmackssache.
    Wenn man noch in dem Stadium ist, sich ueberhaupt an den Gedanken des Programmierens zu gewoehnen, ist Pascal vielleicht leichter verstaendlich als C++.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •