Welche OS-API ist am schönsten?



  • Und was ist jetzt flexibler??



  • Ich denke nicht, dass eine API flexibler ist, dadurch das man einer Funktion die Funktionalität von weiteren Funktionen unterordnet.

    Was ist wohl intuitiver?
    1.

    write(sock,"header",6);
    off_t n=5;
    sendfile(file,sock,&n,10);
    write(sock,"tail",4);
    
    TRANSMIT_FILE_BUFFERS buf;
    buf.Head="header";
    buf.HeadLength=6;
    buf.Tail="tail";
    buf.TailLength=4;
    OVERLAPPED ov;
    ov.Internal=0;
    ov.InternalHigh=0;
    ov.Offset=5;
    ov.OffsetHigh=0;
    ov.hEvent=0;
    TransmitFile(sock,file,10,0,&ov,&buf,0);
    

    Ich finde ersteres eindeutig lesbarer und verständlicher, wenn man beide APIs nicht kennt.

    (btw. der Code ist ungetestet)



  • Hallo Leute!

    Ich habe laaange für BeOS in C++ programmiert und muss sage diese OO-API von BeOS war wirklich toll.
    Ich hab übrigends immer noch eine BeBox im Keller stehen.

    mfg



  • frenki schrieb:

    SirLant schrieb:

    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.

    Ein Programm das das OS/2 Subsystem verwendet *ist* ein OS/2 Programm. Windows stellt keine OS/2 APIs zur Verfügung, es stellt (oder stellte, ist glaube ich seit Win2K nicht mehr vorhanden) eine Laufzeitumgebung zur Verfügung die es ermöglicht native OS/2 Programme unter Windows laufen zu lassen. Allerdings deckt diese nur die uralten 16-Bit Teile von OS/2 ab, womit nur OS/2-Konsolenprogramme lauffähig sind.

    Eine API x ist doch immer eine Laufzeitumgebung für Programme die x verwenden, oder worin liegt da bei dir der Unterschied kann dir da gerade nicht ganz folgen.



  • @SirLant
    Eine API ist keine Laufzeitumgebung, sondern definiert einfach nur die programmiertechnische Schnitstelle zu etwas. In dem Fall hier die _direkte_ Schnitstelle zum Betriebssystem. 🙄



  • Ja das ist mir auch klar, aber was ist an einer Laufzeitumgebung dann anderst? Dort hab ich ja auch einfach ne API welche so aufgebaut ist wie auf dem Originalsystem und diese API ist ja auch nur ne Schnittstelle zum OS.

    Sorry, vielleicht bin ich gerade auch nur schwer von Begriff, aber mir leuchtet es im Moment einfach nicht ein 😕



  • alter Hase schrieb:

    Hallo Leute!

    Ich habe laaange für BeOS in C++ programmiert und muss sage diese OO-API von BeOS war wirklich toll.
    Ich hab übrigends immer noch eine BeBox im Keller stehen.

    mfg

    Kannst ja weiterschreiben. Such mal nach Zeta im Internet.

    Liebe Grüße
    Real



  • SirLant schrieb:

    Eine API x ist doch immer eine Laufzeitumgebung für Programme die x verwenden, oder worin liegt da bei dir der Unterschied kann dir da gerade nicht ganz folgen.

    Der Unterschied in diesem Fall ist, dass OS/2 ein anderes Executable-Format verwendet als Windows. OS/2 verwendet Liniear Executable (LX). Windows Portable Executable (PE). Die OS/2-Laufzeitumgebung von Windows kann die LX-Executables laden und ausführen.



  • Eine Laufzeitumgebung ist einfach mehr, als eine API. Laufzeitumgebung könnte man vielleicht als Zusammenfassung der zur Laufzeit des Programmes existierenden ABIs zusammen fassen.

    Real schrieb:

    Kannst ja weiterschreiben. Such mal nach Zeta im Internet.

    Da reicht auch Fernseher anmachen und RTL-Shop gucken 😉



  • vielleicht ganz interessant:

    http://www.sysinternals.com/ntw2k/info/ntdll.shtml

    In Windows NT the Native API, its system call interface, is hidden from programmers behind higher level APIs such as Win32, OS/2, POSIX or DOS/Win16.


Anmelden zum Antworten