Sven R. Kunze schrieb am 17.01.2018 um 19:36:
On 16.01.2018 19:55, Stefan Behnel wrote:
Sven R. Kunze schrieb am 15.01.2018 um 20:55:
Sockets sind meiner Meinung nach ein viel besseres Abstraktionsniveau als meinen Quellcode überall mit diesem dämlichen async und await zu spicken.
Ich verstehe nicht, warum das ein Argument dafür sein sollte, sich seinen eigenen I/O-Loop zu schreiben.
Weil, wie du an anderen Antworten hier im Thread und auch an verlinkten Resourcen merkst, dies ein riesengroßes Problem darstellt.
Da verstehe ich nicht, warum nicht proaktiv auf dieses Problem eingegangen wird. Kein normaler Programmierer will alle seine Bibliotheken auf eine zweite Programmiersprache umschreiben. Das ist das Zwei-Welten-Problem bei asyncio.
Und anstatt meinen Code speziell für asyncio zu schreiben, ist es dann besser, ihn speziell für select() zu schreiben? Der "Vorteil" erschließt sich mir absolut nicht. Bei asyncio brauche ich den meisten Code *gar nicht* zu schreiben, weil es für fast alles schon fertige Tools und Bibliotheken gibt, die ich dank der allgemeinen Schnittstelle einfach ineinander stöpseln kann. Bei einem blanken select() (oder epoll() usw.) fange ich dagegen komplett bei Null an, weil ich damit faktisch auf der Socket-Ebene festhänge, also ganz, ganz unten. Dann brauche ich erst einmal Tools, die inkrementell auf Sockets lesen und schreiben können, und die muss ich dann auch noch mühsam orchestrieren. Also muss ich genau die (fehleranfällige) Arbeit selbst machen, die mir ein I/O-Loop fertig (und fertig debuggt) abnimmt. Für nichts anderes ist doch ein I/O-Loop da. Wenn dich jemand bittet, eine Webseite zu entwickeln, ist dann dein erster Schritt, das HTTP-Protokoll zu implementieren? Ganz ehrlich, die Begriffe "asyncio", "async/await" und "kooperatives Multitasking" haben zwar durchaus etwas miteinander zu tun, sind aber nicht gleichbedeutend. Sie sind alle nur (sehr allgemeine) Werkzeuge, mit denen sich alles Mögliche machen lässt. Deine bisherige Kritik scheint sich an einer ziemlich schmalen Kombination der drei Begriffe aufzuhängen, die weder Nutzen noch Anwendungsbereich auch nur annähernd abdeckt. Stefan