| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Programmiersprachen Vor-/Nachteile & Vorurteile im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo Leute, als ich vor geraumer Zeit so in den Threads stöberte fingen meine kleinen Grauen Zellen an zu ...
![]() |
| | #1 (permalink) |
| Guest Likes: | Anzeige Hallo Leute, als ich vor geraumer Zeit so in den Threads stöberte fingen meine kleinen Grauen Zellen an zu arbeiten und dabei ist mir so einiges sauer aufgestoßen: Einige hier sind ganz gewiss sehr fit was das Programmiertechnische angeht, das macht aber die Unwissenheit über Alternativen wieder wett. Soweit ich es mitbekommen habe ist der Großteil hier doch schon sehr vernarrt in C++. Die Frage warum dies so ist bleibe zumindest ich selbst mir nicht schuldig. Da ich selber Programmierer bin sehe ich nun ein das man bei Hardware naher Programmierung um Sprachen wie Assembler, aber vor allen Dingen auch C bzw. C++ nicht herum kommt. Doch heutzutage ist C++ bei weitem nicht mehr zwangsläufig das non plus ultra in Sachen moderner Programmiersprache. Hier gehen vor allen Dingen andere Sprachen wie C# und Java allen anderen voran, welche Sprachelemente hier nun in wie weit voneinander abgekupfert sind sei mal total dahingestellt. Dieser Thread soll nicht dem Kampf Borland vs. Microsoft oder Sun vs. Microsoft dienen. Gerade in der heutigen Zeit mit immer mehr Rechenleistung werden virtuelle Maschinen wohl immer bedeutungsvoller da der Code bzw. die Sicherheit des selbigen hier doch ganz anders umgesetzt wird. Gerade mit ManagedDirect X hat Microsoft diesmal einen großen Schritt getan, aber auch die neuen alternativen IO Klassen in Java zeigen große Vorzüge auf, vor allen Dingen in Sachen Geschwindigkeit. Nun ist es ja nun so das viele hier immer noch der Meinung sind das C++ der unangefochtene Herrscher der Ausführungsgeschwindigkeit bei Programmen ist. Das aber gerade dem nicht so ist sind sich die meisten nicht bewusst. Ich stellte mir die Frage wieso das so ist. Der eigentliche Grund der mir dazu einviel war der Folgende: Bis heute gibt es wohl kein nennenswerters Spiel mit state of the art 3D Optik das in einem C# oder gar Java geschrieben wurde. Daraus resultiert wohl schnell das Vorurteil das diese Sprachen für eine solche Mammutanwendung schlicht zu langsam sind. Dabei geht es doch nur um Hardwarezugriffe die gerade nur oder besonders gut in C++ oder anderen niederen (obgleich C++ schon eine Hochsprache ist) Sprachen möglich sind. Wie ich es bereits einmal in einem anderen Thread angeschnitten habe sind Sprachen die in virtuellen Maschinen ablaufen heute durchaus in bestimmten Anwendungsszenarien sehr viel schneller als native Sprachen. Wieso ist das so? Nun, das liegt ja nun vor allem daran das die nativen Sprachen schon ein paar Jahre auf dem Buckel haben. Gerade C++ ist ja auch "nur" eine Hybride sprache und halt nunmal keine "echte" objektorientierte Sprache. Lieblinge und Vorurteile hin oder her: Es ist es nunmal absolut bewiesen das Sprachen wie C# oder Java durchaus schneller sein können als native Anwendungen. Es gibt in mehr als einem Fachmagazin dazu immer wieder mal Benchmarks in bestimmten Zeitabständen. Ein beliebtes Beispiel war schon immer und bleibt es auch heute noch das sortieren einer Liste. Hier wurden vor längerer Zeit mal ein paar Messungen gemacht. Das Programm wurde soweit es jede Sprache erlaubte komplett objektorientiert umgesetzt und siehe da: tatsächlich waren Delphi und C++ um längen langsamer als Java. Allen voran Stand C# an der Spitze. Das lag nun daran das hier keine Hardwarezugriffe nötig waren und dies ist auch gerade in Unternehmensapplikation meist der Fall wo diese Sprachen heute kaum noch wegzudenken sind. Ich selber habe bereits Erfahrungen mit Applikationsservern und verteilten Objekten sammeln dürfen (Enterprise Java Beans), kann dies also nur aus eigener Erfahrung bestätigen. Gerade Sprachen von denen man es nicht erahnt bergen oft ungeahntes Potenzial. Das schwarze Schaaf bleibt definitv Java. Zum einen mag die Namensgebung Leute irritieren, Java ist und bleibt halt ewig etwas anderes als JavsScript und man kann damit weitaus mehr machen. Ebenfalls mehr als nur Applets in Websiten einzubetten. Die Performance und Möglichkeiten von Java an Applets zu messen wäre das selbe als würde man etwa C++ auf ActiveX Steuerelemente reduzieren. Zum anderen leidet diese Sprache noch heute an Performance Problemen neuerer Bibliotheken, SWT/Swing allen voran. Dabei stellt Sun schon seit Ewigkeiten andere Alternativen bereit. Die Verwendung des Abstract Window Toolkit. Nagut, zugegeben, hier schwindet Schönheit zu gunsten von Performance, aber was jeder einzelne nun aus diesen Möglichkeiten herausholt ist eine andere Sache. Zudem steigert die Verwendung von StringBuffer anstelle von String die Geschwindigkeit enorm. Andere Tricks die sich auch übertragen lassen sind Konstrukte wie: Code: for(int i = 0; ; i++){
try{
// etwas tun
} catch(ArrayIndexOutOfBoundsException e){
// Ausnahme verarbeiten
}
} Durch verzicht auf die Abbruchbedingungbedingung muss nicht jedesmal geprüft werden ob jene erreicht ist, was Ausführungszeit spart. Der Einstieg in den try Block kostet ebenfalls keine Zeit, lediglich der Einstieg in den catch Block wird einmalig zur Last. Lange Rede, kurzer Sinn: Wie steht ihr zu all diesen Fragen? C++ oder Java? PHP oder JSP? Oder doch liebe etwas ganz anderes? Warum ist das bei euch so? Keine Erfahrung mit alternativen Sprachen? Keine Zeit in diese reinzuschnuppern oder nur schlichte Vorurteile? Los gehts ![]() P.S.: Das ich sehr viele Beispiele gebe anhand von Java liegt hauptsächlich daran das ich diese Sprache heute nicht mehr hergeben möchte. Ich habe selber lange Zeit viel in C++ gemacht, bin dann aber irgendwann ausgestiegen. Das heißt ganz und gar nicht das ich diese Sprachen irgendwie miteinander in Konkurrenz stelle. Es hat lange persönliche Gründe. |
|
| | #2 (permalink) | |
| Member of Honour ![]() Registriert seit: 28.05.03 ![]() Likes: 1 | also wenn ich irgendwas für mich selber programmiere, dann nutze ich entweder java oder C# (letzteres meistens für GUI sachen). diese sprachen sind echt klasse. Kann nich schaden wenn man C++ kann, aber freiwillig mach ich damit gar nichts. das liegt daran dass man mit C/C++ viel zu schnell fehler macht, die bei java/c# gar nicht möglich sind (keine zeiger, typensicherheit). außerdem stört mich bei C/C++ diese ganze header geschichte und die vorwärtsdeklarationen. desweiteren kann man bei java/c# aufgrund eines vernünftigen package-systems, auch als anfänger leicht die benötigten klassen und funktionen finden ohne erst groß suchen zu müssen welche library ich benötige, denn die packages sind hierarchisch aufgebaut und haben vernünftige namen (bei c# besser als bei java). es gibt halt viele sachen, die einem den programmierer alltag enorm erleichtern. kurz gesagt komm ich mit java/c# schneller, sicherer und einfacher ans ziel als mit C/C++. zum thema geschwindigkeit: das starten der programme und der damit verbundenen virtual machine, dauert natürlich länger als bei nativen anwendungen. sobald die programme aber laufen ist kaum ein geschwindigkeitsunterschied zu merken (wenn man wie du schon sagst, bei java zB auf sachen wie string/stringbuffer achtet oder nicht gerade swing benutzt). das haben die benchmarks mit der JVM 1.5 ja auch gezeigt, wo java teillweise sogar schneller als c++ war. zu der 3d geschichte: es gibt ne firma die haben quake2 auf c++ .net portiert (ohne performanceeinbusen). Zitat:
__________________ http://livehabo.hackerboard.de | http://livebb.sourceforge.net | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | ||
| Moderator ![]() Registriert seit: 17.10.01 ![]() Likes: 0 | Zitat:
bei java wird der bytecode interpretiert, dieser kann niemals schneller sein als eine native anwendung (da eine zwischenschicht, welche das ganze langsam macht existiert)....es sei denn, der c code wurde schlecht programiert bzw der compiler kommt damit nicht zurecht. Zitat:
also ich selbst arbeite eigentlich mit php. jedoch gibt es zig sachen welche mich an dieser scriptsprache nerven....aber eben es ist und bleibt eine SCRIPTSPRACHE mit all den nachteilen welche so eine sprache meist hat. java sollte ich eigentlich momentan in der schule lernen....gefaellt mir von a bis z ueberhaupt nicht....man haette denken koennen, dass die schlauer geworden sind als bei c/c++ aber nein, sie haben nochmals ein gebastel kreiert, welche KEINEN DURCHGEHENDEN klar strukturierten aufbau hat. man sieht an diversen orten, dass gewisse sachen in das objektorientierte 'hineinvergewaltigt' wurden. ok bei c ist das nicht anders, jedoch ist c ein 'wenig' aelter als java und bei c++ haben sie den murks gemacht, dass der ganze c teil nicht weggestrichen werden konnte/durfte (bzw aus welchen gruenden das auch immer nicht gemacht wurde). was man aber leider nicht abstreiten kann ist, dass man mit java vielfach schneller am ziehl ist. c# ist fuer mich schon aus dem grund unbrauchbar, da man auf ms-produkte angewiesen ist. (ja da gibts mono...) zusammenfassung: es gibt in meinen augen noch keine wirklich schlaue programiersprache....zur zeit bin ich bei den webanwendungen mit php5 mehr oder weniger gluecklich. sofern ich was fuer ein system schreibe ist das in c/c++ (unter unix ist c der quasi standard) | ||
| | |
| | #4 (permalink) | ||
| Guest Likes: | Hallo soox, das ganze hört sich sehr aufgebracht an. Deshalb solten wir wieder etwas runterkommen und sachlich bleiben. Zitat:
Die Frage mit den 3D Games kannst du Dir beantworten, genau wie die mit den Betriebssystemen. Java oder C# beherrschen solche Hardwarezugriffe nun einmal nicht und sind gänzlich unbrauchbar für diesen Zweck. Zumal mit zunehmender Geschwindigkeit der CPUs das interpretieren des Bytecode "FAST" keine Unterschiede mehr macht. Sei es auch noch lange nicht so weit, der Trend geht alleine schon in Sachen Codesicherheit zu interpretierten Sprachen. Eine Datenbank in Java hätten wir und sie schloss in Benchmarks ebenfalls als eine der schnellsten ab: http://www.developer.com/db/print.php/629261 Zitat:
Wenn dies Deine persönliche Meinung ist, nagut. Schade ist es trotzalledem. Wo bleiben die anderen. Das kann doch noch nicht alles sein? Wer traut sich? | ||
|
| | #5 (permalink) | |
| Moderator ![]() Registriert seit: 17.10.01 ![]() Likes: 0 | sorry...wegen dem 'aufgebracht'....war gestern gerade nach ner java vorlesung (und heute gerade eben wieder). das mit dem leider ist falsch ruebergekommen....sollte eigentlich bedeuten, dass die anderen sprachen leider noch einiges an nachholbedarf haben. wuerde gerne den benchmakr mit der datenbank sehen...weil im text eigentlich genau das gegenteil den anschein macht Zitat:
1. logisch funktioniert das ganze doppelt so schnell mit einem kleinen anteil an features (siehe myisam). 2. es ist nicht multithreaded, was schon bedeuted, dass sehr sehr ausgekluegelten code braucht, um mit anderen systemen mitzuhalten (sofern sie schlau programiert sind). 3. es ist auf desktop systeme optimiert, was unter server bedingungen UNBRAUCHBAR bedeuted. zu den tests...(hab leider noch keinen link von euch gesehen)....als desktop sprache, glaube ich euch schon, dass es den anschein macht, dass eine c applikation nicht schneller ist. aber bei solcher software wird meist auf user anweisungen gewartet, und somit nicht wirklich die ganze zeit gerechnet. | |
| | |
| | #6 (permalink) | |
| Guest Likes: | Zitat:
| |
|
| | #7 (permalink) |
| Registriert seit: 29.04.07 ![]() Likes: 0 | Hallo.Ich kann "leider" nur java.Ich möchte in letzter Zeit viele mathematischen Sachen machen. Aus diesem Grund eine Menge fragen: Eigentlich wollte ich deshalb C++ umsteigen.Jetzt lese ich aber das.Meinem Anschein nach ist Java aber eben nur bei Objektorientierung schnelller.Aber wie sieht es mit einfachen, aber zeitintensiven Programmen aus (wie zB ein MandelBrot Fraktal oä).Ist java da nicht eher langsamer als andere Sprachen ?Und das mit dem Interpretieren- braucht das wirklich fast keine Zeit ? Und Kompilieren JIT Compiler nicht ohnehin alles Beim Start ?Achja, zu allem Überfluss: Ist in Java 6 schon ein JIT Compiler enthalten, oder muss man sich den erst zusätzlich holen ? |
| | |
| | #8 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, also Java kann man bei solchen Sachen eigentlich vergessen. Wenn es an das "Hochleistungsrechnen" geht, sollte man entweder C (C++) oder Assembler können. Bsp: Mit C# (recht ähnlich wie Java, aber mit JIT anstatt Interpreter) habe ich es geschafft, ca. 400 000 mal pro Sekunde einen MD5-Hash zu berechnen. Mit einer C-Version davon komm ich auf ca. 3,4 Millionen Hashs/Sekunde (wobei MdCrack z.B. 7,4 Mio./Sec auf diesem PC schafft). Wenn du also sehr aufwendige Rechnungen hast, oder irgendwelche Simulationen durchführen musst, sollte dies schon in C/C++/Assembler passieren. Da aber ein Programm die CPU nur recht selten zu 100% auslastet, merkt man bei normalen Programmen (z.B. Email Clients, Browser, etc) keinen Unterschied zwischen Java und C. |
| | |
| | #9 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Wenn es gerade um MD5 geht, so entsinne ich mich an eine MASM Implementierung, die den "Referenz C-Code" um Faktor 10 schlug (auch wenn es nicht mehr wirklich verfügbar ist Allerdings hat man dann mit steigender Optimierung das Problem, dass es immer aufwändiger und plattformabhängiger wird. Und eine simple Rechnung wie r:=Round(128.0 + 127 * sin(3.1415 * i / 32.0)); g:=Round(128.0 + 127 * sin(3.1415 * i / 64.0)); b:=Round(128.0 + 127 * sin(3.1415 * i / 128.0)) ; palette[i]:=b*$10000+g*$100+r; (Plasma-muster Anderseits, wenn man schnell eine Netzwerkgeschichte testen möchte oder eine größere Rechnung, möchte ich persönlich Java (mit den Netzwerkmodulen und "3 Zeilen Code - schon habe ich einen HTTPS Clien/SSL Verbindung " oder den ganzen BigInteger Klassen) einfach nicht missen. Sowas in C/Asm umzusetzen ist eine Qual. Und imho wird die Perfomancefrage oft überschätzt. Wenn ich z.B auf die aktuelle c't DVD schaue, so sehe doch recht viele Java-Programme, manche auch Video/Audio/Serverbereich (Server für PDA oder sowas ähnliches
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #10 (permalink) |
| Registriert seit: 29.04.07 ![]() Likes: 0 | Gut zu wissen.Hab jetzt noch zusätzlich ein paar Fragen: WIe sieht es mit Java Compilern aus ? Kompilierte Programme sollten doch um einiges schneller sein, oder ? Und weiß jemand einen (guten) Java Compiler ? |
| | |
| | #11 (permalink) | |
| Zitat:
Die Seite ist allgemein sehr nützlich, wenn's um OS-Programme geht :> Mein Senf zu dem Thema: Man sollte, wie schon gesagt, die richtige Sprache am richtigen Einsatzgebiet benutzen. Und _afaik_ ist C/C++ schneller als Java oder war es zumindest eine lange Zeit doch das ist/war gänzlich normal, wegen den genannten Umständen (VM, etc.) Netzwerktechnische Applikationen löse ich persönlich gern mit Java, Hardware bezogene Dinge mit C/C++. | ||
| | |
| | #12 (permalink) |
| Registriert seit: 29.04.07 ![]() Likes: 0 | Danke danke.Habe es grade mit GCJ als Compiler probiert.Mein Pi - Programm rechnet doch einbisschen schneller (~23 %) als Kompilat.Ich werde aber lieber doch früher oder später C/C++ lernen-hat noch keinem geschadet. |
| | |
| | #13 (permalink) | |
| Registriert seit: 02.01.07 ![]() Likes: 0 | Zitat:
Mir geht's bei C++ mehr um die Möglichkeiten gegenüber einer Basic-Sprache. Ein kleines Beispiel Spiel: Ich will ein Harvest moon Spiel programmieren (für die die's nicht wissen, man spielt da einen Bauern, muss Felder bestellen etc.). Nun will ich für die Felder ein gut geordnetes System anlegen. In einem RPG-maker is das undenkbar schwierig, da keine Array's vorhanden. Sonst benutze ich noch Dark Basic. Da gibt es nur Array's, wobei ich eine größe Festlegen müsste und Speicher unbenutzt bleibt, bzw die Gefahr besteht, außerhalb des Speichers zu schreiben. Das könnte z.B. bei dynamisch generierten Karten passieren... (darum hasse ich array's) In C++ kann ich das mit Vectoren machen. Ganz dynamisch evtl sogar einen Vector im Vector anlegen, womit kartenzahl, Größe etc generiert werden können. Problemlos. Naja, ein simples Beispiel von vielen 100ten... Allerdings ist C++ 1000mal schwerer als all die Andern. Aber wo bleibt sonst der Reiz? Ich persönlich progge ja aus Spaß, nicht weil ich was programmieren will ![]() (mein Post mal um C++ Vorzüge zu nennen, ihr Java-Fanatiker xD) | |
| | |
| | #14 (permalink) |
| Registriert seit: 29.04.07 ![]() Likes: 0 | Hm.Ich bin zB absolut kein Java fanatiker, und ich würde am liebsten jetzt schon C/C++ und ASM fließed können.Aber was anderes:Was sind Vectoren in C++?Wenn das so ne Art Liste ist-sowas bekommst du in Java auch..... |
| | |
| | #15 (permalink) |
| Registriert seit: 02.01.07 ![]() Likes: 0 | Ich hab von Java keine Ahnung. Werd ich wohl ab September lernen müssen, weil das ab der 11 im Fachgym aufn Plan steht ^^ Vectoren präprozessor: #include <vector.h> (is bei c++6.0 dabei) Also, das is so ne art Array, nur dass der Vector nicht begrenzt ist. Beim array sinds ja max. 200 Variablen (z.B.). Beim vector kann man mit xyz.push_back(var); eine Variable an den Vector anhängen. xyz is der vector, var die Variable. Strings gehen auch, selbst wenn der Compiler warnt. xyz.pop_back; -> entfernt den letzten man kann das auch an ner bestimmten Stelle einfügen. xyz.size(); is wohl klar, was das zurückgibt... xyz[x]; eine var verwenden Ist halt einem Array ähnlich... Das sollte n grober Überblick über die Funktion sein. Ich liebe Vectoren ![]() Bin grad n bischen müde, also Rechtschreibung verzeihen :baby: |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| vorurteile gegen dicke | -= pillepalle =- | Fun Section | 3 | 03.12.05 18:07 |
| Nachteile von Workaholism/Schlaflosigkeit | ghostdog | HaBo Lounge | 3 | 22.11.05 00:37 |
| Vor- und Nachteile von Lan/Wlan | YEAH | Network · LAN, WAN, Firewalls | 4 | 13.02.05 18:59 |
| 19" oder 20" TFT Vor- & Nachteile ??? | stuarrdo | Hardware Probleme | 7 | 28.08.04 13:50 |
| DVI VGA Vor- Nachteile, Unterschiede | Ph0eNiX | Hardware Probleme | 3 | 13.07.04 12:15 |