Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
FreePascal.
Zu C++: Ja, das will ich mir auch aneignen. Wahrscheinlich nicht darauf umsteigen, aber ich will es zumindest so gut beherrschen, dass ich das meiste auch da machen könnte (solange ich keine GUI brauche). Denn ich denke, es wird mir behilflich sein, wenn ich später C++ kann.
Klar hat dies als Sprache, wo man alles steuern kann viel mehr möglichkeiten, wie halt auch FreePascal oder so, und daher kann man auch viel mehr kaputt machen und es kann auch viel mehr im Speicher schiefgehen. Wenn man sich aber erstmal ans Pointergeschiebe und an eventuelle eigenheiten der Plattform auf der man entwickelt gewöhnt hat, geht es eigentlich.
Unterpunkt Hardwarenähe: Ich frage mich immer, was damit gemeint ist, so ganz sicher bin ich mir nicht. Aber da alle hier genannten Sprachen (außer vielleicht Python) Turing-Vollständig sein sollten, müssten auch alle das gleiche können.
Zu Java: In der gegebenen Auswahl kenne ich nichts, was ich schlechter bewerten würde. Ich finde es bei Java schrecklich, keine Kontrolle darüber zu haben, was im speicher hängt. Die vielgelobte Plattformunabhängigkeit ist auch nicht wirklich gegeben. Es tauchen immer wieder probleme auf (ich erinnere mich, dass sich Flash hier mal beschwert hatte und ich selber hatte ein Problem mit einem Java-Applet, welches auf einigen Linux-Systemen garnicht funktionierte). Was die Geschwindigkeit betrifft, das halte ich nicht unbedingt für Vorurteile. Ich sehe immer wieder Anwendungen, die eigentlich gut sind, aber wohl durch ihre Java-Basis unangenehm langsam werden (X² Galaxy Editor, Freecol...). Man kann zwar noch mit arbeiten, klar, aber es liefert nicht das gefühl von einer Flüssig Funktionierenden Oberfläche.
Dass dinge wie Memleaks und so nicht auftreten können, liegt daran, dass Java keine Pointer kennt. Ich frage mich, wie man dann mit Low-Level-Bibliotheken wie OpenGL arbeiten kann (es geht ja offensichtlich, aber wie übergibt man da eigentlich ein VBO?). Callbacks funktionieren in Java ja über die angabe des Methodennames,oder?
Andreas hat geschrieben:
ABER jedes OS hat eine (oder irre ich mich da bei win?) und dann kann man ja updaten mit der alten... oder man liefert die Runtime mit.
Du irrst dich. Und bis vor ein oder zwei Jahren war das unter Linux auch nix, weil Java noch unter einer Lizenz stand, die mit den meisten Linux-Distris nicht kompatibel ist.
Zu ASM: ASM braucht man. Selbst wenn compiler das noch so toll optimieren können. Manche dinge kann man nur in ASM machen, weil die Sprache es auf den schnellen Weg eventuell nicht (offensichtlich) zulässt. Jumptables zum beispiel bei Case-Anweisungen kann man nicht unbedingt erzwingen und man weiss nie, wie der Compiler das Case bewertet. Und in einigen Fällen macht das den unterschied zwischen leben und Tod aus. Mal abgesehen davon, dass man einige dinge nicht mit normalen Compilern machen kann, weil es zu groß wird (siehe Demoszene) oder weil standardmäßig gegen ein Betriebssystem gelinkt wird, welches eventuell garnicht gegeben ist (siehe Bootloader schreiben oder sowas).
Zu Python: Python ist mindestens interessant. Meine Erfahrungen beschränken sich bisher auf das, was ich in Blender gemacht habe, als ich den Restless-Exporter erweitert habe und das, was ich in den BF2 Scripts gesehen habe.
Was mich an Python fasziniert ist, dass es sowohl in kompilierter Form als auch als Scriptsprache verwendbar ist. Leider habe ich noch keine Units gefunden, um die Python-DLLs in Pascal zu nutzen.
Last but of course not least: Zu FreePascal: Bei FreePascal gefällt mir gegenüber Delphi, natürlich, dass es Plattformunabhängig ist. Ein großer Nachteil von allen Pascallschen Sprachen ist allerdings, wie auch häufig angemerkt, dass es viele Bibliotheken zumindest nicht in aktueller Version für Pascal gibt (s.o., Python). Das kann häufig ein schwerer Blocker sein. Wiederum gut ist aber, dass es viele C/C++-Features in FP gibt, die Delphi zum beispiel nicht hat (+= und derivaten, Zugriff auf Pointer mit [], ...) und auch die kompatibilität mit den gcc .o-Dateien und ähnlichen kann ein Vorteil sein.
Zu den IDEs: Mein Albtraum ist Eclipse und direkt danach KDevelop. Bei ersterem könnte es auch daran liegen, dass ich Java nicht sonderlich mag und dass meine ersten Erfahrungen mit Eclipse durch viele Probleme mit der Sprache Java und dem zu entwickelnden Produkt überschattet wurden. Was KDevelop betrifft ist meine Abneigung vermutlich total unbegründet und meine Erfahrungen damit sind auch ewig her und ich hatte damals noch keine Ahnung von Linux. KDev ist halt einfach schlecht in erinnerung geblieben und ich hab mich danach auch nicht weiter damit befasst. Sollte ich vielleicht mal tun (*auf die ToDo list schreib*). Um Platz 1 streiten sich D7 und Lazarus, immer mit abwechselnder Führung. Im Moment liegt Lazarus vorne, wohl auch, weil ich damit im Moment am meisten mache. Was ich bei Lazarus/FPC am meisten vermisse ist die VirtualTreeView-Komponente, die seit Lazarus 0.9.26 leider nicht mehr kompilierbar ist und auch mit den alternativen Widgetsets (GTK, QT) probleme macht.
So, das war mein Senf dazu... mensch, das reicht für mehr als nur eine Currywurst...
Gruß Lord Horazont
@MatReno:
Ja, das mit dem Aufräumen sehe ich genauso. Wobei, hat Python nicht auch nur einen GC? Oder gibts da in Restless ein riesiges Memleak? Oder liegen die Objekte aufm Stack und werden dann automatisch freigegeben?
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
>> Dass dinge wie Memleaks und so nicht auftreten können, liegt daran, dass Java keine Pointer kennt. Ich frage mich, wie man dann mit Low-Level-Bibliotheken wie OpenGL arbeiten kann (es geht ja offensichtlich, aber wie übergibt man da eigentlich ein VBO?). Callbacks funktionieren in Java ja über die angabe des Methodennames,oder?
Ganz einfach... es gibt sowas wie Buffer... anders kann man garnicht an VBO übergeben.
Callbacks über Interfaces.
Mehrfachvererbung ist überhaupt nicht nötig, da ein Ding immer nur eine Art von einem anderem Ding sein kann. Wenn man noch zusätzliche Eigenschaften braucht, dann verwendet man Interfaces.
C++ ist schon genial, weil es wirklich alle Freiheiten bietet, aber die standart Libs und die WinAPI sucken -.-.
Kennt jemand oberflächenunabhängige Libs (also für Linux und Windows) für C++?
Weil ansich kann man ja in C++ einen GC und die geniale Klassenhierachie von Java nachprogrammieren...
C++ ist schon genial, weil es wirklich alle Freiheiten bietet, aber die standart Libs und die WinAPI sucken -.-. Kennt jemand oberflächenunabhängige Libs (also für Linux und Windows) für C++?
Genau meine meinung! WinAPI und STD suckt..
Libs gibt es ne menge, für GUIs z.B. ist QT sehr gut... für alles andere soll "boost" das non plus ultra sein..
Aber wie gesagt, mich sprechen die libs alle nicht wirklich an - wobei ich es auch hasse mich zu sehr von fremdlibs abhängig zu machen.. deshalb, einfach selber schreiben. Ist zwar durchaus nen stück arbeit, lohnt sich aber aufjedenfall - zumindest bei mir.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich programmiere schon seit rund 25 Jahren mit Pascal (Turbo Pascal->Delphi(ab Delphi3)->FreePascal/Lazarus)- da ändert man sich nicht mehr. Es stört mich nur ein wenig, dass man bei FreePascal unter Linux SDL verwenden muss, wenn man mit OpenGL arbeiten will. Also hab ich mir die Arbeit gemacht und ein cross-Plattform OpenGL-GUI-Toolkit geschrieben, um mich von SDL unabhängig zu machen: ich habe keine Lust jahrelang auf ein neues Feature zu warten.
Ich verwende Lazarus, unter anderem weil ich nach Linux übersiedelt bin, aber eigentlich würde für meine Zwecke auch die pure uralte FreePascal-IDE reichen. Aber Lazarus ist natürlich komfortabler.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
@Noeska: No, I did not see exactly this one, but this is the sort of code I used at the very beginning of a long jouney through the X11 Server API and very much source code on Sourceforge and else where. In the meantime I wrote a platform independent Operating System Interface, which is able to work on Win32 and Linux and provide Windows, a GUI and a a small set of features for game programmers. I took the FLTK (Fast Light Toolkit, a C-Library) as a basis. I am almost through with it and I will publish it together with the glPasGUI, which depends on that interface.
A similar project was the PLTK (Pascal Light Toolkit on Sourceforge) but they worked with the XServer only, not with OpenGL itself.
Aber wie gesagt, mich sprechen die libs alle nicht wirklich an - wobei ich es auch hasse mich zu sehr von fremdlibs abhängig zu machen.. deshalb, einfach selber schreiben. Ist zwar durchaus nen stück arbeit, lohnt sich aber aufjedenfall - zumindest bei mir.
Ich mag das auch nicht besonders von einer Lib anhängig zu sein... aber man ist dann oft viel schneller unterwegs, wenn man z.B. in Java die aller wichtigsten Klassen kennt (tu ich aber leider nicht^^).
Den eigenen Code aber Plattform unabhängig zu machen ist auch etwas umständlich. Mir gefällt dieser (Misst, jetzt weiß ich wieder nicht wie das heißt... mit dem #ifnd usw. ...) irgendwie nicht besonders...
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Du meinst Kompilerdirektiven oder bei C auch bekannt als Preprocessor Anweisungen.
Ja, das macht den Code leider sehr unübersichtlich. Daher sollte man das ganze möglichst weit Kapseln und dann nur eine Include/Import/Uses-Anweisung damit umklammern müssen. Oder eine Klasseninstanzierung, wie es bei Traudes System der fall sein dürfte.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Kennst du da ein paar Templates wie man den Code aufbaun könnte?
Achja... nochwas was ich schon immer wissen wollte:
Wäre es nicht von der IDE her möglich so eine Fehler anzeigen wie bei Java zu machen?
Weil der Kompiler wirft ja so oder so errors, obs jetzt die IDE automatisch im hintergrung kompiliert, oder ich manuell.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du meinst die Instant-Prüfung? Keine Ahnung welche andere IDEs das unterstützen. Visual Studio machts. Allerdings macht VS auch Sachen, die mir persönlich die Haare zu berge stehen lassen. Ich sag nur "automatische Rechtschreibkorrektur" (IM CODE!!).
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Also ich bin auch eindeutig für C++. Aber wohlgemerkt nur mit dem ++ dran, kein reines C.
Ich finde, C++ ist einfach mit die durchdachteste Sprache und bietet viele Möglichkeiten, was in anderen Sprachen garnicht geht. Wenn man es einmal gelernt hat, kann man wirklcih sehr sauberen kompakten Code schreiben und nicht tausend Interfaces wie in Java. Hauptnachteil ist das Erlernen der Sprache. Das ist schwieriger als in Java oder C# beispielsweise.
Was die Performance angeht: zuerst einmal hängt die vom Algorithmus und der Umsetzung ab. Die Sprachenvergleiche hinken da meistens. Aber wenn ich wirklich was hochperformantes brauche, werde ich nicht um C oder C++ herumkommen (siehe Spieleindustrie; Crysis mit Java kann ich mir eher nicht vorstellen). Was aber normale, einfache Anwendungen angeht, da sind andere Sprachen auch nicht langsamer.
Was die Libs angeht: die STL ist G.E.N.I.A.L. Aber auch hier gilt: man muss lernen, was sie kann! Hauptnachteil: Sie ist zu klein. Aber das wird ja durch die Boost-Lib kompensiert
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Java ist meiner Meinung nach um einiges durchdachter als C++ (Mehrfachvererbung). C++ ist eher ein absolut logisches System. Java hingegen in seine Schranken gewiesen.
Wiso es in Java keine Spiele gibt wurde schon genannt... JRE.
Java ist um vieles Intelligenter. Der Byte-Code wird Runtime optimiert. Das bedeutet: alle CPU Befehle werden optimal genutzt. Java compiliert auch wiederholte Aufrufe.
Mit den verschiedenen Kernen stellt es auch noch einiges an...
Wie gesagt, Java kann mit C++ locker mithalten. Und ist auch oft schneller.
Crysis in Java kann ich mir gut vorstellen.
Außerdem, an Java werden ständig verbesserungen vorgenommen. C++ ist und bleibt aber immer nur C++...
Außerdem, an Java werden ständig verbesserungen vorgenommen. C++ ist und bleibt aber immer nur C++...
Über die Verschlimmbesserungen in jeder neuen Java-Version hülle ich jetzt mal den Mantel des Schweigens. Und was Verbesserungen generell angeht ist zu Unterscheiden zwischen der Sprache und entsprechenden Compilern. Außerdem steht der neue C++ Standard vor der Tür. Die Mühlen des ISO-Komitees mahlen sehr langsam, aber sie mahlen.
Ach ja und Mehrfachvererbung ist ein sinnvolles Feature, wenn man es richtig anwendet. Wer immer diese Diamantstruktur programmiert, ist selber schuld ...
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.