Hi,
ich verwende auch sehr viele verschiede Sprachen.
Für die Wahl einer Sprache sollte folgendes Berücksichtigt werden
-Integration in vorhandene Umgebung
-Benötigte Performance
-Bedarf der Wartbarkeit
etc. etc. etc....
Ich stelle mir häufig die Fragen:
Mit welcher Sprache kann ich mein Problem am effizientesten lösen?
Wieveil Ausführungsgeschwindigkeit benötige ich wirklich?
Wie viel Zeit für die Implementierung habe ich bzw wieviel Ressourcen
möchte ich dafür einsetzen.
Bei meinem aktuellen Projekt arbeiten viele verschiedene Sprachen
zusammen und es funktioniert hervorragend.
verwendet werden
c#,
c++,
c,
Tcl,
c++/cli,
V+ (von Adept)
und mein absoluter Favorit:
Matlab
Matlab verwende ich sehr gerne, weil man schrittweise Befehle testen
kann und die Entwicklungsgeschwindigkeit absolut unschlagbar ist.
An viele Stellen ist Ausführungsgeschwindigkeit doch auch nur
Hokuspokus!
Sind wir mal ehrlich... Alles was es einfacher macht oder die
Entwicklung effizienter gestaltet, ohne die Qualität der Software zu
beeinträchtigen ist erlaubt!
Auch Absolut stark finde ich Processing und grafische
Programmiersprachen wie vvvv. Nur weil es für Anfänger gemacht ist heißt
es noch lange nicht, dass Profis deshalb nicht effizienter damit
arbeiten können!
Die .NET Umgebung ist übrigends mit das Beste was ich je gesehen hab.
Das Zusammenspiel der verschiedenen Sprachen, die allesamt den gleichen
Bytecode schreiben ist absolut genial. Mit C++/Cli kommt man auch an
Programmteile die in unmanaged C oder C++ arbeiten und die Entwicklung
macht einfach Spaß damit!
Viele Grüße,
Tim
>aber jedes größere java programm das ich bisher getestet habe läuft>irgendwie schwammig :/>eclipse, jdownloader...
Was genau läuft in eclipse "schwammig", außer des Starts? Du bist Dir
schon klar, welchen Umfang eine normale eclipse-Umgebung hat? Bei mir
läuft eclipse übrigens nicht "schwammig".
Welche "größeren" C++ - Programme laufen nicht "schwammig"?
>ka warum das so ist aber ich mag es nicht.
Weil man es Dir jahrelang so eingeredet hat? Schade, dass Du Dir diesen
Weg verbaust. Darf ich mal fragen, in welchem Umgebungen Du Software
entwickelst?
Übrigens ist Deine Aussage recht "schwammig"... ;-)
wenn man java nicht richtig programmieren kann, ist es in der tat
langsamer als C.
aber wenn man java richtig programmieren kann, dann ist es schneller
klar, und im Winter ist es kälter als draußen.
Deshalb nimmt man Java auch nicht gern auf einem AVR.
Sonst wäre der so schnell, daß man nicht mehr nachkommt.
Es kann sogar gut sein, dass Spiele z.b. bald in c# programmiert werden
(Auf DirectX zugreifen kann man da genau so gut wie in c++). Die neueren
Spiele brauchen immer weniger Cpu - Leistung und immer mehr GraKa
Leistung, da ist es nicht schlimm, wenn ein paar prozent leistung wegen
dem Interpreter flöten gehen.
>Deshalb nimmt man Java auch nicht gern auf einem AVR.
Vermutlich ist das Problem, die megabytebroße Runtime in einem Tiny
unterzubringen ;-)
Im Ernst: Zumindest aktuelle JREs machen aus dem Code nach dem Laden
reinen optimierten Binärcode. Interpretiert wird nur zeitweise direkt
nach dem Start. Dann werden aber mittels HotSpot alle relevanten
Programmteile optimiert in Binärcode übersetzt. Von da ab ist nichts
mehr mit "Interpreter".
Es gibt keinen Grund, aus vermeintlichen Laufzeitgründen auf Java zu
verzichten. Allerdings ist Java nicht gerade dafür bekannt, für
hardwarenahe Programme prädestiniert zu sein.
>verwendet werden>c#,>c++,>c,>Tcl,>c++/cli,>V+ (von Adept)>und mein absoluter Favorit:>Matlab
In einem Projekt? Krank! Es sei den, bei Deinem Projekt handelt es
sich um ein Multimillionen-LOC-Projekt. Da kann man für einfach
Hilfstools schonmal Sriptsprachen verwenden. Jedenfalls möchte ich Dein
Projekt nicht warten müssen ;-)
Ich sehe jedenfalls keinen brauchbaren Grund, in einem einzigen Projekt
C, C++ und C# gleichzeitig zu verwenden.
>" ..Laufzeitgründen .." Kommt drauf an, ob man die>Wege zum Patentanwalt auch zur Laufzeit dazu zählt oder nicht.
??? (habe keinen Plan, was Du mir sagen willst) ;-)
>Genausowenig>ist es möglich, mit einer der genannten "Sprachen" ein sinnvolles und>brauchbares Programm zu erzeugen, dessen Komplexität über die Ausgabe>von "Hallo Welt" hinausgeht...
Begründung für die Aussage, weder in C noch in Java könnten Programme
jenseits der Hallo-Welt-Komplexität geschrieben werden? Mit welchen
Sprachen können Deiner Meinung nach solche Programme sinnvoll erstellt
werden, und warum?
Ich hoffe nicht, dass es in Deinem Fall am Softwareentwickler und nicht
an der Sprache liegt ;-) Im Ernst, wie viele LOC hatte Dein bisher
größtes Projekt? Welche Sprache?
>C++ ist böse!>Java ist gut!
Mir gefallen beide außerordentlich gut! ;-) Mit dem GC habe ich mich am
Anfang (ich kam aus der C++ - Fraktion) in Java etwas bevormundet
gefühlt, auch mit der Tatsache, dass Destruktoren halt "irgendwann mal"
aufgerufen werden. Inzwischen ist mir Java genau so angenehm wie C++.
An c++ gefällt mir nicht, dass ein kleiner Fehler das ganze Programm
versauen kann. Bei mir war das so. Ich programmierte schon länger ein
Spiel. Irgendwann mal stürzte mir das Spiel dauernd ab. Ich hatte
irgendwo in dem riesigen Code ein falscher Ramzugriff gemacht. Ich habe
es probiert es zu finden, aber das war vergenlich. Als ich das Spiel
dann in c# mit XNA aufsetzte hatte ich keine Probleme, die
Geschwindigkeit reichte aber locker aus.
@sam1994,
das meinst du doch jetzt nicht im ernst, oder ?
Wenn das tatsächlich ernst gemeint sein sollte spricht das nicht gerade
für einen brauchbaren Programmierstil.
Und das dann der Programmiersprache anzulasten ist echt ein Witz.
Gruss,
Tobi
Doch, meine ich so. Ich finde, dass man in c# solche Sachen fast nicht
passieren können (ich programmiere c# ehrlich gesagt auch besser als c++
- vielleicht liegt es daran). Und einen Fehler kann in c++ irgendwo sein
und erst später Sympthome zeigen.
Ich will das übrigens nicht der ProgSprache anlasten, sondern eher
weitere Schwierigkeitsfaktor in c++ nenne.
Programmierstil hin oder her, Programmabsturz ist nun mal ein häufiges
Fehlersymptom bei C(++)-Software. Es ist schon etwas wert statt der
Information "Programm stürzt ab" eine Fehlermeldung wie "Array xyz
läuft über" vom Programm bzw. vom Kunden der das Programm bei sich
ausführt zu bekommen.
Klaus Wachtler schrieb:> Beides darf nicht beim Kunden auftauchen.
Klar, aber wenn dir ein Programm sagt, hier tritt eine Ausnahme auf,
oder sich verabschiedet mit einem Heap Fehler, wo kannst du dann besser
debuggen?
Klaus Wachtler schrieb:> Beides darf nicht beim Kunden auftauchen.
Passieren sollte vieles nicht...
> Gibt es sowas bei Java und C#?
Keine Ahnung, ich hatte noch nie den Bedarf. In der Regel lassen sich
alle Fehlerursachen mithilfe des Backtrace sehr einfach aufspüren. Bei
C(++) hat man das Problem dass ein Fehler sich oft erst dann äußert wenn
schon viel früher irgend etwas schief gegangen ist, erst das macht die
Problemsuche so schwierig. Ich habe schon viele Stunden mit valgrind und
gdb verschwendet um Fehler (in fremdem Code) zu finden die mit einer
rechtzeitigen Exception und Backtrace sofort offensichtlich gewesen
wären.
Bei c#, wird bei jeder Ausnahme, wenn nicht anders eingestellt, sofort
das Programm unterbrochen. Und zu Ausnahmen zählt halt auch eine
OutOfRange beim Array. Und die gefährlich c++ Operationen sind in c#
(wenn es sie gibt) ungefährlich.
Noch was: In c# sind (bei mir) laufzeitfehler wie syntaxfehler, sie
werden beim ausführen meistens sofort entdeckt, die logik fehler bleiben
einem trotzdem, leider nicht erspart.
Kinder, ihr seid ja sooooo süß. So schön wie ihr euch hier mobbt.
Also erstens:
Ob man jetzt C, C++ oder Java schreibt ist in Erster Linie mal egal.
Wichtig ist, dass derjenige der den Rechner programmiert Ahnung von dem
hat was er macht. Für C, C++ und Java gilt: Kennsde eine kennsde alle.
Zweitens:
Jede der Sprachen (abgesehen von C) hat Vor- und Nachteile:
Okay C hat nur Nachteile, da es ursprünglich auch als Scherz gedacht
war.
C++ ist eine Programmiersprache die fullcompiled wird. Dadurch ist sie,
wenn man keinen Mist baut extrem schnell.
Ihr Nachtteil: Sie ist Oberflächenabhängig, läuft also compiliert nur
auf einem Betriebssystem (außer man nimmt Wine, aber das emuliert nur
ein Windoof.)
Gut es gibt noch das Phänomen Visual C++. Das ganze ist dann
objektorientiert, also für die meisten unter euch Quatsch. Nachteil:
Bringt die Nachteile von C++ und Java zusammen:
Langsam, Platformabhängig und man benötigt immer eine Runtime Umgebung.
Java ist eine semicompiled Sprache, das heißt der Quelltext wird nicht
komplett in Maschinencode übersetzt. Um ihn zu interpretieren braucht
das entsprechende OS eine Runtime. (z.B. SUN)
Dadurch wird die Sprache langsam und frisst Ressourcen zum Frühstück.
Zu VB:
VB ist der allerletzte Quatsch. Selbst mein GTR kann Basic schneller und
besser interpretieren als VB. Basic ist eine nicht OS unabhängige
semicompiled Sprache und damit MURKS!!!!
Somit noch einen schönen Abend
sys. (Gast) schrieb:
> Also erstens:> Für C, C++ und Java gilt: Kennsde eine kennsde alle.
Dann muss also einer der in C programmiert auch automatisch JAVA können?
Kopfschüttel!
> Zweitens:> Jede der Sprachen (abgesehen von C) hat Vor- und Nachteile:> Okay C hat nur Nachteile, da es ursprünglich auch als Scherz gedacht
war.
Soso C ist also eine Scherz-Programmiersprache???
Kopfschüttel!
> C++ ist eine Programmiersprache die fullcompiled wird.
"fullcompiled"??? Ist das jetzt die neuste Kiddy-lernt-compeilen-Sprache
oder wie??
> Dadurch ist sie,> wenn man keinen Mist baut extrem schnell.
Und wenn mann mal "Mist gebaut" hat? Dann wird sie plötzlich "doof
langsam"??
Hahaha
> Ihr Nachtteil: Sie ist Oberflächenabhängig,
C++ ist "oberflächenobhängig" Wo wird denn so ein Scheiss als Wissen
vermittelt?
> läuft also compiliert nur> auf einem Betriebssystem
Und wenn mans auf einem anderen OS compiliert? Läuft's dann dort etwa
nicht??
Kopfschüttel!
> (außer man nimmt Wine, aber das emuliert nur> ein Windoof.)
Was hat denn Wine mit dem Akt des compilierens zu tun??
Kopfschüttel!
> Gut es gibt noch das Phänomen Visual C++. Das ganze ist dann> objektorientiert,
Aha! Also mit Visual C++ ist ES dann plötzlich objektorientiert? Und
wenn ich mit meinem Visual C++ nur einfachen C-Code erstelle? Dieser
Code müsste nach deiner Aussage dann auch "objektorientiert" sein??
Kopfschüttel!
> also für die meisten unter euch Quatsch.
Aha!
> Nachteil:> Bringt die Nachteile von C++ und Java zusammen:> Langsam, Platformabhängig und man benötigt immer eine Runtime Umgebung.
Seit wann benötigt denn eine unter Visual C++ compilierte Exe zwingend
eine Laufzeitumgebung? Ich dache das ist "fullcompiled"??
Kopfschüttel!
> Zu VB:> VB ist der allerletzte Quatsch. Selbst mein GTR kann Basic schneller und> besser interpretieren als VB. Basic ist eine nicht OS unabhängige> semicompiled Sprache und damit MURKS!!!!
So? Also etwas das "semicompiled" ist, ist also automatisch Murks? Weil
es dir nicht schnell genug geht? Dann hol' dir doch einen
leistungsfähigeren Prozessor (am besten 6-Kern). Dann geht das Semi
Compilat ab wie Schmitts Katze, das garatiere ich dir! :)
> Somit noch einen schönen Abend
Ebenfalls
Der sys. hat eigentlich gar nicht so unrecht:
Man kann in C++ unnötige Schleifen einbauen, sodass das Teil langsamer
wird.
... schrieb:> Aha! Also mit Visual C++ ist ES dann plötzlich objektorientiert? Und> wenn ich mit meinem Visual C++ nur einfachen C-Code erstelle? Dieser> Code müsste nach deiner Aussage dann auch "objektorientiert" sein??>> Kopfschüttel!
Ich denke mal, dass er das nicht auf VC++ allgemein bezieht, sondern auf
.NET Framework.
Semicompilierte Programme laufen langsamer und .NET Framework ist eine
RE.
Also ist .Net semicompiled da hat er soweit recht.
Ich denke mal, dass er das nicht auf VC++ allgemein bezieht, sondern auf
.
VB ist nicht compiliert es wird einfach nur interpretiert. Man kann es
dazu noch in eine Ausführbare Datei (also für mich als Windows Liebhaber
EXE) verpacken.
Ein Halbcompiliertes Programm läuft tatsächlich ressourcenfressender als
ein vollständig in Maschinensprache umgesetztes Programm.
Meine Meinung hierzu ist, dass Java eine gute Möglichkeit mit awt eine
Systemunabhängigkeit zu bekommen. Natürlich läuft Java mit sehr viel
Ressourcenverbrauch im Vergleich zu C oder C++ in nativer Form.
... schrieb:> So? Also etwas das "semicompiled" ist, ist also automatisch Murks? Weil> es dir nicht schnell genug geht? Dann hol' dir doch einen> leistungsfähigeren Prozessor (am besten 6-Kern). Dann geht das Semi> Compilat ab wie Schmitts Katze, das garatiere ich dir! :)
Das kann sein, nur es wäre schön wenn deine Programme auch auf älteren
PCs laufen. Naja, ist ja auch deine Sache.
... schrieb:> C++ ist "oberflächenobhängig" Wo wird denn so ein Scheiss als Wissen> vermittelt?>>> läuft also compiliert nur>> auf einem Betriebssystem>> Und wenn mans auf einem anderen OS compiliert? Läuft's dann dort etwa> nicht??
Kommt drauf an, es gibt in C++ viele Sachverhalte die unter
verschiedenen Betriebssystemen unterschiedlich ausgelegt werden müssen
(z.B. Keyevents).
Compiliertes C++ ist auf verschiedenen OS nicht ausführbar: siehe Linux
unter Windows.
Zuletzt noch ein Wort zu C:
Hier ist sys. auf einen Scherz reingefallen, denn C ist eine in
mühevollster Kleinarbeit entwickelte Programmiersprache.
C++ ist in vielen Fällen empfehlenswert, weil es die Weiterentwicklung
von C ist, aber manchmals kommt man um C kaum herum.
Soweit hierzu,
schöne Grüße an ... sys.
geek schrieb:> Ich denke mal, dass er das nicht auf VC++ allgemein bezieht, sondern auf> .NET Framework.> Semicompilierte Programme laufen langsamer und .NET Framework ist eine> RE.> Also ist .Net semicompiled da hat er soweit recht.
Kompilierung ist der Vorgang einen Quelltext mithilfe eines Compiler in
etwas anderes zu übersetzen. Ob das direkt in Maschinensprache übersetzt
wird oder nicht, ist irrelevant. Bspw. erzeugen so gut wie alle Compiler
erstmal eine (interne) Übersetzung, die dann vom Backend in
Maschinensprache übersetzt wird. Bei Java, .NET (auch VB) wird dieser
letzte Schritt JIT gemacht und nicht AOT (.NET kennt bspw. letzteres in
Form von ngen)
> Ich denke mal, dass er das nicht auf VC++ allgemein bezieht, sondern auf> .> VB ist nicht compiliert es wird einfach nur interpretiert. Man kann es> dazu noch in eine Ausführbare Datei (also für mich als Windows Liebhaber> EXE) verpacken.
VB wird compiliert.
>> Ein Halbcompiliertes Programm läuft tatsächlich ressourcenfressender als> ein vollständig in Maschinensprache umgesetztes Programm.
Das hängt stark davon ab, wer und was da programmiert wurde.
http://www.drdobbs.com/184401976
>Ob man jetzt C, C++ oder Java schreibt ist in Erster Linie mal egal.
ACK.
>Wichtig ist, dass derjenige der den Rechner programmiert Ahnung von dem>hat was er macht. Für C, C++ und Java gilt: Kennsde eine kennsde alle.
ACK!
>Okay C hat nur Nachteile, da es ursprünglich auch als Scherz gedacht>war.
Unfug. Außerdem möchtest Du einen Mikrocontroller mit wenig Speicher
nicht mit C++ torpedieren. Ich finde C nett, war auch meine erste
"richtige" Sprache.
>C++ ist eine Programmiersprache die fullcompiled wird. Dadurch ist sie,>wenn man keinen Mist baut extrem schnell.
Eine Sprache kann nicht schnell sein, Höchstens die in dieser Sprache
erstellten Programme.
>Gut es gibt noch das Phänomen Visual C++. Das ganze ist dann>objektorientiert, also für die meisten unter euch Quatsch.
Häh?
>Java...>Dadurch wird die Sprache langsam und frisst Ressourcen zum Frühstück.
Unfug. Alle aktuellen Laufzeitumgebungen übersetzen den Bytecode in
optimierten Maschinencode, so dass Programme sogar ab und zu schneller
laufen als ein natives (C++)Pedant.
>Somit noch einen schönen Abend
dito
1. Sprache ist egal, beherrschen und mögen muß man sie. Zumeist ist eine
eingeschränkte Auswahl vom Projekt vorgegeben. Gut ist es wenn
es dafür Programmierer am Markt gibt die diese Sprache können. z.B.
sind kaum mehr Smalltalker zu finden.
2. Gehirn einschalten: zu lösendes Problem verstehen, einfache Lösung
suchen und umsetzen. Bei der Umsetzung wird das Problem meist klarer
und es läßt sich ein einfacherer Lösungsweg reimplementieren.
Vieleicht
muß diese Iteration mehrmals durchlaufen werden.
Man kann wegen Zeitdruck rasch aufgeben und irgendeine Lösung lassen,
dann wird man aber nicht besser werden. Je besser man wird um so
schneller wird man in Zukunft einfachere und kleinere Programme
schreiben können. Erfahrung sammeln dauert lange.
3. Die einfachere Lösung ist die bessere Lösung.
Ich programmiere seit ca. 30 Jahren. In ähnlichem Umfang mit C, C++,
Java, Smalltalk, Lisp, Forth etc. Für Banken, Versicherungen, Industrie,
alles mögliche.
Meine C Programme sind extrem klein und sehr flink. GarbageCollectoren
sowie
malloc/free bauche ich seit Jahren nicht mehr, kaum Fehler - alles
andere
viel zu kompliziert. Java und C++ können viel zu viel, ist unnötig.
XML-Parser: 100 Zeilen Code
HTTP-Server: 300 Zeilen Code
Database/mmap: 50 Zeilen Code
Größere WEB-Anwendung mit knapp 100 Tabellen: 10.000 Zeile C-Code.
Eigentlich ist auch C (die Syntax) zu kompliziert. C hat viele
Einschränkungen, die sind gut für Leute die gerne ohne oder mit wenig
Denkarbeit Lösungen erhalten wollen und dabei vor möglichen Fehler
vor sich selbst zu schützen sind. Das ist Einstellungssache und
muß jeder für sich entscheiden. Mir macht es Spaß Programme
zu schreiben die einfach und direkt sind und ihre Aufgabe zuverlässig
lösen.
Es gibt immer noch viel Potential die Programme noch
kleiner (weniger Wartung, weniger Dokumentation, weniger Bugs)
zu machen, ich lerne immer noch und es gibt viele die besser
sind als ich.
in diesem Sinne wünsche ich ein
heftiges weiter Diskutieren
Gruß
minimalist schrieb:> 3. Die einfachere Lösung ist die bessere Lösung.
Aber sowas von FullACK!
> Meine C Programme sind extrem klein und sehr flink. GarbageCollectoren> sowie> malloc/free bauche ich seit Jahren nicht mehr, kaum Fehler - alles> andere> viel zu kompliziert. Java und C++ können viel zu viel, ist unnötig.
Ohne malloc/free? Ähm, wie das denn? Ich kann ja auf so einiges
verzichten aber malloc/new/free/delete gehört sicher nicht dazu? Du
schreibst größere Softwaresysteme ohne dynamische Speicheranforderung?
> XML-Parser: 100 Zeilen Code
So richtig benutzbar? Zeilenlänge im sinnvollen Bereich? Zeig mal. Sowas
such ich schon lange. Alles was ich bisher so gefunden habe liegt
mindestens einen Faktor 20-50 darüber.
> HTTP-Server: 300 Zeilen Code
Glaub ich. HTTP ist ja auch nicht weiter wild.
> Größere WEB-Anwendung mit knapp 100 Tabellen: 10.000 Zeile C-Code.> Eigentlich ist auch C (die Syntax) zu kompliziert. C hat viele> Einschränkungen, die sind gut für Leute die gerne ohne oder mit wenig> Denkarbeit Lösungen erhalten wollen und dabei vor möglichen Fehler> vor sich selbst zu schützen sind. Das ist Einstellungssache und> muß jeder für sich entscheiden. Mir macht es Spaß Programme> zu schreiben die einfach und direkt sind und ihre Aufgabe zuverlässig> lösen.
Einschränkungen? C? Welche denn. Mir fällt auf Anhieb keine (in größerem
Umfang verwendete) Programmiersprache ein (die nicht Assembler heißt) in
der man mehr "Schweinereien" machen kann als in C.
> in diesem Sinne wünsche ich ein> heftiges weiter Diskutieren
DITO. Schöner Fred.
Matthias
warum stösst man eigentlich in jedem Forum früher oder später auf einen
total emotionalen Glaubenskrieg, der meist die initiale Fragestellung
komplett ignoriert und man stattdessen erklärt bekommt, warum ein VW
besser ist als ein Opel, eine Canon besser als eine Nikon oder C++
besser als Java...?
minimalist schrieb:> XML-Parser: 100 Zeilen Code
Wirkliches XML? Oder <tag>value</tag>-Parser?
> Größere WEB-Anwendung mit knapp 100 Tabellen: 10.000 Zeile C-Code.
Da würde ich gerne mal einen Ausschnitt sehen.
XML File kann ich keines dranhängen, das sind alles Kundendaten.
Aber ich denke durch das xml_sample sieht man schon wie es
funktioniert. Ist doch total easy, oder ?
allerdings ist diese Version noch mit einem malloc/free Paar.
wie unschön - sorry.
Gruß
Andi
Μαtthias W. schrieb:>> Meine C Programme sind extrem klein und sehr flink. GarbageCollectoren>> sowie>> malloc/free bauche ich seit Jahren nicht mehr, kaum Fehler - alles>> andere>> viel zu kompliziert. Java und C++ können viel zu viel, ist unnötig.>> Ohne malloc/free? Ähm, wie das denn? Ich kann ja auf so einiges> verzichten aber malloc/new/free/delete gehört sicher nicht dazu? Du> schreibst größere Softwaresysteme ohne dynamische Speicheranforderung?
okay, ich habe geflunkert :-) hin und wieder brauche ich malloc,
aber nur um einen Speicherbereich fixer Größe der nicht wieder
frei gegeben wird anzufordern.
z.B. um die Ergebnismenge eines DB-Querys als Stack abzulegen.
Dieser Stack kann nur Pointer halten. 0-Pointer Kennzeichnet Anfang
(ist praktischer als Ende).
1. push(0) ... Anfangs-Makrierung am Stack
2. while(e=next_record()) push(e);
3. sort()/unique() ... was immer
4. while(e=drop()) printf("Name: %s\n", e->name);// Stack Abbau
wenn next_record() einen Subslect braucht macht er
auch einfach einen push(0); push-records(); drop() bis
inklusive dem 0-Pointer. Muß nur dafür sorgen daß das
was drauf kommt auch wieder weg genommen wird.
... viele weitere Mechanismen,
>>> XML-Parser: 100 Zeilen Code>> So richtig benutzbar? Zeilenlänge im sinnvollen Bereich? Zeig mal. Sowas> such ich schon lange. Alles was ich bisher so gefunden habe liegt> mindestens einen Faktor 20-50 darüber.
ich hab mal was im vorigen Eintrag abgelegt. Ist nicht
besonders schön, hat ein malloc/free Paar, wäre besser
als Stack gereglt.
>> Eigentlich ist auch C (die Syntax) zu kompliziert. C hat viele>> Einschränkungen, die sind gut für Leute die gerne ohne oder mit wenig>> Denkarbeit Lösungen erhalten wollen und dabei vor möglichen Fehler>> vor sich selbst zu schützen sind. Das ist Einstellungssache und>> muß jeder für sich entscheiden. Mir macht es Spaß Programme>> zu schreiben die einfach und direkt sind und ihre Aufgabe zuverlässig>> lösen.>> Einschränkungen? C? Welche denn. Mir fällt auf Anhieb keine (in größerem> Umfang verwendete) Programmiersprache ein (die nicht Assembler heißt) in> der man mehr "Schweinereien" machen kann als in C.
1. Jeder Funktionsaufruf ist ein call. Wenn ich tail-end Rekursion
haben will kann ich beten daß der Compiler das auch macht. Ich kann
keinen goto funktion() machen.
z.B.
file_t *open_file(int id) {
if(!xopen(id)) return open_file(id+1); // tail - end recursion
...
}
2. Coroutinen
void inside_of_coroutine(void) {
// an dieser Stelle liegt am Stack die Rücksprungadresse
// zum Aufrufe. Wenn ich die hätte könnte ich ....
(*ip_vom_stack)();
}
void use_of_coroutine(void) {
inside_of_coroutine();
// dieser Code würde von inside_of_coroutine aufgerufen werden
// können. z.B. als Iterator über Widgethierarchie.
}
Generell kann ich mit dem sehr wichtigen Stack sehr wenig
machen. Grad mal die varargs, aber das ist lächerlich.
Ich habe keinen vernünftigen goto *anywhere Mechanismus (gcc hat
eine nette Lösung) Damit lassen sich gewisse Dinge
eben nicht machen. Und dann muß man doch wieder tricksen,
wenn man sowas mal braucht.
Wenn ich es mir recht überlege so ist der Stack der letzte
geschützt Bereich in C. Ich kann nicht frei darüber
verfügen und ihn nicht so recht manipulieren.
Klar kann man so Zeugs immer 'irgendwie' lösen, aber es ist
dann halt weder elegant noch einfach (z.B. via longjmp).
... ich habe noch eine Menge weiterer Wünsche.
Aber die Welt ist nicht perfekt :-)
Grüße
Andi
Μαtthias W. schrieb:> Einschränkungen? C? Welche denn. Mir fällt auf Anhieb keine (in größerem> Umfang verwendete) Programmiersprache ein (die nicht Assembler heißt) in> der man mehr "Schweinereien" machen kann als in C.
Forth
ohneinnichtdasschonwieder schrieb:> warum stösst man eigentlich in jedem Forum früher oder später auf einen> total emotionalen Glaubenskrieg, der meist die initiale Fragestellung> komplett ignoriert und man stattdessen erklärt bekommt, warum ein VW> besser ist als ein Opel, eine Canon besser als eine Nikon oder C++> besser als Java...?
weils Spaß macht und immer interessant und unterhaltsam ist.
Letztlich muß doch eh jeder für sich entscheidenob eine
Antwort verwertbar ist oder nicht.
Aber nur so am Rande. Was mir am besten gefällt ist daß man
eigentlich gar nicht merkt wie egal die Programmiersprache
ist. Das ist doch nur Syntax um die CPU dazu zu bewegen eine
Aufgabe zu lösen. Ob jetzt prozedural, objektorientiert,
funktional oder wie auch immer ist total egal.
Wer seine Programmiersprache beherrscht und logisch denken kann wird in
jeder Sprache eine gute Lösung finden. Und was viel wichtiger ist,
man muss die Sprache mögen, dann wird man damit
alles erreichen und Spaß dabei haben. Mag man eine Sprache nicht,
kann sie noch so toll sein, man wird darin immer Probleme finden
die in der Lieblingssprache nicht vorhanden sind.
Grüße
Andi
p.S. immer locker bleiben
Andreas Schwarz schrieb:>> Größere WEB-Anwendung mit knapp 100 Tabellen: 10.000 Zeile C-Code.>> Da würde ich gerne mal einen Ausschnitt sehen.
kleiner Ausschnit, viel Spaß
Gruß
Andi
Da gefallen mir die Ausschnitte der Mädels hier an der Uni aber besser.
Hast du das vor der letzten Softwarekrise geschrieben, oder vor der
vorletzten?
ohneinnichtdasschonwieder schrieb:> total emotionalen Glaubenskrieg, der meist die initiale Fragestellung> komplett ignoriert und man stattdessen erklärt bekommt, warum [...] C++> besser als Java...?
Das war die initiale Fragestellung!
minimalist schrieb:> kleiner Ausschnit, viel Spaß
Das hätte man 1990 sicher als eine elegante Lösung bezeichnet. Aber
welchen Grund gibt es sowas heutzutage in so einem "bare metal" C zu
schreiben? Effizienz? Ob das Rendern einer HTML-Seite 1µs oder 10µs
dauert interessiert keinen. Da wo Effizienz eine Rolle spielt ist
deine Lösung sogar schlechter (lineare Suche statt Datenbank mit
Indizierung). Von Robustheit (Schreiben über Arraygrenze ->
mmap-Datenbank futsch), Portabilität (mmap -> big/little endian?),
Erweiterbarkeit (Datenbank auf anderem Rechner?) ganz zu schweigen.
Selbst wenn man keine Datenbank verwenden will könnte man die komplette
kunde.c durch Verwendung von Ruby oder Python dank der eingebauten Typen
(Array, Hash, Struct) in wenigen Zeilen abhandeln, inkl. Serialisierung.
Andreas Schwarz schrieb:
Hallo Namensvetter, danke für deine netten Anregungen, ich denke ich bin
da ganz locker drauf. Das Problem ist daß man lieber andere denken
läßt. In deiner Anregeung ist das ganz gut zu erkennen, drum als
gutes Beispiel zu verwenden - bitte nimm es nicht persönlich.
> Das hätte man 1990 sicher als eine elegante Lösung bezeichnet.
hatte man denn damals andere Probleme zu lösen als heute ?
> Effizienz? Ob das Rendern einer HTML-Seite 1µs oder 10µs> dauert interessiert keinen.
also ich heisse zwar nicht 'keinen' und keiner meiner Kunden
aber auf dem Server arbeiten doch zig Kunden gleichzeitig.
Zumindest die finden es ziemlich angenehm dass sie keine
Wartezeiten haben.
> Da wo Effizienz eine Rolle spielt ist> deine Lösung sogar schlechter (lineare Suche statt Datenbank mit> Indizierung).
netter Versuch, was glaubst du ist schneller. Im Hauptspeicher
1000 Pointer zu dereferenzieren oder eine Page von der Platte
in den Speicher laden. Selbst wenn du über Hashing arbeitest
und alles im Hauptspeicher liegt dauert die Berechnung des
Hashkeys länger wenn weniger als
100 Elemente in der Liste sind. Und allen voran, ein Index
ist niemals so flexibel wie ein strcasestr oder vieleicht
gar noch eine Deferenenzierung oder Functioncall in der
Vergleichsfunktion.
Ich sehe es so; Die Balance zwischen Flexibilität und Performance
ist gar nicht so schlecht und jeder Indexdatei bei weitem
überlegen. Beim Thema Flexibilität hat ein Index
sowieso verloren und über die sich dahinter verbergende Komplexität
brauchen wir erst gar nicht reden.
> Von Robustheit (Schreiben über Arraygrenze ->
wer soll denn bitteschön über Arraygrenzen hinwegschreiben ?
Wenn du dieses Problem hast oder befürchtest solltest du
sowieso die Programmiersprache wechseln, es gibt genügend
davon ohne Pointer.
> mmap-Datenbank futsch), Portabilität (mmap -> big/little endian?),
nächster netter Versuch. Welche Portabilität denn. Kommst du
auf die Ideen die Indexfiles deiner Informix-DB von einer
Intelmaschine auf einen Powerpc einfach so zu kopieren ?
Für sowas ist doch XML Export recht praktisch, oder ?
> Erweiterbarkeit (Datenbank auf anderem Rechner?) ganz zu schweigen.> Selbst wenn man keine Datenbank verwenden will könnte man die komplette> kunde.c durch Verwendung von Ruby oder Python dank der eingebauten Typen> (Array, Hash, Struct) in wenigen Zeilen abhandeln, inkl. Serialisierung.
und wo ist dann der Kunde gespeichert ?
Wie kann ich dann auf den Kunden zugreifen ?
Was ist mit Multiuser/Multitasking ?
Wie lange dauert es 1.Mio Kunden auf diese Art zu sortieren ?
Der arme würde bestimmt wieder in der SQL - DB landen und der
Komplexitäts/Performancekreislauf wäre wieder geschlossen.
Denn so ganz ohne Wartung kommt die SQL-DB auch nicht aus,
und das eine oder andere Byte Speicher braucht es auch. Naja,
dann müssen auch noch die SQL Statements geparst werden, braucht
auch Zeit und Typfehler werden erst zur Laufzeit erkannt.
Kann man natürlich so machen, technisch ist das
alles kein Problem. Heute Früh hatte ich übrigens einen Anruf
von einem Kunden dessen Informix-Indexfiles wieder mal kaputt
waren - warum weiß keiner, Reorganisiert werden mußten sie
dennoch, und der der die Arbeit machen mußte war ich.
Ich habe auch Projekte in denen der
Kunde Java/SQL vorgibt. Die Ladezeiten der Anwendung,
die Dauer der SQL Statements der Speicherbedarf etc.
ist gut und gerne 1000x höher. Genau so wie die
Entwicklungszeiten. Die Endanwender sind
Genervt, der Endkunde droht mit Rechtsanwalt und ist
verloren. Mir kann es egal sein, ich bin/war nur
Unterauftragnehmer ohne Verantwortung - hauptsache ich
(und jeder andere Kollege) verdiende/n gut dabei.
Dort wo ich die Verantwortung habe arbeite ich so wie
ich es für richtig halte und erwarete dies auch von
meinen Mitarbeitern. Um nicht zu vergessen, have fun
all the time!
BTW worüber ich dankbar wäre, wie man diese Lösung
(ernsthaft) schneller und einfacher machen könnte.
Grüße
Andi
maximus schrieb:> Da gefallen mir die Ausschnitte der Mädels hier an der Uni aber besser.> Hast du das vor der letzten Softwarekrise geschrieben, oder vor der> vorletzten?
muß man diesen Satz irgendwie verstehen ?
Gab es eine Softwarekrise, sind wir in einer Softwarekrise
wird es denn eine Softwarekrise geben ?
Und was um himmels willen ist überhaupt eine Softwarekrise
und wie kann ich mich davor schützen ?
Also Mädels gabs immer schon und die gefallen mir auch viel besser.
Von welcher Uni kommst du denn ?
Argumentiert ihr dort so:
Mit C/C++ kann man heute nicht mehr programmieren, früher
schon, aber das war damals, da war alles ganz anders. ja, ja,
die guten alten Zeiten (vor der vorletzten Softwarekrise).
minimalist schrieb:> Andreas Schwarz schrieb:>> Das hätte man 1990 sicher als eine elegante Lösung bezeichnet.>> hatte man denn damals andere Probleme zu lösen als heute ?
Nein, aber man hatte weniger Möglichkeiten diese zu lösen.
>> Effizienz? Ob das Rendern einer HTML-Seite 1µs oder 10µs>> dauert interessiert keinen.>> also ich heisse zwar nicht 'keinen' und keiner meiner Kunden> aber auf dem Server arbeiten doch zig Kunden gleichzeitig.> Zumindest die finden es ziemlich angenehm dass sie keine> Wartezeiten haben.
Und die merken den Unterschied ob das HTML-Rendern auf dem Server 1 oder
10 µs dauert?
> Selbst wenn du über Hashing arbeitest> und alles im Hauptspeicher liegt dauert die Berechnung des> Hashkeys länger wenn weniger als> 100 Elemente in der Liste sind.
Wie gesagt, die Performance bei der Berechnung eines Hashkeys war etwas
worüber man sich 1990 Gedanken machen musste.
> Beim Thema Flexibilität hat ein Index> sowieso verloren und über die sich dahinter verbergende Komplexität> brauchen wir erst gar nicht reden.
Die Komplexität ist in der Datenbank abstrahiert, damit kommt man nicht
in Berührung.
>> Von Robustheit (Schreiben über Arraygrenze ->>> wer soll denn bitteschön über Arraygrenzen hinwegschreiben ?
Dein Programm, wenn du z.B. "EUR" in "Euro" änderst und vergisst das
Währungsfeld entsprechend zu verlängern. Vielleicht bist du ein perfekt
fehlerfreier Programmierer; aber spätestens wenn mal jemand anderes an
deinem Projekt arbeiten sollte geht die Wahrscheinlichkeit für einen
Speicherzugriffsfehler langsam aber sicher gegen 1. Und wenn dann die
Datenbank explodiert oder ein bösartiger Nutzer Code einschleusen kann
ist das unschön.
>> Erweiterbarkeit (Datenbank auf anderem Rechner?) ganz zu schweigen.>> Selbst wenn man keine Datenbank verwenden will könnte man die komplette>> kunde.c durch Verwendung von Ruby oder Python dank der eingebauten Typen>> (Array, Hash, Struct) in wenigen Zeilen abhandeln, inkl. Serialisierung.>> und wo ist dann der Kunde gespeichert ?
Wo du willst... Datenbank, XML, Binärblob.
> Was ist mit Multiuser/Multitasking ?
Was ist bei mmap?
> Wie lange dauert es 1.Mio Kunden auf diese Art zu sortieren ?
n * log(n)?
> dann müssen auch noch die SQL Statements geparst werden, braucht> auch /Zeit/
Siehe oben...
> Heute Früh hatte ich übrigens einen Anruf> von einem Kunden dessen Informix-Indexfiles wieder mal kaputt> waren - warum weiß keiner, Reorganisiert werden mußten sie> dennoch, und der der die Arbeit machen mußte war ich.
Wenn deine Datenbank mal kaputt geht, dann muss der Kunde hoffen dass du
noch Support leistest, sonst ist er aufgeschmissen.
> BTW worüber ich dankbar wäre, wie man diese Lösung> (ernsthaft) schneller und einfacher machen könnte.
Wie wär's mit "übersichtlicher" und "robuster"?
Minimalismus im Sinne von Anzahl der Codezeilen, nicht im Sinne von
Anzahl der Maschinenbefehle ist meistens sinnvoller.
minimalist schrieb:> maximus schrieb:>> Da gefallen mir die Ausschnitte der Mädels hier an der Uni aber besser.>> Hast du das vor der letzten Softwarekrise geschrieben, oder vor der>> vorletzten?> ...> Also Mädels gabs immer schon und die gefallen mir auch viel besser.
Vor allem die mit Ausschnitt?
Andreas Schwarz schrieb:> minimalist schrieb:>> Andreas Schwarz schrieb:>>> Das hätte man 1990 sicher als eine elegante Lösung bezeichnet.
Hey Andreas, Namensvetter, kein Problem. ist deine Entscheidung.
Ich finds jedenfalls cool total kleine zuverlässige und ultraschnelle
Programme zu schreiben. Das hab ich bisher nur mit C hinbekommen,
war mein Fehler darauf hinzuweisen. Irgendwie hatte ich gehofft
hier Leute mit ähnlichen Interessen anzutreffen.
Gute Nacht
Andi
@ minimalist
Du erinnerst mich irgendwie an die "Assembler-Jungs" die in der (schönen
;)) Vergangenheit sich den Boppes aufgerissen haben auch noch das letzte
Quäntchen Leistung aus ihrer Höllenmaschine rauszukitzeln. Das es sowas
im Zeitalter der XML und Datenbank schwangeren Softwareentwicklung
überhaupt noch gibt, wer hätte das Gedacht?! :)
Aber mal ehrlich, so eine Haltung wie "wer sollte denn über die
Arraygrenze hinaus .." ist doch eigentlich spätestens seit dem
Grundgedanken der Einführung einer "Managed Code" Sprache überholt. Oder
anderes gesagt, dem Programmierer gewisse liebgewonnenen Freiheiten (so
wie du sie nutzt) wieder abzuerziehen hat nach meinem Gefühl (ich
spreche bewusst vom Gefühl und nicht Kenntnis oder gar Beweis ;)) immer
mehr Software stabiler werden lassen. Wenn ich bedenke wieviel Ausnahmen
oder Abstürze man früher so hinnehmen musste (beim OS, bei
Anwendersoftware) und wie stabil allein so ein OS wie W7 monatelang
heutzutage läuft!
JavaProfi schrieb:> Professionelle> Java-Programme arbeiten zigmal effizienter als C++.
Wer hat dir denn das eingeredet?
Der sollte sich auf jeden Fall sein Lehrgeld zurückgeben lassen...
minimalist schrieb:> Argumentiert ihr dort so:> Mit C/C++ kann man heute nicht mehr programmieren, früher> schon, aber das war damals, da war alles ganz anders. ja, ja,> die guten alten Zeiten (vor der vorletzten Softwarekrise).
Aber nein! Niemand würde dir eine Sprache entreißen wollen. Auch all die
Erfahrungen und das mühsam Erlernte will niemand plötzlich weniger
achten. Aber diese Wissenschaft ist einfach noch zu jung um sich nur auf
Altbewährtes zu verlassen.
Mindestens sollte man heute mal realisieren, das die Darstellung eines
Programms in C++/Java/... für den Menschen gedacht ist! Heute ist doch
in den allermeisten Fällen nicht die Performance der Anwendung kritisch,
sondern die der Entwurfs-/Wartungsprozesse.
Was für ein episches geflame zum Thema welche Sprache ist vollkommen.
Keine ist es, ich arbeite in einer Firma die eines der weltweit größten
MES Systeme etnwickelt ahat und alleine in der Abteilung in der ich
arbeite wird neben der Hauptsprache Java auch C, C++, PL/SQL und ne Hand
voll gewrapped .net Funktionen verwendet.
Es gibt nicht DIE Sprache, es gibt lediglich das Richtige Werkzeug zur
Lösung eines spezifischen Problems und das kann bei großen Anwendungen
auch mal variieren.
Wirklich verwunderlich ist, dass die Informatik die letzten 10 Jahre
quasi stehen geblieben ist. Alle neuen Sprachen ähneln irgendwie den
alten.
Warum versucht man es mal mit einem richtig neuen Konzept wie z.B. der
Weiterentwicklung einer graphischen Programmiersprache der 5.ten
Generation wie LabView?
> dass die Informatik die letzten 10 Jahre> quasi stehen geblieben ist
Habe ich auch schon oft gedacht, in den 90ern waren wir mit CORBA schon
weiter als heute mit den RPC-ähnlichen WebServices. Document-Style
Webservices und RESTful sind jetzt aber auch nicht die Superinnovation.
Das ESB-Wunder ist auch noch nicht aufgetreten.
DSLs und Generierung gab es auch schon früher, allerdings gibt es heute
auch die entsprechenden theoretischen Methoden dazu.
Was gibt es sonst noch neues? Viele viele Frameworks! Die ganzen
on-Rails Frameworks, dann die GUI-Abstraktions-Frameworks, und dann Web,
Web, Web.
Verbessert hat sich auf jeden Fall die Entwicklungsumgebung, Eclipse,
NetBeans und IDEA integrieren heute alle nötigen Tools.
Was gibt es sonst noch? Das Wasserfallmodell ist immer noch populär, den
Unified Process haben die meisten nicht verstanden, alle machen
SCRUM-but, und wenn jemand echte agile Entwicklung betreibt, dann gibt
es spätestens 2 Management-Ebenen höher wieder solche lämenden Prozesse,
dass die ganze Wirkung verpufft.
Aber: nicht beschweren, selber innovativ werden!
Hallo liebe Mikrocontroller User,
Also ich verstehe nicht warum, so gut wie ALLE 3D Spiele(Shooter) in
C/C++ programmiert werden, wenn DU sagst, das Java schneller ist als
C++??, an der C++ Komplexität kannst ja nicht liegen.
(Achtung schlechtes beispiel :) )
Java ist durch den Interpreter langsamer als C++!.
das kann mann sich genauso vorstellen wie eine Playstation 2 Emulator
für PC, der versucht das zu übersetzen, und dieser Schritt dauert, und
ist dadurch langsamer!.;- das soll jetzt nur ein grobes Beispiel sein!.
Wieso ist auf mein PC, die meiste Software in nativen Code geschrieben?
Wenn ich mir Software aus dem Internet hole, egal ob Freeware oder
kommerziell, ist so gut wie alles in C/C++ b.z nativ geschrieben. Macht
doch mal selber den Test, also ich brauche für meine Software kein JVM
um sie zu starten, wie kommt das?.
Ein größeres Java Programm kenne ich und das ist der JDownloader, hab
ihr den mal ein halbes Jahr mal getestet? Also der verbraucht richtig
viel Speicher allein der Start dauert extrem.
Also ich habe mit Bücher von Galileo und Addison wesley, C# angefangen
zu lernen, bin dann aber c.a nach ein Jahr zu C++ übergelaufen und hab
mir eine schöne IDE von Embarcadero zugelegt und dazu noch das Buch C++
Primer, seit dem will ich C++ nie mehr missen.
Wieso hat Microsoft in ihr Produkt Visual Studio 6.0, 2005, 2008, 2010
die Programmiersprache C++ mit dabei?, weil das ein der meist genutzten
Sprache ist, wenn nicht sogar die Nummer 1, die für den Professionsallen
Bereich genutzt wird. Und das nicht nur Hardware nahe.und da kannst du
nicht sagen, dass die Sprache nicht mehr genutzt wird, wenn eine Sprache
versagt dann ist, dass nicht C++!. wie (ich glaube)J++ versagt hatte!.
Ich finde allgemein manage Code nicht so schön, wieso sollte ich mit C++
nicht schneller ans Ziel kommen? Ich könne mir doch genauso gut eine Gui
mit Qt zusammenklicken als wie in C#.
Ich will nicht sagen das Java oder C# schlecht ist. Aber für mich haben
die Sprachen keine Vorteile.
Auch ich kann genauso mit C++ MANAGE CODE scheiben, und kann zugleich
auch noch C benutzen und das .Net Framework also drei Sachen!.
C++, C, C++ CLI, also gleich drei Sachen auf einmal, also wieso sollte
mann Java benutzen oder C#??.
Lieben dank
Real programmers don't use assembler or C, real programmers are writing
the hex memnotics directly!
Hallo Mods, überlegt doch bitte mal ob man den Thread nicht schiesst :-)
CppTheBestLangaugeOverTheWorld schrieb:> Ein größeres Java Programm kenne ich und das ist der JDownloader, hab> ihr den mal ein halbes Jahr mal getestet? Also der verbraucht richtig> viel Speicher allein der Start dauert extrem.
1. Das ist wahrscheinlich beabsichtig, da das Programm etwas lädt...
2. Kann auch an deinem PC liegen.
3. Deswegen lässt man es Autostarten. Dieses Argument verstehe ich
vielleicht bei einem Textverarbeitungsprogram - du willst schnell
anfangen - hier aber nicht!
4. Der Ram ist so günstig. Ich habe meine 4GB Markenram für 40€ und bin
zufrieden.
Udo Schmitt schrieb:> Real programmers don't use assembler or C, real programmers are writing> the hex memnotics directly!
Immer doch. Nur so kann man das letzte Hz rauskitzeln (als ob das nötig
wäre ;) ).
PS: Sry, aber das musste jetzt sein.
Leute, ich finde es GEIL das diese Unterhaltung so lange läuft...
Glaube, ich mache es wie diese Frau, die einen Roman aus einem Blog
abgeschrieben hat^^
@CppTheBestLangaugeOverTheWorld
Die meisten 3D-Spiele sind in c++ geschrieben, weil es c++ schon viel
länger gibt als Java.
Auch Java ist fähig, 3D-Programme zu erstellen. Es gibt auch welche, ein
ehemals in c++ geschriebenes Spiel wurde in Java umgesetzt.
Es ist nur so, dass Java eine (relativ) junge Sprache ist.
Und in den ersten Jahren war sie tatsächlich ziemlich lahm.
Und eine Firma, die beispielsweise seit 6 Jahren an einer Game-Serie
arbeitet (und sich eine Game-Engine zurechtgefertigt hat) wird nicht
einfach so auf Java (oder eine andere Sprache) umsteigen.
Das sind glaube ich ein paar wesentliche Gründe.
Hallo,
Also, ich habe 6 jahre C++(WinAPI,MFC) und seit 2 jahren Java erfahrung:
1. wenns um PC Programmierung geht ist es wichtig welchen bibliotheken
es benutzen wird.
2. Meistens kommst mir einfacher vor in Java etwas zu machen.
3. um mit C++ grossen projekte zu machen zu können muss man es wirklich
sehr gut beherschen.ist niicht so einfach wie Java.
4. mann sagt das die Garbage Collector einen vorteil von Java ist, aber
dass ist nicht immer die fall. Es gibt immer noch sehr viele lücken.
Weist man auch nicht wo Java's GC nicht mehr mitmacht.Dann hat mann
grosse probleme.
5. Wenn man einfacher programmieren will ist Java das Wahl(ohne
Pointers), aber mit pointers kann mann efizienter programmieren das ist
klar.
6.Wenn mann programmieren lehrnen will sollte man schon die Hände
schmutzig machen un mit C anfangen. Also ich kenne viele läute die mit
Java angefangen haben und nur mit Java programmieren können.Die
verstehen das logicund ablauf dahinder nicht genau.
7.Aber Java ist wirklich einen eigenes Welt. Web entwickler und GUI
basierter programmierer sollten das unbedingt wissen.
viele Grüsse an alle.
Also ich merke gerade, dass Minecraft, welches ja in Java+GL umgesetzt
ist, auf meinem Rechner ganz ordentlich ruckelt und zuckelt.
Dagegen lief manch aufwendigeres Spiel im Emulator (wine) zügiger und
mit deutlich kleinerem Speicherabbild, etwa Half-life.
Ist natürlich ein gewagter Vergleich, wenn man nicht in die Quellen
hineinschauen kann. Aber ich könnte mir vorstellen, dass Minecraft nicht
so wahnsinnig aufwendige Texturen, Physik usw. benötigt :-)