...warum man bei GIMP nicht den gesamten Code einfach mal wegschmeisst und das Teil auf einer vernuenftigen Basis und in einer zeitgemaessen Programmiersprache reimplementiert. Ich hab' mir den Code derletzt mal angeschaut und musste da nur mit dem Kopf schuetteln. Klar, dass die Entwicklung da so langsam vorangeht.
Nur ein Beispiel, was man besser machen koennte: Adobe (yep, genau die) haben mit GIL ein ausgesprochen elegantes generisches Imaging-Framework unter einer sehr liberalen Open Source-Lizenz bereitgestellt, auf dessen Basis man sicherlich wesentlich effizienter entwickeln koennte (und welches man - faehige Programmierer vorausgesetzt - auch weiterentwickeln koennte/sollte). Was machen die GIMP-Leute stattdessen? Werken an GEGL in unzeitgemaessem C im Schneckentempo. D'oh! Ich will kein Troll sein, aber "herumfrickeln" trifft es da meiner Meinung nach sehr gut...
Die groesste Schwaeche von GIMP ist offensichtlich die Uneinsichtigkeit und die Fortschrittsangst seiner Hauptentwickler.
> GEGL in unzeitgemaessem C
Welche Programmiersprache wäre denn in deinen Augen "zeitgemäß"? Und jetzt komm mir nicht mit C#, Java oder Python, hier geht es um Pixelprocessing, da will man nativen Code. Ach, und falls du auf C++ hinauswillst: GEGL *ist* objektorientiert, die Syntax ist nur eine andere als man sie von C++ kennt.
Ich rede von C++ und damit nativem Code. C ist in meinen Augen hoechstens fuer Betriebssystemkernel und kleinere Projekte geeignet; saemtliche groesseren Projekte skalieren nicht in ausreichendem Masse und verkommen zum Maintenance-Alptraum.
C++ bietet neben besserer Datenabstraktion(!) bessere Typsicherheit, bessere Syntax, sicherere Casts, Abkehr vom Praeprozessor, generische Programmierung durch Templates, policy-based design, etc. etc. In der Summe der Teile ist ein gut geschriebenes C++-Programm einfacher lesbar, enthaelt weniger Codeduplizierung, wesentlich besser wartbar sowie erweiterbar und dadurch wahrscheinlich mit weniger Fehlern behaftet.
In C kann man sich natuerlich Kruecken fuer all die schoenen C++-Features schreiben (Makros statt Templates, anyone?!?), aber man vergibt sich dadurch einiges. Es ist in C kaum moeglich, ein sicheres Interface zu schreiben mit dem man sich nicht in den Fuss schiessen kann. In C++ geht das, bei gleicher Performance unter Verwendung moderner Compiler.
Ausserdem bringt C++ eine hervorragende Standardbibliothek mit, und mit Boost existieren eine Menge an unglaublich nuetzlichen Bibliotheken, die entweder fuer einfacher wartbaren Code sorgen (bspw. smart pointers) oder einen das Rad nicht neu erfinden lassen.
Wenn man in C++ richtig programmiert (bzw. programmieren kann), ist das eine ganz andere Programmiersprache mit wesentlich groesserer Flexibilitaet, Expressivitaet und anderen Programmierparadigmen als C. Und ich rede hier bei weitem nicht nur von Objektorientierung. Bspw. kann man Low-Level Speicherallokationen durch Verwendung moderner Programmiertechniken gut abstrahieren. Ich habe mich seit Jahren nicht mehr mit malloc/free oder new/delete herumgeschlagen, ausser in ein paar Codezeilen auf unterster Ebene. Overhead? Nicht vorhanden oder minimal.
GIMP und dessen Code scheinen mir viel zu viel Gewicht auf Low Level-Implementierung zu legen und eine ganze Menge an Altlasten herumzuschleppen. Klar, dass da kein vernuenftiger neuer Entwickler mehr dran programmieren moechte, Hobbyprogrammierer und selbsternannte 'Hacker' vielleicht mal ausgenommen. Ich wuerde nicht im Traum daran denken, auch nur eine Codezeile fuer GIMP freiwillig zu schreiben.
Wahrscheinlich ist es eh schon zu spaet, das Projekt ohne Neuimplementierung von seinen toenernen Fuessen zu retten. Daher meine Empfehlung mit zeitgemaesseren Programmiertechniken neu zu beginnen. GIMP koennte das nur helfen. Allerdings sind da wahrscheinlich einige der jetzigen Entwickler entweder zu kurzsichtig oder zu borniert um das einzusehen.
Ach ja: Die Codebasis ist natuerlich bei weitem nicht das einzige Problem von GIMP, erwaehnt sei nur mal das Interface und die generelle Usability. Nur korrelieren nach meiner Erfahrung die Eleganz und Struktur des Codes mit der Qualitaet und Benutzbarkeit des Produktes sehr stark.
> C++ bietet [...] bessere Syntax
Wie gut, dass ich keine Kaffee trinke, sonst wär die Tastatur jetzt hin :)
> Abkehr vom Praeprozessor
Zum Glück nicht!
> generische
> Programmierung durch Templates
... mit denen man, falsch angewendet (was leider der Standardfall ist), unglaubliche Komplexitäts- und Bloat-Monster erschaffen kann.
> policy-based design
BINGO!
> In der Summe
> der Teile ist ein gut geschriebenes C++-Programm einfacher lesbar
OK, na gut. Aber auch nur deshalb, weil Methodenaufrufe eine etwas intuitivere Syntax haben als in C.
> wesentlich besser wartbar sowie erweiterbar
Kommt drauf an. Wir haben hier in-house ein Riesen-Ungetüm an C++-Code, das mit all den kranken Dingen, die ihr C++-Freaks so toll findet geschrieben wurde: Templates bis zum Abwinken, irgendwelche Design Patterns überall, das volle Programm. Problem nur: Performance zum abgewöhnen, ein riesen Bloat-Vieh, sorgt bei Compilierung mit neueren GCCs mitunter für Segfaults mitten in der C++-Standardbibliothek und jetzt, wo wir's erweitern müssten, lassen wir's lieber bleiben, weil keiner sich das noch freiwillig antut.
> Es ist in C kaum moeglich, ein sicheres Interface zu
> schreiben mit dem man sich nicht in den Fuss schiessen kann.
Wie sagt man so schön: C macht es leicht, sich in den Fuß zu schießen. Bei C++ ist es minimal schwieriger, aber dafür ist dann gleich das komplette Bein mit weg.
> Ausserdem bringt C++ eine hervorragende Standardbibliothek mit
*hust* (zum Glück kein Kaffee ...)
Deine Meinung. Ich habe da ganz andere Erfahrungen gemacht; ein guter Compiler kann viele zunaechst fuer Laien seltsam anmutende C++-Konstrukte so optimieren, dass kein Performanceverlust (oder Bloat!) entsteht.
Und mein Bein ist noch dran und sehr fit; wenn ich stattdessen C-Applikationen schreiben wuerde haette ich mir schon x-mal mit der Schrotflinte draufgeschossen bei der ganzen Low Level-Herumfrickelei.
Twittern und Mailen für die Piratenpartei im Dienst verboten
Cinemagram-App wieder in Apples App Store
Hersteller wehren sich gegen neue "Mondtarife"
"Gebt mir meine Rechner zurück!"
Eine Designlampe zum Abknallen
Kommentare: 384 | letzter Beitrag 15:32 Uhr
Kommentare: 220 | letzter Beitrag 19:00 Uhr
Kommentare: 215 | letzter Beitrag 11:40 Uhr
Kommentare: 183 | letzter Beitrag 20:19 Uhr
Kommentare: 122 | letzter Beitrag 20:56 Uhr
E-Mail an news@golem.de

Ein soziales Netzwerk für Pornografie muss seine Marke nicht an Facebook übergeben. Faceporn, ein norwegisches Unternehmen, freut sich über den Sieg vor einem kalifornischen Gericht.

Kim Schmitz will Zugriff auf seine 135 Computer und Festplatten, die die neuseeländischen Behörden im Januar 2012 beschlagnahmt haben. Das FBI halte das Material von der Justiz in Neuseeland zurück, um seine Verteidigung im Fall Megaupload zu erschweren, sagt er.

Toshiba hat das Excite 10 unter der Bezeichnung AT300 für Europa angekündigt. Das Tablet hat einen 10-Zoll-Touchscreen, den Quad-Core-Prozessor Tegra 3 von Nvidia und wird mit Android 4 alias Ice Cream Sandwich ausgeliefert.

Das Chronic-Dev-Team und das iPhone-Dev-Team haben ihre Untethered-Jailbreaking-Software für iOS 5.1.1 veröffentlicht. Damit lassen sich das iPhone, das iPad und der iPod touch für nicht von Apple abgesegnete Software freischalten.

Dorothee Bär warnt nach einer Studie der Bundesregierung davor, Computerspiele und das Internet als Gefahr für Leib und Leben darzustellen.

Ein Injektionsinstrument, das ein Medikament annähernd mit Schallgeschwindigkeit durch die Haut schießt, haben Forscher am MIT entwickelt. Da der Strahl nur hauchdünn ist, soll der Patient die Injektion praktisch nicht spüren.