PureBasic, C++, Java und die ganze Sprachenscha(r)

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Didelphodon hat geschrieben:@PMV ... Prolog ist eine Sprache, in ders grundsätzlich in erster Linie nur um Rekursionen geht. Alles was KI braucht oder "lernende Systeme" halt auszeichnet kann damit serviciert werden. Als Beispiel fiele mir da z.B. ein Programm zur geometrischen Formenerkennung ein (das haben wir damals in der Schule geschrieben). Aber eines kann ruhigen Gewissens behauptet werden: Prolog ist ein Mysterium für sich! :roll:.

LG Didel.
hehe ... mysterium für sich hört sich gut an *gg*

Naja wenn ich die Zeit hätte würds mich schon so nen bischen reitzen um schöne KIs zu schreiben <) ... aber damit dürfte dann aber 1-2 Jahre durchs Land gehen bis ich so weit wäre. Vorallem wenn man da ließt, das die sprache net ganz einfach sein soll :lol: ... ^^naja ich hab mir erst mal genug vorgenommen für die nächste Zeit.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag von Sebe »

In meiner persönlichen Sprachen Topliste nimmt derzeit wieder BlitzMax den ersten Rang ein, dannach PureBasic. Auf Platz 3 C# und erst auf Platz 4 folgt C++.

Wieso BlitzMax auf 1? Ich finde es vereint die Vorteile von PureBasic und C#. Aber PureBasic ist zum Prototyping von Applikationen und auch für 2D Spiele sehr schön.

Achja: Inline-Assembler lässt sich auch in C++ schreiben :wink:
Stört euch doch bitte nicht daran, dass Leute meinen sie würden sich weiterentwickeln nur weil sie von PureBasic zu C++ wechseln. Ich habe vor PureBasic und BlitzMax knapp 6 Jahre in C++ programmiert und kann nicht sagen, dass PureBasic ein Rückrschritt für mich wäre :allright:
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Zum weiterentwickeln:
Wer PB lernt entwickelt sich weiter - wer C++ lernt entwickelt sich weiter
Hier bei spielt keine rolle, in welcher Reihenfolge man das lernt denn jeder gelernte Programmiersprache die einen weiter bringt, bzw mit der man gerne umgeht ist eine Bereicherung und somit entwickelt man sich dabei weiter, keine Programmiersrache kann man schon können, bevor man sich nicht damit ausgibig beschäftigt. Um so mehr ein Programmierer kann um so besser :wink: .

Es muss aber zugegeben werden, das C/C++ nicht so einfach ist wie PB und mit C++ kann man auch nicht so schnell zum ziel kommen. Außerdem, das wichtigste, C/C++ wird überall genutzt. PB aber eher weniger ... öhm garnicht? ... Wenn PB den durchbruch schaft dann ändert sich das alles natürlich. Aber wer C/C++ versteht sollte mit PB keine probleme haben. Wer PB kann muss aber nicht zwangsläufig mit C/C++ klar kommen. Weiterleitend wäre dann noch da dieses Prolog. Wer C/C++ beherscht muss Prolog nicht unbedingt können, aber andersrum ist es zu vermuten. Zumindest wenn Prolog wirklich so kompliziert und schwer ist. <) Für mich persönlich wäre dann Prolog der Gipfel der Programmiersprachen, rein theoretisch :wink:

... so ich hab mal den vergleich zwischen C++ und PB rausgesucht, den Danilo gepostet hatte ... wie scho gesagt dürfte das ein oder andere nicht mehr so gelten bzw sich verbesser haben.

Code: Alles auswählen

------------------------------------------------------------ 
|  PureBasic                 |  C++                        | 
|----------------------------+-----------------------------| 
| Datentypen:                |                             | 
|                            |                             | 
|   - keine unsigned typen   |   - alle typen auch als     | 
|                            |     unsigned vorhanden      | 
|   - double fehlt           |   - double      (64-bit)    | 
|   - long double fehlt      |   - long double (80-bit)    | 
|                            |   - Bitfelder unterstützt   | 
|   - Aufzählungen (enums)   |   - bool                    | 
|     sind kein Typ.         |   - eigene neue Datentypen  | 
|   - Arrays können nicht    |     über Klassen möglich    | 
|     bei der Deklaration    |   - numerische Klassen,     | 
|     initialisiert werden.  |     z.B. complex            | 
|                            |   - Unicode-Unterstützung   | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Zeiger:                    |                             | 
|                            |                             | 
|   - Zeiger auf Arrays      |   - erlaubt Zeiger auf      | 
|     nur über Strukturen    |     Arrays direkt           | 
|   - Zeiger/Adressen werden |   - Zeiger werden als der   | 
|     alle Byte-Weise behan- |     Typ behandelt, auf den  | 
|     delt.                  |     sie zeigen.             | 
|   - Probleme mit Zeigern   |     (++ mit einem Zeiger    | 
|     in Strukturen          |      auf type erhöht um     | 
|                            |      sizeof(type))          | 
|   - Zeiger auf Zeiger      |                             | 
|     nicht unterstützt.     |                             | 
|   - Funktionszeiger nicht  |                             | 
|     unterstützt.           |                             | 
|   - Zeiger auf interne     |                             | 
|     Funktionen nicht       |                             | 
|     unterstützt.           |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Funktionen:                |                             | 
|                            |                             | 
|   - Funktionen-Macros      |   - Funktionen können Para- | 
|     nicht vorhanden.       |     meterlisten variabler   | 
|   - Funktionen mit vari-   |     Länge haben:            | 
|     abler Prameterzahl     |     int func(int a,...);    | 
|     nur extern möglich.    |   - Default-Parameter für   | 
|   - Funktionen überladen   |     Funktionen:             | 
|     nicht möglich, wodurch |     int func(int a,int b=0);| 
|     man für jeden Typ einen|   - Funktionen überladen,   | 
|     eigenen Funktionsnamen |     typ der argumente:      | 
|     braucht (Str/StrL/StrF,|       int   abs(int a);     | 
|     PokeB/PokeW/PokeL/PokeS|       float abs(float a);   | 
|     PeekB/PeekW/PeekL/PeekS|     anzahl argumente:       | 
|     ).                     |       int abc(int a);       | 
|                            |       int abc(int a,int b); | 
|                            |   - Inline-Funktionen       | 
|                            |   - Parameter-Übergabe      | 
|                            |     per Referenz            | 
|                            |   - Templates für Funktionen| 
|                            |                             | 
|----------------------------+-----------------------------| 
| Objekt-Orientierte         |                             | 
| Programmierung             |                             | 
|                            |                             | 
|   - nicht unterstützt,     |   - Kapselung: private,     | 
|     lediglich der Aufruf   |     public, protected       | 
|     von Funktionen über    |   - Vererbung (mehrfach)    | 
|     Strukturen/Interfaces  |   - Polymorphie             | 
|     wie im Windows COM     |   - Namensräume             | 
|     (Component Object      |   - überladen von Funktionen| 
|      Model).               |     und Operatoren          | 
|                            |   - virtuelle Funktionen    | 
|                            |   - Templates für Klassen   | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Ausnahmebehandlung:        |                             | 
|                            |                             | 
|   - relativ umständlich    |   - komplettes Exception    | 
|     über OnError-Library.  |     Handling integiert.     | 
|   - Fängt nicht alle       |                             | 
|     Crashs ab.             |                             | 
|   - OnError gilt immer     |                             | 
|     Global für das ganze   |                             | 
|     Programm.              |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Libraries:                 |                             | 
|                            |                             | 
|   - Enthält Libraries für  |   - große Standard-Lib für  | 
|     sehr viele Bereiche,   |     Konsolen-I/O, Datei-I/O,| 
|     von Standardfunktionen |     String- und Zeichenket- | 
|     für Mathe, Strings,    |     ten-Funktionen,         | 
|     Konsolen-I/O, Datei-I/O|     Mathe-Funktionen        | 
|     über erweiterte Sachen |     (Trigonometrische,      | 
|     wie Images, Netzwerk,  |      Hyperbolische,         | 
|     Pack-Funktionen usw.   |      Exponential- und       | 
|   - Enthält großes         |      Logarithmus-Funktionen,| 
|     GUI-System für Fenster |      und grundlegende Mathe-| 
|     und Gadgets.           |      mathik-Funktionen),    | 
|   - Enthält großes System  |     Speicher-Funktionen,    | 
|     zur Spieleentwicklung  |     Zeit-/Datums-/Lokali-   | 
|     für 2D und pseudo-3D   |     sierungs-Funktionen, .. | 
|     (3D-Sprites).          |   - große Standard Template | 
|   - Enthält einige wenige  |     Library (STL) mit       | 
|     Funktionen einer alten |     Templates, Containern,  | 
|     Version der OpenSource |     Algorithmen             | 
|     3D-Engine OGRE.        |   - Enthält keine Funktionen| 
|                            |     für GUIs oder zur       | 
|                            |     Spieleentwicklung.      | 
|   - Libraries meist in C   |   - Libraries teils in ASM  | 
|     geschrieben und als    |     teils in C geschrieben, | 
|     Aufsatz/Wrapper auf C. |     je nach Funktion und    | 
|     Teilweise auch in ASM, |     Compiler-System.        | 
|     durch das Ziel der     |     Von den grundlegenden   | 
|     Platformunabhängigkeit |     Libraries (Mathe etc.)  | 
|     aber meist in C.       |     gibt es oftmals speziell| 
|                            |     optimierte Versionen    | 
|                            |     für einen speziellen    | 
|                            |     Prozessor (z.B. MMX,    | 
|                            |     SSE,SSE2,3Dnow! auf x86)| 
|                            |                             | 
|                            |                             | 
|   Viele Funktionen sind    |   Alle Funktionen/Klassen   | 
|   nicht auf allen 3 unter- |   der Standard-Library und  | 
|   stützten Platformen      |   der STL sind komplett     | 
|   enthalten, so dass       |   platformunabhängig und    | 
|   komplett platformunab-   |   somit überall verfügbar.  | 
|   hängige Entwicklung nur  |                             | 
|   in Teilbereichen möglich |                             | 
|   ist, bzw. mit Einschrän- |   Tausende externe Libraries| 
|   kungen.                  |   verfügbar, siehe Punkt    | 
|                            |   "Erweiterbarkeit".        | 
|   Für das GUI-System gibt  |                             | 
|   es nur insgesamt 7       |   Bei Änderungen der Technik| 
|   Events, welche auch nicht|   oder bei neuen Algorithmen| 
|   für alle Gadgets oder    |   (Kompression, MP3, etc..) | 
|   Windows zur Verfügung    |   sind Libraries dafür immer| 
|   stehen.                  |   sofort für C++ verfügbar. | 
|                            |                             | 
|   Purebasic versucht eine  |   Alle großen Hersteller    | 
|   breite Palette zur Ver-  |   von Hard- und Software    | 
|   fügung zu stellen, imple-|   stellen Libraries, zur    | 
|   mentiert viele Sachen    |   Programmierung Ihrer      | 
|   jedoch nur halbherzig.   |   Produkte, immer recht     | 
|   Toolbars, Menus und Gad- |   schnell für C++ zur Ver-  | 
|   gets sind als Grundfunk- |   fügung. Meist auch *nur*  | 
|   tionen eingebaut, haben  |   für C und C++.            | 
|   jedoch nicht viele       |                             | 
|   Möglichkeiten. Moderne   |                             | 
|   Toolbars oder Menus sind |                             | 
|   nicht integriert.        |                             | 
|   Alles im Standard-Look,  |                             | 
|   z.B. Win95 auf Windows.  |                             | 
|                            |                             | 
|   Es passiert auch öfters  |                             | 
|   das funktionierende      |                             | 
|   Befehle in einer nächsten|                             | 
|   Version plötzlich nicht  |                             | 
|   mehr richtig funktionie- |                             | 
|   ren. Wie schnell dies    |                             | 
|   dann behoben wird ist    |                             | 
|   stark unterschiedlich,   |                             | 
|   von 1-2 Tagen bis zu     |                             | 
|   mehreren Wochen.         |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Erweiterbarkeit:           |                             | 
|                            |                             | 
|   - Compiler stellt keine  |   - Libraries/Objects können| 
|     Funktion zur Verfügung |     meist direkt erstellt   | 
|     um Libraries zu erstel-|     werden.                 | 
|     len.                   |                             | 
|     Möglich über externe   |                             | 
|     Sprachen und ein 3rd-  |                             | 
|     Party Utility (ein-    |                             | 
|     geschränkt).           |                             | 
|                            |                             | 
|   - Einige wenige 3rd-Party|   - Tausende Libraries      | 
|     Libraries und Tools    |     und Entwickler-Kits     | 
|     erhältlich, freeware   |     zu allen Themen der     | 
|     und kommerziell.       |     Programmierung erhält-  | 
|   - Addons meist nicht für |     lich, freeware und      | 
|     alle 3 Platformen      |     kommerziell.            | 
|     erhältlich.            |   - Addons oftmals für viele| 
|   - LibrarySDK ist nicht   |     Platformen erhältlich,  | 
|     auf allen unterstützten|     so zum Beispiel Libs    | 
|     Platformen gleich er-  |     für GUI, Spieleentwick- | 
|     hältlich und die Doku- |     lung, Netzwerk (UDP,    | 
|     mentation dazu ist un- |     HTTP,FTP), Packen,      | 
|     vollständig.           |     De-/Entcrypten, ...     | 
|   - Compiler und Sprache   |   - Compiler meist nicht    | 
|     selbst nicht erweiter- |     erweiterbar (bei Open-  | 
|     bar, nur über externe  |     Source-Compilern mög-   | 
|     Libraries.             |     lich). Bei kommerziellen| 
|                            |     Compilern auch meist    | 
|                            |     nicht nötig, da sich    | 
|                            |     diese alle an den Stan- | 
|                            |     dard für C++ halten und | 
|                            |     alle vom Clientel ge-   | 
|                            |     wünschten Funktionen so-| 
|                            |     wie Optimierungen von   | 
|                            |     Haus aus mitbringen.    | 
|                            |   - Die Sprache selbst ist  | 
|                            |     durch Macros, Klassen   | 
|                            |     und Templates fast      | 
|                            |     beliebig erweiterbar.   | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Source-Codes:              |                             | 
|                            |                             | 
|   - etliche hundert Codes  |   - hunderttausende Codes   | 
|     aus der Community      |     zu allen Themen der     | 
|     frei erhältlich, z.B.  |     Programmierung im Netz  | 
|     im PB CodeArchiv.      |     frei erhältlich.        | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Dokumentation,             |                             | 
| Tutorials und Bücher:      |                             | 
|                            |                             | 
|   - Große und recht aus-   |   - Zur Sprache selbst sind | 
|     führliche Dokumentation|     tausende Tutorials      | 
|     der Libraries enthal-  |     sowie Bücher erhältlich,| 
|     ten. Teilweise mit     |     frei und kommerziell.   | 
|     Lücken, zum Beispiel   |   - kommerzielle Compiler   | 
|     bei Rückgabewerten.    |     werden meist mit Tonnen | 
|                            |     an Dokumentation zur    | 
|                            |     Sprache, zu den Libs    | 
|                            |     und Templates, und zum  | 
|                            |     Compiler ausgeliefert.  | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Community/User             |                             | 
|                            |                             | 
|   - ca. 1.500 User weltweit|   - über 3.000.000 User     | 
|                            |     weltweit.               | 
|                            |                             | 
|   - Communities in versch. |   - Hunderte Communities    | 
|     Sprachen, z.B. Deutsch,|     in vielen Sprachen.     | 
|     Englisch und Franzö-   |                             | 
|     sich.                  |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Verfügbarkeit:             |                             | 
|                            |                             | 
|   - 1 kommerzieller        |   - Hunderte Compiler von   | 
|     Compiler von einem     |     verschiedenen Entwick-  | 
|     Hersteller verfügbar.  |     lern und Herstellern    | 
|                            |     verfügbar, frei und     | 
|                            |     kommerziell.            | 
|                            |                             | 
|   - Platformen:            |   - Platformen:             | 
|     Amiga   (68k)*         |     Compiler für fast jede  | 
|     Linux   (x86)*         |     Platform und jedes OS   | 
|     Windows (x86)*         |     erhältlich.             | 
|                            |     Beispiele:              | 
|                            |     Windows, Linux, Solaris,| 
|   * Ausstattung ist auf    |     DOS, Palm, Amiga, PSX,  | 
|     allen Platformen sehr  |     Playstation2, GameCube, | 
|     unterschiedlich.       |     Embedded Systems, Arm.  | 
|     So wird auf Windows    |                             | 
|     eine IDE mitgeliefert, |                             | 
|     Auf Amiga ein einfacher|                             | 
|     Editor, und auf Linux  |                             | 
|     wird gar auf eine IDE  |                             | 
|     oder einen Editor      |                             | 
|     verzichtet.            |                             | 
|     Auf Windows kommt noch |                             | 
|     ein einfacher externer |                             | 
|     GUI-Designer dazu.     |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Sprache:                   |                             | 
|                            |                             | 
|   - Befindet sich noch in  |   - Entwickelt seit 1979    | 
|     Entwicklung, keine     |     3 große Revisionen:     | 
|     richtige Sprachspezi-  |     1985, 1990 und 1997     | 
|     fikation erhältlich.   |   - Seit 1997 gibt es einen | 
|   - Sprache wird seit ca.  |     offiziellen Standard    | 
|     7 Jahren entwickelt    |     des ANSI- und ISO-      | 
|     und geändert/angepasst |     Komitees.               | 
|     wie es dem Entwickler  |   - Enthält die Sprache C   | 
|     beliebt.               |   - Die Sprache C++ gehört  | 
|     Allgemein ist der      |     zu einer Sprachgruppe   | 
|     kleine Sprachumfang    |     die alle auf der Syntax | 
|     recht stabil, es gibt  |     von C aufbauen.         | 
|     aber noch Teile die    |     So ist der Grundaufbau  | 
|     undefiniert/verbuggt   |     bei den Sprachen C, C++,| 
|     sind (Pointer in Struk-|     C# und Java gleich      | 
|     turen).                |     (Keywords, Program-Flow | 
|   - Die Sprache PureBasic  |      (Loops etc)).          | 
|     ist eine BASIC-Sprache,|     Wer die Grundsprache C  | 
|     steht aber so für sich |     beherrscht wird sich bei| 
|     allein. Kenntnisse in  |     C++, C# und Java schnell| 
|     PureBasic sind in      |     zu Hause fühlen.        | 
|     anderen Sprachen oder  |   - Alle modernen Compiler  | 
|     selbst anderen BASIC-  |     halten sich an den      | 
|     Compilern kaum nütz-   |     ANSI/ISO-Standard, wo-  | 
|     lich.                  |     durch die platformüber- | 
|   - Sprache wird nur von   |     greifende Entwicklung   | 
|     einem Compiler unter-  |     kein Problem ist.       | 
|     stützt.                |   - Sprach-Standard wird    | 
|   - Weiterentwicklung der  |     vom Komitee in Abständen| 
|     Sprache ist vom Ent-   |     von ca. 5 Jahren        | 
|     wickler abhängig.      |     offiziell weiterent-    | 
|     Hat er einen Unfall    |     wickelt um die Sprache  | 
|     oder verstirbt uner-   |     der Weiterentwicklung   | 
|     wartet, dürfte die     |     anzupassen.             | 
|     Sprache der Vergangen- |                             | 
|     heit angehören.        |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| CompilerSystem:            |                             | 
|                            |                             | 
|   - Unterstützt nur wenige |   - Compilerabhängig werden | 
|     Grundsachen auf der    |     meist auch alle Möglich-| 
|     jeweiligen Platform,   |     keiten der jeweiligen   | 
|     z.B. Standard-DLLs und |     Platform unterstützt.   | 
|     WinAPI auf Windows.    |     So zum Beispiel MFC,    | 
|   - Kompiliert immer den   |     COM/ATL/ActiveX,        | 
|     kompletten Code, eine  |     Treiberentwicklung usw. | 
|     Aufteilung in Module   |     auf Windows.            | 
|     erfolgt nicht.         |   - Kompiliert nur geänder- | 
|   - Enthält kein komplettes|     te Module, auch über    | 
|     Kit zur Entwicklung auf|     externe Tools wie MAKE. | 
|     der jeweiligen Platform|   - Entwicklerkits für eine | 
|     (z.B. PSDK auf Window),|     Platform sind immer für | 
|     wodurch man sich diese |     C und C++ erhältlich, so| 
|     Informationen (Struk-  |     dass man sie nur einbin-| 
|     turen,Konstanten,Funk- |     den muss (Platform-SDK, | 
|     tionsdeklarationen)    |     DirectX-SDK,DeviceDriver| 
|     sehr oft aus dem jewei-|     Development Kit,Speech  | 
|     ligem SDK für C/C++    |     SDK usw..).             | 
|     raussuchen muß und nach|                             | 
|     PureBasic übersetzt.   |                             | 
|   - Compiler ist nicht     |   - Optimierungen hängen    | 
|     optimierend und analy- |     stark vom jeweiligen    | 
|     siert den Code nicht.  |     Compiler ab. Während    | 
|     Grundlegende Sachen wie|     freie Compiler nicht    | 
|     Dead-Code-Elimination  |     immer alle modernen     | 
|     werden nicht unter-    |     Optimierungen durch-    | 
|     stützt, Loops nicht    |     führen, sind kommer-    | 
|     analysiert und opti-   |     zielle Compiler meist   | 
|     miert.                 |     in der Lage alle bekann-| 
|   - CompilerSwitch zum     |     ten Optimierungen durch-| 
|     setzen des Prozessors  |     zuführen und bieten     | 
|     ist vorhanden, wird    |     dafür unzählige Einstel-| 
|     jedoch kaum oder nicht |     lungen an, um das gewün-| 
|     genutzt. Der Switch    |     schte und bestmögliche  | 
|     ist nur im Zusammen-   |     Ergebniss zu erhalten.  | 
|     hang mit Libraries     |                             | 
|     brauchbar, da der      |                             | 
|     Compiler nur Standard- |                             | 
|     Code produziert.       |                             | 
|   - Im ganzen System (Libs)|                             | 
|     allgemein zu wenig     |                             | 
|     moderne Features und   |                             | 
|     nach fast jedem Update |                             | 
|     Änderungen und neue    |                             | 
|     Bugs, so daß es für    |                             | 
|     große kommerzielle     |                             | 
|     Produkte eher nicht zu |                             | 
|     empfehlen ist. Es ist  |                             | 
|     durchaus möglich, aber |                             | 
|     man muß darauf gefasst |                             | 
|     sein viele Workarounds |                             | 
|     zu programmieren und   |                             | 
|     wird so viel Zeit in   |                             | 
|     eigentlich unnötige    |                             | 
|     Sachen stecken müssen, |                             | 
|     was bei der kommerziel-|                             | 
|     len Entwicklung stark  |                             | 
|     von Nachteil ist - und |                             | 
|     das Datum der Fertig-  |                             | 
|     stellung seines Produk-|                             | 
|     tes öfters nach hinten |                             | 
|     verschieben kann.      |                             | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Preis:                     |                             | 
|                            |                             | 
|   - 59,-Euro für alle 3    |   - je nach Platform, Her-  | 
|     verfügbaren Compiler   |     steller und Ausstattung | 
|     in der Download-Version|     sehr unterschiedlich.   | 
|     mit Online-Referenz.   |   - Auf den Mainstream-     | 
|                            |     systemen (Window,Linux) | 
|                            |     mehrere freie Systeme   | 
|                            |     erhältlich.             | 
|                            |   - große kommerzielle      | 
|                            |     CompilerSysteme oftmals | 
|                            |     ab 100,-Euro bis zu     | 
|                            |     speziellen Enterprise-  | 
|                            |     Versionen (für große/   | 
|                            |     mittlere Firmen und     | 
|                            |     Teams) für mehrere      | 
|                            |     hundert Euro.           | 
|                            |     Compiler für professio- | 
|                            |     nelle Entwickler im     | 
|                            |     Durchschnitt meist für  | 
|                            |     ca. 400,-Euro erhältlich| 
|                            |   - Ausstattung unterschied-| 
|                            |     lich, auch je nach      | 
|                            |     Preis.                  | 
|                            |     Manche Systeme auf 2-5  | 
|                            |     CDs und mit 5 gedruckten| 
|                            |     Handbüchern, andere nur | 
|                            |     mit 500 MB Online-Hilfe.| 
|                            |                             | 
------------------------------------------------------------ 
| Debugger:                  |                             | 
|                            |                             | 
|   - technisch gesehen kein |   - Debugger meist komplett | 
|     echter Debugger, eher  |     in die IDE integriert   | 
|     eine Programmierhilfe. |     mit durchsteppen und    | 
|   - Breakpoints setzen im  |     Breakpoints setzen etc. | 
|     Debugger nicht möglich,|     alles unter einer Ober- | 
|     nur im Programm selbst |     fläche.                 | 
|     über "CallDebugger".   |   - Meist auch mehrere ex-  | 
|   - Debugger kontrolliert  |     terne Debugger verfüg-  | 
|     das laufende Programm  |     bar, da Debug-Infos bei | 
|     nicht, sondern wird    |     großen Herstellern oft  | 
|     mit in die .EXE rein-  |     in einem einheitlichen  | 
|     gelinkt und läuft so   |     Format gespeichert wer- | 
|     mit der .EXE, scheinbar|     den.                    | 
|     als Thread.            |   - Diese Debugger kontrol- | 
|     Da im Debugger kein    |     lieren das ausführende  | 
|     Exception-Handling in- |     Programm komplett und   | 
|     tegriert ist, crasht   |     fangen so Fehler ab.    | 
|     er mit dem Programm    |   - Wenn auf einer Platform | 
|     anstatt einen Fehler   |     verfügbar, wird das     | 
|     abzufangen (die eig.   |     debuggen meist direkt   | 
|     Aufgabe von Debuggern) |     per Hardware genutzt    | 
|     Beispiel: PokeL(10,10) |     (z.B. auf x86 per Hard- | 
|     reicht aus.            |     ware-Breakpoints und    | 
|   - Zur Lokalisierung von  |     den Debug-Registern.    | 
|     versteckten Fehlern im |   - Meist wird auch 2.      | 
|     Programm somit wenig   |     Grafikkarte (Hercules)  | 
|     geeignet.              |     zum debuggen unter-     | 
|   - Steppen durch und      |     stützt, bei kommerziel- | 
|     Ansicht des generierten|     len CompilerSystemen    | 
|     ASM-Codes nicht verfüg-|     ist Remote-Debugging    | 
|     bar (LowLevel Debug).  |     über 2 verbundene       | 
|     Über externen Debugger |     Rechner fast immer      | 
|     schlecht, da keine     |     möglich.                | 
|     standard Debug-Infos   |   - Je nach System gibt es  | 
|     eingelinkt werden, son-|     zum debuggen auch manch-| 
|     dern eigenes Zeugs.    |     mal spezielle Hardware, | 
|   - Ändern von Variablen   |     meist Entwickler-       | 
|     zur Laufzeit nicht     |     Konsolen-Systeme bei der| 
|     möglich.               |     Entwicklung von Spielen | 
|                            |     auf Konsolen etc.       | 
|                            |                             | 
|----------------------------+-----------------------------| 
| Threads:                   |                             | 
|                            |                             | 
|   - Bietet keine Thread-   |   - je nach Platform, es    | 
|     Sicherheit.            |     gibt schliesslich Plat- | 
|   - Beim verwenden jeder   |     formen auf denen kein   | 
|     Funktion in Threads    |     Multitasking und keine  | 
|     ist das verhalten      |     Threads möglich sind    | 
|     undefiniert.           |     (Handhelds, Consolen,   | 
|     Strings kommen durch-  |      Embedded Devices).     | 
|     einander oder das      |   - Auf ComputerSystemen mit| 
|     Programm crasht gleich.|     Thread-Unterstützung    | 
|     In ein Log-File aus 2  |     kann man per Compiler-  | 
|     Threads heraus schrei- |     Option einschalten das  | 
|     ben kann man vergessen.|     eine Threadsichere      | 
|   - Threads somit zum nor- |     Version der Standard-   | 
|     malen Programmieren    |     Library benutzt wird.   | 
|     nicht geeignet. Bei    |   - Threads werden in vielen| 
|     Verwendung sollte man  |     großen Programmen       | 
|     die interne Arbeits-   |     genutzt um während einer| 
|     weise des Compilers    |     internen Arbeit im      | 
|     kennen oder externe    |     Hintergrund normal mit  | 
|     Sachen (API) verwenden.|     dem Programm weiter zu  | 
|                            |     arbeiten, oder auch bei | 
|                            |     FTP- und HTTP-Servern   | 
|                            |     und Clients um mehrere  | 
|                            |     Sessions zu eröffnen.   | 
|                            |                             | 
|                           ---                            | 
|                                                          | 
|   Oftmals werden Threads vom Programmierer falsch        | 
|   (d.h. zu oft) eingesetzt, da in vielen einfachen       | 
|   Programmen garnicht nötig. Bevor man Threads ver-      | 
|   wendet, sollte man immer erst genaustens überlegen     | 
|   ob es auch anders geht. Speziell Programmieranfänger   | 
|   verwenden oft Threads wo es garnicht nötig ist         | 
|   (nur mal allgemeiner Hinweis am Rande).                | 
|                                                          | 
|   Trotzdem werden Threads seit dem aufkommen von Multi-  | 
|   taskingsystemen in vielen Programmen eingesetzt.       | 
|   Programmiersysteme für Multitasking-Umgebungen ohne    | 
|   Threadsicherheit sind in den letzten 10 Jahren fast    | 
|   ausgestorben, da unbrauchbar zur Ausnutzung des        | 
|   Systems. Gerade in den letzten 3 - 4 Jahren haben      | 
|   sich Multiprozessor-Systeme auch schon im Heimbereich  | 
|   durchgesetzt (im Profi-Bereich schon immer) und das    | 
|   Thema wird in Zukunft noch eine größere Rolle spielen  | 
|   (Nicht umsonst werden Prozessoren mit Hyperthreading   | 
|    ausgestattet. Wenn man Threads nicht braucht wäre     | 
|    das nicht der Fall.)                                  | 
|   Threads sind auch ganz speziell bei der Grafikpro-     | 
|   grammierung sehr nützlich, da mehrere Prozessoren      | 
|   auch mehrere FPUs enthalten und so z.B. 3D-Berechnungen| 
|   um fast das doppelte beschleunigt werden können -      | 
|   aber natürlich nicht nur für 3D, sondern auch für alle | 
|   anderen Sachen (wissenschaftliche Berechnungen etc..). | 
|                                                          | 
|----------------------------+-----------------------------| 
| IDE/Tools:                 |                             | 
|                            |                             | 
|   - Kleiner Editor mit     |   - Vom CompilerSystem      | 
|     einigen nützlichen     |     abhängig. Viele Systeme | 
|     Programmierhilfen mit- |     kommen mit einer großen | 
|     geliefert (Windows).   |     IDE daher, die alle     | 
|     Linux ohne Editor,     |     Features des Systems    | 
|     Amiga mit kleinem      |     unter einer einheitli-  | 
|     Editor ohne jegliche   |     chen Oberfläche vereint.| 
|     Programmierhilfen.     |   - Vom Projekt-Management  | 
|   - Debugger und Visual    |     bis zur Codeverwaltung  | 
|     Designer nicht mit im  |     über CVS ist meist alles| 
|     Editor integriert, und |     integriert was der      | 
|     somit teilweise recht  |     Programmierer zur täg-  | 
|     umständlich zu benutzen|     lichen Unterstützung    | 
|     (z.B. Breakpoints vi-  |     braucht. Die Entwick-   | 
|      suell setzen nicht    |     lungsumgebung ist beim  | 
|      möglich, muss man     |     programmieren das wich- | 
|      immer "CallDebugger"  |     tigste überhaupt. Gute  | 
|      im Programm schreiben)|     IDE = komfortables      | 
|   - Wichtige Basis-Dinge   |     arbeiten = schnellere   | 
|     fehlen, so z.B.        |     Entwicklungszeiten.     | 
|     Projekt-Management.    |                             | 
|   - Compiler als Consolen- |   - Zu 99% Compiler als Con-| 
|     Version ausgeliefert,  |     solen-Version geliefert,| 
|     somit kann man auch    |     so daß man auch externe | 
|     externe Editoren und   |     Editoren und IDEs ver-  | 
|     IDEs verwenden.        |     wenden kann.            | 
|                            |   - Die meisten externen    | 
|                            |     Programmiereditoren und | 
|                            |     IDEs unterstützen C++   | 
|                            |     von Haus aus und ent-   | 
|                            |     halten spezielle Featu- | 
|                            |     res für C++.            | 
|                            |                             | 
|                            |   - Viele externe Tools zur | 
|                            |     Programmanalyse und     | 
|                            |     Programmierhilfen er-   | 
|                            |     hältlich (Profiler,     | 
|                            |     Thread-Checker usw..).  | 
|                            |                             | 
------------------------------------------------------------
MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Was kann man eigentlich mit C# proggn?
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Des weiteren, warum sind für Euch die Java-Leute eigentlich keine "Götter", diese Sprache ist - sagen wir mal - doppelt und dreifach so umfangreich wie C++. Warum findet Ihr C (ohne ++) nicht toll?? Schon mal probiert??
Wird aber interpretiert und ist somit um ein vielfaches langsamer als C++ und nochmals viel langsamer als C. Für Dinge wo Geschwindigkeit eine Rolle spielt ist Java eben zu langsam.
Ein sehr großer Vorteil den C/C++ bietet und vor PB hat ist, dass C++ und C für jeden ein Begriff ist. PB kennen die wenigsten Leute. Das ist dann nicht nur schlecht als Referenz, wenn man auch C oder C++ nennen könnte (weil es einfach bekannt als gute Sprache ist) sondern auch schwer später mal im Berufsleben anzuwenden, wenn man denn in die Richtung gehen will. Wer bitte entwickelt heutzutage professionell mit PB? Niemand. Vielleicht MC mit Restricted Area, sind ja auch deutscher Publisher und würden da eine schlechte Werbung machen, wenn sie C++ nehmen würden. Dennoch sind viele komerzielle Spiele in C oder C++ geschrieben, es gibt Engines für diese Sprachen, einfach alles. Oder eben auch Anwendungen. Programmiert wird im Team, da kann nicht einer sagen, "aber PB find ich besser", da muss man sich auf gängige SPrachen einigen. Und da steht C/C++ oben auf (Java allerdings auch).
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Beitrag von Didelphodon »

@Sunny: Dass Java interpretiert wird ist mir bewusst, und daraus resultierende Geschwindigkeitsverluste natürlich auch, es ging mir in besagten Vergleich ja auch gar nicht um die Geschwindigkeit. Nebenbei hab ich vor kurzem gehört - keine Ahnung wie viel da dran ist - dass (insbesondere der von Eclipse) die neuesten Java-Bytecode-Compiler nun schon so gut optimieren, dass annähernd wie auch in vielen Fällen bereits die gleiche Geschwindigkeit wie vergleichbare C++-Programme erreicht wird. Ganz abgesehen aber jetzt von der Geschwindigkeit ist wohl Java durch seinen mittlerweile Vorzeige-Garbagecollector eine der sichersten Sprachen - im Vergleich dazu ist C/C++ neben Assembler wohl eine der sensibelsten Sprachen. So schnell wie C/C++ passiert es wohl keinem, dass Speicherbereiche reserviert werden und bei ungeübter Verwendung nie mehr (auch nach dem Programmende zumindest bis zum nächsten Reboot) zugreifbar sind.

Ein kleiner Ausflug in eine noch gar nicht so alte Vergangenheit: Ich kann mich ja noch allzu genau daran erinnern, wie die Code-Dinosaurier ihren heiß geliebten Assembler verteidigt haben und geradezu über Hochsprachen wie C gelacht haben, da war C damals ebenso auf Aussenseiterposten wie jetzt PureBasic, und was ist passiert? Also ich kenn heut eigentlich niemand mehr, der Anwendungs- (also nicht systemnahe) Programmierung mit Assembler in Reingenuss angeht. Auch auf dem Großrechner wurde der gute alte 370er-Assembler in die Analen des VSE/MVS-Pürzels versenkt. Und zu guter letzt noch Java, von vielen belacht als Sprache (was sie ursprünglich auch war) für Küchen- und sonstiges Gerät; mittlerweile hat sich aber Java als absolut dominante Sprache am trendigen Open-Source-Himmel etabliert, mal ganz abzusehen von J2EE (nicht zu verwechseln mit J2K :freak:).
Zusammengefasst kann man sagen, dass Java eigentlich die besten Voraussetzungen dafür hat, die absolut führende Sprache in jeder Hinsicht zu werden (wenn auch in der Spielbranche vielleicht noch das ein oder andere Schräubchen gedreht werden muss).

LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Beitrag von Didelphodon »

@AndyX: Mit C# kannste eigentlich wie mit allen Microsoft-Compilern für Windows alles proggen. Viel interessanter ist eigentlich, dass C# ja eigentlich nur ein Java-Abklatsch ist und ja ursprünglich sogar unter einem ähnlichen Titel wie sein Konkurenzprodukt erscheinen sollte - das Gates-Männchen hat sich das aber etwas zuuu einfach vorgestellt. Man kann eines getrost behaupten, wenn du Java kannst, kannst du automatisch auch C# (zumindest zu 85%), so einen Abklatsch hab ich eigentlich noch nie gesehen - böse Zungen mögen ja jetzt behaupten, dass Java ja von C ... aber lassen wir das, außerdem betriffts da auch wirklich NUR die Syntax - bei C# dagegen ist das wirklich schon extrem!! Ich hab mir damals ein Buch zu C# gekauft, ausgepackt und hab mich damit aufs Klo gesetzt. Was soll ich sagen - nach 10 Minuten war ich über Seite 150 und hatte noch absolut nichts gesehen, wo ich mir gedacht hätte, hmm, das muss ich mir aber jetzt nochmal genauer geben.

Ich hoffe, du kannst dir jetzt was unter C# vorstellen. Das soll übrigens auch total plattformunabhängig sein (durch seine Justintimecompiler) wobei ich garnicht weiß, ob jetzt eigentlich schon Compiler für Non-Windows-Systeme am Markt bzw. genutzt sind/werden. :lol:

LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Team100
Beiträge: 104
Registriert: 13.09.2004 22:59

Beitrag von Team100 »

@sunny

Du hast vollkommen recht. Teamorientiertes Programmieren in großen
und mittleren Unternehmen spielt sich auf der C /C++ Ebene ab.

-------------------------------------------------------------------------

Wer also sich entscheidet, mit Programmieren sein Geld zu verdienen,
sollte vorerst einmal seine persönliche Ziele erkennen:

- Möchte ich in einem (vielfach) Groß- oder Mittelunternehmen als
angestellter Programmierer arbeiten, so werde ich mit PB-Kenntnissen
nicht punkten, da sind C /C++ Java etc. gefragt.

- Möchte ich mich als Ich-AG betätigen und individuelle Anwendungen
für (meist) Klein-Kunden schreiben, so ist nicht wichtig, welche
Programmiersprache ich verwende. Hauptsache, sie deckt meine Anforderungen ab
und ich beherrsche sie perfekt.

- Wenn man aber nun selbstständig sein möchte und andenkt, ein
kleines, flexibles Softwareunternehmen mit einigen Mitarbeitern zu
führen, weiters auch die ganze Betreuung des Kunden von der
Erfassen des Programmumfanges, der Programmarchitektur, der GUI,
der Schnittstellen, die Programmimplementatiion in die bestehende
Umgebung, das Roll-Out, den Support und die Nachbetreuung, eventuell
auch noch Hardware und Wartungsverträge zu machen (ganz schön viel :wink:)

dann.....

ja dann sieht die Sache ganz anders aus:

-------------------------------------------------------------------------

- dann wäre es günstig, wenn der Mitarbeiter, der mit dem Kunden die
Softwarelösung erarbeitet, auch ganz gut weis wie es mit Machbarkeit,
Zeitdauer, Kosten für die Programmerstellung aussieht. Dazu muß er aber
Programmierkenntnisse haben
und die Programmiersprache einigermaßen beherrschen....

- dann wäre es günstig, wenn der Supporttechniker, der oft hunderte
Kilometer im Auto zum Kunden gefahren ist, ein einfacheres Softwareproblem
gleich vor Ort lösen könnte .....

- der Verkaufsbetreuer, der meist den wichtigen Erstkontakt per Mail,
Telefon, Messen etc. mit den Kunden schafft, auch relativ gute Programmier-
kenntnisse hat, um kompetente Auskünfte zu geben....

-------------------------------------------------------------------------

So, als Firmeninhaber brauche ich dann 4 oder 5 Leute für Verkauf,
Support, Kundenbetreuumg, Auftragsabwicklung die alle brauchbare C /C++
Kenntnisse haben müßten ..... und genau das ist unfinanzierbar, da ausgebildete
C /C++ Programmierer einfach zu teuer für solche Jobs sind.

Jetzt kommt BASIC ins Spiel. Mit Basic bin ich in der Lage, Programmier-
kenntnisse auch angelernten oder branchenfremden Mitarbeitern zu
vermitteln, wenn diese erstens wollen und die
notwendigen (Schul-)Grundvorausstzungen (Mathematik etc.) mitbringen.

So gelingt es ganz einfach, nötiges Programmierbasiswissen bis hin zum
Hardwaresupporter in das Unternehmen zu bringen.

Was ist die Folge: Kompetente Kundenberatung, rasche Programmerarbeitung
mit dem Kunden und Erstellung des Pflichtenheftes,
raschere Programmierung da ja der Kundenbetreuer schon wußte was
möglich ist, was schon aus früheren Projekten übernommen werden kann
und was Probleme machen wird.
Und der Hardwaresupporter löst beim Kunden einfache Probleme wie
andere Buttonbeschriftungen oder GUI-Optik gleich vor Ort...

!!! Und genau das ist mit C /C++ Java & Co nicht möglich !!!

Kein Wunder, daß 90 % aller dieser (meist sehr profitablen) Klein-
Systemhäuser mit BASIC arbeiten, meist VB ....

-------------------------------------------------------------------------

Die Liste von Danilo, die PMV gepostet hat, ist genau der springende
Punkt: Gerade die vielen Punkte, die PB nicht kann, sind der Vorteil !
(Ausnahme natürlich elementare Dinge die fehlen wie doubles & Co)

- es gibt eben keine 100000 Webseiten wo man Beispielcode, LIBs
etc raussuchen kann. In einem Unternehmen will Suchzeit bezahlt werden...

- Es gibt eben nur einen Compiler, dessen Tücken man kennenlernen
muß und nicht hundert, die man ausprobieren kann ob sie nicht besser
sind.....

- Alles ist übersichtlich und einfach, 15 Minuten täglich und man weis
was es neues gibt an Codes, Libs und Updates...

Ich brauche eben für einen Karton, den ich eilig von A nach B schaffen
soll, keinen LKW, sondern es genügt ein billiger VW-Golf. Den LKW brauch
ich wenn ich 20 to zum Befördern habe :D

-------------------------------------------------------------------------

Zum Schluß die Frage: Nun was aber wenn PB nicht mehr entwickelt wird
weil Fred nicht mehr mag oder kann ?? Die Antwort ist einfach: Ein anders
Basic suchen .... und im Zuge der Programmpflege den Quellcode portieren.
Das ist einfacher als man denkt: Vieles läßt sich mit primitiven
Tools übersetzen (... geht auch bei PB wenn mal wieder was in der Syntax geändert wird :mrgreen: )
und wenn ohnehin Programmpflege angesagt ist, dann ist der Mehraufwand bescheiden.
BASIC ist eben sehr einheitlich.

Noch was: Ich habe seit 4 Jahren so ein kleineres flexibles Softwareunternehmen
und unsere Kunden sind mittlerweile alles andere als
Kleinuntenehmen mit Zertifizierungen, Quellcodeprüfung etc. 8).

Es ist mir eine riesige Freude, mit günstigen Preisen, perfekter
Abwicklung, kurzer Lieferzeit und tollen, großteils angelernten Mitarbeitern
am Markt gegen große Softwareunternehmen (mit Ihrer trägen C++ Entwicklungsabteilung)
mit unseren BASIC-Programmen (nunmehr PB) zu punkten :allright:

Cu von Team100
Kompliziert kann es jeder lösen, aber das wirklich Geniale ist einfach.....
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

@Didelphodon:

java eignet sich prinzipbedingt nicht für systemnahe programmierung. automatisierte speicherverwaltung ist nie gut für performance und damit ist die sprache für professionelle spieleentwicklung ziemlich unbrauchbar (obwohl es schon ein paar recht nette 3d engines in java gibt).
die tatsache das es interpretiert ist, ist inzwischen nichtmehr ein all zu großes problem.
das es die dominante opensourcesprache überhaupt ist, würde ich mal ganz stark bezweifeln, mir fällt jedenfalls beim besten willen nichteinmal ein einziges größeres opensource programm ein, dass darin geschrieben wurde (außer eclipse, was als ursprüngliche java entwicklungsumgebung ja auch naheliegend war).

auch ist die platformunabhängigkeit von java ziemlich relativ. sobald man fortgeschrittene dinge umsetzen will, wie zb einen videoplayer ist man dann doch wieder auf native erweiterungen angewiesen.

wenn du dich an zeiten erinnern kannst in denen assembly programmierer über c programmierer gespottet haben, dann mußt du ja sogar noch älter als ich sein. ende der achziger war das jedenfalls kaum noch ein thema.

die vorwürfe das c# von java abgeguckt sein soll beziehen sich auf das vorhanden sein einer automatisierten speicherverwaltung und eines vorkompilierenden interpreters mit cache für nativen code. diese vorwürfe bezogen sich nie auf die c# syntax, denn die ist überall da gleich, wo c# und java von c/c++ geerbt haben.

es gibt einen c# compiler/interpreter für linux, mac os x und andere unixartige betriebsysteme. was noch zu größeren teilen fehlt sind die winforms, weswegen man für gui anwendungen derzeit noch auf andere crossplatform bibliotheken angwiesen ist, zb gtk#.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

C++ programmiert sich tatsächlich ziemlich doof.
Außerdem sind die Debugger meist nicht so gut wie behauptet.
Letztens bei Visual C++ 6.0 habe ich einem Befehl anstatt einem Zeiger
eine Variable übergeben und der Debugger schmierte darauf hin immer ab.
Das habe ich auch auf anderen Systemen probieren können, immer mit dem selben Ergebnis.
Dort wo viel OpenSource ist kann man auch viel Schei** bauen.
Also::
Warum hält sich derzeit Windoof immer noch besser als Linux?
I´a dllfreak2001
Antworten