Am 17.01.2018 um 19:36 schrieb Sven R. Kunze <srkunze@mail.de>:
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. Stattdessen höre ich immer nur: "du machst das falsch", "asyncio ist die Zukunft" etc.
Mal ein anderer Gedanke dazu. Was wäre wenn die allermeisten Programmierer bis zu dem Zeitpunkt als das Internet im öffentlich/kommerziellen Bewusstsein angekommen war, also ca. 1995, ein ziemlich „isoliertes“ Verständnis ihrer Zunft (oder auch Kunst) hatten, einfach, weil ihr täglich Brot so simpel war, dass sie es immer mit schönen, seriellen Algorithmen auf SISD-Rechnern (single instruction single data) zu tun hatten? Seitdem gibt es langsam fast nur noch Multi-Core-Rechner, die in einer vernetzten Welt miteinander interagieren. In dieser hat man es mit Problemen zu tun, die es vorher einfach nicht oder nur für sehr spezialisierte Anwendungen/Entwickler gab. Heute ist „verteiltes“ Rechnen nicht mehr eine Sache für Wissenschaftler, sondern immer mehr täglich Brot für ganz normale Anwendungen und Firmen. Wo früher vielleicht eine MPI-Bibliothek benutzt worden wäre, verwendet man heute vielleicht Spark/Hadoop/Flink etc. mit entsprechenden Programmiersprachen dazu, die sich leicht(er) parallelisieren lassen, also funktionale wie z.B. Scala. Auf höherer Ebene gibt es Lösungen wie ZeroMQ u.a. von Peter Hintjens, der sehr eindrucksvoll über die unausweichlich zunehmende Bedeutung dezentraler Anwendungen geschrieben hat. Sinngemäß lautet eine Aussage von ihm, dass wir lernen müssen, solche Anwendungen zu schreiben, einfach, weil es kaum noch andere mehr geben wird. Und in solchen Anwendungen sind auch einige vermeintlich triviale Dinge wie I/O eben nicht mehr so trivial. Ein schöner Artikel dazu ist dieser hier, der auch auf asyncio eingeht: https://vorpus.org/blog/timeouts-and-cancellation-for-humans/ Natürlich gibt es immer mehrere Ansätze für alles, aber irgendwann konvergiert auch so einiges wieder, und ich finde es wenig hilfreich, wenn man die Methode, die man selbst gewohnt ist, als die allein glücklich machende für alle propagiert, oder dafür Anekdoten von „alten Männern“ bemüht. (Wenn man sich dazu zählt, darf man das sagen. :-) Ich könnte auch behaupte, ich habe Kollegen, die als Software-Architekten (Java/Scala) arbeiten und die mir sagen, „I’m too stupid for OOP“. Was sagt uns das, nicht viel. Mache ich also lieber nicht, auch wenn es stimmt. Python hat mit asyncio zumindest eine sehr aussichtsreiche Lösung direkt in der Sprache eingebaut. Die Verbreitung nimmt mit Sicherheit eher zu als ab. Und ich zumindest würde mich freuen, wenn es Python damit besser gelänge, auch in einem ganz bestimmten Bereich mit anderen Sprachen mitzuhalten, die von vorn herein dafür entwickelt wurden. Beste Grüße, Dinu