Antivirenprogramme sind grundsätzlich Müll, und überreagieren bei jeder Form von Wrapper oder EXE-Packer.

Am besten du deinstallierst das schnell wieder! Schützen wird es dich sowieso nicht vor aktueller Malwer und außerdem reißen Antivirenprogramme ständig Sicherheitslöcher ins System, die eine Infektion durch Schadsoftware erst ermöglichen.

Achte lieber auf ordentliche Software-Updates, nutze Adblocker und eine Art Sandbox (z. B. Sandboxie) ... dann bist du sicherer als mit AV-Software!

...zur Antwort

Gute Entwickler ...

  • prüfen Fehlerfälle
  • und behandeln diese korrekt

Deshalb würde ein "Hello World" in Python so aussehen:

aimport sys

try:
    print('Hello, world!')

    sys.stdout.flush()
except:
    sys.exit(1)

Denn Funktionen, deren Ausführung nicht auf Erfolg geprüft wird, können auch gleich komplett weggelassen werden, weil überhaupt nicht sicher gestellt ist, ob sie jetzt erfolgreich verliefen, oder ein Fehler aufgetreten ist.

Im obigen Snippet ruft print() intern sys.stdout.write() auf, was im Fehlerfall eine Ausnahme wirft. Das gleiche gilt für flush().

Das mag bei "Hello World" übertrieben wirken, aber man kann sich ruhig angewöhnen immer und überall ausnahmslos alle Funktionsaufrufe auf Fehler zu prüfen. (Entweder über Exceptions oder Rückgabewerte.)

Leider machen das viele Entwickler quer durch alle Programmiersprachen nicht. Bei dingen wie print() wird man das u. U. verschmerzen können, aber wenn sich ein Programmierer diese schlechte Praxis angewöhnt, ist die Wahrscheinlichkeit hoch, dass er es auch bei malloc() (in C) vergessen wird.

Fazit: Funktionen, deren Ausführung nicht auf Fehler geprüft wird, können komplett wegfallen. Aber da in 99% aller Fälle das Programm dann nicht mehr so laufen wird, wie erwartet, sollte man sich einfach angewöhnen IMMER auf Fehler zu prüfen.

Die mit Abstand meisten Sicherheitslücken in Servern, Anwendersoftware und auf Mobilgeräten könnten einfach dadurch verhindert werden, wenn die Entwickler Funktionsaufrufe korrekt auf Fehler prüfen würden.

Und falls jetzt jemand meint: "Bei Hello-World ist das doch eh Wurst!", nein, ist es nicht.

Es gibt unter unixoiden Shells ein Tool mit dem schönen Namen "yes", und das tut nicht viel mehr, als einen String innerhalb von einer Schleife auszugeben. Das Werkzeug "echo" ist sogar noch primitiver. Und dabei muss natürlich geprüft werden, ob ein Schreiben nach stdout und ein anschließendes fflush() erfolgreich war.

Zumal nicht immer automatisch geflusht wird, wenn ein "\n" geschrieben wird. Das kann man über eine Million Wege in der Ausführungsumgebung ändern, z. B. über "stdbuf".

Also als erfahrener Entwickler ...

  • prüft man ordentlich auf Fehler
  • behandelt diese entsprechend
  • sollte sich diese Praxis überall angewähnen
  • und zwar Sprachübergreifend

Ansonsten noch viel Spaß! :)

...zur Antwort

Glückwunsch, du hast das Internet entdeckt!

Lass dir sagen, dass es all das schon vor über 20 Jahren gab, und sogar lange davor auf VHS schon Gang und Gäbe war. :)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.