Zum Inhalt springen

Softwareentwicklung ist ******e


FinalFantasy

Empfohlene Beiträge

Hab ich schonmal erwähnt, dass Softwareentwicklung einfach nur ******e ist?

Man will eigentlich nur ganz banale Dinge tun und muss dafür tausende Zeilen Code schreiben. Aber warum eigentlich?

Die Welt ist einfach viel zu kompliziert.

Lasst mich meine Geschichte erzählen:

Ich habe vor rund 7 Jahren meine Lehre zum FIAE abgeschlossen und programmiere seit 4 Jahren mit Qt.

Jetzt stellt sich mir ein eigentlich ganz einfaches Problem:

Meine Musiksammlung umfasst mittlerweile ~5000 Titel. Jetzt hab ich mir ein Autoradio mit SD-Card und USB-Anschluss zugelegt.

Soweit so gut. Nur will ich jetzt nicht alle 5000 Titel im Auto haben. Eigentlich will ich nur ausgewählte Titel im Auto haben; Diese muss ich natürlich auf die SD-Karte kopieren. Leider ist das Autoradio so dumm, dass es nicht mit ID3-Tags, ala iPod, umgehen kann. Die SD-Card muss also "filesystemtechnisch" sortiert sein, sollte man die Hoffnung hegen, mal ein bestimmtes Lied "schnell" zu finden. Aktuell spielt es mal keine Rolle, warum Autoradios (meins zumindest) so dermaßen "dumm" sind.

Ich benutzer seit ich einen iPod habe (seit ungefähr zig Jahren) iTunes. Eigentlicht finde ich iTunes nicht schlecht, allerdings taugt das nur zum iPod syncen, nicht aber um ausgewählte Titel auf eine SD-Card oder USB-Stick zu syncen. Eigentlich bringt iTunes es noch nichtmal auf die Reihe, differenzierte Titel zwischen unterschiedliche i*-Geräten zu syncen, ohne dafür separate Betriebssystembenutzeraccounts zu verwenden. Es ist heutzutage ja auch undenkbar, dass ein Mensch (und damit Systembenutzer) mehrere i*-Geräte benutzt.

Da man in diesem Szenario ja eigentlich nur ausgewählte Songs auf die SD-Card kopieren will, habe ich die fixe Idee gehegt, mir einfach "schnell" ein Programm zu schreiben, dass alle meine MP3s erfasst, in einer Liste anzeigt und bei jedem Titel Optionen anzeigt, auf welches Ziel es gesynct werden soll. Dabei hatte ich noch nichtmal das Ziel, dass dabei der (proprietäre) iPod als Ziel unterstützt wird.

Natürlich hatte ich vorher auch schon Google malträtiert, ob es so ein Tool nicht vielleicht sogar schon gibt, aber leider nichts gefunden. Musikverwaltungstools gibts wie Sand am Meer, aber ich hab kein einziges gefunden, dass solch banale Dinge könnte.

Also, was bleibt einem übrig, ausser selbst sowas programmieren. Kann ja nicht so schwer sein, eigentlich muss man nur die MP3s erfassen, idealerweise anhand der ID3-Tags und ein bisschen rumkopieren. Kann ja nicht so schwer sein... DENKSTE, Famouse last words...

Letzendlich will ich nur, wie iTunes es ja schon kann, die Titel kopieren, und zwar so, dass die Titel in einer Verzeichnisstruktur ala /Interpret/Album/Titel.mp3 abgelegt werden. Diese Daten sollen automatisch aus den ID3-Tags der Titel ermittelt werden. iTunes macht das ja schon ganz fein, kann nur keine unterschiedlichen Ziele.

Meine Idee also: Ein Tool schreiben, in das man die MP3s per Drag&Drop reinziehen kann, die Titel damit in einer SQLite DB registriert werden. Ganz banal sollte es dann unterschiedliche Sync-Ziele geben und man kann für jeden Titel anwählen, ob er auf Device XY gesynct werden soll, oder nicht. Die Zieldevices muss man natürlich vorher definieren. Also im groben sollte sowas wie iTunes rauskommen... nur wesentlich einfacher und auf grafischen Schnickschnack lege ich dabei auch keinen Wert.

Aber da gehts dann schon los... jetzt hab ich schon rund 500 Zeilen Code geschrieben und bin gerade mal soweit, dass MP3s erfasst werden und in einem ListView angezeigt werden. Ohne Editiermöglichkeiten natürlich... ist ja auch klar... warum soll man nicht erst 1000e Zeilen Code schreiben müssen, um mal was editieren zu können?

Natürlich bin ich da auch auf die fixe Idee gekommen, wenn ich meine MP3s schon in einer Liste habe, will ich die vielleicht auch mal eben abspielen können. Jaha, klingt einfach, ist es aber nicht... Eigentlich bin ich ja begeisterter Qt-Entwickler, aber warum muss ich 100 Zeilen Code schreiben, nur dass ein ver****tes MP3 abgespielt wird?

Eigentlich würde ich erwarten, nur "programmieren" zu müssen "SpielDasVer****teAudioFileAb(/leck/mich/am/*****.mp3)".... denkste, da muss man sich mit Ouputdevices und hau-mich-tot rumschlagen... sofern man es überhaupt hinkriegt, dass die nötigen Headerfiles und Libs installiert sind... ja, sowas erwarte ich von einer IDE wie dem Qt-SDK, dass sowas out-of-the-box funktioniert.

Einfach nur ein paar MP3s auf eine SD-Card kopieren kann schon unglaublich kompliziert sein.

Was dann noch dazukommt, dass der Listview entsprechend aussieht, geschweige denn editierbar wäre, und dort die entsprechenen Checkboxen für die Zielordner angezeigt werden, davon will ich mal gar nicht anfangen. Wenn ich mir angucke, was ich bis jetzt, nach 5h coden erreicht habe und was schon funktioniert, dann wünsch ich mir irgendwie den Rechenschieber zurück.

Klar ist IT komplex, aber irgendwie sollte es doch mal zu schaffen sein, die einfachen Dinge wirklich auch einfach zu machen. Es kann ja wohl nicht sein, dass man Stunden für solch banale Dinge investieren muss, ich schreib hier doch nicht Assembler. Ein brauchbares Framework müsste mal her...

Davon, dass mein Autoradio die Titel noch nichtmal selbstständig alphabetisch sortieren kann, sondern stur nach der Reihenfolge geht, wies im FAT steht, will ich noch nichtmal reden... wahrscheinlich würde diese Technik dazu führen, dass das 120€ Autoradio dann 122€ kosten würde, womit es wohl keiner mehr kaufen würde.

In welcher verkehrten Welt lebe ich hier eigentlich?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine MP3 Sammlung hab ich zum Glück immer schön in der Form \Interpret - Album\Titelnummer. Interpret - Titel abgelegt von daher hatte ich nie solche Probleme :P

Aber dein eigentliches Problem ist imho das du die falsche Sprache/Technologie gewählt. C++ (denke ich mal wegen QT) ist nicht dafür geeignet mal schnell etwas GUI mäßiges zu machen. Da gibts wesentlich bessere Sprachen für.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber dein eigentliches Problem ist imho das du die falsche Sprache/Technologie gewählt. C++ (denke ich mal wegen QT) ist nicht dafür geeignet mal schnell etwas GUI mäßiges zu machen. Da gibts wesentlich bessere Sprachen für.

Da schließe ich mich an. Im Grunde gibt es für das Auslesen der ID3 Tags entsprechende Tools (ich würde da jetzt FFmpeg probieren), dann das ganze in eine entsprechende Scriptdatei und das ganze würde ich sogar schnell umsetzen lassen.

Bei C/C++ arbeitet man nun mal mit Headern und Bibliotheken, aber 500 Zeilen sind in meinen Augen für rekursives Lesen eines Dateibaums + einfügen in einen Listview etwas viel. Das Auslesen der Dateien würde ich direkt als eigene Datenstruktur entwerfen, die einen Baum liefert (klassisches OOP Design) und dann enthält die Baumklasse direkt eine Ausgabe für den QListView. Das Auslesen des Dateibaums sind vielleicht ~20 Zeilen, eine einfache Baumklasse vielleicht 50-70 Zeilen. Die Qt GUI kann man aber durch den QtCreator durchführen und muss somit keinen Code selbst schreiben.

Da Du hier keinen Code postest, ist es natürlich scher zu beurteilen, warum das bei Dir so viel geworden ist. Aber auch das Auslesen der ID3-Tags ist nicht schwer, das habe ich für ID3-1 vor einigen Jahren einmal unter Pascal / Delphi programmiert, entweder nutzt man hier ebenfalls eine fertige Bibliothek oder man schaut sich eben einmal die Definition des MP3-Headers an und programmiert es selbst nach (OOP). Je nachdem könntest Du auch, wenn Du unter Windows arbeitest und iTunes das unterstützt direkt mit OLE / ActiveX / COM Dich an iTunes hängen und Dir die Daten von dort liefern lassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine MP3 Sammlung hab ich zum Glück immer schön in der Form \Interpret - Album\Titelnummer. Interpret - Titel abgelegt von daher hatte ich nie solche Probleme :P

Hab ich auch. Nur such dir da jetzt manuell einzelne Titel raus und kopier sie in der selben Ordnerstruktur auf eine SD-Karte. Geschweige denn einen vernünftigen Sync-Mechanismus hinzukriegen.

Aber dein eigentliches Problem ist imho das du die falsche Sprache/Technologie gewählt. C++ (denke ich mal wegen QT) ist nicht dafür geeignet mal schnell etwas GUI mäßiges zu machen. Da gibts wesentlich bessere Sprachen für.

GUI? Was ist an ID3s auslesen, Dateien kopieren und SQLite großartig GUI?

Und ich denke, ich bin selbst mit C++/Qt schneller, als wenn ich jetzt anfange mich erstmal in Phyton oder eine andere Sprache einzuesen.

@flashpixx:

Meine Absicht war nicht, hier Hilfestellungen/Ratschläge zu meinem Code zu suchen. ;) Eigentlich wollte ich mich nur mal Aus****en, warum das eigentlich alles so umständlich sein muss.

Die GUI ist mit Qt relativ schnell hingestrickt, dabei schreibe ich den Code sogar lieber selber, als den Designer zu benutzen. Den finde ich relativ eingeschränkt, spätestens wenn man die GUI dynamisch anpassen muss/will, eigene abgeleitete GUI-Klassen verwenden will, oder einen ListView customizen will, stört der Designer mehr, als er nutzt.

Zum Auslesen der ID3-Tags benutze ich id3lib, sowas programmier ich doch nicht nochmal extra nach. Das Auslesen (bzw. droppen auf den ListView), in die DB schreiben und im ListView anzeigen klappt auch schon.

Ich kam dann nur auf die fixe Idee, wie schon geschrieben, wenn ich meine Songs schon in einer Liste habe, wäre ein Play-Button eigentlich ganz nett. Deshalb hab ich mir den Phononteil von Qt mal angeguckt und dabei musste ich mich fast übergeben. Ich hatte eigentlich auf ein simples Interface gehofft, sowas wie z.B. Phonon:: play("nelson.mp3"); Aber nein, da muss man mit MediaSourcen, MediaObjects, AudioOuputDevices und was weiß ich noch alles rumhantieren.

Und wie ja schon geschrieben, das alles nur, weil es tausende Programme gibt, die einen iPod syncen können, aber keines dass MP3 ganz einfach nur auf Datei/Verzeichnisebene rumkopieren sollte, bei dem man eigentlich nur ganz simpel Häkchen setzen können soll, welches MP3 auf welches Ziel gesynct werden soll und auf welches nicht und das eine entsprechende Ordnerstruktur dort aufbaut.

Und das ganze wiederrum nur, weil mein Autoradio zu dumm ist, direkt die MP3-Tags für eine Titelsuche zu verwenden und stattdessen nur stumpf auf FAT-Dateisystemsinformationen zugreift (ja, das Ding kann noch nichtmal die Dateinamen alphabetisch sortiert anzeigen, es zeigt genau die Reihenfolge, in der die Daten auf die Karte kopiert wurden, aber dafür gibts ja immerhin FAT-Sorter Tools).

Mit GUI haben diese Probleme wohl am wenigsten zu tun ;)

Bearbeitet von FinalFantasy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine Absicht war nicht, hier Hilfestellungen/Ratschläge zu meinem Code zu suchen. ;) Eigentlich wollte ich mich nur mal Aus****en, warum das eigentlich alles so umständlich sein muss.

Ich denke mal, dass es da bekanntlich an den Problem hängt, dass irgendwie jeder Hersteller sein eigenes Süppchen kocht......

Ich kam dann nur auf die fixe Idee, wie schon geschrieben, wenn ich meine Songs schon in einer Liste habe, wäre ein Play-Button eigentlich ganz nett. Deshalb hab ich mir den Phononteil von Qt mal angeguckt und dabei musste ich mich fast übergeben. Ich hatte eigentlich auf ein simples Interface gehofft, sowas wie z.B. Phonon:: play("nelson.mp3"); Aber nein, da muss man mit MediaSourcen, MediaObjects, AudioOuputDevices und was weiß ich noch alles rumhantieren.

Du hättest doch hier einfach mal schauen können, welche Komponente direkt MP3s abspielen kann. Unter Windows kann man doch via OLE im Grunde jedes Programm benutzen. Ich würde da jetzt evtl mal bei DirectX o.ä. schauen. Nur weil Du die GUI mit Qt machst, muss ja der Soundzugriff nicht zwingend auch mit Qt erfolgen

Und wie ja schon geschrieben, das alles nur, weil es tausende Programme gibt, die einen iPod syncen können, aber keines dass MP3 ganz einfach nur auf Datei/Verzeichnisebene rumkopieren sollte, bei dem man eigentlich nur ganz simpel Häkchen setzen können soll, welches MP3 auf welches Ziel gesynct werden soll und auf welches nicht und das eine entsprechende Ordnerstruktur dort aufbaut.

zum Synchronisieren würde mir Unison File Synchronizer bzw rsync einfallen und das "Haken setzen", das würde ich evtl einfach ganz einfach in ner Textdatei codieren, die Datei kann man über MD5 Hashes ebenfalls zuordnen, so dass die Liste unabhängig vom konkreten Speicherort wird. Das ganze als kleines Shellscript sollte das doch eigentlich liefern, was Du willst.

Und das ganze wiederrum nur, weil mein Autoradio zu dumm ist, direkt die MP3-Tags für eine Titelsuche zu verwenden und stattdessen nur stumpf auf FAT-Dateisystemsinformationen zugreift (ja, das Ding kann noch nichtmal die Dateinamen alphabetisch sortiert anzeigen, es zeigt genau die Reihenfolge, in der die Daten auf die Karte kopiert wurden, aber dafür gibts ja immerhin FAT-Sorter Tools).

Die Lösung wäre wohl ein neues Radio oder alternativ MP3 Player mit FM-Transmitter bzw über Line-In anstecken

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hättest doch hier einfach mal schauen können, welche Komponente direkt MP3s abspielen kann. Unter Windows kann man doch via OLE im Grunde jedes Programm benutzen. Ich würde da jetzt evtl mal bei DirectX o.ä. schauen. Nur weil Du die GUI mit Qt machst, muss ja der Soundzugriff nicht zwingend auch mit Qt erfolgen

Naja, OLE und DirectX ist eher schlecht, da ich zu 90% Linux verwende... aber zu 10% eben auch Windows. Vondaher passt es mir ganz gut in den Kram, dass mit Qt beides abgedeckt ist.

Damit dürfte auch der Hinweis von Gurki beantwortet sein ;)

zum Synchronisieren würde mir Unison File Synchronizer bzw rsync einfallen und das "Haken setzen", das würde ich evtl einfach ganz einfach in ner Textdatei codieren, die Datei kann man über MD5 Hashes ebenfalls zuordnen, so dass die Liste unabhängig vom konkreten Speicherort wird. Das ganze als kleines Shellscript sollte das doch eigentlich liefern, was Du willst.

rsync habe ich mir auch schon angeguckt und überlegt. Das würde funktionieren, schön ist aber anders. Würde ich nur einmalig ausgewählte MP3s kopieren wollen, wäre das in Ordnung, aber die Auswahl kann sich schnell ändern. Dazu will ich nicht in Textdateien oder Scripten rumändern müssen.

Das was ich will ist eigentlich ein minimales iTunes. So wie man dort die Häckchen bei den Liedern setzt, die auch auf den iPod sollen, so will ich meine Häckchen auch setzen. Nur eben nicht nur für einen iPod, sondern für mehrere Ziele.

Die Lösung wäre wohl ein neues Radio oder alternativ MP3 Player mit FM-Transmitter bzw über Line-In anstecken

Das Radio IST neu :D Und ganz abgesehen davon, eines der wenigen, die ich überhaupt noch mit SD-Slot gefunden habe. Die meisten neueren haben nur noch USB. FM-Transmitter oder Line-In hab ich schon bei früheren Autradios versucht, aber das taugt meiner Meinung nach nichts. Es hat auch den gravierenden Nachteil, dass man nicht mehr am Radio bedienen kann, sondern auf dem Abspielgerät bedienen muss.

Mein Autoradio kann den iPod sogar direkt via USB ansteuern. Aber da ist viel zu viel drauf und es nervt mich, den iPod immer mit ins Auto nehmen zu müssen und nachher möglichst nicht im Auto vergessen.

Natürlich gibt es Autoradios, die sowas besser können, aber da sind wir dann schon in einer Preisklasse des X-fachen... und für das X kann man nicht 2 einsetzen ;)

Mein Autoradio kann ja eigentlich alles, was ich will, es fehlt nur die passende Software, um das ganze angemessen verwalten zu können.

Mich wunderts ja auch, dass ich der erste bin, den das zu stören scheint und es noch keine Software gibt, die sowas angemessen kann. Bzw. ich zumindest noch keine gefunden habe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, OLE und DirectX ist eher schlecht, da ich zu 90% Linux verwende... aber zu 10% eben auch Windows. Vondaher passt es mir ganz gut in den Kram, dass mit Qt beides abgedeckt ist.

Wenn Du primär Linux nimmst, warum dann das ganze nicht den ganzen Command-Line-Tools machen und dann oben drüber ein Tk (Toolkit) für GUI !? Das wäre dann doch genau das was Du willst, Du hast somit alle Möglichkeiten bestehende Programme zu nutzen und bekommst eine GUI mit der Du steuern kannst z.B. wie die Dateien und wohin sie verschoben werden sollen machst Du per RSync und stopfst die Informationen in eine Datenbank z.B. mySQL die Du dann wieder per CLI Interface abfragst. Die Steuerung geschieht per Tk und Du müsstest eben nur einmalig die Steuerung dafür in Tk schreiben (als Alternative zu Tk gäbe es dann noch ncurses )

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn Du primär Linux nimmst, warum dann das ganze nicht den ganzen Command-Line-Tools machen

Naja, OLE und DirectX ist eher schlecht, da ich zu 90% Linux verwende... aber zu 10% eben auch Windows. Vondaher passt es mir ganz gut in den Kram, dass mit Qt beides abgedeckt ist.

Und ja, auch wenns nur 10% sind, möchte ich trotzdem, dass es unter Windows läuft.

Aber ich seh schon, ihr versteht nicht, was ich meine. Ich suche hier keine Ratschläge, wie ich meine GUI einfacher machen könnte, oder wie man Dateien kopiert, egal ob per CLI oder aus C++ raus. Das sind ja wirklich auch die geringsten Probleme. Und diese ganze Diskussion hier verdeutlicht ja nur noch mehr, dass das Problem tatsächlich existiert.

Ich will nicht extra (in meiner Freizeit) Tk oder sowas "lernen", wegen so einem Miniprojekt. Und es ist mir auch klar, dass es 1000e Frameworks gibt und eines hier, das andere dort besser ist.

Wenn ich an meine letzten C#/.NET 2.0 Projekte denke, kann ich mir gut vorstellen, dass viele Teile damit wirklich einfacher wären. Aber unter Linux mit Mono? Ich weiß nicht.

Java, ich könnte auch Java nehmen. Nur mag ich Java nicht, ich mag dieses VirtualMachine-interpreter-sandbox-bytecode-Zeugs nicht. Die Sprache ansich ist wäre auch kein Problem, mit den GUI-Frameworks kenne ich mich nicht aus, AWT, Swing, keine Ahnung. Müsste man sich wieder extra einarbeiten.

Ich bin zwar Softwareentwickler, aber zum Großteil bin ich trotzdem nur Anwender. Anwender von ganz normalen, bedienbaren Programmen und genauso will ich auch meine MP3s verwalten. Ich bin auch nur Anwender von Frameworks (Qt, .NET, ...). Ich will nicht von Microsoft Office auf OpenOffice umsteigen, nur weil ich ein einziges Dokument schreiben will, das irgendwas beinhaltet, was OO besser kann als MSO (rein metaphorischer Vergleich).

Und in genau diesem Fall entwickel ich auch nur etwas, um es nachher selbst als Anwender benutzen zu können und nicht in irgendwelchen Shellscripten rumpfuschen will, wenn sich die MP3-Auswahl ändert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich suche hier keine Ratschläge, wie ich meine GUI einfacher machen könnte, oder wie man Dateien kopiert, egal ob per CLI oder aus C++ raus.

Du möchtest die für Dich "Eierlegende-Wollmilchsau" haben. Im Moment versuchst Du aber mit einem Presslufthammer eine filigrane Uhr zu bearbeiten. Du kannst die hier vorgestellten Vorschläge ignorieren und Dich weiter darüber aufregen, warum alles schlecht ist, oder Du kannst Dir die Ideen vielleicht einmal durch den Kopf gehen lassen und vielleicht daraus Deine Einstellung zu der Problemlösungsstrategie überdenken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du möchtest die für Dich "Eierlegende-Wollmilchsau" haben.

Die Eierlegende-Wollmilchsau habe ich schon. Nennt sich Qt. Qt kann alles was ich will. Ich hab mich auch nur darüber beschwert, dass z.B. abspielen von Audio mit dem Phonon-Backend von Qt mMn sehr sehr umständlich ist.

Im Moment versuchst Du aber mit einem Presslufthammer eine filigrane Uhr zu bearbeiten.

Nicht alles was hinkt ist ein Vergleich.

Viel eher versuche ich momentan eine filigrane Uhr zu bearbeiten, mit Werkzeug, dass vom Uhrenmacherschraubendreher bis zum Schwerlastkran reicht. 80% davon brauch ich gar nicht, aber es stört mich auch nicht, wenn es da ist.

Du kannst die hier vorgestellten Vorschläge ignorieren und Dich weiter darüber aufregen, warum alles schlecht ist

Ich habe alle Vorschläge kommentiert und aufgeführt, warum ich sie nicht will/mag. Das würde ich nicht als "ignorieren" bezeichnen.

Und abgesehen davon: Es wurde offenbar immernoch nicht verstanden, worum es mir eigentlich geht. Ich will keine Ratschläge wie ich mein Problem lösen kann, mir gehts ums Prinzip. Das lässt sich nicht mit C#, Tk oder Java lösen. Selbst wenn ich die Sprache wechseln würde, würden sich die Probleme nur an andere Stellen verschieben. Ich glaube ich habe in meinen vorherigen Antworten genug davon aufgeführt.

oder Du kannst Dir die Ideen vielleicht einmal durch den Kopf gehen lassen und vielleicht daraus Deine Einstellung zu der Problemlösungsstrategie überdenken.

Seid ihr, oder du zumindest, schonmal auf die Idee gekommen, dass ihr die Thematik vielleicht etwas zu idealistisch seht? Ihr irgendwie das Verhältnis von Aufwand und Nutzen aus den Augen verliert und viel zu viel Wert darauf legt, dass es nur technisch richtig umgesetzt wird?

Ich kenn genug solcher Leute, die mMn einfach nur "Programmier"- oder "Softwareentwicklungsfreaks" sind, aber dabei mit Scheuklappen rumrennen. Denen macht auch eher das Programmieren ansich Spaß, was dabei am Ende rauskommt oder wie benutzerfreundlich das ist, ist dabei eher nebensache. Hauptsache es wurde perfekt strukturiert, objektorientiert, mit den neusten Designpatternideen und der letzten Hypeprogrammiersprache umgesetzt...

Ich will das jetzt hier niemanden unterstellen, aber eure Antworten, mit Ratschlägen ich solle doch eine andere Sprache/Framework benutzen, selbst nach dem 15ten Hinweise von mir, dass es mir darum gar nicht geht, sondern eben ums Prinzip, vermittelt mir irgendwie genau diesen Eindruck.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du programmierst seit 4 Jahren und dir fällt jetzt auf, dass Probleme oftmals deutlich komplexer sind als man sie sich zu Beginn vorstellt? Da frag ich mich was du wohl die letzten 4 Jahre + Ausbildungszeit gemacht hast. Ansonsten verstehe ich nicht warum man so einen Thread aufmacht.

Willst du das jemand ein Framework entwirft mit dem du alle Szenarios mit einem 10 Zeiler abbilden kannst? Dann musst du damit rechnen, dass dein Gehalt wohlmöglich bald unter die Armutsgrenze sinkt. Wenn du denn dann noch einer der Glücklichen bist die einen Job haben.

Wechsel die Technologie z.B auf C# oder Java und die Realisierung deines Projekts sollte deutlich schneller voran gehen. Aber wenn man nun mal auf eine Technologie setzt, die für andere Probleme vorgesehen ist kann man eigentlich nur sagen: Selber Schuld!

Link zu diesem Kommentar
Auf anderen Seiten teilen

"Ich habe keine Lösung, aber ich bewundere das Problem."

iPod/Phone/Pad Dockingstation im Auto und per FM Transmitter ins Radio. Dazu Podcasts usw. fertig.

Ich konnte mich noch nie für die Archivierung von Musikstücken erwärmen. Die Pfade zu meiner Musik hab ich überwiegend im Kopf, und das sind bzw. waren immerhin auch 8 verschiedene Orte darunter einer mit mehreren Unterordnern.

Hilft dir zwar nicht wirklich, aber ich kann so n aufstand "nur" wegen Musik nicht verstehen. Sorry.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich will das jetzt hier niemanden unterstellen, aber eure Antworten, mit Ratschlägen ich solle doch eine andere Sprache/Framework benutzen, selbst nach dem 15ten Hinweise von mir, dass es mir darum gar nicht geht, sondern eben ums Prinzip, vermittelt mir irgendwie genau diesen Eindruck.

Jetzt muss ich aber doch nochmal nachfragen. Du sagst das wäre dir alles viel zu umständlich, wir sagen dir das es nur so umständlich ist weil du die falsche Sprache/Framework/Technologie dafür genommen hast und du sagst das es dir nicht darum geht sondern ums Prinzip. Was ist denn das "Prinzip"?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da frag ich mich was du wohl die letzten 4 Jahre + Ausbildungszeit gemacht hast. Ansonsten verstehe ich nicht warum man so einen Thread aufmacht.

Weil ich kurz bevor ich den Thread eröffnet habe, seit langem mal wieder versucht habe, in meiner Freizeit, aus eigenem Interesse etwas für mich selbst zu entwickeln und dabei festgestellt habe, dass frameworkseitig einige Dinge unnötig komplex sind (der API, was die intern tun, ist mir sowieso völlig egal) und ich der Meinung bin, dass es nicht so komplex sein muss, oder man die API zumindest zusätzlich auf eine deutlich einfachere Handhabung runterbrechen könnte.

Willst du das jemand ein Framework entwirft mit dem du alle Szenarios mit einem 10 Zeiler abbilden kannst? Dann musst du damit rechnen, dass dein Gehalt wohlmöglich bald unter die Armutsgrenze sinkt. Wenn du denn dann noch einer der Glücklichen bist die einen Job haben.

Im Prinzip: JA. Nur nicht ganz so krass. Das man alles mit 10 Zeilen erschlägt, erwarte ich gar nicht. Aber um obiges Beispiel nochmal aufzugreifen: Ich will keine 20 Zeilen schreiben müssen, damit ein einfaches Audiofile abgespielt wird. MMn müsste sowas mit einer Zeile getan sein, zumindest wenn man keine Extras (z.B. Effekte, mehrere Audiodevices zur Auswahl, ...) braucht. Sollte man sowas brauchen, dann sollte es optional sein.

Wechsel die Technologie z.B auf C# oder Java und die Realisierung deines Projekts sollte deutlich schneller voran gehen. Aber wenn man nun mal auf eine Technologie setzt, die für andere Probleme vorgesehen ist kann man eigentlich nur sagen: Selber Schuld!

Also da du hier von Sprachen statt von Frameworks redest, denkst du C# oder Java wären besser geeignet als C++?

Dann erklär mir doch bitte mal, inwiefern C# oder Java für was genau besser sein sollen als C++, ohne Berücksichtigung auf Frameworks.

Sollte sich die Frage nicht auf C# sondern auf .Net und nicht auf Java sondern auf <beliebigesJavaFramework> beziehen, dann erklär mir doch bitte mal wofür genau Qt gemacht wurde und wo da jetzt der falsche Einsatzzweck genau liegen soll?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich von C# b.z.w Java rede, meine ich natürlich auch die dazugehörigen Frameworks. Damit wollte ich auch nur ausdrücken, dass .Net oder <beliebigesJavaFramework> sicher einige Komponenten bietet die das ganze erleichtern - z.B Abspielen von MP3s. Über das du dich ja u.a. aufregst.

Nun, du kannst ja den Nachfolgenden Entwicklern ein gutes Beispiel sein und einen Adapter schreiben, damit die es dann leichter haben :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil ich kurz bevor ich den Thread eröffnet habe, seit langem mal wieder versucht habe, in meiner Freizeit, aus eigenem Interesse etwas für mich selbst zu entwickeln und dabei festgestellt habe, dass frameworkseitig einige Dinge unnötig komplex sind (der API, was die intern tun, ist mir sowieso völlig egal) und ich der Meinung bin, dass es nicht so komplex sein muss, oder man die API zumindest zusätzlich auf eine deutlich einfachere Handhabung runterbrechen könnte.

Weisst du wieso das so komplex ist? Weil es die falsche Sprache dafuer ist. Deal with it.

Also da du hier von Sprachen statt von Frameworks redest, denkst du C# oder Java wären besser geeignet als C++?

Dann erklär mir doch bitte mal, inwiefern C# oder Java für was genau besser sein sollen als C++, ohne Berücksichtigung auf Frameworks.

Dass das Quatsch ist haste sicher schon selber gemerkt, oder?

C# setzt zwangslaeufig auf das .NET Framework auf, daher eruebrigt sich eine Diskussion ohne Frameworkbezug.

Achja:

My.Computer.Audio.Play("c:\windows\media\chime.wav")
Link zu diesem Kommentar
Auf anderen Seiten teilen

FinalFantasy, du vermutest Scheuklappen bei anderen, hast aber selbst die größten Qt-Scheuklappen auf, die ich jemals gesehen habe.

Mag sein, dass Qt alles kann, was du willst. Offensichtlich aber nicht so, wie du es willst. Du lobst dein Werkzeug als die Silberkugel für alle Probleme, beklagst dich aber gleichzeitig über dessen Unzulänglichkeiten.

Einfache Lösungen für komplexe Probleme (und ja, die Wiedergabe einer Audiodatei ist ein komplexes Problem, kein einfaches) findest du in hochspezialisierten Frameworks, z.B. in Game Engines. Je allgemeiner und portabler ein Framework ist, je mehr Plattformen es unterstützt, desto eher findest du Lösungen, die eben nur auf dem kleinsten gemeinsamen Nenner aufbauen, und damit eben nicht so anwenderfreundlich sind, wie es dir vielleicht möglich erscheint.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich von C# b.z.w Java rede, meine ich natürlich auch die dazugehörigen Frameworks. Damit wollte ich auch nur ausdrücken, dass .Net oder <beliebigesJavaFramework> sicher einige Komponenten bietet die das ganze erleichtern - z.B Abspielen von MP3s. Über das du dich ja u.a. aufregst.

Ja, das kann durchaus sein. Aber so wie ich das kenne, ist bei den anderen Sprachen/Frameworks dafür wieder irgendwas anderes unnötig kompliziert.

Nun, du kannst ja den Nachfolgenden Entwicklern ein gutes Beispiel sein und einen Adapter schreiben, damit die es dann leichter haben :D

Das werde ich wohl machen... ob andere Entwickler was davon haben werden, wage ich aber fast zu bezweifeln... Das Prozedere bei Trolltech/Nokia/Qt einen MergeRequest zu stellen, tu ich mir sicher nicht an. :D

Naja, wenns denn mal einigermaßen läuft, werd ichs wohl aber irgendwie opensourcen.

Weisst du wieso das so komplex ist? Weil es die falsche Sprache dafuer ist. Deal with it.

Aha, kann mir denn auch mal jemand erklären, WAS daran so falsch sein soll?

Dass das Quatsch ist haste sicher schon selber gemerkt, oder?

C# setzt zwangslaeufig auf das .NET Framework auf, daher eruebrigt sich eine Diskussion ohne Frameworkbezug.

Achja, nur weil C# so eng mit .NET verheiratet ist, sollte man nicht mehr zwischen Sprache und Framework unterscheiden? Interessante ansicht. Bist du zufällig C#/.Net Fanboy?

Ich dachte eigentlich, eines der Probleme bezüglich C#/.Net hätte ich hier schon erwähnt?

Wie gut läuft C#/.Net nochmals unter Linux? Ich kenne zwar Mono, aber so recht vertraue ich dem Zeug nicht und ich hab eigentlich wenig Lust, dann auch noch rumfrickeln zu müssen, weil ich eine Windows-Technik unter Linux verwenden will und irgendwelche Teile nur deshalb nicht funktionieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bist du zufällig C#/.Net Fanboy?

Du bist so suess. Als Troll hast du noch viel zu lernen.

Wie gut läuft C#/.Net nochmals unter Linux?

Das steht doch garnicht zur Debatte, das .NET Framework wurde nicht dafuer designed um auf Linux zu laufen.

Je allgemeiner und portabler ein Framework ist, je mehr Plattformen es unterstützt, desto eher findest du Lösungen, die eben nur auf dem kleinsten gemeinsamen Nenner aufbauen, und damit eben nicht so anwenderfreundlich sind, wie es dir vielleicht möglich erscheint.

Das hier bringt es auf den Punkt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...]dass frameworkseitig einige Dinge unnötig komplex sind (der API, was die intern tun, ist mir sowieso völlig egal) und ich der Meinung bin, dass es nicht so komplex sein muss, oder man die API zumindest zusätzlich auf eine deutlich einfachere Handhabung runterbrechen könnte.

Hast Du Dir schon einmal Gedanken gemacht, was Qt überhaupt alles leistet, außer ein paar hübsche Fenster zu erzeugen?

Qt existiert seit etwas mehr als 20 Jahren....

Im Prinzip: JA. Nur nicht ganz so krass. Das man alles mit 10 Zeilen erschlägt, erwarte ich gar nicht. Aber um obiges Beispiel nochmal aufzugreifen: Ich will keine 20 Zeilen schreiben müssen, damit ein einfaches Audiofile abgespielt wird. MMn müsste sowas mit einer Zeile getan sein, zumindest wenn man keine Extras (z.B. Effekte, mehrere Audiodevices zur Auswahl, ...) braucht. Sollte man sowas brauchen, dann sollte es optional sein.

Und genau das ist es nicht. Du solltest Dich bevor Du solche Punkte hier aufwirfst einmal mit der Funktionsweise und der Umsetzung von Qt befassen. Nur weil Du C++ mit Qt Code schreibst, wird dieser noch lange nicht direkt durch den Compiler und Linker verarbeitet. Ich gehe davon aus, dass Du weisst was der MOC-Compiler vorher leistet.

Dann erklär mir doch bitte mal, inwiefern C# oder Java für was genau besser sein sollen als C++, ohne Berücksichtigung auf Frameworks.

Du hast die Engstirnigkeit es unbedingt mit Qt machen zu wollen, da Du Qt kannst. Du möchtest für Deine Problemlösung nichts neues Lernen, sondern stellst den Anspruch an das Qt, dass es Dir bitte schön, alles das so vorgekaut liefert, wie Du es gerne hättest. Qt wird sich wegen Dir nicht ändern.

Du machst es Dir mit Deiner Einstellung Qt verwenden zu wollen, schwerer als das Problem ist und dann beklagst Du Dich, dass es noch so schwer ist.

Sollte sich die Frage nicht auf C# sondern auf .Net und nicht auf Java sondern auf <beliebigesJavaFramework> beziehen, dann erklär mir doch bitte mal wofür genau Qt gemacht wurde und wo da jetzt der falsche Einsatzzweck genau liegen soll?

Java SE Desktop Technologies - Java Media Framework API (JMF)

und genau das was Du willst: JMF MP3 Plugin

The included jar file (mp3plugin.jar) contains a Java Sound plugin as well as a Java Media Framework plugin for playing MPEG-2 Layer 3 Audio.

Qt ist ein C++ Framework, dass OS spezifische GUI Anbindung (jedenfalls im ursprünglichen Sinne) so kapselt, dass man ein cross-plattformes Framework hat, um C++ Anwendungen zu erstellen ohne selbst OS spezifischen Code schreiben zu müssen. Letztendlich eine Abstraktionsschicht für die GUI Anbindung, da Qt aus dem Unixbereich kommt, war hier direkt die Problematik des [ulr=http://de.wikipedia.org/wiki/X.Org-Server]X.org bzw X11 gegeben, dass es hier unterschiedliche Window-Manager gibt und jeder seine eigene Bibliothek für die Darstellung der GUI Elemente mitbringt. Qt ermöglicht es nun, dass der User nun unterschiedliche Window-Manager verwenden kann, aber der Entwickler diese spezifischen Unterschiede nicht selbst codieren muss.

Das mit der Zeit natürlich Qt auch um Datenbank-, Netzwerkfunktionalität etc erweitert wurde, ist natürlich klar. Aber hier gilt das gleiche.

Da Du letztendlich ein "MP3" abspielen willst, sollte Dir mit Deiner Berufserfahrung klar sein, dass Du um das durchzuführen einen Decoder für das MPEG Format brauchst, dann eine Anbindung an den Treiber Deines Sound-Device, der OS spezifisch ist und letztendlich ein Containerformat, das die gelesen Daten des Decoders passend dem Sound-Device übergibt. Qt muss also die OS spezifische Anbindung an die OS Komponenten für das Sound-Device leisten, das z.B. unter Linux auch mit verschiedenen System realisiert wird (Advanced Linux Sound Architecture bzw. Open Sound System ). Da Qt eben die cross-plattformfähig hat, muss hier z.B. unter OSX, Windows oder Smartphones die Soundanbindung entsprechend umgesetzt werden, so dass eben die API soweit abstrakt formuliert wird, dass der Entwickler eben von den technischens OS Details nichts mitbekommt.

Bevor Du hier über die angebliche zu komplexen Frameworks Deine Wut aus lässt, solltest Du vielleicht Dich damit erste einmal im Detail befassen. Die meisten Punkte sehe ich aber definitiv in Deiner Unerfahrenheit, Du solltest Dir aber hier wirklich einmal die Punkte nehmen und vielleicht Deine Einstellung überdenken

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

Aha, kann mir denn auch mal jemand erklären, WAS daran so falsch sein soll?

Na das hast du doch schon selber gemerkt und bist dich die ganze Zeit darüber am Aufregen: Es ist viel zu umständlich.

Achja, nur weil C# so eng mit .NET verheiratet ist, sollte man nicht mehr zwischen Sprache und Framework unterscheiden? Interessante ansicht. Bist du zufällig C#/.Net Fanboy?

Geht das bitte auch in einem vernünftigen Ton (an alle an der Diskussion beteiligten).

Ich dachte eigentlich, eines der Probleme bezüglich C#/.Net hätte ich hier schon erwähnt?

Wie gut läuft C#/.Net nochmals unter Linux? Ich kenne zwar Mono, aber so recht vertraue ich dem Zeug nicht und ich hab eigentlich wenig Lust, dann auch noch rumfrickeln zu müssen, weil ich eine Windows-Technik unter Linux verwenden will und irgendwelche Teile nur deshalb nicht funktionieren.

Ja wenn du unbedingt plattformunabhängig sein willst musst du halt einiges an Unbequemlichkeiten in kauf nehmen. Aber ob dann Sprachen wie C++ oder Java unbedingt die Beste Lösung für dein Problem sind wage ich trotzdem zu bezweifeln.

Link zu diesem Kommentar
Auf anderen Seiten teilen

FinalFantasy, du vermutest Scheuklappen bei anderen, hast aber selbst die größten Qt-Scheuklappen auf, die ich jemals gesehen habe.

Ähm nein, ich habe keine Qt Scheuklappen. Naja ein bisschen vielleicht. Aber wie ich schon geschrieben habe, gibts nur wenig Punkte, weswegen ich Qt verwenden will.

1. Einen Großteil von Qt kenne ich schon relativ gut, muss mich also nicht extra in ein für mich komplett neues Framework einarbeiten.

2. Qt läuft unter Windows und Linux.

Mag sein, dass Qt alles kann, was du willst. Offensichtlich aber nicht so, wie du es willst. Du lobst dein Werkzeug als die Silberkugel für alle Probleme, beklagst dich aber gleichzeitig über dessen Unzulänglichkeiten.

Ich lobe Qt nicht. Siehe oben genannte Punkte.

Leider Gottes, gefällt mir die aktuelle Entwicklung von Qt sogar gar nicht. Das ganze neue QML-Zeug auf das momentan so massig gedrängt wird, gefällt mir überhaupt nicht und das werde ich auch nicht (privat) verwenden. Den SQL-Teil von Qt finde ich jetzt auch nicht so super und XML mit Qt ist eine einzige Katastrophe (was wiederum bei C#/.Net ein wahrer Traum ist). Naja, wenn ich mir die Entwicklung von Qt so anschaue, wäre das vielleicht schon ein Grund, sich deswegen mal in ein anderes Framework einzuarbeiten :D

Ich bin mir ausserdem ziemlich sicher, dass auch in anderen Frameworks nicht alles so ist, wie ich es gerne hätte. ;)

Einfache Lösungen für komplexe Probleme (und ja, die Wiedergabe einer Audiodatei ist ein komplexes Problem, kein einfaches) findest du in hochspezialisierten Frameworks, z.B. in Game Engines. Je allgemeiner und portabler ein Framework ist, je mehr Plattformen es unterstützt, desto eher findest du Lösungen, die eben nur auf dem kleinsten gemeinsamen Nenner aufbauen, und damit eben nicht so anwenderfreundlich sind, wie es dir vielleicht möglich erscheint.

Jetzt hat mal einer das "Prinzip" verstanden. :D

Ich habe nicht gesagt, dass ich das Problem löse(n kann), ich hab noch nichtmal gesagt, dass das Problem überhaupt lösbar ist. Wie immer ist das eine fließende Grenze. Wie du schon sagst, die "simple" Ausgabe eines MP3s kann recht komplex sein, muss aber nicht.

Klar, wenn ein Computer 2 Soundkarten hat, macht es Sinn da erstmal ein Audiodevice auswählen zu müssen. Wenn ich mehrere Sounds gleichzeitig abspielen will, macht es Sinn, für jeden Sound ein eigenes Objekt zu haben, so dass ich diese gezielt mit play/pause/volume/... ansteuern kann. Man könnte die Sonderfälle jetzt wohl noch beliebig erweitern. Ich versteh auch sehr gut, dass man das in GameEngines braucht.

Phonon bietet diese Möglichkeiten, oder zumindest viele Möglichkeiten, soweit ich die Doku verstanden habe. Ich brauche aber diese ganzen Features nicht, dementsprechend komplex ist aber die API.

Ich sage ja auch nicht, dass der komplexe Teil weg soll, ich denke mir nur, wieso gibts nicht auch ne einfachere API zusätzlich, die dann z.B. einfach das Defaultaudiodevice des Systems nutzt, das intern ein Objekt zum Abspielen erstellt und es hinter einem Singleton versteckt oder sowas?

Aber ich denke, auch ihr werdet mir zustimmen, dass es wohl auch unsinnig ist, für mein Vorhaben eine GameEngine zu verwenden, nur damit ich MP3s abspielen kann ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich sage ja auch nicht, dass der komplexe Teil weg soll, ich denke mir nur, wieso gibts nicht auch ne einfachere API zusätzlich, die dann z.B. einfach das Defaultaudiodevice des Systems nutzt, das intern ein Objekt zum Abspielen erstellt und es hinter einem Singleton versteckt oder sowas?

Hast Du Dir schon einmal Gedanken gemacht, was die Pflege für zwei APIs kostet und wie schwierig es ist, so etwas konsistent zu halten?

Warum soll ich als Entwickler eines Frameworks mir doppelt Arbeit machen? Jemand der es verwenden will, der muss ich eben an meine Definitionen anpassen. Im Normalfall hat das schon einen Sinn, warum Frameworks eine gewisse Komplexität haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...