Vom Python kompilieren, Code klauen und so

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Hase
User
Beiträge: 101
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Hallo,

sehr oft lese ich hier die Frage, wie Python-Code kompiliert werden kann. Dahinter steckt einerseits, es dem Anwender so bequem wie möglich zu machen, andererseits wohl aber auch die Befürchtung, der Code könnte irgendwie eingesehen und geklaut werden.

Mich würde mal interessieren, wie andere Pythonisten das sehen. Ist das Klauen von Code ein wirkliches Problem oder existiert das nur in den Gedanken des Programmierers?

Sicher, es gibt kleine Apps, mit denen sich die Entwickler dumm und dämlich verdienen und dann werden sie für Milliarden von Google, Facebook & Co aufgekauft. Aber trifft das auch auf die "normale" Anwendung zu?

Ich selbst, eher Hobbyprogrammierer, habe mal vor Jahren ein Programm (TurboGears/LaTeX) entwickelt und an mehrere weitere Firmen weiterverkauft. Mein damaliger Chef meinte, es müsse unbedingt geschützt werden. Ich habe es aber offen gelassen, auch in der heimlichen Hoffnung, jemand könnte mal mit in die Entwicklung einsteigen. Aber da kommt nichts. Die Benutzer sind nicht in der Lage, auch nur die kleinste Änderung vorzunehmen, nicht mal ein einzelnes Wort in einem LaTeX-Template, obwohl ich die Anwender als einigermaßen Computeraffin einschätzen würde. Programmieren ist wohl nur was für eine ganz kleine Minderheit.

Wie seht ihr das? Sind die Befürchtungen, der eigene Code könnte geklaut werden, maßlos überzogen, oder ist die Programmierwelt ein Haifischbecken, bei dem man auch seinem Tischnachbarn nicht trauen darf?

H.
BlackJack

@Hase: In der Regel sind die Befürchtungen überzogen. Der meiste Code braucht nicht geklaut zu werden, weil man ihn einfach neu schreiben kann, also von aussen schauen wie sich das Programm verhält und das Verhalten nachprogrammieren. Der wenigste Code ist tatsächlich ”Raketenwissenschaft”, also so clever und toll das das nicht jeder mittelmässige Programmierer selber schreiben könnte. Viel von solchem cleveren Code steckt bereits in Bibliotheken, dass heisst selbst wenn man das nicht selber schreiben könnte, findet sich eine Bibliothek die man einfach benutzen kann.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Die meisten oder sogar alle Apps die in Java geschrieben sind lassen sich genauso dekompilieren ;)
Sogar der Stuxnet Virus wurde teilweise dekompiliert.
Und hier ist es nun wie oben bereits erwähnt, das meiste findest du offen im Netz oder kannst es selbst schreiben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hase hat geschrieben:sehr oft lese ich hier die Frage, wie Python-Code kompiliert werden kann. Dahinter steckt einerseits, es dem Anwender so bequem wie möglich zu machen, andererseits wohl aber auch die Befürchtung, der Code könnte irgendwie eingesehen und geklaut werden.
Wovor dieses "kompilieren" nur sehr bedingt schützt.
Hase hat geschrieben:Mich würde mal interessieren, wie andere Pythonisten das sehen. Ist das Klauen von Code ein wirkliches Problem oder existiert das nur in den Gedanken des Programmierers?

Sicher, es gibt kleine Apps, mit denen sich die Entwickler dumm und dämlich verdienen und dann werden sie für Milliarden von Google, Facebook & Co aufgekauft. Aber trifft das auch auf die "normale" Anwendung zu?
Denkst du die Software hinter Instagram oder WhatsApp ist das warum Facebook so riesige Beträge ausgegeben hat? Ich würde sagen die Software lässt sich für einen Bruchteil der Kosten nachprogramieren, da ist Code klauen gar nicht notwendig. In dem Fall geht es um die User die das Produkt nutzen. Und die meisten Apps sind nunmal auch keine Raketenwissenschaft. Mit schneller werdenden Computern ist es auch immer weniger notwendig komplexe Algorithmen zu nutzen wenn eine naive Lösung mit schlechter Laufzeit auch oft ausreicht.
Hase hat geschrieben:ist die Programmierwelt ein Haifischbecken, bei dem man auch seinem Tischnachbarn nicht trauen darf?
Die Anzahl der Open Source-Pakete an denen entwickelt wird, die Anzahl der Supportforen und Initiativen für Programmierer würde dagegen sprechen :-) Wäre doch sonst schlecht die Konkurrenz ausbilden zu helfen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
it-pro
User
Beiträge: 5
Registriert: Donnerstag 3. April 2014, 20:54

Das ist wirklich alles etwas übertrieben. Immerhin gibt’s die meisten Codes sogar OpenSource. Eben auch aus dem Grund, dass man die meisten Programme ohne größeres Wissen einfach selbst nachprogrammieren kann. Anders sieht es bei komplexen Programmen aus, in denen wirklich die Kreativität und das Herzblut des Programmierers stecken.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Naja, der Knackpunkt ist ja meistens die Nutzerfreundlichkeit. Das scheint mir, wenn ich mir manche Open-Source-Programme anschaue, wesentlich schwieriger als das Programmieren selber zu sein :D
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hellstorm hat geschrieben:Naja, der Knackpunkt ist ja meistens die Nutzerfreundlichkeit. Das scheint mir, wenn ich mir manche Open-Source-Programme anschaue, wesentlich schwieriger als das Programmieren selber zu sein :D
Ein guter Programmierer sorgt nicht nur dafür, dass sein Programm korrekt funktioniert, sondern auch für ein gutes Design der Schnittstelle, was somit die Nutzerfreundlichkeit direkt betrifft. Und das unabhängig davon, ob es sich dabei um die Ebene der Programmiersprache oder ein Kommandozeilen-Interface oder eine GUI handelt. Gut, das Programmieren einer ansprechenden GUI überlässt man manchmal vielleicht doch lieber anderen Leuten... ;)
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Jo, aber das Problem ist, dass sich bei den meisten Open-Source-Projekten nur Programmierer versammeln, die oft nur ihr eigenes Problem lösen wollen.

In einer Firma könnte man jetzt „Mach das, dafür wirst du bezahlt“ sagen, aber bei OSS geht das ja nicht. Oft habe ich auch das Gefühl, dass Nicht-Programmierer in solchen Projekten nicht wirklich ernst genommen werden.
wirrbel
User
Beiträge: 2
Registriert: Donnerstag 1. Mai 2014, 12:04

Hellstorm hat geschrieben:Jo, aber das Problem ist, dass sich bei den meisten Open-Source-Projekten nur Programmierer versammeln, die oft nur ihr eigenes Problem lösen wollen.

In einer Firma könnte man jetzt „Mach das, dafür wirst du bezahlt“ sagen, aber bei OSS geht das ja nicht. Oft habe ich auch das Gefühl, dass Nicht-Programmierer in solchen Projekten nicht wirklich ernst genommen werden.
Ganz so kann man das nicht stehen lassen. Viele Programmierer werden für die Entwicklung von Open Source Software von Firmen bezahlt (Linux Kernel z.B.). Andere Projekte entstehen weil ein Programmierer Erfahrung sammeln will oder Spaß am Entwickeln hat. Viele Bereiche ovn Open Source Software sieht der Benutzer kaum weils Bibliotheken sind, oder Systemprogramme.

Nun gibts natürlich einige Programme/Software mit User Interface die wirklich als Hobbyprojekte entstehen. Ich glaube ich höre da eine gewissen Frustration raus, wenn diese Software den Erwartungen nicht entspricht. Das hat aber mehrere Gründe:
  • Benutzeroberflächen sind brutal schwierig
  • Du hast andere Interessen als die Entwickler
  • Die Entwickler opfern ihre kostbare Freizeit nicht für deine Vorstellungen (legitim)
  • Features und Benutzbarkeit sind oft konträr. VIele Einstellmöglichkeiten verwirren den User, aber der Entwickler braucht diese Einstellungen oder will sie haben. Hier sind Firmen mit einer UI Abteilung eventuell besser aufgestellt. Die Gefahr ist, dass man dann aber ein kastriertes Programm hat.
Zum eigentlichen Thema: Es gibt wenig Code der tatsächlich "stehlbar" ist im eigentlichen Sinne. Der meiste Code ist einfach viel zu spezifisch und zeichnet sich nicht dadurch aus, dass er genialerweise schwierige Probleme löst. Hinzu kommt, dass etwa dekompilierter Code auch von Kommentaren und je nach Option von Docstrings bereinigt ist. Am Ende hat man einfach unwartbaren Code, eventuell ohne Test Suite und mit Problemstellen von denen man nicht weiß. Abseits von Bytecode-kompilierten Sprachen wird das dekompilat noch unübersichtlicher.

Der Erfolg von Open Source in Unternehmen ist wohl auch darin begründet, dass es einfach wirtschaftlicher ist eine Codebasis offen zu teilen, gemeinsam zu maintainen. Je nach Lizenz könnte Firma X sich ja auch entscheiden etwa CPython zu kopieren, daran rumzuschrauben und die Änderungen nicht zu veröffentlichen. Kommt aber so wohl kaum vor, weil man dann seinen privaten Fork auch pflegen muss. Also stellt man lieber einen Pull Request und schickt Verbesserungen/Bugfixes zurück ins Hauptprojekt.

Nicht zuletzt sind in den letzten Jahren zwei Dinge deutlich geworden: Zum einen wird viel mittlerweile als Website mit Server- und Clientseitigem Code realisiert. Den Servercode kann man dabei auch in kompilierter Form nicht einsehen. Der Client Code (Javascript) ist direkt lesbar und kopierbar, dennoch hört man wenig über Probleme mit "Code-Diebstahl". Das eigentliche Problem in der Softwareentwicklung ist eine für den Kunden "Runde" Lösung zu präsentieren, nicht den eigentlichen Code zu schreiben.
Antworten