Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich bin z.B. von Freepascal zu C++(gcc,vsc++) umgestiegen, weil es massive headerprobleme gibt, entweder gibt es erst garkeine, unvollständige oder nicht aktuelle Header für Bibliotheken.
Die Industrie ist C++ und wieso soll ich 2gleisig fahren, drum bin ich letztlich auf c++ umgesattelt.
Da ich ja schon über die jahre auch c/c++ programmiert habe, war der umstieg weniger wild.
Die ganzen Bibliotheken sind in c/c++ und so kann man dann auch sich selber die libs compilieren und auch statisch linken Kein stress mehr mit abhängigkeiten, einfach lua,ogg,vorbis,openal,glew und so weiter reincompilieren und dann hat man statt einer exe und vieler dll's ne 160kb exe(so groß sind meine demoapps) wo alles drin ist.
Man kann echt mit jeder Sprache ne menge machen.
Am LinuxTag, die Woche, hat IBM z.B. ein Brasilianisches MMOG vorgestellt, wo der Client(thinclient) auf Java mit OpenGL/OpenAL basiert und der Server(IBM ZSystem+einer PS3) c++ mit opensteer(KI),bullet(Physik) und ner unbekannten datenbank verwenden.
Allerdings sollte man beachten, dass es ein Thinclient ist also nur die Sound und Grafik drauf läuft und der rest auf dem server passiert.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also wenn du was machen willst, was den meisten DGLern hilft dann ist es wahrscheinlich was Pascallisches. Siehe z.B. Lossys Libs (lass dir die domain mal schützen ).
Für mich persönlich zählt alles was Frustfaktoren minimiert. Dazu gehört zu aller erst die IDE, da ist Eclipse (auf einem 1GB+ Rechner) nicht zu toppen (außer durch Eclipse+Rational Plugins ). Dann kommt das Sprachkonzept. Dort musst du ein Gefühl für haben (Header+Source von C++ bringt mich nur durcheinander). Schließlich ist das auch die Ebene auf der du dann dein Projekt gliederst (Pakages, Ordner, SubProjekte).
Für mich ist dann noch wichtig welche externen libs es gibt. C++ ist hier natürlich ganz vorn dabei. Aber für Java gibts so ziemlich alles. Und wenn man Anwendungen schreibt ist das Eclipse-Framework als Basis wahrscheinlich auch ne kleine offenbarung. Dann natürlich die Vielseitigkeit. Und da ist Java nunmal wirklich gaaaaanz weit vorn. Von Web (JSP/JSF/Servlet) über PlainVanilla PCs hin zu eingebetteten System (J2ME). Is schon ne feine Sache.
Einige Sprechen schon davon, dass Java Python zum opfer fallen wird - nunja. Ich glaub das noch nicht. Vielmehr bin ich der Meinung, dass C++ das nächste COBOL wird. Wieso?
1. Die meisten Vorteile von C++ sind nicht neu, sondern Folge der langen Einsatzzeit.
2. Die Laufzeitvorteile werden im Geschäftsbereich immer weniger wichtig, da die Maschinen so stark werden, dass es auf die ein oder andere Millisekunde nicht mehr ankommt.
3. Niemand spricht mehr von C++. In den 90ern war NUR C++ eine "echte" programmiersprache. Alles andere war nicht ernstzunehmen. Seit ca. 2003 ist Java der neue Prinz der Wirtschaft. Und Java fühlt sich im Internet viel wohler als C++. Die Tendenz geht dahin alles mögliche ins Netz zu verlagern. Dafür ist Java geeignet. C++ nutzt man auf Betriebssystemebene. Aber davon spricht niemand mehr. Alles dreht sich ums Netz.
4. Eine Folge von 3. ist, dass die Community rund um Java massiv wächst und somit der Communityvorteil von C++ schrumpft.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Zitat:
Tendenz geht dahin alles mögliche ins Netz zu verlagern. Dafür ist Java geeignet. C++ nutzt man auf Betriebssystemebene. Aber davon spricht niemand mehr. Alles dreht sich ums Netz.
echt gutes Argument - hab ich noch garnicht bedacht.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Achja, bitte um Shaddows willen, bitte nicht mein Post zu ernst/böse nehmen. Es ist nur meine Meinung. Falls ihr über die Zukünftige Entwicklung der Programmiersprachen mit spekulieren wollt, dann machen wir das am besten im OT.
@Traude: Jaja, Google ist da ein Antreiber. Nicht zuletzt weil der große Konkurent MS die OS Sparte so dominiert.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
edit:
Zahlen sind teilweise mit absicht überspitzt, um menie darstellung klarer zu machen und es basiert sowohl auf eigene Erfahrung sowie einigen Artikeln und Prognosen von CEO's, Lead-Programmern und Statistiken.
Ich hoffe, dass es nun kein Glaubenskrieg geben wird und will es weniger als Kritik oder Lob auslegen sondern eher meine Sicht der Lage darlegen.
editend
Der größte Nachteil an java ist, dass man immer eine richtige programmiersprache, wie c/c++ braucht, da vm und 99,9% aller funktionalität über c/c++ bibliotheken realisiert wird und ledeglich in sehr schönen verpackungen gesteckt wird.
Ich kann mir sehr gut vorstellen, dass Java in den überwiegenden Bereichen als Sprache sich etablieren kann und es auch vorteilhaft ist.
Der Kern, also worauf jede Software aufsetzt wird aber auch in 10Jahre noch c/c++ bleiben.
Ausserdem gibt es bereiche wie Microcontroller wo man sowieso nur c verwendet.
Denn dem User ist es ziemlich egal, ob der Button 0.1ms braucht oder 0.2ms, um ihn darzustellen aber es ist nicht mehr egal, wenn die datenbank suche 20min oder 5min dauert.
Wenn man es sich auch teilweise wünscht, dass c++ so langsam den Weg für neue Sprache frei macht, so wird dies nicht passieren, da die neuen sprache zwar toll sind aber für so ressourcenempfindliche system wie Kernel, Bibliotheken einfach ungeeignet sind, da kommt es einfach auf hardwarenaher programmierung an und das bietet keine Sprache die in einer VM läuft, von der sicherheit mal ganz zu schweigen.
Also meine Prognose für die Zukunft wird so aussehen.
Datenbanken, KI(wegfindung,statemachines,neurale netzte), Soundsysteme, codecs, Physik, Fenstersysteme, parsersysteme und der vieles mehr wird c/c++ sein und diese sind dann in neue Sprachen wie C#,Java,D,... mit Klassen gekapselt und um Code erweitert, der das Handling und Hilfsroutinen verfügbar macht.
Java macht das mit jdbc doch schon sehr gut vor, hinter einen Javaklassen konstrukt werden externe bibliotheken, wie mysql, postgresql, mssql, sqlite,... gekapselt.
Man hat die sichere programmierung, die die neuen Sprachen ermöglichen und die Performanz der hardwarenäheren Sprachen, wie ObjektPascal und C++.
Man merkt doch jetzt schon, dass der Hardcore programmierer mit den Java Leuten da steht und rätselt, was hinter den 10millionen buzzwords von Sun steckt und der normale Java programmierer 0 plan hat, was da eigentlich wirklich passiert und dies auch schädlich für die Leistung ist.
Die wirklich guten Javaprogrammierer die ich kenne, sind C++'ler, die noch Java gelernt haben und auf genau die weise in den Firmen arbeiten, wie ich gerade prognostiziert habe.
Was mich an java massiv stört, ist das man einfach aufgehört hat standards zu bilden und man 5 und mehr Websolutions um die Ohren gehauen bekommt, allesamt ecken und kanten haben und teilweise undurchdacht sind(als ob Sun so langsam die Zügel entgleitet).
Weil mal wieder einer eine tolle Idee hatte und statt es in einen existierenden Pseudostandard einzupflegen(und ein richtigen Standard daraus zu machen) gleich nen neues Buzzword raus kommt und man sagt "neuer standard".
Wer schon mit Tomcat und servlets,jsp hat doch schon mindestens einmal rumgekotzt, weil der cache vom Tomcat mal wieder verrückt spielt oder das debuggen, durch ständiges deployn und testen Zeit frisst.
Da ist es nicht gerade Hilfreich, wenn man alle Nase lang was neues implementiert und das Rad zum 10mal neu erfindet, statt das alte einfach grün anzustreichen.
Java entwickelt sich so schnell, dass die Qualität in einigen Bereichen einfach extrem leidet.
So wirkt die Lösung mit jar files und Tomcat auf mich wie ein schneller fusch, wo es einfach hiess schnell ne lösung her, damit die Leute die neue Websolution verwenden können und dann dem Administrator die Hölle auf Erden bescheeren.
Der versuch so ein Tomcat stabil und sicher zu machen, damit er als Buisnesslösung standhalten kann, ist ein kraftakt der Ausmasse eines eigenen Firmenprojektes annehmen kann.
Auf einem Server der in Whitelists aufgenommen werden soll, ist es nahezu unmöglich Tomcat,JSP,Servlet laufen zu lassen(mit ModSecurity kann man dies realisieren aber dann braucht man auch einen Entwickler von ModSecurity, der die Regeln alle schreibt und der Stundensatz ist nicht gerade klein).
Wenn dann wieder Module wie Swing(hat ja awt ziemlich fliessend abgelöst,wobei es ja immer noch drin ist ^^) oder jdbc sieht, die sind so super gelöst, dass man es bedenkenlos weiterempfehlen kann und nutzen. Bis zum ende durchdacht und man hat eine große Lösung statt vieler kleiner.
Die Spieleindustrie kann sich da aber überwiegend zurück lehnen, auf Nintendo, Sony und MS Consolen wird man noch lange auf sowas warten und größere Produktionen wollen Platformunabhängig verkaufen und das geht nur mit C++.
Allerdings werden auch die Consolen schneller und PS3 hat z.B. mit einer Linux Distro Java und C# support schon drin.
XBox-360 hat auch c# und Nintendo Consolen bieten garnicht die Leistung(macht aktuell den größten Gewinn der Industrie aus). Wobei ich der Meinung bin, dass Java zum Nintendo Konzept passen würde(einfach und schlicht).
Also wer sich nicht nur Hobbymässig in der Programmierung allgemein bewegen will, der wird 2gleisig fahren müssen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Also mal kurz meine momentane einstellung den Programmiersprachen gegenüber:
Ich habe heut geschlagene 3 Stunden gesessen und mit diverser Hilfe versucht mein Rational auch C++ fähig zu machen: Niederschmetterndes Result: Funktionierte nicht
Das soll heissen, es geht auf jeden fall, nur eben ich habs nicht hinbekommen. Wenn ich Rational für Java klar mache, entpacke ich es und starte es und alles funzt, weil die jdk und sdk und alles drum und dran dabei ist. Für c++ ist nichtmal ein compiler dabei (nichtmal bei der für c++ ausgelegten eclipseversion)
Das ist so ein moment, wo ich schon wieder sehr nahe dran bin, c++ als idee zu verwerfen...
Naja nebenbei beschäftige ich mich etwas mit java als entwicklungsumgebung und werde mal schauen, wie weit ich damit reiche. dazu muss ich mir nur erstmal ansehen, wie ich den ogl context ansteuere. na mal sehen, was der morgige tag bringt
so nachdem nun JOGL geht, bin ich auch schon fleissig am bauen.
Inzwischen habe ich wieder rudimentäre Klassenverteilungen
mein Window kümmert sich ums JFrame und die Events
meine Camera kümmert sich um LookAt, Viewport, Perspective etc
mein Render rendert die momentane Szene
mehr hab ich bisher noch nicht an wichtigen Klassen
als nächstes kommt mein Szenemanager wieder ins spiel
der link hier hilft uebrigens wirklich. ich bin gerade dabei meine engine nach diesem schema aufzubauen und werd mal sehen, was am ende bei rauskommt. wenn ein paar mehr klassen stehen, kann ich ja mla ein UML konzept posten, das geht ja in rational wunderbar
edit: okay bei dem Scenenmanger stosse ich gerade auf eine Verstaendnisfrage zwischen abstrakten Klassen und Interfaces.
Ich könnte meine Szene, die lediglich als Muster bzw als abstrakte Klasse für alle abgeleiteten Klassen dienen soll, als abstracte Klasse oder als INterface deklarieren (es gibt keine ausgeschrieben Methoden in der Klasse). Das heisst, rein von der Formalitaet her, könnte die Klasse ein INterface sein. Allerdings von meinem Gefuehl her finde ich, dass sie eine abstrakte Klasse sein sollte. Allerdings erlauben Interfaces ja mehr möglichkeiten in der Verwendung.
Die Klasse enthaelt die Methoden:
draw, init und resize
alle sind abstrakt und ich weiss nicht ob es so sinnvoll ist, die klasse zum Interface zu machen. Deswegen will ich mir mal eure Meinungen anhören, wie ihr dazu steht ^^
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Eine abstrakte klasse ist eine mächtigere Variante, es erlaubt neben den abstrakten Methoden ja noch ressourcen zu definieren.
Hast du keine Ressourcen, die für alle gleich sind, dann nimm ein Interface, sonnst eine abstrakte klasse.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Wo ich gerade JOGL/JFrame lese. Willst du eine Desktop Anwendung oder eine Fullscreen Anwendung schreiben? Bei ersteren kannst du getrost das JFrame nutzen, bei letzteren würde ich von JOGL aber ein natives Fenster erzeugen lassen sofern das mit JOGL geht.
Mitglieder in diesem Forum: 0 Mitglieder und 13 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.