Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 00:49

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Sep 19, 2007 11:28 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Hallo Leute!

Sehr oft lese ich in Foren Diskussionen darüber, welche Sprache für bestimmte Anwendungen zu empfehlen ist - manche schwören auf C++, andere wieder auf Delphi/(Object)Pascal etc, oder auch auf Java. Ich persönlich finde die ObjectPascal-Syntax und ihren Sprachschatz "hübsch", übersichtlich und sehr gut lesbar.
Was ich des öfteren lese, ist, dass in C++ geschriebene Programme schneller seien als ihre mit Delphi geschriebenen "Klone".
Sind C++ Programme (die die WIN-API benutzen und vielleicht auch OpenGL) wirklich schneller als mit Delphi nonVCL-kompilierte Programme? Die jeweiligen Compiler kompilieren doch unabhängig von der Sprache in Maschinensprache, müsste sie dann nicht auch sehr ähnliche Endergebnisse aufweisen?

Noch was, speziell zu Delphi/Pascal:
Ich würde ganz gerne auf eine freie Sprache umsteigen. Von FreePascal hab ich schonmal gelesen, die soll zu Delphi ja recht kompatibel sein. Programmiert es sich mit FreePascal und vielleicht Lazarus als IDE so angenehm wie in Delphi? Habe ich mit den beiden Programmen Vorteile gegenüber Delphi 5 Prof.?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 11:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn man den gleichen Code (also in dem Falle WinAPI <> nonVCL) verwendet, dann sollten C/Delphi gleichschnell sein.

Was den FPC betrifft: Ja, du hast vorteile gegenüber Delphi mit FreePascal. Beispielsweise hast du überladene Operatoren und seit der aktuellen Version auch Generics (siehe News). Lazarus ist noch verbuggt, aber man kann damit arbeiten. Es kostet natürlich ein wenig umstellung und Delphi Code ist vorallem mit VCL nicht unbedingt kompatibel, wobei Delphi sowieso nie Plattformunabhängig ist und war, während du programme, die du mit FreePascal schreibst eigentlich recht gut unter anderen betriebssystemen kompilieren kannst, vorallem, wenn du nicht auf WinAPI oder äquivalente Aufrufe zurückgreifst sondern SDL verwendest. Aber du hast mit Lazarus ähnlichen Komfort wie mit Delphi. Sonst musst du dich nur an ein paar syntaktische Änderungen gewöhnen, aber das ist nicht dramatisch.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
C++ vs Delphi: Solche Themen gab es schon sehr viele und wird es wohl immer geben. Deswegen hier mal eine kurz Zusammenfassung in der Hoffnung, dass das Thema nicht überhand nimmt.

Generell ist C++ nicht Delphi und die einzelnen Kompiler haben unterschiedliche Optimierungen. So kann es sein, dass der eine Kompiler da schneller ist und der andere woanders. Da Entwickler nun mal ungern ihre Sprache schlecht darstellen möchten ist es logisch, dass c++ Entwickler nicht sagen Pascal ist besser. Andersrum würde es auch niemand tun. Ich bin da keine Ausnahme. ;)

Was viel mehr Bedeutung bekommt ist das Wissen des Entwicklers! Selbst die noch so kleinste Optimierung die der Kompiler macht kann durch einen groben Fehler des Entwicklers 1000fach zu nichte gemacht werden. Dazu genügen häufig schon kleine Designfehler im Konzept. Und da Pascal als "Einstiegsdroge" sehr beliebt ist würde ich behaupten, dass das eher ein Grund für solche Statistiken ist. (meine Meinung)

Freepascal: Also ich weiß nicht wie sich Lazarus bedienen lässt aber ich für meinen Teil entwickel unter Windows mit Turbo Pascal und teste die Programme ab und an mal mit FreePascal. Sofern man keine VCL benutzt sollte es dabei eigentlich nur kaum Probleme geben. Denn ich persönlich habe mich sehr an die Delphi IDE gewöhnt und könnte mir kaum etwas Besseres vorstellen. Und im Vergleich zu Delphi 5 hat sich in der IDE noch einiges getan. Nicht nur an der Größe. *hust*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Lossy eX hat geschrieben:
Generell ist C++ nicht Delphi und die einzelnen Kompiler haben unterschiedliche Optimierungen. So kann es sein, dass der eine Kompiler da schneller ist und der andere woanders.


Ok, das habe ich jetzt nicht beachtet, natürlich kann es dabei unterschiede geben.


Von der Delphi IDE habe ich mich jetzt fast losgelöst, es war zumindest nicht mehr das erste, was ich nach dem Windows-neuaufsetzen wieder installiert habe (im gegensatz zu früher) da Lazarus ja keine Installation braucht :wink:

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 06, 2003 15:27
Beiträge: 281
Wohnort: Bochum
kennst du diese site: language benchmark ?
hier kannst du die verschiedenen sprachen gegeneinander vergleichen. wie es scheint ist der freepascal in den benchmarks sogar besser im vergleich zu gnu c++

_________________
www.extrawurst.org


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:12 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Danke allen für die Antworten!

Amüsant finde ich nur, dass Delphi öfters tatsächlich nur als "Lernsprache" dargestellt wird, vielleicht aufgrund der - meiner Meinung nach - besser lesbaren Syntax im Vergleich zu C++. Ist also der Grund, warum sich nun C++ bei den meisten Projekten größtenteils durchgesetzt hat, nicht auf die Geschwindigkeit zurückzuführe?

@Lossy: Dein Avatar, ist das eigentlich dieser Werbekerl aus Fallout?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja ich denke das Pascal eigentlich als eine Lernsprache entwickelt wurde ist auch so ein Punkt. Bzw hat Pascal eine sehr strenge Typprüfung was die ein oder andere Schweinerei verhindert worauf C/C++ Entwickler häufiger gerne stolz sind.

@Rüdiger: Ja. Das ist der Pipboy aus Fallout. :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:43 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Extrawurst hat geschrieben:
kennst du diese site: language benchmark ?
hier kannst du die verschiedenen sprachen gegeneinander vergleichen. wie es scheint ist der freepascal in den benchmarks sogar besser im vergleich zu gnu c++


IMHO:

Naja die Tests auf der Seite kannst du ja nicht umbedingt als Aussagekräftig bezeichnen.
Allein schon die Startup-Time zu berechnen ist blödsinn. Den bei Sprachen die 'Frameworks' benutzen ( Wie Java, C# ) darf man die schonmal nicht mit einberechen, zudem hat zumindestens .NET einen 'First run delay', d.h. er überprüft den code bei der ersten Ausführung ob er unerlaubter IL-Code enthält.

Genauso sieht es aus mit sämtlichen Konsolenausgaben. Die Konsole ist sehr lahm und sollte bei solchen benchmarks auf keinen fall benutzt werden.


Um einiges aussagekräftiger sind da doch die C't benchmarks, die zeigen auch ein komplett anderes bild.

mfg

Felix

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 12:59 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Lossy eX hat geschrieben:
Ja ich denke das Pascal eigentlich als eine Lernsprache entwickelt wurde ist auch so ein Punkt. Bzw hat Pascal eine sehr strenge Typprüfung was die ein oder andere Schweinerei verhindert worauf C/C++ Entwickler häufiger gerne stolz sind

So ganz richtig ist das nicht - sie ist nicht nur als eine leicht zu lernende Sprache entwickelt worden: es war immer eine voll ausgewachsene sprache, mit der u.a. auch betriebssysteme entwickelt werden konnte. Wohin diese entwicklung inzwsichen gegangen ist, kann sich übrigens bei ETH Oberon ansehen: Oberon ist eine von Wirth als nachfahr entwickelte Sprache von Pascal (eigentlich ist das modula, aber diese ist nachkomme von pascal), die im gegensatz zum Ur-Pascal Module/"Units" (daher der name modula ;-) ), OOP (das war in oberon neu), usw. unterstützt - ähnlich dem Funtkionsumfang, den Object Pascal / Delphi Language zu bieten hat. Die strenge Typprüfung rührt auch nicht daher, daß Pascal eine Lernsprache ist, sondern einfach, weil es massenhaft fehler bei der entwicklung verhindert - und es ist auch überhaupt kein Problem den typecheck durch intelligenten einsatz und umcasten von pointern zu umgehen. Wie sinnvoll das ist muss jeder selbst entscheiden, aber wenn man die junge sprachentwicklungen so verfolgt, im mainstream etwa java oder c#, dann ist klar, dass man dort um strengste typprüfungen nicht herumkommt.... und das nicht allein weil man damit der garbage collection ganz böse striche durch die rechnung machen würde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 13:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Okay. Das stimmt natürlich. Asche auf mein Haupt.

Mit der Typprüfung habe ich in meinen eigenen Projekten bisher auch noch nie Probleme gehabt. Ich habe damit nur Probleme damit, wenn ich C/C++ Code übersetze bzw hat mir das auch schon der ein oder andere C/C++ Entwickler gesagt. Aber persönlich finde ich das sogar gut, dass es strenger ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 14:23 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Lossy eX hat geschrieben:
ich für meinen Teil entwickel unter Windows mit Turbo Pascal


Mit Turbo Pascal? Hätte gedacht du nimst Delphi... :shock:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 19, 2007 14:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
*args* Das liegt nur daran, dass der FireFox keine inhaltliche Syntaxprüfung hat. Natürlich benutze ich Turbo Delphi. :roll:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 20, 2007 18:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Lossy eX hat geschrieben:
Ich habe damit nur Probleme damit, wenn ich C/C++ Code übersetze bzw hat mir das auch schon der ein oder andere C/C++ Entwickler gesagt. Aber persönlich finde ich das sogar gut, dass es strenger ist.


Also das erste was ich dazu sagen möchte: C != C++

Das zweite: wo hast du denn da Probleme? C++ hat einen strenge Typprüfung! Es gibt nur wenige implizite Casts.
Alles andere sind explizite Casts, liegen also in der Verantwortung des Programmieres und nicht der Sprache. Aber ich kann in C++ gescheit casten. was auch ab und an sinnvoll und von Nöten ist. Wenn ich da an Delphi denke, naja. Da fällt mir sofort wieder die Sache mit dem Zeiger auf ein Array ein (nochmal danke für deine Hinweise :) im anderen Delphi-Forum). Das war eine total nervige Sache und der Cast auf das statische Array mit der maximalen Länge ist ja schon eher ein kleiner Hack als ne wirklich saubere Lösung. Da hab ich in Assembler eine bessre Unterstützung von Zeigern auf Felder als was Pascal mir da bietet.


Rüdiger hat geschrieben:
Amüsant finde ich nur, dass Delphi öfters tatsächlich nur als "Lernsprache" dargestellt wird


Da finde ich amüsant, dass erstens Pascal wirklich als Lernsprache konzipiert ist und zweitens das so gut wie jeder das auch so sieht. außer Leuten die freiwillig mit Pascal arbeiten. Die versuchen das immer abzustreiten^^
Interessant ist auch darüber mit Leuten älteren Jahrgangs zureden, welche die Entwicklung mitgemacht haben und nicht später zu Pascal gekommen, als es eigentlich nur noch eine dominierende Plattform dafür gab. Da gabs einige Probleme zu der Zeit, die auch darauf zurück zu führen sind, dass Pascal als Lernsprache konzipiert ist.


Und zur Ausgangsfrage:
Rüdiger hat geschrieben:
Sind C++ Programme (die die WIN-API benutzen und vielleicht auch OpenGL) wirklich schneller als mit Delphi nonVCL-kompilierte Programme? Die jeweiligen Compiler kompilieren doch unabhängig von der Sprache in Maschinensprache, müsste sie dann nicht auch sehr ähnliche Endergebnisse aufweisen?


Also zu OpenGL würd ich ja mal glatt nein sagen. Weil das ja eh nur Funktionsaufrufe sind, welche an den Treiber über eine DLL gehen. Und ob die ich Funktion nun in C,C++, Delphi oder Java aufrufe macht da doch keinen Unterschied.

Ansonsten generell kommts auf das Aufgabengebiet an. C ist nunmal eine systemnahe Sprache. Ich kann damit Sachen effektiver programmieren als mit beispielsweise Java. wenn ich in diesem "systemnahen" Bereich bin (z.B. wenn ich wirklich eine effektive, spezielle Speicherverwaltung für irgendwas brauche). Da setzt aber natürlich Können voraus. Man kann natürlich dabei auch viel mehr falsch machen. Und dann ist das langsamer oder geht gleich garnicht. Wenn man da C mit Pascal vergleicht, würd ich sagen wenn beide Compiler gut sind, kommt man auf ähnliche Resultate. Wobei manche C-Bibkiotheken im Laufe der Zeit wikrlich sehr effektiv geworden sind.

Was C++ vs Object Pascal angeht, würd ich C++ durch das Stack-Modell performance technisch vorne sehen. Jedesmal new und dispose bemühen nur um ein kleines Objekt zu erstellen was nach dem Verlassen des Scopes eh wieder Freigegeben wird, ist da nicht nötig

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 22, 2007 22:31 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Dass Pascal langsamer ist als C++ stimmt nicht direkt, allerdings optimiert der Delphi compiler etwas schlechter als gute C++ compiler. Irgendwo glaube ich gelesen zu haben dass der Quake2 Port rund 20% langsamer war als das orginal. Im Endeffekt hängt performance weitaus stärker vom Code/Algorithmus ab, als von der Compileroptimierung.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 24, 2007 01:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Wenn man allgemeinen Enginecode(z.B. X-Dream) anguckt, stellt man fest, dass Delphi wesentlich mehr in Prüfungen, auf korrektheit, range und so weiter hat und allgemein auch ned so berauschend optimiert. Das ist der Grund wieso Delphi langsamer ist als FreePascal.
FreePascal erlaubt je nach settings viele möglichkeiten der Codeoptimierung, daher ist es dann schwer zu sagen wann es schneller als C/C++ generierter Code ist aber der endgültige Binarycode ist dann bei FPC und GCC gleich. Dies beruht darauf, dass FPC den Linker von GCC nutzt und auch viele weitere Tools aus der GCC Toolchain. Mit FPC Vista 64Bit ist das erste mal ein FPC Linker zum einsatz gekommen, da es für GCC bis dato noch keinen Support gibt/gab. In den allgemeinen Benchmarks hat FPC im vergleich mit GCC generierten Code sich in sachen geschwindigkeit hier und da abgehangen aber am ende sind beide gleichschnell. FPC läuft mitlerweile auf jeder nur erdenklichen Platform, sei es PC,PS1-3,X-Box und 360, WII, die Nintendo GameBoy reihe oder ganz tolle exotische Teile wie GP2X. FPC hat die momentan wohl größte neuheitenrate von allen größeren Compilern auf dem Markt. So hat man mit der neuen Version endlich Templates und typecast von pointer auf arrays ala C. Der Speichermanager, der mit FPC mitgeliefert wird, ist auch jede version verbessert worden und mit GDB anbindung ist man auch mit einem Standard von Debugger Schnittstelle gesegnet. FPC erlaubt ein sehr großen Grad an Cutomizing, so kann man eigene Speichermanager, Klassensystem, interne macros, typen und sogar ganz neue RTL's generieren. Sowas kann z.B. bei Software, die sehr platzsparend sein muss, auch ohne ASM lösen. 12k OpenGL Demos mit musik und so weiter sind keine wirkliche Hürde 8) .

Fazit:
Wer Oberflächenintensive Anwendungen, unter Windows schreiben will ist bei Delphi in den aller besten Händen.
Wer auf Platformunabhängigkeit steht und viel mit Oberflächen zu tun hat ist bei Java gut aufgehoben.
Wer auf Platformunabhängigkeit, Performance und anpassbarkeit steht wählt entweder GCC oder FPC.
Wobei es hier dann nur noch eine Geschmacksfrage der Syntax ist, in der man entwickeln will.

Meine Meinung:
Ich würde FPC vorziehen, da Pascal doch eine ziemlich übersichtliche Sprache ist und im gegensatz zu C/C++ wesentlich weniger anfällig ist, wenn es beim Coden um Fehler geht. Die Syntax ist einfach gestrikt und man kann sie in der regel schon wie ein Text lesen.
Böser Syntax Foo kann eigentlich nur im Bereich Pointer entstehen. Desweiteren kann man auch den GCC generierten Code in FPC nutzen(a,o,lib Files).

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]