Etwas Modernisierung würde dem altehrwürdigen GCC schon guttun. Mit dem LLVM was zu machen ist wesentlich einfacher. Noch kann die die GCC nicht ersetzen, aber wenns in dem Tempo weitergeht, ist es nur noch ne Frage der Zeit.
Leider wird die Umstellung für GCC nicht einfach, sondern schmerzvoll und langwierig. Aber je früher man damit beginnt, je besser.
Schon richtig, aber ich denke, es ist schon etwas zu spät für solche Anstrengungen. Irgendwann bekommt ein Projekt einfach eine "Komplexität", die nicht mehr gut beherrschbar ist. Das ist auch der Grund, warum die eingesessenen Dinosaurier jetzt durch neue, modernere Alternativen angegriffen werden, sei es der gcc durch durch lvm, der xserver durch wayland oder bash duch zsh. Manchmal muss man mit der vergangenheit einfach abschliessen.
Also der Vergleich bash -> zsh hinkt meiner Meinung nach etwas. Weder würde ich die bash als Dinosaurier ansehen, noch ist sie die komplexere shell (zumindest aus Nutzersicht, vielleicht sieht das beim Quellcode ja schon wieder anders aus). Gemessen am Funktionsumfang würde ich das Attribut "komplex" definitiv der zsh zuordnen.
Von Bezügl. Powershell am Mi, 21. März 2012 um 10:06 #
PowerShell ist ja noch nicht mal bei Windowsadmins beliebt,
Sehe ich nicht so. Es ist eher so, daß diejenigen Admins die die PS nicht mögen mit einer Shell wie die PowerShell überfordert sind und lieber klicken wollen.
1. Anreichern mit C++ Funktionalität: Dafür muss man den Aufbau nicht komplett verstehen. 2. 30 Jahre hats gedauert den Compiler da zu bringen wo er ist, wieviel Jahrzehnte soll denn ein Rewrite kosten? 3. Gewisse Strukturprobleme(Namespaces,globale, stat. Variablen) können auch mit C gelöst werden, aber die Architektur von GCC ist sowas von im Arsch, das bestimmte Stellen keiner mehr anfassen will. Es gibt div. Zwischensprachen, die für eine Optimierung notwendig sind, recht konfus diese Umwandlungen. 4. Beim PCC siehts du schon, wieviel Arbeit es schon macht, dass Ding ins neue Jahrtausend zu bringen nur für C, der GCC ist um einiges komplexer.
"aber die Architektur von GCC ist sowas von im Arsch" Kannst du das irgendwie mit Quellen, genauer belegen? Mir geht's gerade nicht drum, dass ich das nicht glauben will, sondern rein aus Interesse was gewisse Fachleute zur Struktur vom GCC sagen.
2. 30 Jahre hats gedauert den Compiler da zu bringen wo er ist, wieviel Jahrzehnte soll denn ein Rewrite kosten?
So kann man das nicht sehen.
30 Jahre ist nicht die Zeit, die es gedauert hat um die jetztige Funktionalität bereitzustellen, sondern es sind die 30 Jahre, in denen die diversen Programmiersprachen immer weiter erweitert wurden und daher eine evolutionäre Erweiterung der Funktionalität mit ein herging.
Schau dir zum Vergleich mal den LLVM und siehe nach, wie lange die Entwicklungszeit dort gedauert hat. LLVM hat deutlich weniger als 30 Jahre gedauert und bei einem Rewrite von GCC wäre es genau das gleiche. Die Frage ist eher, wozu sollte man dies tun?
Man hat als Rewrite Ersatz bereits LLVM und der GCC hat sich für den Praxisalltag bewährt.
Nicht "gedauert hat", sondern "dauert", zumindest was andere Sprachen als C angeht. Und LLVM emittiert
a) für weniger Plattformen b) weniger optimalen Code
Nichtsdestotrotz gehört es zu meinen Lieblingsprojekten, nicht zuletzt wegen seiner guten Planung, der Diagnosen, und der Durchsetzung der Ziele aus Lattner's ursprünglichen Forschungspapers (auch wenn lebenslange Optimierung noch in sehr weiter Ferne liegt).
* Frontends: C++, inkl. Dialekte (C++03, C++11) C, inkl. Dialekte (bspws. C99, C1x, K+R) Objective-C Go Fortran, inkl. Dialekte (e.g. 77, 03) * GIMPLE und GENERIC * Architektur-Spezifika Alpha ARM Atmel AVR Blackfin H8/300 HC12 IA-32 (x86) IA-64 MIPS Motorola 68000 PA-RISC PDP-11 PowerPC R8C/M16C/M32C SPARC SPU SuperH System/390/zSeries VAX x86-64 * Optimierungs-Durchgänge und Submodule: Graphite, war lange ein eigener Branch Dataflow LTO und so viel mehr, und die ganzen Standard-Passes die GCC zu einer ernsthaften Konkurrenz für Intel macht
Und dann noch der ganze andere Scheiß.
Frage: Du bist kein Entwickler, oder? "Einfach neu schreiben" ist eine Aussage, die ich nur aus dem Management oder von Grünschnäbeln kenne.
Mal meinen Senf als reiner gcc Nutzer: Solange gcc die performantesten Binaries ausspuckt, ist es mir latte wie und ob die Architektur des gcc selbst aussieht, und schon 30 Jahre alt ist. Ich will flinke Binaries haben. Thats it.
Endlich mal jemand der das richtige ausspricht, auch als entwickler ist es mir Wurscht ob nun der Compiler 2 sekunden schneller übersetzt, und bei grossen Projekten nimmt man eh einen Buildbot mit z.b distcc. Imo bringt z.b clang nur lizenztechnisch bei manchen Projekten etwas -> bsd
Die Fehlermeldungen sind beim GCC zumeist eine Katastrophe. Und wenn ich durch schnellere kompilieren mehr Zeit fürs testen und experimentieren gewinne macht's den Nachteil 5% langsameren Code zu erzeugen schon mal wett. Und wenn man wirklich die max. Performanz braucht dann installiert doch zusätzlich gcc nur fürs deployen.
Etwas Modernisierung würde dem altehrwürdigen GCC schon guttun. Mit dem LLVM was zu machen ist wesentlich einfacher. Noch kann die die GCC nicht ersetzen, aber wenns in dem Tempo weitergeht, ist es nur noch ne Frage der Zeit.
Leider wird die Umstellung für GCC nicht einfach, sondern schmerzvoll und langwierig. Aber je früher man damit beginnt, je besser.
Gruß
MichaelK
Schon richtig, aber ich denke, es ist schon etwas zu spät für solche Anstrengungen.
Irgendwann bekommt ein Projekt einfach eine "Komplexität", die nicht mehr gut beherrschbar ist. Das ist auch der Grund, warum die eingesessenen Dinosaurier jetzt durch neue, modernere Alternativen angegriffen werden, sei es der gcc durch durch lvm, der xserver durch wayland oder bash duch zsh. Manchmal muss man mit der vergangenheit einfach abschliessen.
Also der Vergleich bash -> zsh hinkt meiner Meinung nach etwas. Weder würde ich die bash als Dinosaurier ansehen, noch ist sie die komplexere shell (zumindest aus Nutzersicht, vielleicht sieht das beim Quellcode ja schon wieder anders aus).
Gemessen am Funktionsumfang würde ich das Attribut "komplex" definitiv der zsh zuordnen.
Lieber wuerde ich die PowerShell unter Linux sehen.
Läuft die nicht mit mono?
.Net auf jeden Fall, der Rest müsste man probieren.
http://pash.sourceforge.net/
/:\>_
Lieber mal eine moderne Skriptsprache, aus der man vereinfacht Prozesse aufrufen kann. Powershell ist da auch keine besonders tolle Lösung.
Der Profi-Troll mal wieder. Dein PowerShell ist ja noch nicht mal bei Windowsadmins beliebt, was willst du dann mit dem Mist unter Linux
Sehe ich nicht so.
Es ist eher so, daß diejenigen Admins die die PS nicht mögen mit einer Shell wie die PowerShell überfordert sind und lieber klicken wollen.
Sind nicht alle reinen Windows-Admins mit Shells überfordert?
Sind nicht alle reinen Windows-Admins überfordert?
Die Powershell ist jeder traditionellen Unix-Shell konzeptionell haushoch überlegen. Wer das bestreitet, weiß einfach nicht, wovon er redet...
Wenn man den Code sowieso in c++ neumachen will, warum dann nicht gleich komplett neuschreiben? Das ist sicher die schmerzlosere Lösung.
Weil C++-Compiler eine extrem komplexe Sache sind.
1. Anreichern mit C++ Funktionalität: Dafür muss man den Aufbau nicht komplett verstehen.
2. 30 Jahre hats gedauert den Compiler da zu bringen wo er ist, wieviel Jahrzehnte soll denn ein Rewrite kosten?
3. Gewisse Strukturprobleme(Namespaces,globale, stat. Variablen) können auch mit C gelöst werden, aber die Architektur von GCC ist sowas von im Arsch, das bestimmte Stellen keiner mehr anfassen will. Es gibt div. Zwischensprachen, die für eine Optimierung notwendig sind, recht konfus diese Umwandlungen.
4. Beim PCC siehts du schon, wieviel Arbeit es schon macht, dass Ding ins neue Jahrtausend zu bringen nur für C, der GCC ist um einiges komplexer.
"aber die Architektur von GCC ist sowas von im Arsch"
Kannst du das irgendwie mit Quellen, genauer belegen? Mir geht's gerade nicht drum, dass ich das nicht glauben will, sondern rein aus Interesse was gewisse Fachleute zur Struktur vom GCC sagen.
So kann man das nicht sehen.
30 Jahre ist nicht die Zeit, die es gedauert hat um die jetztige Funktionalität bereitzustellen, sondern es sind die 30 Jahre, in denen die diversen Programmiersprachen immer weiter erweitert wurden und daher eine evolutionäre Erweiterung der Funktionalität mit ein herging.
Schau dir zum Vergleich mal den LLVM und siehe nach, wie lange die Entwicklungszeit dort gedauert hat.
LLVM hat deutlich weniger als 30 Jahre gedauert und bei einem Rewrite von GCC wäre es genau das gleiche.
Die Frage ist eher, wozu sollte man dies tun?
Man hat als Rewrite Ersatz bereits LLVM und der GCC hat sich für den Praxisalltag bewährt.
Nicht "gedauert hat", sondern "dauert", zumindest was andere Sprachen als C angeht. Und LLVM emittiert
a) für weniger Plattformen
b) weniger optimalen Code
Nichtsdestotrotz gehört es zu meinen Lieblingsprojekten, nicht zuletzt wegen seiner guten Planung, der Diagnosen, und der Durchsetzung der Ziele aus Lattner's ursprünglichen Forschungspapers (auch wenn lebenslange Optimierung noch in sehr weiter Ferne liegt).
Was soll denn alles neu geschrieben werden?
* Frontends:
C++, inkl. Dialekte (C++03, C++11)
C, inkl. Dialekte (bspws. C99, C1x, K+R)
Objective-C
Go
Fortran, inkl. Dialekte (e.g. 77, 03)
* GIMPLE und GENERIC
* Architektur-Spezifika
Alpha
ARM
Atmel AVR
Blackfin
H8/300
HC12
IA-32 (x86)
IA-64
MIPS
Motorola 68000
PA-RISC
PDP-11
PowerPC
R8C/M16C/M32C
SPARC
SPU
SuperH
System/390/zSeries
VAX
x86-64
* Optimierungs-Durchgänge und Submodule:
Graphite, war lange ein eigener Branch
Dataflow
LTO
und so viel mehr, und die ganzen Standard-Passes die GCC zu einer ernsthaften Konkurrenz für Intel macht
Und dann noch der ganze andere Scheiß.
Frage: Du bist kein Entwickler, oder? "Einfach neu schreiben" ist eine Aussage, die ich nur aus dem Management oder von Grünschnäbeln kenne.
Mal meinen Senf als reiner gcc Nutzer: Solange gcc die performantesten Binaries ausspuckt, ist es mir latte wie und ob die Architektur des gcc selbst aussieht, und schon 30 Jahre alt ist. Ich will flinke Binaries haben. Thats it.
Endlich mal jemand der das richtige ausspricht, auch als entwickler ist es mir Wurscht ob nun der Compiler 2 sekunden schneller übersetzt, und bei grossen Projekten nimmt man eh einen Buildbot mit z.b distcc. Imo bringt z.b clang nur lizenztechnisch bei manchen Projekten etwas -> bsd
Die Fehlermeldungen sind beim GCC zumeist eine Katastrophe. Und wenn ich durch schnellere kompilieren mehr Zeit fürs testen und experimentieren gewinne macht's den Nachteil 5% langsameren Code zu erzeugen schon mal wett.
Und wenn man wirklich die max. Performanz braucht dann installiert doch zusätzlich gcc nur fürs deployen.
Genau. In Extremen Denken ist prinzipiell schlecht.