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
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

HWK hat geschrieben:@hendrikS: Du meinst Boo und nicht D, nicht wahr?
Ja, ich meinte Boo. Aber D wäre sicher auch mal einen Blick wert. Ich guck mir auch hin und wieder mal was anderes an.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

philistion hat geschrieben:Ich habe irgendwie eine große Ablehnung gegenüber dem ganzen .Net - Zeug! Warum etwas proprietäres von Microsoft benutzen, wenn es auch GPL-lizensierte Frameworks gibt, nein Python ist da schon der beste Kompromiss. Plattformunabhängig, freie Software und extrem flexibel!
Mono ist vollständig Offen. Von daher hab ich also keine Bedenken. Und selbst MS veröffentlicht inzwischen viel als OpenSource, wie z.B. ASP.NET MVC

@sma: der Witz bei Boo ist ja eigentlich, dass man "o as object" nicht unbedingt schreiben muss sondern der Compiler sich das selber raussucht.

i=0 //wird zu einem Integer
f=1.0 //wird zu einem Float
s="Hallo Du" //wird zu einem String

usw. Nur mit dem Unterschied, dass die Typen dann statisch sind. Eine Stärke der Sprache ist denke ich, dass man Variablen unabhängig voneinander statisch oder dynamisch typisieren kann.

Im Gegensatz z.B. zu C# kann man sich auch sowas sparen

MeineKlasse foo = new MeineKlasse()

sondern es reicht

foo = MeineKlasse()

Der Compiler weiß von alleine, dass foo vom Typ MeineKlasse sein muss. Auch der Rückgabewert einer Methode muss bei der Methodendefinition nicht angegeben werden. Das was hinter "return" steht ist gleichzeitig der Rückgabewert. Klar, das birgt auch Gefahren, wenn man z.B. mal return vergisst.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@burli Das ist keine besondere Stärke von boo, das erwarte ich von einer brauchbaren typisieren Sprache. Die beste Umsetzung davon hat imho Haskell.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Das bessere Python ist es ganz sicher nicht. Vielleicht ganz nett anzuschauen, aber wenn ich sowas will, würde ich wohl auch eher zu D tendieren. Insgesamt hat sich für mich persönlich aber immer wieder gezeigt, dass ich mit Python am Besten klar komme. Mag sein, dass manche tollen Features aus anderen Sprachen fehlen, aber als bestes Gesamtpaket bleibt für mich Python bestehen.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

burli hat geschrieben:Mono ist vollständig Offen. Von daher hab ich also keine Bedenken.
Keine Bedenken? Viele Teile des Monoprojekts sind wahrscheinlich von Patentrechtsansprüchen Microsofts betroffen, Novell hat lediglich mit Microsoft einen Pakt geschlossen, dass Novell-Kunden vor Patentrechtsklagen Microsofts geschützt sind.
Auch wenn Microsoft es nun hoch und heilig versprochen hat, warum sollte man sich auf so ein unsympathisches Projekt verlassen, wenn es doch genügend andere Möglichkeiten gibt, plattformunabhängige Software zu entwickeln.
Ich finde die Gedanken von Richard Stallman immer noch sehr zutreffend: http://www.fsf.org/news/dont-depend-on-mono
burli hat geschrieben:Und selbst MS veröffentlicht inzwischen viel als OpenSource, wie z.B. ASP.NET MVC
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

Wenn bei einer Firma so ein Verrückter der CEO ist, vertraue ich auch nicht auf Zusagen bezüglich des Nicht-Einklagens von Patentrechtsansprüchen.. so oft wie der die Meinung bezüglich Open Source wechselt, kann er genauso gut die Meinung zum Einklagen wechseln.
Benutzeravatar
snafu
User
Beiträge: 6738
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.
Antworten