Ergebnis 1 bis 20 von 21

Thema: Welche Programmiersprache für welches Projekt?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Java kenn ich nicht aber von C/C++ kann man sagen, dass es nicht unbedingt einen Anfängerfreundlichen Ruf hat, was dahinter steckt, keine Ahnung. Ich hab zuvor Pure Basic gelernt und danach C/C++ angefangen. Daher weiß ich nun nicht, ob das Verständnis für die Sache auch gekommen wär, wenn ich direkt C/C++ angefangen hätte. Probier es aus!
    Aber die komplizierteste Sprache ist es sicher nicht. Probier mal BrainFuck aus, naja, es gibt nur wenige Befehle was es eigentlich unkompliziert macht, aber damit komplexe Dinge zu schreiben ist kompliziert, da man wenig machen kann außer Speicherbereiche verschieben und sowas... Und Assembler ist imo auch komplizierter als C/C++, auch weniger lesbar auf den ersten Blick.

    Zu den Bildern: Funktionen für Bilder, Grafiken allgemein oder GUI gibt es in C/C++ überhaupt nicht. Dazu muss man auf andere Bibliotheken zurückgreifen, weche sich in C/C++ einbinden lassen.
    Ich quote mal mich selbst:
    Zitat Zitat
    Ich empfehle da die WinAPI zum Start. Diese benutzt die sogenannte GDI zum Anzeigen von Grafiken. Wenn du also in dein Programm die WinAPI einbaust, kannst du Befehle der GDI nutzen um Bitmaps in einem Fenster auszugeben. Das Fenster auf Vollbild zu legen ist auch möglich, was dann die Optik eines Spieles hätte, wenn man alle Ränder und Buttons ausblendet.
    Wie man die WinAPI einbindet, erklären zahlreiche Bücher über die WinAPI oder einige Online-Tutorials. Such mal per google danach. Soviel kann ich verraten, du brauchst dazu die Header-Datei <windows.h> sowie im Linker musst du gdi32 linken (wenn du den Linker/Compiler verwendest, der bei Dev-C++ dabei ist). Die main() Funktion entfällt dabei, dafür gibt es eine WinMain()-Funktion. (Alles nachzulesen in der Win32.hlp Datei, der Hilfedatei für die WinAPI. (Google wird die sicher finden))

    Ansonsten beibt zu sagen, dass man, bevor man die WinAPI verwenden will, zumindest die Grundkenntnisse von C (die WinAPI ist eher mit C-Code zu vergleichen als mit C++) beherrschen sollte. Also Sachen wie Pointer, Variablentypen, Arrays, Schleifen, If und Switch, halt alle Dinge die so ein typisches Tutorial wie dieses hier behandelt: http://tutorial.schornboeck.net/inhalt.htm
    Entnommen aus dem Beitrag "Bilder in C++".

  2. #2
    Zitat Zitat von Ynnus
    Und Assembler ist imo auch komplizierter als C/C++, auch weniger lesbar auf den ersten Blick.
    Naja, eigentlich ist eine Assemblersprache nicht viel schwerer als die gängigen Hochsprachen, vielleicht sogar noch etwas einfacher. Die Assembler-Grundlagen zu lernen ist IMHO nicht so schwer wie beispielsweise die C++-Grundlagen zu lernen. Aber mit Assembler erreicht man eben nicht so schnell etwas. Ich würde also sagen: Assembler selbst ist nicht sonderlich schwer, aber es ist schwer mit Assembler große Programme zu schreiben. Obwohl man mit Assembler ja auch auf Schnittstellen wie die WinAPI oder DirectX bzw. OpenGL zugreifen kann. Es ist zwar meistens ein vielfaches des Hochsprachen Codes nötig, aber das Programm ist im Endeffekt doch meistens kleiner und schneller.
    Für zeitkritische oder hardwarenahe Routinen bietet sich Assembler wirklich an. Direkt die Prozessorenbefehle einzutippen ist natürlich auch nicht schlecht. Aber unter Linux AFAIK etwas schwerer - dank Dateiformat. Unter Windows reicht ja die Endung meistens schon aus.
    Btw, Jesus, wieso kommt Assembler in deiner Auflistung vor den Programmiersprachen?

    freundliche Grüße, Rolus

    Geändert von Rolus (02.07.2005 um 17:48 Uhr)

  3. #3
    [QUOTE=Rolus]Direkt die Prozessorenbefehle einzutippen ist natürlich auch nicht schlecht. ;) Aber unter Linux AFAIK etwas schwerer - dank Dateiformat. Unter Windows reicht ja die Endung meistens schon aus.[/code]
    So, dann schreib' mal den Text "Hallo Welt" in eine Textdatei und häng' .exe an den Dateinamen an. Du erhältst kein ausführbares Programm.
    Linux hat ein anderes Format für ausführbare Dateien (ELF; Windows benutzt PE), aber das macht das Erstellen von ausführbaren Programmen nicht komplizierter.

    Zitat Zitat
    Btw, Jesus, wieso kommt Assembler in deiner Auflistung vor den Programmiersprachen?
    Weil ich beim Editieren nicht aufgepaßt habe.

  4. #4
    Zitat Zitat von Jesus_666
    So, dann schreib' mal den Text "Hallo Welt" in eine Textdatei und häng' .exe an den Dateinamen an. Du erhältst kein ausführbares Programm.
    Linux hat ein anderes Format für ausführbare Dateien
    Hm, ich habe "Prozessorenbefehle" geschrieben und nicht ASCII-Text.
    Wenn ich die Prozessorenbefehle in eine Datei schreibe (den auszugebenden ASCII Text natürlich auch) und das ganze *.exe nenne, bekomme ich eine ausführbare Datei. Also für ein einfaches HelloWorld wäre der Code in hexadezimaler schreibweise:
    Code:
    BA 08 01 B4 09 CD 21 C3 48 61 6C 6C 6F 20 57 65 6C 74 24
    Erläuterung: BA füllt das DX-Register mit dem folgenden 16-Bit Wert 0108, was der Offset-Adresse des auszugebenden String entspricht. B4 füllt das AH-Register mit dem folgenden Wert 09, weil wir die Funktion 9 des Dos-Interruptes aufrufen wollen. CD 21 ruft nämlich den Dos-Interrupt 21h auf, der einen $-terminierten String ausgibt. C3 ist der Rücksprungbefehl - hier wird das Programm beendet und es geht zurück zu Windows. Der Rest ist der $-terminierte ASCII Code von "Hallo Welt" (48=H bis 74=t) natürlich alles in Hexadezimalschreibweise, damit man es mit einem Hexeditor als *.exe speichern kann und ein ausführbares Programm bekommt (ein sehr kleines HelloWorld - das schafft man mit C nie).
    Man kann unter Windows also einfach Prozessorenbefehle in eine Datei schreiben, dieser die richtige Endung geben und ausführen ohne dass man sich an irgendein Dateiformat halten muss. Und ich meine, dass das unter Linux nicht geht - aber probiert habe ich es noch nicht. Wäre aber quasi der gleiche Code, bloß dass man statt Dos-Interrupts natürlich Linux System Calls verwenden sollte.

    freundliche Grüße, Rolus

  5. #5
    Zitat Zitat von Rolus
    Hm, ich habe "Prozessorenbefehle" geschrieben und nicht ASCII-Text.
    Wenn ich die Prozessorenbefehle in eine Datei schreibe (den auszugebenden ASCII Text natürlich auch) und das ganze *.exe nenne, bekomme ich eine ausführbare Datei. Also für ein einfaches HelloWorld wäre der Code in hexadezimaler schreibweise:

    [...]

    Man kann unter Windows also einfach Prozessorenbefehle in eine Datei schreiben, dieser die richtige Endung geben und ausführen ohne dass man sich an irgendein Dateiformat halten muss. Und ich meine, dass das unter Linux nicht geht - aber probiert habe ich es noch nicht. Wäre aber quasi der gleiche Code, bloß dass man statt Dos-Interrupts natürlich Linux System Calls verwenden sollte.

    freundliche Grüße, Rolus
    Und das funktioniert genau deshalb, weil Windows nicht ausschließlich nach der Dateiendung sieht. Was du schreibst ist eine COM-Datei und Windows weiß das (bei ausführbaren Dateien bestimmt Windows anhand des Inhalts der ersten paar Bytes, um welches Format es sich handelt. Beispielsweise ist bei 9x command.com in Wirklichkeit eine PE und wird auch als solche ausgeführt).

    Wie Dingsi schon angemerkt hat hängt die Ausführbarkeit einer Datei unter Linux nur davon ab, ob sie richtig gechmodet ist.
    Ob man den Code direkt ausführen kann ist fraglich - als Linux entwickelt wurde was COM schon dermaßen obsolet, daß es im Kernel AFAIK keine Unterstützung dafür gibt. Es sollte aber ziemlich einfach sein, ein Skript zu schreiben, das beliebigen Code im ELF einwickelt.
    Falls der Kernel noch mit Unterstützung für a.out kompiliert wurde könnte es auch sein, daß man so relativ einfach seinen Code ausführen kann - aber ich bin mir da nicht sicher.

Berechtigungen

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