Entwickler-Ecke
Off Topic - C++ Standardsprache
Mitmischer 1703 - Fr 13.11.09 22:36
Titel: C++ Standardsprache
Wieso findet C++ sooft - z.B für FF - Verwendung und nicht Delphi?! Was hat C++ für einen Vorteil Delphi gegenüber (außer C-ähnlicher Syntax -> kompliziert :twisted: )
elundril - Fr 13.11.09 22:42
angeblich ist es sehr schnell. außerdem ist es weit verbreitet, das heißt es gibt viele Bibliotheken und Codeschnipsel schon für C++. Mehr fällt mir auf anhieb nicht ein.
lg elundril
Reinhard Kern - Sa 14.11.09 02:31
Mitmischer 1703 hat folgendes geschrieben : |
| Was hat C++ für einen Vorteil Delphi gegenüber C++ |
Es gibt viele C++-Compiler für viele Prozessoren und Systeme, aber nur ein Delphi, und das wird ständig an andere Firmen weitergereicht und hat eine eher unsichere Zukunft. Und ausserdem ist es nur für PC-Systeme mit Windows ausgelegt. Eingeschränkter geht garnicht.
Gruss Reinhard
Namenlosnameless - Sa 14.11.09 10:23
C++ ist sehr nahe an der Rechnersprache!Das macht es schneller und damit geeigneter für Spiele. Allerdings ist dieser Maschiencode ähnliche Code irgendwie komisch und gewöhnungsbedürftigt.
Ein Freund von mir, er ist ein wirklich wirklich guter Programmierer (C#), wollte mal C++ lernen und hat dann nach kurzer Zeit aufgegeben weil er mit der Syntax so überhaupt nicht zurechtgekommen ist.
alzaimar - Sa 14.11.09 10:57
elundril hat folgendes geschrieben : |
| angeblich ist es sehr schnell. |
Das ist Delphi auch.
Namenlosnameless hat folgendes geschrieben : |
| Das macht es schneller und damit geeigneter für Spiele. |
Schneller als was? Delphi? Nö. Die einschlägig bekannten Performancevergleiche zwischen C, C++ und Delphi gehen seit Jahren unentschieden aus. Manchmal ist C marginal schneller, manchmal Delphi.
Der einzige Vorteil von C(++) ist der einzige Nachteil von Delphi: Man kann (ohne Weiteres) keine Treiber oder Betriebssysteme programmieren, einfach weil das Framework hierfür fehlt.
Webo - Sa 14.11.09 13:04
alzaimar hat folgendes geschrieben : |
| Der einzige Vorteil von C(++) ist der einzige Nachteil von Delphi: Man kann (ohne Weiteres) keine Treiber oder Betriebssysteme programmieren, einfach weil das Framework hierfür fehlt. |
Jep, sehe ich genauso. Und Delphi ist darüber hinaus einfacher zu erlernen (wie ich finde) und hat die doch erheblich übersichtlichere Syntax.
Chemiker - Sa 14.11.09 14:56
Hallo,
außerdem gibt es für C++ 64Bit Compiler von mehreren Herstellern.
Bis bald Chemiker
Aya - Sa 14.11.09 15:18
Den Vorteil von C++ werdet ihr erkennen sobald ihr an einem Rechner sitzt auf dem kein Windows läuft und ihr trotzdem programmieren wollt.
Das war zumindest bei mir der Grund warum ich von Delphi auf C++ umgestiegen bin (als ich mir meinen Mac gekauft habe).
Und jetzt zurück gesehen, ich würde nie wieder zurück zu Delphi wollen.
C++ hat abgesehen von der Platformunabhängigkeit sehr viele sprachliche vorteile wie z.B. Macros und Templates.. wenn man die erstmal gewöhnt ist möchte man sie nichtmehr missen.
Aya~
alzaimar - Sa 14.11.09 16:15
Aya hat folgendes geschrieben : |
Den Vorteil von C++ werdet ihr erkennen sobald ihr an einem Rechner sitzt auf dem kein Windows läuft und ihr trotzdem programmieren wollt.
|
Stimmt. Die Plattformunabhängigkeit ist ein Vorteil. Nur ist mir das noch nie passiert. Und wenn, würde ich Java verwenden.
platzwart - Sa 14.11.09 16:52
Das mit der Plattformunabhängigkeit stimmt so auch nicht. Ein #include windows.h und schon wars das...
Kha - Sa 14.11.09 18:45
platzwart hat folgendes geschrieben : |
| Das mit der Plattformunabhängigkeit stimmt so auch nicht. |
Aha, interessante Definition. Wenn für dich keine Sprache, die etwa "paint.exe" aufrufen kann, unter "plattformunabhängig" fällt, was bleibt denn bitte dann :nixweiss: ?
platzwart - Sa 14.11.09 19:44
OK, habe mich nicht ganz korrekt ausgedrückt. Was mich an dem "plattformunabhängig" immer stört ist die Tatsache, dass hierbei einiges verschwiegen wird. Denn nicht jedes Programm lässt sich für jede Plattform kompilieren. Beispielsweise habe ich vor kurzen ein Programm geschrieben, dass unter Linux /var/proc/stat Daten bzgl der CPU-Last ausliest. Dieses Programm ist aber plattformabhängig! Ebenso ein anderes Programm, welches C++ und für die GUI dann Qt benutzt. Für Windows müssen eben DLL's für Qt mitgeliefert werden.
Was ich sagen will: Nur weil man mit C++ programmiert, heißt das noch lange nicht, dass die damit erstelle Applikation auf allen Plattformen läuft. Ich bin mir nicht sicher, ob das allen Programmierneulingen klar ist... Die denken nämlich, die drücken auf ein Knöpfchen und schon läuft das Programm auf Linux, Windows, MacOS...
Umgekehrt kann ich auch eine Software mit Delphi schreiben und unter Linux ohne größere Probleme zum Laufen bringen, z.b. mit Wine (welches z.B. bei Ubuntu und Konsorten standardmäßig vorinstalliert ist). Hierbei muss ich garnichts mitliefern, die EXE reicht vollkommen aus.
Wenn C++ automatisch Plattformunabhängigkeit für die damit erstellten Programme bedeuten würde, so frage ich mich, weshalb dann die Spieleentwickler ihre Spiele meistens nur für Windows herausbringen - genau! Weil das mit dem an sich plattformunabhängigen C++ ein plattformabhängiges Spiel geschrieben wurde (Da kommen ja noch so Sachen wie DirectX etc. hinzu...).
Man sollte daher meiner Meinung nach einem Anfänger eben darauf hinweisen, dass Plattformunabhängigkeit nicht allein durch einen Umstieg von Delphi auf C++ erkauft werden kann.
alzaimar - Sa 14.11.09 20:28
Plattformunabhängig ist eine Sprache genau dann, wenn es Compiler für verschiedene (und viele) Plattformen gibt.
Was hier gemeint ist, ist der Code. Code kann plattformunabhängig sein, oder nicht.
Delphi war ja auch mal für Linux und AS/400 erhältlich. Auch eine Max-Version war mal angedacht, dachte ich...
platzwart - Sa 14.11.09 22:07
Es gibt ja auch den FPS...
alzaimar - Sa 14.11.09 22:28
platzwart hat folgendes geschrieben : |
| Es gibt ja auch den FPS... |
Frames Per Second? :gruebel:
Timosch - Sa 14.11.09 22:46
Free Pascal. Die Bedeutung des S ist mir aber nicht ganz klar.
platzwart - Sa 14.11.09 23:34
Sorry, FPC - free pascal compiler ;)
alzaimar - Mo 16.11.09 09:03
Allesquarks hat folgendes geschrieben : |
| Solche Tests wären mir neu. Hast du da Quellen? |
c't vor einigen Jahren. Diverse Selbstversuche.
Bernhard Geyer - Mo 16.11.09 09:07
Allesquarks hat folgendes geschrieben : |
| Solche Tests wären mir neu. Hast du da Quellen? |
In der c't war ein Test über 2-3 Ausgaben zwischen C/C++, Delphi, Java und .NET.
Ergebnis in wenigen Sätzen:
Im Bereich "Number Crunsher" ist C/C++ die #1. Jedoch sobald objektorientierte Techniken (overload/override/polimorphy/... ) in's Spiel kommen verliert C/C++ und landet mit Abstand auf den letzten Platz. Delphi/Java/.NET zeigen hier untereinander nur irrelevante Performance-Unterschiede.
Und wenn einer wieder sagen will das managed Laufzeitumgebungen langsamer sind als native Code: Kann mir jemand eine schnellere Volltextengine wie Lucene zeigen oder eine schnellere Datenbank als H2 (beides Java)?
Critter - Mo 16.11.09 13:23
Hi,
Allesquarks hat folgendes geschrieben : |
| Solche Tests wären mir neu. Hast du da Quellen? Meine Erfahrung zeigt, dass wenn jemand beim Delphi Compiler von Schnelligkeit redet, dann meint er die Compilierzeit und nicht die für viele viel wichtigere Ausführungszeit des fertigen Kompilates. Selbst wenn man ohne Schnickschnack wie SSE misst, was man in Delphi glaube ich gar nicht anstellen kann, verliert es trotzdem immer. |
das kommt immer darauf an, welchen Teilbereich man sich anguckt. C++ ist z. B. recht langsam beim arbeiten mit Objekten. Das ist der Preis, der für Mehrfachvererbung uns solche spirenzchen gezahlt werden muss Delphi ist peinlich langsam, wenn man mit 64Bit Integer Werten arbeitet, da dieser wohl ziemlich Schlecht implementiert ist.
Aber mal ehrlich Jungs, 99,9% von uns schreiben Programme bei denen es völlig egal ist, ob eine Operation jetzt 100ms oder 150ms dauert. Wenn es Performance Probleme gibt, dann liegt dann kann man in den aller meisten Fällen durch eine Optimierung des Algorithmus viel mehr reißen, als wenn man selbigen in einer anderen Sprache implementiert.
C++ ist das Englisch des Programmierers, also eine Sprache die man zumindest in ihren Grundlagen beherrschen sollte, weil sie jeder Spricht und man ständig in der Fachliteratur drauf stößt. Ob man sie dann auch im täglich Leben verwendet ist dabei im Grunde genau so unwichtig, wie die Frage ob sie diesen Status erlangt hat, weil sie wirklich die beste Sprache ist oder bloß, weil sie zur rechten Zeit vom rechten Angestellten, der Rechten Firma entdeckt und gehyped wurde.
Fakt ist, es gibt die beste Sprache nicht. Es gibt höchstens die Beste Sprache für diese oder jene Aufgabe. Da hat Delphi genau so seine Existenzberechtigung wie C++, PHP, Prolog, Lisp und auch Fortran wird heute noch zu recht in seinen Nischen eingesetzt. Daher finde ich es für jemanden der Professionell Programmieren will auch nicht besonders weise, sich auf nur eine Sprache fest zu legen. Mal ganz abgesehen davon, dass man, wenn man C(++), Pascal und Basic kann, in den allermeisten anderen Sprachen nur einen Mix aus diesen erkennt der mit einigen wenigen Extras versehen wurde.
critter
funcry - Mo 16.11.09 13:42
Meine Selbstversuche ergaben ein anderes Resultat. Ich habe ein rechenintensives Projekt 1:1 (inklusive GUI) in Delphi und c#, wobei c# hier erheblich schneller als Delphi rechnet. Vermutlich wäre ein Test mit "Wissenschaftlich genauer Vorgehenswiese" hier aufschlussreich. Vielleicht kenne ich auch nicht alle möglichen Optimierungen. Delphi hat jedenfalls definitiv seine Stärken (eher in anderen Bereichen).
nVidia will zukünftig direkt c++ auf seinen GPUs unterstützen (derzeit c). Das wäre - zumindest für mich - schon ein gewisser Anreiz.
Nersgatt - Mo 16.11.09 13:53
funcry hat folgendes geschrieben : |
| in Delphi und c#, wobei c# hier erheblich schneller als Delphi rechnet. |
Dir ist aber schon klar, dass man C# und C++ nicht vergleichen kann? Das sind komplett verschiedene Programmiersprachen.
Ich habe mir letztes Wochenende ein C++ Buch gekauft und angefangen, es durchzuarbeiten. Das hat mehrere Gründe. Zum einen ist an vielen Stellen die Doku von SDK's auf C++ zugeschnitten. Da kann es nicht schaden, wenn man es zumindest lesen kann und evtl in Delphi oder andere Sprachen übersetzen kann.
Außerdem möchte ich mich rein interessehalber mal etwas mit der Programmierung von Addons/Plugins für mein TomTom beschäftigen. Quasi als Winterprojekt. Und auf dem TomTom läuft Linux. Hier ist nunmal C++ die Sprache der Wahl. Und als 3. Grund kann es nie schaden, wenn man behaupten kann, man hätte Grundlegende C++ Kenntnisse.
Allerdings ist mir schon auf den ersten 100 Seiten des Buchs aufgefalle, wie viele Möglichkeiten C++ bietet, Dinge abzukürzen und sich damit gleichzeitig in den Fuß zu schießen. Ich glaube, mit C++ muss man noch sehr viel umsichtiger Programmieren, als wie man es z.B. mit Delphi muss.
Gruß,
Jens
funcry - Mo 16.11.09 19:34
Sicherlich, immerhin nutzt c# das .net Framework.
Am Rande bemerkt, es ist wirklich ein ganze Menge vergleichbar, sonfern man ein Vergleichskriterium hat.
Chemiker - Mo 16.11.09 23:58
Hallo,
ich lese oft in solchen Diskussionen, dass man mit Delphi keinen Treiber oder BS schreiben kann.
Woran wird das fest gemacht, warum soll das nicht möglich sein?
Ich sehe eigentlich keinen Grund warum das mit C/C++ möglich sein soll und mit Delphi nicht.
Jedenfalls habe ich im vorigen Jahrhundert einen Druckertreiber für einen ET-Drucker unter
DOS mit Turbo Pascal/Turbo Assembler geschrieben.
Das das heute keinen Sinn mehr macht, steht auf einem anderen Blatt.
Bis bald Chemiker
Critter - Di 17.11.09 12:09
Hi,
Chemiker hat folgendes geschrieben : |
Woran wird das fest gemacht, warum soll das nicht möglich sein?
Ich sehe eigentlich keinen Grund warum das mit C/C++ möglich sein soll und mit Delphi nicht. |
Treiber müssen unter Windows im Kernel Modus laufen. Die Kompilate müssen also bestimmten Kriterien entsprechen, welche der Delphi Compiler nicht erfüllen kann. Meines Wissens können es aber auch die meisten C++ Compiler nicht. Man muss hier explizit auf Visual C++ aus dem hause Microsoft zurück greifen.
//Edit:
Hier [
http://www.delphi-forum.de/viewtopic.php?p=7104#7104] werden ein paar Worte dazu gesagt.
critter
Horst_H - Di 17.11.09 12:28
Hallo,
Dann ist eben C++ "die" häufigst benutzte Sprache.
Für C/C++ gibt es zudem die meisten Bibliotheken, die einem doppelte Arbeit abnehmen.
Schnelle Programme enstehen vielfach durch geschickte Algorithmen.
Man kann sich ja mit shootout's trösten. [url=
http://shootout.alioth.debian.org/]The Computer Language
Benchmarks Game[/url] das es nicht immer sooo schlimm ist.
http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=java&lang2=gpp&box=1
Aber die sind auch albern. Bei Pi-Digits verwenden alle eine Dll für das rechnen mit ewig-langen Zahlen,
Objekte werden nirgendwo eingesetzt.
Müßig und für den privaten Gebrauch unwichtig ob 100 ms oder 150 ms, mehr ein Sport.
Aber ein Standard hat eben auch große Vorteile, viele Leute die es können, und mehr die es sehr gut können, als bei einer Nischen-Sprache.
Gruß Horst
Jakob_Ullmann - Mi 18.11.09 18:17
Kha hat folgendes geschrieben: |
| Wenn für dich keine Sprache, die etwa "paint.exe" aufrufen kann, unter "plattformunabhängig" fällt, was bleibt denn bitte dann :nixweiss: ? |
Naja, wenn schon "mspaint.exe". :P
Ich muss aber sagen, dass für mich zum Beispiel die Delphi Community einen recht großen Eindruck macht, was ich von C++ erstmal nicht behaupten kann. Und für Delphi habe ich schon einige nützliche Dinge gefunden (z. B. SynEdit, was ich auch als Anwender angenehmer als Scintilla empfinde, TBX, Indy, THTMLViewer von pbear.com, GLScene, TChart), was ich für andere Sprachen eben nicht gefunden habe. :wink:
Und gerade das sind für mich unersetzliche Kriterien.
Reinhard Kern - Mi 18.11.09 19:50
Chemiker hat folgendes geschrieben : |
Woran wird das fest gemacht, warum soll das nicht möglich sein?
Ich sehe eigentlich keinen Grund warum das mit C/C++ möglich sein soll und mit Delphi nicht.
|
Hallo,
ganz streng genommen stimmt das ja auch nicht, weil man ganz streng genommen jedes Problem mit jeder Programmiersprache lösen kann, das hat schon Turing bewiesen. Bloss ist das für die Praxis wahr aber irrelevant.
Man kann viele hardwarenahe Aufgaben in Delphi einfach deswegen nicht sinnvoll angehen, weil die Voraussetzungen fehlen: die Dokumentation zur Hardware bezieht sich auf C und die notwendigen "Bindings" sind auch nur in C mitgeliefert. Man kann natürlich jede DLL aus jeder Sprache aufrufen, aber dazu braucht man eben die Definitionen der Funktionen als .H-File oder für Delphi als .PAS. Du kannst jetzt sagen, sowas schüttelt man locker aus dem Ärmel, dann fang mal mit der Übersetzung von Windows.H in Windows.PAS an. Das sind über 30000 Zeilen (D7) und viele Funktionen sind garnicht trivial zu übersetzen.
Ich bin überzeugt, mit dem nötigen Knowhow und vielen Tricks mit Brückenfunktionen in Inline Assembler könnte man auch Delphi die Treiberentwicklung beibringen, aber das würde einige Mannjahre erfordern, und wozu soll es gut sein? Von MS kriegt man die Entwicklungssoftware kostenlos.
Gruss Reinhard
Chemiker - Do 19.11.09 23:46
Hallo Reinhard Kern,
dass es keinen Sinn macht habe ich ja schon in meinem Beitrag geschrieben, aber trotzdem ist es nicht unmöglich.
Bis bald Chemiker
Delete - Fr 20.11.09 01:34
Namenlosnameless hat folgendes geschrieben : |
| C++ ist sehr nahe an der Rechnersprache! |
Hä? Das musst du mir mal erklären. Warum ist
for (i = 0; i < 9; i++) näher an der Rechnersprache (Maschinencode) als
for i := 0 to 9?
Beides sind Hochsprachen, die mit dem resultierenden Maschinencode nichts zu tun haben. Deswegen kann man ja auch den gleichen Quellcode mit den zugehörigen Kompiler für jede Plattform übersetzen.
jaenicke - Fr 20.11.09 01:48
Reinhard Kern hat folgendes geschrieben : |
| Ich bin überzeugt, mit dem nötigen Knowhow und vielen Tricks mit Brückenfunktionen in Inline Assembler könnte man auch Delphi die Treiberentwicklung beibringen, aber das würde einige Mannjahre erfordern |
Es gab das Delphi Driver Development Kit. Damit funktioniert das schon. Es macht keinen Sinn und um ernsthaft damit etwas zu machen ist noch einige Arbeit erforderlich, aber ich hatte damit selbst einmal ein wenig experimentiert. Funktionieren tut es.
Delete - Fr 20.11.09 02:49
Zur Treiberentwicklung mit Delphi:
http://www.michael-puff.de/Artikel/GrenzenDelphi.shtml
Kurz: Delphi war nie dazu gedacht Treiber zu entwickeln. Es macht also keinen Sinn dies Delphi als Nachteil auszulegen. Ich sag ja auch nicht, dass ein Schraubenzieher schlechter als ein Hammer ist, weil ich damit keine Nägel in die Wand schlagen kann. Man nimmt eben für jede Aufgabe das passende Werkzeug. Und für die Treiberentwicklung ist es ebn nicht Delphi. Dafür hat (hatte) es andere Stärken.
elundril - Fr 20.11.09 03:43
Luckie hat folgendes geschrieben : |
| Dafür hat (hatte) es andere Stärken. |
Könntest du ein paar Dinge aufzählen die man mit Delphi besonders gut kann? Ich mein, ich mag Delphi aber konkrete Vorteile gegenüber anderen Sprachen kann ich nicht nennen.
lg elundril
Reinhard Kern - Fr 20.11.09 15:07
elundril hat folgendes geschrieben : |
Könntest du ein paar Dinge aufzählen die man mit Delphi besonders gut kann? Ich mein, ich mag Delphi aber konkrete Vorteile gegenüber anderen Sprachen kann ich nicht nennen.
lg elundril |
Hallo,
ich kenne Pascal ja schon seit Niklaus Wirth es entworfen hat, und das war für Schulungszwecke. Und dafür ist die Sprache auch heute noch gut, im Gegensatz etwa zu C++. Ich schätze auch, dass der Anteil an Schulen grösser ist als in freier Wildbahn, aber darüber bekommt man wohl keine genaueren Zahlen.
Gruss Reinhard
jaenicke - Fr 20.11.09 16:26
Der Anteil ist da soweit ich das sehe auch sehr sehr klein. Früher wurde bei uns an der Schule, an der ich mein Abitur gemacht habe, auch mit Pascal bzw. Delphi gearbeitet, jetzt mit Java. Und genauso ist es auch anderswo gewesen. Was auch kein Wunder ist.
Delete - Fr 20.11.09 23:14
elundril hat folgendes geschrieben : |
Luckie hat folgendes geschrieben : | | Dafür hat (hatte) es andere Stärken. |
Könntest du ein paar Dinge aufzählen die man mit Delphi besonders gut kann? Ich mein, ich mag Delphi aber konkrete Vorteile gegenüber anderen Sprachen kann ich nicht nennen. |
Früher als Borland noch Borland hieß war Delphi die einzige IDE, mit der man grafisch schnell eine Oberfläche erstellen konnte. Denn dafür war Delphi entwickelt worden, schnell und unkompliziert eine Windows Anwendung für den Benutzermodus entwickeln zu können. Microsoft hat dann später die MFC entwickelt, aber das war im Vergleich zur Borland VCL ein ziemlicher Krampf. Diesen Vorteil hat Delphi natürlich mittlerweile verloren, deswegen habe ich das
hatte in Klammern dazu gesetzt. .NET IDEs und mittlerweile auch Java IDS bieten heutzutage ähnlich bequeme Möglichkeiten eine Windowsanwendung für den Benutzermodus zu entwickeln.
Auch ist es recht einfach mit Delphi Datenbanken anzusprechen, weil das der ursprüngliche Zweck war, für den Borland damals -- als Borland noch, na ihr wisst schon -- Delphi entworfen hat. Deswegen ja auch die legende um die Entstehung des Namens
Delphi.
Dann war Delphi recht einfach für Einsteiger zu erlernen, da es auf Pascal basiert, eine Sprache, die extra für Lehrzwecke von Niklas Wirth entworfen wurde. Während hingegen bei C habe ich manchmal den Eindruck, dass die Entwickler es so kryptisch wie möglich machen wollten.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!