Welche OS-API ist am schönsten?
-
joa! schrieb:
Alle C-APIs sind gleich hässlich.
nee, das is blödsinn
-
Das was ich jetzt sag ist kein Blödsinn: Es gibt keine schöne C-API.
-
MacOS/X und Linux haben ja, wie alle anderen Unix Systeme die POSIX API. Die integriert sich eigentlich gut vom Stil in die übrige C Library, wirkt aber teilweise geflickt und nicht so zusammen passend, da die ja aus mehreren UNIX APIs standardisiert ist.
Windows API ist so mit das schlimmste, was man als API finden kann, passt nicht nur nicht zum gewohnten C Stil, es werden auch extrem merkwürdige Dinge gemacht, wie reservierte Parameter, die immer NULL sein müssen. Die Funktionen sind sehr umfangreich und habe ewig lange Parameter listen. Daher finde ich es schwerer zu merken.
BeOS soll ja eine C++ API haben, aber ich hab mir das noch nicht so genau angeguckt. OS/2 wirkte sehr WinAPI ähnlich, aber das kenn ich auch nicht so.
-
Windows hat nicht nur die win32-API, Windows besitzt ebenso eine OS/2-kompatible API und eine POSI (1.0?)-kompatible API, welche allerdings in ihren Funktionen stark eingeschränkt sind.
Und man könnte ohne Probleme ne komplett eigene API schreiben und diese verwenden nur leider dokumentiert MS so vieles nicht was mit Windows möglich ist.
Aber ich stimme
zu
-
Das was ich jetzt sag ist kein Blödsinn: Es gibt keine schöne C-API.
Jepp.. es ist kein Bloedisnn. Es ist Schwachsinn
Schau dir einmal ein schoen geschriebenes Programm mit GTK und GLib an.
-
und eine POSI (1.0?)-kompatible API
POSI stimmt da wohl oder eher P, wenn man das mit dem eigentlichen POSIX Standard vergleicht. Das ist nicht wirklich kompatibel. _open ist eben nicht open, damit fängt es schon an.
Und ich nehme mal an, dass die OS/2 und POSIX kompatibilität nur Layer über der Win32 API sind, außerdem würde glaube ich jeder bei Microsoft auf die Frage nach einer Windows API mit der WinAPI antworten und nicht mit "moment, wir haben da die OS/2 API, POSIX (1.0) ungefähr. Ach, hätte ich fast vergessen, es gibt da noch ne eigene API... wie hies die nochmal, WinAPI glaub ich"
-
kingruedi schrieb:
Windows API ist so mit das schlimmste, was man als API finden kann, passt nicht nur nicht zum gewohnten C Stil, es werden auch extrem merkwürdige Dinge gemacht, wie reservierte Parameter, die immer NULL sein müssen. Die Funktionen sind sehr umfangreich und habe ewig lange Parameter listen. Daher finde ich es schwerer zu merken.
Was ist an reservierten Parametern extrem merkwürdig und an lesbaren Funktionsnamen so schlimm? o_O
Ich arbeite mit der WinAPI eigentlich recht gerne, weil man die Funktionen durch den Namen leicht findet und versteht und die Funktionsweise eigentlich immer gut dokumentiert ist. Lässt sich wunderbar sauber wrappen. Die Unix-Welt kenne ich vor allem durch BSD-Sockets, vielleicht habe ich deshalb so ein schlechtes Bild. select() hat mir mit seinem Hack-Charakter jedenfalls erstmal genug Angst gemacht.
-
operator void schrieb:
kingruedi schrieb:
Windows API ist so mit das schlimmste, was man als API finden kann, passt nicht nur nicht zum gewohnten C Stil, es werden auch extrem merkwürdige Dinge gemacht, wie reservierte Parameter, die immer NULL sein müssen. Die Funktionen sind sehr umfangreich und habe ewig lange Parameter listen. Daher finde ich es schwerer zu merken.
Was ist an reservierten Parametern extrem merkwürdig und an lesbaren Funktionsnamen so schlimm? o_O
Solche parameter kommen in ein struct bzw. werden sonst wie, zb. über weitere funktionen, gesetzt. Solche Funktionen wie CreateProcess sind doch echt nicht das wahre.
Und ein simples open() ist auch lesbarer als CreateFile(20 Argumente). Und CamelCase saugt eh
-
operator void schrieb:
kingruedi schrieb:
Windows API ist so mit das schlimmste, was man als API finden kann, passt nicht nur nicht zum gewohnten C Stil, es werden auch extrem merkwürdige Dinge gemacht, wie reservierte Parameter, die immer NULL sein müssen. Die Funktionen sind sehr umfangreich und habe ewig lange Parameter listen. Daher finde ich es schwerer zu merken.
Was ist an reservierten Parametern extrem merkwürdig und an lesbaren Funktionsnamen so schlimm? o_O
Ich arbeite mit der WinAPI eigentlich recht gerne, weil man die Funktionen durch den Namen leicht findet und versteht und die Funktionsweise eigentlich immer gut dokumentiert ist. Lässt sich wunderbar sauber wrappen. Die Unix-Welt kenne ich vor allem durch BSD-Sockets, vielleicht habe ich deshalb so ein schlechtes Bild. select() hat mir mit seinem Hack-Charakter jedenfalls erstmal genug Angst gemacht.Ich arbeite auch ganz gerne mit ihr, außer GUIs
-
@kingruedi: Nein POSIX und OS/2 sind zwei eigene Sub-Systeme. So wie Win32 ein Sub-System von WinNT ist.
MfG SideWinder
-
Real schrieb:
Welche ist die schönste?
schönheit liegt im auge des betrachters.
angenommen, man ist eh bereit, sich wrapper um die os-api zu bauen, weil diese voll unangenehm ist...
(kann mir gar nicht mehr vorstellen, die winapi roh anzufassen.) (warpper in c++ kosten, wie Hume nicht müde wird zu betonen, und ich ihm dafür sehr danke, auf einem ordentlichen compiler null performance).angenommen, man mag speed...
(mmap oder CreateFileMapping sind ein muss)angenommen, man mag sich nur über netzwerk-server unterhalten...
dann haste eher drei auswahlmöglichkeiten.
win hat die ausgeklügelsten und benutzerfreundlichsten schnittstellen, zu so sachen, die man eigebntlich braucht. damit meine ich thread pools und io completions ports einfach als bordmittel. nix im userspace emulieren, neun, im kernel bläst die verwaltung ohne lästige kontext-switches. und der user verarbeitet fein nur noch die daten.
linux hat da theoretitsch ein wenig weniger speed. insbesondere bei vielen kleinen anfragen wegen der vielen echten prozesswechsel. ist aber gar nicht der fall, wie messungen immer wieder zeigen. der normale webserver scheint mit linus schneller zu sein wider alle vernumpft. hier besteht klärungsbedarf. es gibt natürlich webserver-anwendungen, wo win das linux um faktor 10 plattmacht und wo linux das win um faktor 10 plattmacht.
bsd ist schweineeffizient im grundlegenden tcp-handling uhd kann mit dem uniformed memory handling oder wie das heißt, die deine daten geben ohne andauernd zu kopieren (hab ich so gehört, bin nicht sicher). also top speed, wo die anderen os'e einfach grundlegende probs haben und nicht darüberhinaus kommen.
schätze, die messungen zwischen win und linux sind eh stark php- bzw. j#-lastig. top-effizienz hätte ein c++-server und der würde vermutlich von bsd (dem dafür richtigen) profitieren.
aber was meintest du mit "schön"? ob sie oo sind? nee, fehlanzeige (naja, open/close-paare sind es, es fehlz nur sie sprachunterstüztzung). ob dsie angenehm sind (ist doch ganz egal. es gibt keine angenehmen schnittstellen. aber sie sind sehr warpper-freundlich (im gegensatz zur stl!)).
-
Geschwindigkeit ist für dich Schönheit? Habe ich das Posting nicht verstanden?
MfG SideWinder
-
Vielleicht nicht ganz. Wie schön du wrappst ist dir überlassen und damit zählt nur noch Geschwindigkeit. :p
Naja, für manche vielleicht...
Ich kann damit leben, dass mein Fenster 0.02ms braucht um zu öffnen, anstatt 0,01ms..Net und Java bieten die schönsten Wrapper um System-APIs.
Bei .Net gefallen mir die Delegates besser als das Listener-Prinzip von Java, dafür ist es wahnsinn, was man mit dem Java API machen kann, über Sockets, Dialoge, Grafikbearbeitung, godlike I/O und alles Plattformunabhängig.
Nicht ACE für Sockets, boost für Threads, xyz für blubb, ... irgendwie so in der Art.
Ich habs lieber aus einem Guss.Ist aber eher OT, da es eben keine System-APIs sind...
Das WinAPI stirbt übrigens irgendwann in seiner jetzigen Form.
-
Optimizer schrieb:
Das WinAPI stirbt übrigens irgendwann in seiner jetzigen Form.
Was tut das nicht..?!?
-
Du kleines TGGC-Abbild.
Korrektur: Das WinAPI stirbt bald.
-
Optimizer schrieb:
Du kleines TGGC-Abbild.
Falsch. Er ist ein Abbild von mir.
Nein. Er __ist__ es.
Ich nicht.
Ich bin nur ein Ober-Spammer.
Kennst das ja.
:p
BTW: Ihr habt doch nicht etwa den 43-seitigen TGGC-Monster-Thread zugemacht?!?!?!
-
SideWinder schrieb:
Geschwindigkeit ist für dich Schönheit? Habe ich das Posting nicht verstanden?
nein, sicher nicht.
ich habe mit einer dreistufige "angenommen..."-kaskade den durchaus sehr unwahrscheinlichen fall karikiert, daß jemand genau diese preferenzen hat. es sind bestimmt mehr als 100000 fast gleichwertige preferenzen in der frage, was "schön" ist, denkbar. vermutlich werden die 100000 kombinationsmöglichkeiten der bewertungen der nur ganz wesentlichen aspekte der schönheit von schnittstellen zu unser aller trauer auf nur unter 100 apis abgebildet werden müssen. das ist eigentlich ein grund zum weinen. aber leider ist es nun einmal so, daß zur zeit mehr wünsche existieren als betriebssysteme. wir gehen ein in die geschichte als die schreckliche zeit, da man in der betriebssystemauswahl beschränkt war. es gab nur 5 stück (die man benutzen konnte) und nicht tausende (wie pullover heute).was würdest du sagen auf die frage, was der schönste Pullover ist? du könntest auch nur einen speziellen fall einschränken, wenn einer auf gute wärmeisolation etc wert kegt. aber allagmein ist das nicht beantwortbar.
-
Sgt. Nukem schrieb:
BTW: Ihr habt doch nicht etwa den 43-seitigen TGGC-Monster-Thread zugemacht?!?!?!
Doch, habe ich! Muahahahaha!!
-
Alle sind hässlich. Manche sogar potthässlich.
-
volkard schrieb:
was würdest du sagen auf die frage, was der schönste Pullover ist?
Das ist der Pullover den ich gerade trage
SideWinder schrieb:
@kingruedi: Nein POSIX und OS/2 sind zwei eigene Sub-Systeme. So wie Win32 ein Sub-System von WinNT ist.
MfG SideWinder
Das OS/2- und POSIX-subsystem sind aber über das win32-subsystem implementiert, jedoch kann ein Programm immer nur eines der subsystems verwenden.
Ein Programm welches das OS/2- oder das POSIX-subsystem verwendet kann allerdings keine win32-Funktionen aufrufen.