Aloha ;)
Ich würde dir recht geben, wenn wir hier bei $softwarekonzern wären. Ich gebe dir nicht recht, weil wir hier in einem Raum des Lernens sind.
kurz und knapp meine thesen:
- man baut sich auch keine eigene daten bank, weil dass schon experten getan haben. man sollte:
a) fertige datenbank lösungen benutzen
b fertige algorithmische lösungen
c) fertige implementierungen
Ich verstehe nicht ganz, warum du Christians Argumente inhaltlich so vollkommen ignorierst. Was du schreibst, kann unter Umständen richtig sein. So wie du es hinstellst (als bedingungslose Wahrheit) ist es aber vollkommener Quatsch.
Das liegt einfach daran, dass es grundsätzlich gilt, das Ziel der Sache zu analysieren. Bevor du Aussagen über eine bestimmte Herangehensweise treffen kannst (was du hier tust, indem du die eine der anderen vorziehst) musst du zuerstmal klären, worum es im Endeffekt geht.
Wie Christian schon sagte: Wenn du bei $softwarekonzern arbeitest muss die Lösung vor allem bzgl. Aufwand effizient sein (was für deine Thesen spricht). Wenn du versuchst, Übung im Programmieren zu bekommen, sind deine Thesen falsch. So gibt es viele weitere Umstände (zur Verfügung stehende Programmiersprachen, zur Verfügung stehende Hardware, rechtliche Aspekte ...), die es zunächst zu Bedenken gibt, bevor man sich dazu hinreißen lassen sollte, die eine Herangehensweise über die andere zu stellen.
-> weil man selten besser sein kann als die experten die diese lösungen über jahre hinweck gebaut haben
Dieses Argument ist sehr kurzsichtig. Glaubst du die experten sind zu Experten geworden, weil sie ihr ganzes Leben lang Implementierungen anderer zusammengewürfelt haben (was unbestrittenerweise auch nicht immer einfach ist) und nie ein Stück Software selbst programmiert haben? Sicher nicht.
Außerdem ist auch "besser" wieder ein Wort, das man so undifferenziert nicht hinstellen sollte. "Besser" bezieht sich sinnvollerweise nämlich auf "besser bezüglich des verfolgten Ziels" und hat so bedingungslos für sich selbst keinerlei Bedeutung.
- lernen sollte man von vornherein dass verwenden von experten lösungen, es ist eine ganz andere aufgabe experten lösungen zu verwenden und zusammen zu bauen als eigene lösungen zu implementieren. lernt man dass eine lernt man das andere nicht.
Nein, ich widerspreche. Ich würde sagen:
Man muss wissen, wann es hinsichtlich des verfolgten Ziels besser ist, fertige Lösungen zu verwenden und wann es besser ist, Lösungen selbst zu implementieren. Man sollte grundsätzlich zu beidem in der Lage und bereit sein.
- es ist viel schwerer experten lösungen zu verwenden als eigene lösungen zu implementieren, daher sollte man sich auf experten lösungen konzentrieren
Nein. Das mag für dich so sein (wenn dir das implementieren eigener Lösungen so leicht fällt), ist aber sicher keine allgemeingültige Aussage, die auf jeden Menschen zutrifft. Außerdem: Um "Experten-Lösungen" (was soll das sein, frage ich mich, woran erkenne ich die, wenn ich nichts über ihre Funktionsweise weiß) zu verwenden und entsprechend zusammenzustellen brauche ich, wie du sagst, schon einen gewissen Skill. Da stimme ich zu. Und wo soll der bitteschön herkommen? Um Expertenlösungen zusammenzubauen braucht man Übung in den verwendeten Hochsprachen und mit der zur Verwendung kommenden Programmierlogik. Wo soll die herkommen, außer daher, dass man selbst in diesen Sprachen schonmal (irgendwas) implementiert hat?
Das sehe ich anders. Ein nicht-triviales Problem und mögliche Lösungen versteht man nur dann wirklich, wenn man einmal selbst eine Lösung implementiert hat. Ich habe z.B. mal einen SMTP-Server geschrieben. Würde ich den in der freien Wildbahn verwenden? Nein. Habe ich dabei etwas gelernt? Ja, eine Menge. Und gleichzeitig hat es mein Verständnis für existierende MTAs deutlich vertieft.
- im mathematik studium wird kaum programmiert, paar meiner komilitonen können das garnicht. weißt dass das wir algorithmen (zb aus dem bereich der interpolation) nicht verstanden haben?? mit dem was du da geschrieben hast, behauptest du, dass sich viele mathematiker nicht mit mathe auskennen
Vollkommener Quark. Du hast Christian offensichtlich nicht verstanden, oder zumindest schlägt dein Beispiel genau daneben. Mathematiker (ich bin selbst einer) beschäftigen sich mit Algorithmen auf einer wissenschaftlich-mathematischen Basis und untersuchen Eigenschaften dieser Algorithmen, vollkommen unabhängig von der Implementierung (in letzterem steckt ja genau die Mathematik, wäre ja ein Witz, wenn die Mathematik keine allgemeinen, sondern lediglich implementierungs-abhängige Aussagen treffen würde). Das Programmieren ist aber im Endeffekt zu großen Teilen die Frage nach der Implementierung eines Algorithmus (einen zu finden spielt zwar auch eine Rolle, macht aber nicht den gesamten Umfang aus). Damit hat das Programmieren mit der Mathematik sicherlich Schnittmengen, ist aber ganz bestimmt keine Teilmenge. So what?
Das hängt vom Ziel ab. Wenn es mein Ziel ist, möglichst schnell zu einem Ergebnis zu kommen hast du recht. Wenn es mein Ziel ist, möglichst viel zu lernen, liegst du falsch.
derzeit bastle ich an einer lösung bei welcher ein lugin mit einer c# dll komuniziert, welche wiederum mit einem php server komuniziert, welcher wiederum auf einen passenden R algorithmus zugreifen kann. alerternativ könnte ich den algo. einfach ins plugin schreiben .... ich halte lösung nr 1 für lehrreicher und verbuche lösung nr 2 unter trivial (+ schlechtere performance)
Das Argument mit schlechterer Performance ist ziemlicher Quatsch, weil es bezüglich der Performance auch stark davon abhängt, wie die Implementierung der einzelnen miteinander kommunizierenden Fragmente aussieht und wie viel über den Flaschenhals Schnittstelle kommuniziert werden muss, es ist also hier gar nicht möglich, so allgemeine Aussagen über Performance zu treffen. Außerdem leuchtet es bei den gar so trivialen Algorithmen (du meinst ja sie seien trivial zu implementieren) nicht ein, wieso es performanter sein soll, Daten über zig Schnittstellen zu reichen und dabei zig weitere Aktivitätsträger (= Prozesse) anzuwerfen. Das ist so ziemlich das Gegenteil von performant (was anderes ist es, wenn es gute Gründe gibt, das eine oder andere Spezialsystem zu nutzen, das hast du aber nirgends vorausgesetzt).
Du magst vollkommen Recht haben, dass die Lösung Nr. 1 auch lehrreich ist. Für die Frage, was lehrreicher ist, kommt es aber auf viele Umstände an. Lösung Nr. 1 setzt, wie ich schon sagte, Grundkenntnisse voraus, die man nur durch Anwenden von Lösung Nr. 2 in genügend vielen Fällen erlangen kann.
Grundsätzlich solltest du dir die Frage stellen, wo wir hier sind. Wir sind bei selfhtml, wir haben es uns zur Aufgabe gemacht, Lernwillige an den selbständigen Umgang mit Webtechnologien heranzuführen. Das Forum ist dazu da, mit den Fragestellern verschiedene Lösungsmöglichkeiten zu entwickeln und zu diskutieren. Das unterscheidet uns von Foren wie StackOverflow (nur ein Beispiel), in denen auf Fragen lediglich fertige Lösungen erwünscht sind. Es braucht sicherlich beide Sorten von Foren, nur sind wir hier eben die eine und nicht die andere Art. Dementsprechend ist es hier im Normalfall nicht unbedingt angebracht, lediglich fertige Lösungen zu posten.
Ich würde mir von deiner Seite einen etwas weniger dogmatischen und dafür reflektierteren Umgang mit solchen Themen in dieser Diskussion hier wünschen - immerhin bist du so gut wie überhaupt nicht auf Christians Erwiderungen eingegangen (und wo du es getan hast, siehe Mathematik-Beispiel, hatte ich nicht den Eindruck, als hättest du Christian wirklich verstanden oder verstehen wollen).
Grüße,
RIDER
--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem
eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter:
#
Facebook #
Twitter #
Steam #
YouTube #
Self-Wiki #
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[