Ist Boo das bessere Python?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
snafu
User
Beiträge: 6834
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Was für ein komischer Halbaffe. Sah den jetzt zum ersten mal live. "DEVOLOPERS! DEVELOPERS! DEVELOPERS!!!" (Muhar, die Stelle werd ich mir gleich zum dritten Mal ansehen, der Rest ist langweilig)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@philistion Es gibt auch ein Patent auf den Doppelklick, für Ajax gibts sicherlich auch eins und das dürfte man ohne Probleme weiterführen können. Das Patentargument ist keins.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Sicherlich gibt es gewisse Grauzonen, aber der Kern von Mono ist definitiv frei.

Und im Übrigen soll sich der Ballmer net so über Linux anpissen. Schließlich ist Microsoft inzwischen der drittgrößte Linux Anbieter nach Red Hat und Novell, was den Umsatz mit Linux Lizenzen angeht.

Und wie DasIch schon gesagt hat. Es gibt praktisch nichts in der EDV Welt, was nicht irgendwie patentiert ist. Praktisch jedes Element einer GUI dürfte irgend ein Patent haben. Und nur weil Python unter einer liberalen Lizenz steht heißt das nicht, dass Python nicht auch irgendwelche Patente oder Lizenzen nutzt. Nur bisher hat keiner danach gefragt.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

snafu hat geschrieben:
Was für ein komischer Halbaffe. Sah den jetzt zum ersten mal live. "DEVOLOPERS! DEVELOPERS! DEVELOPERS!!!" (Muhar, die Stelle werd ich mir gleich zum dritten Mal ansehen, der Rest ist langweilig)
Ich auch. Dieses "Dev..." ist echt seltsam

*edit*
http://www.youtube.com/watch?v=wvsboPUjrGc Steve Ballmer going crazy

*edit*
http://www.youtube.com/watch?v=bb_9KXyejTU er mag das wort einfach
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

burli hat geschrieben:Und wie DasIch schon gesagt hat. Es gibt praktisch nichts in der EDV Welt, was nicht irgendwie patentiert ist. Praktisch jedes Element einer GUI dürfte irgend ein Patent haben. Und nur weil Python unter einer liberalen Lizenz steht heißt das nicht, dass Python nicht auch irgendwelche Patente oder Lizenzen nutzt. Nur bisher hat keiner danach gefragt.
Es besteht ein großer Unterschied dazwischen, ob es irgendwo ein absurdes Patent gibt, das vielleicht vor vielen Jahren die ein oder andere Funktionalität vom absurden US-amerikanischen Patentamt zugesprochen bekommen hat, aber niemals eingeklagt werden kann, da "jede" Firma der Welt, auch die ganz großen, auf diese Verfahren setzen und nicht gewillt sind hier noch nachzuzahlen.
Die Wahrscheinlichkeit, dass alle Firmen der Welt von einer einzigen Firma verklagt werden, weil diese angeblich die Fenstertechnologie entwickelt hätte, geht gegen null.

Ganz anders schaut es hingegen bei Produkten wie Mono aus, die von einer Firma dezidiert mit einer proprietären Lizenz entwickelt wurden.
Microsoft hat schon in der Vergangenheit bewiesen, wie sie zur Open Source Bewegung stehen.
Man verweise im Übrigen nur auf den Fall SCO. Die haben sich mit Unterstützung Microsofts mit den ganz großen Firmen wie IBM, etc. angelegt um angebliche Unix-Patentrechtsansprüche im Linux-Kernel einzuklagen.
Von SCO ist heute nicht mehr viel übrig außer Rauch und Asche.

Ich finde, es gibt so viele freie Projekte, die nicht von solchen Problemen betroffen sind und die mindestens genauso plattformunabhängig und meistens sogar noch um einiges ausgereifter sind als proprietäre Lösungen. Warum also eine Technologie eines Konzerns verwenden, der alles daran setzt, sein Monopol weiter auszubauen.

Kann mir irgendjemand Gründe nennen, warum man sich für C# , .Net bzw. Mono entscheidet und nicht für Python (+py2exe u. psyco) oder Java?
Wo liegen da die Vorteile?

snafu hat geschrieben:Was für ein komischer Halbaffe.
Dieses Ballmer goes crazy Video schlägt alles, aber es scheint anzukommen bei den Mitarbeitern, sonst wäre er vielleicht nicht mehr dort wo er jetzt ist.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Du fragst nicht ernsthaft wo der Vorteil von C# - oder irgendeiner anderen nennenswerten Sprache - gegenüber Java liegt? Abgesehen davon ist Python Deployment unter Windows eine Katastrophe.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

philistion hat geschrieben: Kann mir irgendjemand Gründe nennen, warum man sich für C# , .Net bzw. Mono entscheidet und nicht für Python (+py2exe u. psyco) oder Java?
Wo liegen da die Vorteile?
Ich will mal meine subjektive Meinung zusammenfassen.

Python: schlechte Unicode Unterstützung (nicht alle Bibliotheken oder 3rd Party Sourcen nutzen per Default Unicode. Deshalb häufig umständliche Konvertierung nötig), schlechte Performance, keine (schlechte) Unterstützung von Multicore CPU

Java: Alle mir bekannten Java Programme sind Speicherfresser. Eine simple Applikation mit einem Hauptfenster und 1-2 Dialogen frisst 40MB. Die Startzeit von Java Applikationen sind einfach zu lang. Ob das an Java liegt oder unfähigen Programmierern kann ich nicht beurteilen. Ob Java Multicore unterstützt ist mir nicht bekannt.

.NET/Mono: Unicode ist Standard, moderater Speicherverbrauch, hohe Ausführungsgeschwindigkeit, Threading auf Multicore Systemen, Common Type System, um nur die wichtigsten zu nennen.

Warum mir die Punkte wichtig sind? Unicode und Multicore gehört die Zukunft. Außerdem geht der Trend derzeit zu kleineren Systemen mit reduziertem Speicher und wenig Rechenleistung (im Vergleich zu normalen Desktop PCs), aber teilweise auch mit mehreren Kernen.

Was spricht gegen Mono? Eine MÖGLICHE Intervention seitens Microsoft, von der ich nicht wirklich überzeugt bin, dass sie wirklich jemals stattfindet. Was den Vergleich mit SCO angeht: Microsoft hat die nötigen Technologien freigegeben. Ich bezweifle, dass dies bei den beklagten Technologien der Fall war. Die Panikmache gegen Mono ist Stallmann FUD
lunar

@philistion: Aus Deinem Beitrag sprechen Urteile vergangener Zeiten, als Microsoft noch böse(TM) war. So einfach ist das heute nicht mehr, wenn es das überhaupt je war …

.NET ist sicherlich patentbelastet, aber das gilt für jede größere Plattform, und ja, auch und insbesondere für Java. Sun hält diverse Patente an diversen Java-Technologien, und hat diese Patente auch schon rigoros eingesetzt, u.a. gegen freie Projekte (JBoss, iirc) und auch gegen Microsoft. .NET gibt es überhaupt nur deswegen, weil Sun mit der gezogenen Patentwaffe eine JVM-Implementierung durch Microsoft verhindert und Microsoft damit zur Entwicklung einer eigenen Plattform gezwungen hat.

Diverse, in der freien Welt verbreitete Standards sind auch patentbelastet, u.a. das so beliebte ODT. Auch daran hält Sun diverse Patente und nutzt diese, um diesen angeblich freien Standard strikt zu kontrollieren. In dieser ganzen Mono-Patent-Diskussion schwingen vor allem viele alte Vorurteile mit, auf beiden Seiten, auch und vielleicht gerade bei Stallman.

In der Realität aber ist die Benutzung von Mono wahrscheinlich nicht riskanter als die anderer Technologien … patentbelastet ist mittlerweile so ziemlich alles. Es gibt bestimmt eine ganze Anzahl an Patenten auf Bytecode-Interpreter-Technologien, die man wunderbar gegen CPython einsetzen könnte, gäbe es da viel zu holen.

Der Vergleich zwischen .NET und Python hinkt. Python ist eine Sprache, und CPython keine Plattform, sondern nur eine Laufzeitumgebung für diese, eine Sprache. .NET aber ist eine Plattform, und zwar nicht nur für C#, sondern für allerlei verschiedene Sprachen.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

lunar hat geschrieben:Der Vergleich zwischen .NET und Python hinkt.
Deshalb wollte ich ja einen expliziten Vergleich zwischen Boo und Python, da beide von der Syntax ähnlich sind.

Ansonsten sind die Unterschiede auch nicht so groß. Beide Sprachen steht eine umfangreiche Klassenbibliothek zur Seite, beide Sprachen können auf unterschiedlichen Implementierungen laufen (Mono/.Net vs CPython/Jython/was auch immer). Selbst einen JIT für Python gibt es. Boo kann sowohl interpretiert, compiliert als auch interaktiv genutzt werden.

Alles weitere wie das Common Type System und die unterschiedlichen Sprachen sind dann nur noch schöne Beigaben, die man bei .Net/Mono hat.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

burli hat geschrieben:Python: schlechte Unicode Unterstützung (nicht alle Bibliotheken oder 3rd Party Sourcen nutzen per Default Unicode. Deshalb häufig umständliche Konvertierung nötig), schlechte Performance, keine (schlechte) Unterstützung von Multicore CPU
Na ja, Punkt 1 dürfte mit 3k hinfällig scheinen, wobei es dauern wird bevor alle Libraries das nutzen. Punkt 2. und 3. hast Du leider recht, da können wir nur warten und hoffen. Allerdings ist das multiprocessing-Modul echt super und der Overhead hält sich in Grenzen. Und dann gibt es noch pyparallel und MPI-bindings. Also, soo schlecht ist es nicht bestellt. Threading allerdings in Python ist performancemäßig oft :roll: ... na ja, das Thema GIL kommt oft genug.
edit: Hier vielleicht noch von Interesse: http://www.python.org/dev/peps/pep-3146/
burli hat geschrieben:Ob Java Multicore unterstützt ist mir nicht bekannt.
Zumindest auf shared-Memory Systemen kann ich das bestätigen. Ansonsten sehe ich Java wie Du.
burli hat geschrieben:.NET/Mono: ...
Mono-Apps mit wine unter Linux ist eine Qual. Ok, das widerlegt Deine Liste nicht, ist aber ein Aspekt.

My € .02

edit: Die Diskussion ist zu weit fortgeschritten, als das ich noch eingreiffen möchte, aber zur Erklärung: Manche .NET-basierten Apps habe ich jedenfalls nicht mit einem nativen mono-Port zu laufen bekommen. Kann an meiner Unfähigkeit liegen ...
Zuletzt geändert von CM am Montag 22. Februar 2010, 11:51, insgesamt 1-mal geändert.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

CM hat geschrieben:
burli hat geschrieben:.NET/Mono: ...
Mono-Apps mit wine unter Linux ist eine Qual. Ok, das widerlegt Deine Liste nicht, ist aber ein Aspekt.
Ein Glück dass man wine nicht braucht.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

CM hat geschrieben:Na ja, Punkt 1 dürfte mit 3k hinfällig scheinen, wobei es dauern wird bevor alle Libraries das nutzen.
Das ist der Knackpunt. Es ist zwar Besserung in Sicht, bis das aber flächendeckend verfügbar ist wird es wohl noch eine Weile dauern
CM hat geschrieben: Punkt 2. und 3. hast Du leider recht, da können wir nur warten und hoffen. Allerdings ist das multiprocessing-Modul echt super und der Overhead hält sich in Grenzen. Und dann gibt es noch pyparallel und MPI-bindings. Also, soo schlecht ist es nicht bestellt. Threading allerdings in Python ist performancemäßig oft :roll: ... na ja, das Thema GIL kommt oft genug.
Hier gilt das gleiche. Es geht zwar irgendwie, aber es ist mühsam und die Resultate sind unbefriedigend im Vergleich zu anderen Systemen.
CM hat geschrieben: Mono-Apps mit wine unter Linux ist eine Qual. Ok, das widerlegt Deine Liste nicht, ist aber ein Aspekt.
Wieso wine? Mono gibts nativ für Linux. Und das funktioniert wunderbar
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

philistion hat geschrieben:Ja sehr paradox, erst solche Aussagen:
http://www.theregister.co.uk/2001/06/02 ... _a_cancer/
dann ist Open Source wieder "interessant": http://www.silicon.de/mittelstand/0,390 ... eteran.htm
Dann lies den ersten Artikel mal genauer. Ballmer stört sich an der GPL, nicht an Open Source an sich und daran hat sich vermutlich auch nichts geändert.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

philistion hat geschrieben:Ja sehr paradox, erst solche Aussagen:
http://www.theregister.co.uk/2001/06/02 ... _a_cancer/
Die Aussage ist nicht gegen Open Source und/oder Freie Software gerichtet sondern gegen die GPL. Desweiteren mag die Formulierung heftig sein aber die grundlegende Aussage findet auch genug Anhänger unter FOSS Leuten, wie sich bei den ganzen BSD/MIT vs. (A)GPL Diskussionen zeigt.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Na gut, es mögen Vorurteile dabei sein.

Den Artikel habe ich natürlich genau gelesen, ich glaube aber wir brauchen nicht darüber zu diskutieren wie oft sich Palmer in früheren Zeiten schon gegen Open Source im Allgemeinen gewendet hat.
Zugegeben mein zitierter Link war nicht das beste Beispiel, da es sich hier nur um die GPL dreht, er diente hauptsächlich zur Veranschaulichung seiner Radikalität.
Aber es ist noch nicht so lange her, da wurde von seitens Microsoft nicht im geringsten an Open Source gedacht. Das kam erst ins Rollen, als absehbar war, dass das klassische Modell allein keine Zukunft hat.

Du fragst nicht ernsthaft wo der Vorteil von C# - oder irgendeiner anderen nennenswerten Sprache - gegenüber Java liegt?
Nein, meine Frage ist die, inwiefern es im Allgemeinen Vorteile bringt sich für diese ursprünglich von Microsoft ausgehende Plattform zu entscheiden:
Brauche ich Plattformunabhängigkeit und Performance immer zur gleichen Zeit?
Ich habe meist Projekte, die entweder reine GUI-Apps darstellen (wunderbar mit Python realisierbar -> plattformunabhängig), andererseits sehr rechenintensive Applikationen, die schreibe ich dann aber sowieso ganz in C oder zumindest den entscheidenden Teilbereich und dann mittels Swig einbinden.
Habt ihr Anforderungen die beides, also Performance und Plattformunabhängigkeit zur gleichen Zeit fordern, so dass für euch nur Mono am Markt als mögliche Plattform übrig bleibt?

Es spielt natürlich auch ne Menge Sympathie mit, ich selbst bin (wie viele vielleicht nun nicht glauben werden) nicht abgeneigt, mir Mono einmal näher anzusehen, tendiere aber wenn ich die Wahl habe natürlich zu reinen Open Source Projekten die immer frei waren und daher anzunehmen ist dass sich an diesem Status auch weiterhin nichts ändern wird.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@philistion Du vergisst die dritte Möglichkeit: Ich nutze Mono weil ich Zugriff auf die Bibliotheken, die ich über die Plattform nutzen kann, haben will und mir die einzige Alternative, die JVM, nicht gefällt.
Deployment für Python Anwendungen ist nicht so toll und der einzige Grund wieso man ausgerechnet zu C greift wenn man mehr Geschwindigkeit haben will ist doch letztendlich das CPython eine API dafür bietet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

DasIch hat geschrieben:@philistion Du vergisst die dritte Möglichkeit: Ich nutze Mono weil ich Zugriff auf die Bibliotheken, die ich über die Plattform nutzen kann, haben will und mir die einzige Alternative, die JVM, nicht gefällt.
Naja, wenn ich Destopapplikationen unter Linux schreiben will dann ist Mono der JVM haushoch überlegen. Gerade heute meinem Vater bei der nutzung von F-Spot zugesehen und es bediehnt sich weitaus besser als Java-Programme es üblicherweise unter Linux tun. Startet schnell, arbeitet flott, integriert sich gut... ne, kann mich jetzt echt nicht beschweren.

Und dieses "Open Source Projekte die immer frei waren" verstehe ich nicht. Mono war eigentlich auch immer frei, sogar in dem Sinne freier als viele GPL-lizensiere Programme. Zudem, Mono ist weitaus länger frei als die Java-Platform. Die ganzen freien Compiler, VMs und GNU Classpath wurden irgendwie nie als vollwertige Umgebung gesehen, da musste erst das OpenJDK kommen. Und auch da gibt es momentan mit dem OpenJDK 7 und der Übernahme durch Oracle Trubel. Bei Mono hingegen ist alles klar: nach Mono 2.6 kommt Mono 2.8 und bringt wieder neue Features/Fixes etc.

Fürs kommende Bachelorpraktikum habe ich übrigens auch geplant Mono einzusetzen. Weil es frei ist. Weil die Sprachauswahl (C#, F#, Fantom) durchaus brauchbar ist. Weil die Integration ins Linux-System gut ist. Weil es viele Features hat.

Und dabei vermeide ich Microsoft-Sachen wirklich ziemlich konsequent. Aber Mono sehe ich nicht als Microsoft-Technologie sondern als gelungene Umsetzung einer guten Idee. Da hat Microsoft halt eben etwas weitergedacht als Sun.

Zum Thema Monkeypatching: finde ich nicht gut und das macht auch unter Ruby öfters Probleme. Wenn man so etwas unbedingt haben will, dann finde ich das Konzept der Impliziten Konvertierungen in Scala schon sinnvoller.

@sma: ``def ()()`` würde ich jetzt einfach ``def apply()`` nennen. Fällt zwar etwas aus dem Rahmen, aber ``__call__`` ist jetzt auch nicht so berauschend.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Mono/.Net hat den Vorteil, dass man nur eine Sprache lernen muss. Dann hat man alles. Man kann ja sogar Webseiten damit programmieren (ASP.NET, ASP.NET MVC). Das MVC Framework finde ich sogar ziemlich gut. Nimmt man Boo kann man sogar Scripte schreiben (weiß nicht, ob das in einer anderen .Net Sprache geht)

Mit Python kann man auch alles machen... bis ihm die Puste ausgeht. Dann braucht man Kenntnisse einer zweiten Sprache. Klar, wenn man es schon kann ist es egal. Aber ich gehe jetzt mal von einem Programmieranfänger aus.

Bleibt nur noch eins. C# ist als .Net Sprache weit verbreitet und ist gut dokumentiert, aber IMHO nicht einsteigertauglich. Boo ist einfacher, aber schlecht dokumentiert. Aber das ist ein Zustand, der sich ändern kann.

Deshalb meine einleitende Frage: ist Boo das bessere Python? Ich finde schon. Es bietet die Vorteile von Python (einfache, aber mächtige Syntax, umfangreiche Klassenbibliothek usw) und bügelt die Nachteile aus (Unicode, Ausführungsgeschwindigkeit, Multicore usw).
BlackJack

@burli: Du widersprichst Dir selbst. Wenn man bei Mono/.NET nur eine Sprache lernen muss, dann wähle ich mal spontan Python (IronPython) -- aber nein, dem geht ja irgendwann die Puste aus, und ich muss doch noch eine zweite Sprache lernen. ;-)

Man kann auch nur Java lernen und damit alles machen. Du wirst es nicht glauben -- sogar *Webapplikationen*. Wow. Wer hätte das gedacht.

Deine Gegenüberstellungen sind teilweise auch etwas schief. Beispiel: .NET kann Multicores per Threads benutzen, bei der JVM weisst Du nicht ob's geht, und das kommt bei Dir so rüber als wenn's ein Vorteil von .NET wäre. Tja, auch die JVM kann mehrere Kerne nutzen. Wäre also Gleichstand in diesem Punkt.

Letztendlich geht allen drei Plattformen irgendwann "die Puste aus". Irgend etwas gibt es immer, das man nicht in einer VM machen "kann", entweder weil's nicht geht -- man kann ja nicht einmal alles in C machen wenn's zu nah an die Hardware geht -- oder weil man vielleicht das Eine oder Andere für die jeweilige VM neu schreiben müsste, was es eigentlich schon gut getestet als Bibliothek gibt. Da kann dann CPython IMHO wieder punkten, denn mit `ctypes` eine "shared library" unter Windows und Linux zu "wrappen" ist relativ schmerzlos.

Bei .NET vs. JVM "gewinnt" bei mir die JVM. Mono hängt immer hinterher. Und eine freie Alternative zu den wirklich guten Java-IDEs sehe ich auch nicht.

Das sich Mono-Anwendungen angeblich besser in Linux integrieren, wie hier jemand behauptete, hat IMHO nichts mit der Plattform oder Sprache zu tun, sondern mit dem verwendeten GUI-Toolkit. Man kann bei der JVM ja auch etwas anderes als Swing nehmen. F-Spot sieht unter KDE auch "fremd" aus.
lunar

@BlackJack: .NET hat mit PInvoke ein brauchbares Äquivalent zu ctypes, das nicht schwer zu benutzen ist, und die einfache Einbindung von C-Bibliotheken möglich macht.
Antworten