Philosophie von C/C++ und Linux? ->Ideen für ein Denken in C/C++
-
Vorab, bitte verbessert mich wenn ich etwas falsch interpretiere oder schreibe...in angemessenen Rahmen als konstruktive Kritik. Bitte keine rum-krakehl-postings!
Zu aller erst ist zu meiner Hypothese zu sagen, dass ja Linux der Philosphie folgt, dass ein Programm jeweils nur eine Aufgabe erledigt. Daraus folgt ein Baukastensystem, das sehr flexibel ist und individuell benutzt bzw. gestalltet werden kann.
-> ein Hauptproblem (also die Bewegnis ein Programm zu schreiben) lässt sich lösen durch Zusammensetzen von mehreren, auf das Lösen des Hauptproblems ausgewählte und miteinander abgestimmte, Teillösungen (also schon vorhandene Programme --> dazu eine Frage: sind Bibliotheken nichts weiter als, mit schon fertig gegossenen Legobausteinchen volle Legokisten, bzw. zusammengestellte Teillösungen einer Art?). Eine Bibliothek ist immer thematisch zusammengestellt (mit dem Lego-Beispiel: eine Legosteinchen-Box hat nur die normalen Bausteine und eine weitere nur Lego-Technics-Bausteine?).Da ja der Linux-Kernel fast komplett in C geschrieben ist kommt man nun zur Annahme, das die Sprache C einer ähnlichen, wenn nicht sogar gleichen Philosophie folgt.
Das würde auch meine Frage mit den Bibliotheken grundsätzlich ersrmal lösen.Nun ist ja der Sachverhalt da, dass man nicht mehr Bits aneinander reiht, sondern durch C nur sozusagen eine Ausführ-Vorschrift verfasst. Diese Ausführvorschrift gibt man an einen "Angestellten" (also der Compiler..oder doch Interpreter?...wo liegt da der Unterschied?)weiter. Der, je nach dem wie seine Arbeitsmoral, Arbeitstechnik und überhaupt sein Verständniss für die Ausführvorschrift ist, das eigentliche Zusammenbauen der Bits erledigt.
Hat er ein Problem bei der Arbeit, nimmt er sich ein Werkzeug aus einer Werkzeugkiste(also eine Bibliothek) und benutzt es ganz einfach...!Sind meine Hypothesen richtig? Wenn nicht, wie wärs, wenn ihr einfach eine eigene, neue Version schreibt und hier in den Thread reinstellt?!
Gruß, Sören
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Auf Anwendungsebene hast du schon recht, aber auf Quellcodeebene sieht es mit dem Zusammenstecken leider nicht so aus, denn der Code der diese Bibliotheken zusammenbindet ist eben doch mehr als nur der Kleber.
Auch ist die UNIX Philosophie etwas flexibler, so sind auch durchaus Programme gewollt die viele Aufgaben übernehmen, prominente Beispiele sind Bash, Emacs oder Vim.
-
darmsinn89 schrieb:
Da ja der Linux-Kernel fast komplett in C geschrieben ist kommt man nun zur Annahme, das die Sprache C einer ähnlichen, wenn nicht sogar gleichen Philosophie folgt.
Einwandfreie Logik. Qui bene bibit, bene dormit; qui bene dormit, non peccat; qui non peccat, salvatur; ergo qui bene bibit, salvatur
-
Profi-Progger schrieb:
Auf Anwendungsebene hast du schon recht, aber auf Quellcodeebene sieht es mit dem Zusammenstecken leider nicht so aus, denn der Code der diese Bibliotheken zusammenbindet ist eben doch mehr als nur der Kleber.
Auch ist die UNIX Philosophie etwas flexibler, so sind auch durchaus Programme gewollt die viele Aufgaben übernehmen, prominente Beispiele sind Bash, Emacs oder Vim.
Die UNIX Philosophie ist übrigens "Ein Programm sollte das tun was der Anwender will.". Das ist auch überall zu finden (außer bei den neuen Desktop-Systemen wie Gnome oder KDE, diese wollen sich der Windows-Philosophie annähern), so fragt dich rm bei einem "rm -rf /" nicht ob du dir sicher bist, oder verweigert gar den Befehl, nein, es tut was du ihm sagst.
-
Die Sprache C wurde wegen ihrer naehe zur Hardware ausgewaehlt. Philosophie ist sache von Menschen. Designphilosophien koennen in jeder Sprache umgesetzt werden.
-
darmsinn89 schrieb:
Zu aller erst ist zu meiner Hypothese zu sagen, dass ja Linux der Philosphie folgt, dass ein Programm jeweils nur eine Aufgabe erledigt. Daraus folgt ein Baukastensystem, das sehr flexibel ist und individuell benutzt bzw. gestalltet werden kann.
Eigentlich war das schon die Unix-Philosophie
-> ein Hauptproblem (also die Bewegnis ein Programm zu schreiben) lässt sich lösen durch Zusammensetzen von mehreren, auf das Lösen des Hauptproblems ausgewählte und miteinander abgestimmte, Teillösungen (also schon vorhandene Programme
Nicht immer. Manche Sachen werden auch von Grund auf neu geschrieben anstatt auf fertige Loesungen aufzubauen (z. B. git).
(Es ist im OSS-Bereich ueblich, dass es mehrere Alternativen gibt, die das gleiche Problem loesen).sind Bibliotheken nichts weiter als, mit schon fertig gegossenen Legobausteinchen volle Legokisten, bzw. zusammengestellte Teillösungen einer Art?). Eine Bibliothek ist immer thematisch zusammengestellt (mit dem Lego-Beispiel: eine Legosteinchen-Box hat nur die normalen Bausteine und eine weitere nur Lego-Technics-Bausteine?).
Meistens, ja
Da ja der Linux-Kernel fast komplett in C geschrieben ist kommt man nun zur Annahme, das die Sprache C einer ähnlichen, wenn nicht sogar gleichen Philosophie folgt.
Warum?
also der Compiler..oder doch Interpreter?...wo liegt da der Unterschied?
Der Compiler erstellt Maschinencode, der dann selbstaendig ausfuehrbar ist, der Interpreter uebersetzt zur Laufzeit. Zur not helfen Wikipedia oder Google.
Der, je nach dem wie seine Arbeitsmoral, Arbeitstechnik und überhaupt sein Verständniss für die Ausführvorschrift ist, das eigentliche Zusammenbauen der Bits erledigt.
Compiler/Interpreter uebersetzen von einer Sprache (C, C++, ...) in eine andere (Maschinensprache). Frueher wie heute ist es der Programmierer, der dem Computer sagt was er zu tun hat, egal ob auf Bitebene oder auf Hochsprachenebene.
Sind meine Hypothesen richtig? Wenn nicht, wie wärs, wenn ihr einfach eine eigene, neue Version schreibt und hier in den Thread reinstellt?!