Seite 1 von 2

Verfasst: Samstag 10. Mai 2008, 21:02
von Hannes-Spz
Übrigens: GCC ist doch auch Opensource. Das war ein komisches Argument von "Hannes-Spz".
:oops: /ubuntuuser
total verdrängt - ja - hab davon gehört, dass er auch opensource ausspuckt.
aber soweit ich das von M$win kenne, kommt bei einer .obj, .exe oder .dll immer nur unleserlicher bytecode raus - egal wie bekannt oder durchsichtig die routinen des compilers sind - man kann es nicht ohne weiteres umschreiben - nur mit u.a. von dir genannten methoden...

Verfasst: Samstag 10. Mai 2008, 22:09
von Leonidas
Hannes-Spz hat geschrieben:total verdrängt - ja - hab davon gehört, dass er auch opensource ausspuckt.
Hu? Also der GCC produziert nicht opensource sondern nativen Code, der von der betreffenden CPU ausgeführt werden kann, nicht irgendwelchen Bytecode. Microsofts C++ Compiler macht das nicht anders.

Und das Lisp schwer zu lesen ist (mir schon klar dass das scherzhaft gemeint ist), finde ich gar nicht mehr so sehr als wie noch vor 2 Jahren. In der Regel ist er ja eingerückt (und wenn nicht kann man ihn einrücken lassen, was bei Python so nicht möglich ist) und ein Editor highlightet die einzelnen S-Expressions auch entsprechend. Da gibt es durchaus Konstrukte in Scala oder Haskell deren Funktionsweise schwerer intuitiv zu ergründen sind. Ist natürlich meine Meinung, YMMV.

Verfasst: Samstag 10. Mai 2008, 22:35
von EyDu
@Hannes-Spz: Lies dir doch bitte einfach mal den Wikipedia-Artikel zu Open Source durch. Es ist zwar toll, dass du deine eigene Definition hast, aber die stimmt nicht so richtig mit dem allgemeinen Sprachgebrauch überein.

Verfasst: Samstag 10. Mai 2008, 23:15
von Hannes-Spz
@EyDu:
hm, du meinst:
die sprache selbst ist weniger opensource - da der quellcode nur teilweise ohne weiteres direkt vom endbenutzer auszulesen ist.
das ist auch mein kriterium für opensource (hauptsächlich)
hab ich recht?
nun, ich hab mir den artikel angeschaut:
Die Software (d. h. der Quelltext) liegt in einer für den Menschen lesbaren und verständlichen Form vor
Die Software darf beliebig kopiert, verbreitet und genutzt werden
Die Software darf verändert und in der veränderten Form weitergegeben werden
punkt 1:
wenn es nicht gerade pyc dateien sind, so sind sie lesbar nach der definietion
punkt 2 und punkt 3:
das ist in python kein problem, ob man es darf - nungut - wie viele leute haben sich photoshop wirklich gekauft? wieviele aber haben die vollversion? es ist bei solchen projekten sicherlich schwer, sie zu vervielfachen oder zu verbreiten und noch schwerer, sie zu verändern, wohingegen es in python unter o.g. bedingung ein kinderspiel ist.
aber es geht ja nicht darum, dass es nur einfach ist, es geht um die erlaubnis. doch vorher muss ich nochmal auf meine zuvor geäußerte meinung zurückkommen - "wer sicherheit will, muss was dafür tun" - siehe: man soll gar nicht erst python verwenden, wenn man seinen quellcode nicht preisgeben will. aber selbstschuld ist hier auch nicht am rechten platz - ich glaube schon gesehen zu haben, dass jemand sein py-script rechtlich geschützt hat, aber das muss ja nichts heißen:

@leonidas:
sry - fehlinformation oder zustand geistiger umnachtung, vielleicht habe ich es damals nicht richtig kompilliert, jedoch bin ich mir sicher, dass ich das produkt ohne besondere umstände lesen konnte...
//Edit: (mir ist aber aufgefallen, dass ich noch nicht fest im unterscheiden von bytecode und nativem code bin... falls es einen unterschied gibt :shock: aber rechnet mir das jetzt bitte nicht als grund an, mich zu kritisieren - es geht um etwas anderes)
verzeihung für die fehlinformation.

dennoch @ehdu:
ich wüsste nicht, warum du mich auf die seite verwiesen hast, da ich doch klar und deutlich geschrieben habe, dass dies nur mein hauptkriterium ist - und wie geschrieben, ist es einfach, eine py zu verändern, zu kopieren und zu verbreiten - dafür ist es python
und vielleicht nochetwas:
vielleicht habe ich das wieder mal falsch verstanden:
Wikipedia-OSD hat geschrieben: Die OSD-Ziff. 8 besagt, dass die gewährten Rechte nicht davon abhängig gemacht werden dürfen, dass das Programm Teil einer bestimmten Distribution ist. Es muss frei bleiben, auch wenn es von dieser Distribution getrennt wird.
und
Wikipedia-OSD: OSI-zertifizierte Lizenzen hat geschrieben:Python-Lizenz ([8]),
ich denke, dass man hier gerichtlich eine chance hat, sich aus der raubkopierangelegenheit rauszureden, wenn man den code von einem python-anfänger klaut :wink:

nehmts nicht persönlich - ich versteh nur nicht, warum ich darauf verwiesen wurde (bzw. warum ich damals meien code noch lesen konnte oO aber ich glaube, dass ich das nie mehr erfahren werde)

danke für folgende antworten und vergangende berichtigungen
liebe grüße
hannes

Verfasst: Sonntag 11. Mai 2008, 05:05
von Leonidas
Ich habe jetzt eigentlich keine Zeit auf alle deine Argumente einzugehen, denn ich habe eine lange, sogar durchaus produktive Nacht mit JavaScript und mootools hinter mir aber eine Sache wäre herauszustellen:

Die Python-Lizenz (PSF-Lizenz) ist nur die Lizenz unter der der CPython-Interpreter steht, wie Python-Code überhaupt lizensiert wird, steht den Autoren frei. Die können es unter die MIT-Lizenz stellen, unter GPL oder auch unter eine propietäre Lizenz. Nicht aber unter die PSFL, die ist nämlich nicht wiederverwendbar. Sie wiederzuverwenden ist auch sinnlos, stattdessen würde ich eher zur Apache License raten.

Verfasst: Sonntag 11. Mai 2008, 09:19
von EyDu
Bei Open Source geht es, wie der Name ja schon sagt, um den Quellcode(SOURCE). Dabei ist es egal, was nach einem Kompiliervorgang am Ende für eine Code rauskommt. Du kannst denn Code immer noch unabhängig dazu online Stellen. Und das funktioniert sowohl für in C++ als auch in Assembler geschriebene Programme. Wenn du dich ein wenig umschaust, wirst du eine Menge in C++ realisierte Open-Source-Projekte finden.

Verfasst: Sonntag 11. Mai 2008, 09:25
von Hannes-Spz
so langsam wirds klar, aber ein bisschen steh ich noch auf dem schlauch - ist python denn NICHT geeignet für opensource-pojekte? das ist doch meine einzige aussage - dass es dafür geeignet ist. ist das falsch?

Verfasst: Sonntag 11. Mai 2008, 09:35
von lunar
Hannes-Spz hat geschrieben:so langsam wirds klar, aber ein bisschen steh ich noch auf dem schlauch - ist python denn NICHT geeignet für opensource-pojekte? das ist doch meine einzige aussage - dass es dafür geeignet ist. ist das falsch?
*Jede* Sprache ist für freie Programme geeignet, sogar brainf*ck, auch wenn die meisten mit dem Code nichts anfangen können ;)

Du hast vorhin aber eine sehr eigenwillige Definition von Open Source gegeben, wonach jedes Programm Open Source wäre, dessen Kompilat man lesen könne. Diese Definition deckt sich aber nicht mit dem, was man gemeinhin unter "Open Source" versteht.

Open Source bezieht sich auf die Lizenz, unter der der *Quellcode* steht. Das resultierende Kompilat ist für die Lizenz des Quellcodes völlig unerheblich. Python ist also eine OpenSource-Sprache, weil der Quellcode der Referenzimplementierung CPython unter einer freien Lizenz steht, und nicht weil man aus Python-Quellcode resultierenden Bytecode relativ trivial rückübersetzen kann.

Verfasst: Sonntag 11. Mai 2008, 10:12
von sma
(Ich doziere doch so gerne, sorry ;)

Bytecode heißt so, weil die Maschinenbefehle typischerweise jeweils 1 Byte groß sind. Das ist sehr kompakt. Ein traditioneller Forth-Interpreter beispielsweise hat Befehle (eigentlich Sprungadressen), die ein Maschinenwort (z.B. 2 Byte auf einer 16-bit-Maschine) groß sind. Ein CISC-Prozessor wie der 80x86 hat's gemischt, ein RICS-Prozessor (etwa SPARC) hat meist einheitliche und große Befehle. Mit Bytecode meint man außerdem meist einen Befehlssatz für einen virtuellen Prozessor. Eigentlich ist auch der x86-Befehlssatz für einen virtuellen Prozessor, den längst haben die modernen Intel-Prozessoren intern einen anderen Befehlssatz und interpretieren die traditionellen Befehle durch Microcode-Makros. Man spricht hier dennoch auch von Maschinencode.

Assembler ist übrigens eine für Menschen lesbare textuelle Umschrift der Maschinenbefehle, also z.B. `LD HL, 1234H` statt der Bytefolge `213412`. Makro-Assembler fügt dann da noch einfache Abstraktionen wie das Benennen von Sprungmarken und Codeblöcken hinzu.

GCC spukt kein "Opensource" aus. GCC spuckt Maschinencode aus, im Fall von gcj auch Bytecode für die Java virtuelle Maschine (JVM). Möglicherweise gibt es andere Endstufen, ich meine mich an eine für die LLVM zu erinnern.

Eine Opensource-Lizenz kann es nur für den Quelltext geben, den man mit GCC verarbeitet hat. Diese Lizenz kann der Urheber (also Schreiber) des Quelltexts ausgeben. Was der GCC damit macht, ist unerheblich.

.dll- oder .exe-Dateien enthalten neben diversen Verwaltungsinformationen für einen Linker, der symbolische Adressen zu Betriebssystemfunktionen beim Laden automatisch auflöst, auch nur Maschinencode und diesen kann man mehr oder weniger einfach analysieren. Wer etwa in seinem Programm einen Kopierschutz einbauen will, der ungefähr so funktioniert, hat schon verloren:

Code: Alles auswählen

gültig = komplizierteLizenzBerechnung()
if not gültig:
    showDialog("Lizenz ist ungültig")
	exit(1)
So was ist leicht zu finden und man muss nur ein Byte tauschen, nämlich das von dem "jump-zero"-Befehl in einen "jump-non-zero"-Befehl, denn meist haben Prozessoren beides. Anders gesprochen: Man muss das "not" entfernen, vielleicht kann man auch diesen Befehl mit einem "no-op"-Befehl überschreiben.

Ich halte es in dem Wikipedia-Artikel für sehr unglücklich, Compiler zu erwähnen. Denn ob und wie eine Programmiersprache kompiliert wird, ist in der Regel ein Implementierungsdetail. Ob Python kompiliert wird oder nicht spielt keine Rolle, Hauptsache, das Verhalten ist wie es sein muss. Die meisten Programmiersprachen nutzen eh Mischformen, etwa in dem sie in einen Zwischencode kompilieren, der dann leider interpretiert werden kann.

Das beliebige Kopieren leitet sich IMHO nur aus dem Fakt ab, dass der Quelltext verfügbar sein muss. Da ich damit theoretisch ein neue Binärversion erstellen könnte, kann ich auch gleich diese kopieren. Es ist aber keine eigenständige Forderung. Und natürlich darf ich die Software verkaufen. Es macht eventuell nur nicht so viel Sinn, da sich mein Kunde die Software aus dem Quelltext auch selbst erstellen könnte oder dies einen dritten machen lassen kann, der es billiger oder kostenlos macht.

Übrigens: Es gibt keine Sicherheit. War das Überwinden des Xbox-Schutzes noch recht einfach, weil die Entwickler einen dummen Fehler gemacht hatten, der die "chain of trust" unterbrach, musste man für die Xbox-360 schon mal einen Prozessor Schicht für Schicht unter einem Elektronenmikroskop betrachen (wenn ich das richtig in Erinnerung habe) um so an Schlüssel zu kommen. Denn eigentlich treibt die Xbox-360 einen sehr hohen Aufwand damit etwa der Startcode niemals den Microprozessor verlässt - würde er im Hauptspeicher liegen, könnte man den Bus zwischen Prozessor und Speicher abhorchen. Am besten macht man seine Software so unattraktiv oder so günstig, dass niemand sich die Mühe macht, da einen Schutz zu umgehen. Oder aber, man hat so ein Ansehen, dass die Leute sich moralisch verpflichtet fühlen, die Software auch zu bezahlen. Das ist der IMHO beste Weg.

Schließlich: Python ist natürlich geeignet für Opensource-Projekte. Auch Microsofts C++-Compiler ist es. Wie kommst du, Hannes-Spz, zu dieser Schlussfolgerung. Die Lizenz des Compilers oder Interpreters färbt in der Regel nicht auf das ausgeführte Programm ab - oder umgekehrt.

Stefan

Verfasst: Sonntag 11. Mai 2008, 11:21
von Himalius
danke nochmal für die hilfe, ich hab allerdings von nem bekannten ein programm gekriegt, das das kann.
danke nochmals

MfG Himalius

Verfasst: Dienstag 13. Mai 2008, 17:21
von sechsrad
Es gibt keine Sicherheit. War das Überwinden des Xbox-Schutzes noch recht einfach, weil die Entwickler einen dummen Fehler gemacht hatten, der die "chain of trust" unterbrach, musste man für die Xbox-360 schon mal einen Prozessor Schicht für Schicht unter einem Elektronenmikroskop betrachen (wenn ich das richtig in Erinnerung habe) um so an Schlüssel zu kommen.
nicht mehr nötig. du kannst die x-box jetzt programmieren und aushorchen.
es gibt dafür jetzt einen schönen c-compiler zu kaufen.
die rechte der programme zur veröffnetlichung bleiben bis zum erwerb einer lizens für das entwickelte programm immer bei ms.

Verfasst: Dienstag 13. Mai 2008, 19:07
von Leonidas
Das es XNA gibt ist schon klar, aber das ermöglicht einem nicht in dem Maß kontrolle über die Hardware um etwa ein Linux draufzubooten. Darum ging es.