Ist Boo das bessere Python?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben: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.
Jein. Java sieht sich als OS und daher ist dort Platformintegration fast schon verpönt. Man schreibt man sich lieber eigene Toolkits (AWT, Swing) und alles andere neu, was es in gut getestet in C gibt und was in Python einfach gewrappt wird, damit es eben auf dem Java-OS läuft. Einige sehen das als Vorteil, aber ich finde dass man sich dadurch zu sehr vor der Realität wegläuft. Zudem man, wie Python beweist, auch platformunabhängigkeit erreichen kann ohne so tun zu müssen als wäre die eigene VM das Betriebssystem.

Natürlich gibt es SWT, aber das ist ziemlich unpopulär (gemessen an der Anzahl der Applikationen die Swing nutzen) wohingegen Gtk# eigentlich zu den Kernkomponenten von Mono zählt.

Und es gibt auch GTK+-Engines die Qt-Themes annehmen können. Ich denke dass das besser funktioniert als etwa das GTK Look-and-Feel von Java, was auch noch nicht so alt ist und eigentlich nicht überzeugend aussieht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Leonidas hat geschrieben:Naja, wenn ich Destopapplikationen unter Linux schreiben will dann ist Mono der JVM haushoch überlegen.
Kann ich nicht oft genug betonen. Musste schon ein paar Desktopapplikationen mithilfe von Java und damit der JVM entwerfen, es ist definitiv immer ein Krampf. Sie integrieren sich einfach nicht so gut... Mono auf der anderen Seite ist recht intuitiv und einfach dagegen. Außerdem gefällt mir C# als Sprache viel besser als Java, weil es sich wesentlich moderner und aufgeräumter anfühlt.
BlackJack hat geschrieben:Man kann auch nur Java lernen und damit alles machen. Du wirst es nicht glauben -- sogar *Webapplikationen*. Wow. Wer hätte das gedacht.
Und das kann sogar Spaß machen! Ich schmeiße noch einmal den Verweis von sma in den Raum: http://www.playframework.org/

Schaut es euch an, damit fühlt sich Java spontan nicht mehr so eklig an für Webentwicklung. Macht echt Spaß oO!
lunar

Leonidas hat geschrieben:Und es gibt auch GTK+-Engines die Qt-Themes annehmen können. Ich denke dass das besser funktioniert […]
Gut funktioniert es jedenfalls nicht, selbst beim Aussehen … und Integration ist ja nun bekanntlich weitaus mehr als nur gleiches Aussehen. Qt ist jedenfalls um Welten besser darin, sich in eine Gtk- bzw. Gnome-Umgebung zu integrieren, als umgekehrt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Gut funktioniert es jedenfalls nicht, selbst beim Aussehen … und Integration ist ja nun bekanntlich weitaus mehr als nur gleiches Aussehen. Qt ist jedenfalls um Welten besser darin, sich in eine Gtk- bzw. Gnome-Umgebung zu integrieren, als umgekehrt.
Naja, VirtualBox OSE 2.x hatte bei mir unter GNOME immer so eine Motif-Oberfläche. Vielleicht war das ne Ausnahme, ich nutze sonst keine Qt-Applikationen.

Aber das ist im diesem Kontext nun schon arg Offtopic :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Zunächst mal hab ich Java nicht in diese Diskussion eingebracht und interessiert mich auch nicht wirklich. Ich habe lediglich die negativen Punkte aufgezählt, die mir bisher bei jeder Java Applikation aufgefallen sind. Und Java hat in meinen Augen nichts im Web verloren. Weder auf dem Server noch im Client. Glücklicherweise ist es auf Clientseite weitestgehend ausgestorben.

Außerdem geht es nicht um IronPython sondern um Boo und (C)Python. IronPython ist in meinen Augen ein (krampfhafter) Versuch, die Python Umgebung auf die .Net Plattform zu heben, der bisher gescheitert ist.

Und selbst wenn jemand IronPython programmiert hat und muss auf eine andere .Net Sprache wechseln hat er immer noch einen Vorteil: wenn er das .Net Framework verwendet hat statt den Python Klassen kennt er diese bereits. D.h. die eigentliche Hauptarbeit bei solchen Sprachen (egal ob .Net, Java oder Python), nämlich die Klassenbibliothek kennenzulernen, hat er dann schon hinter sich. Wenn er unter IronPython natürlich nur die Python Klassen verwendet hat kann ich ihm auch nicht helfen. Gegen Dummheit helfen weder Pillen noch die beste Programmiersprache.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

OT: Was GUI Toolkits angeht: es gibt kein Toolkit, dass unter allen Plattformen automatisch und ohne Probleme immer nativ aussieht. Selbst Qt schafft das nicht wirklich.

Wenn es einer schafft, ein Toolkit zu schreiben, das unter Gnome aussieht wie Gnome, unter KDE wie KDE, unter XP wie XP usw bekommt von mir ne Waschmaschine. Wenn er dann noch Bindungs für verschiedene Sprachen schreibt bekommt er noch nen Trockner oben drauf. Und für nen guten GUI Designer gibts ein Jahr Strom, Wasser und Waschmittel dazu
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:Wenn er unter IronPython natürlich nur die Python Klassen verwendet hat kann ich ihm auch nicht helfen. Gegen Dummheit helfen weder Pillen noch die beste Programmiersprache.
Also statt der pythonischen Stdlib, besser die auf C# zurechtgeschneiderte Klassenbibliothek nutzen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Leonidas hat geschrieben:Also statt der pythonischen Stdlib, besser die auf C# zurechtgeschneiderte Klassenbibliothek nutzen?
Welche Existenzberechtigung hätte IronPython sonst? IronPython wie klassisches Python nutzen bring keine Vorteile. Zumindest sehe ich keine. Unter Linux muss man zum sowieso meistens vorhandenen CPython oft noch Mono und IronPython noch extra installieren. Unter Windows müsste man die Python Klassen dazuinstallieren. Insgesamt viel Aufwand für ein fragwürdiges Ergebnis. Zumal man einige Klassen von Python unter IronPython gar nicht verwenden kann.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:
Leonidas hat geschrieben:Also statt der pythonischen Stdlib, besser die auf C# zurechtgeschneiderte Klassenbibliothek nutzen?
Welche Existenzberechtigung hätte IronPython sonst? IronPython wie klassisches Python nutzen bring keine Vorteile.
Na man kann zusätzlich zur Pyhton Stdlib auch noch die .NET Klassenbibliothek nutzen. Man kann gut mit dem restlichen .NET-Umfeld integrieren, wie etwa das einbetten von Python als Skriptsprache in C#-Applikationen oder das beschleunigen von IronPython-Applikationen durch C#-Code. Also mir fallen ne Menge Sachen ein, das ersetzen der Python Stdlib nur des Ersetzens wegen hingegen nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Leonidas hat geschrieben: Na man kann zusätzlich zur Pyhton Stdlib auch noch die .NET Klassenbibliothek nutzen.
Das ist schon klar, man könnte sich die Rosinen rauspicken. Aber was ist der größere Aufwand? Die Syntax einer Sprache lernen oder die Klassenbibliothek? Ich finde, die Syntax ist da einfacher. Von daher kann ich verstehen, wenn ein Python Programmierer die Klassenbibliothek gerne mitnehmen würde.
Leonidas hat geschrieben: Man kann gut mit dem restlichen .NET-Umfeld integrieren, wie etwa das einbetten von Python als Skriptsprache in C#-Applikationen oder das beschleunigen von IronPython-Applikationen durch C#-Code.
Also zwei Sprachen und zwei Klassenbibliotheken lernen? Naja
Leonidas hat geschrieben: Also mir fallen ne Menge Sachen ein, das ersetzen der Python Stdlib nur des Ersetzens wegen hingegen nicht.
Mir fällt eigentlich nur ein Grund ein. Ein Python Programmierer möchte seine gewohnte Umgebung nicht verlassen, aber seine Software durch .Net aufwerten. Das ergibt aber nur Sinn, wenn er bereits existierende Programme hat, die er aufwerten will.

Aber da muss ich nochmal die Frage stellen: wäre ein Umstieg auf Boo da nicht sinnvoller? Zumindest für neue Projekte. Eine artverwandte Sprache, die zwar eine andere Klassenbibliothek verwendet, aber syntaktisch an Python angelehnt ist.

Aber krampfhaft zwei Welten mischen, nur um etwas lieb gewonnenes nicht aufgeben zu müssen? Da sehe ich keinen Vorteil
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:Das ist schon klar, man könnte sich die Rosinen rauspicken. Aber was ist der größere Aufwand? Die Syntax einer Sprache lernen oder die Klassenbibliothek? Ich finde, die Syntax ist da einfacher. Von daher kann ich verstehen, wenn ein Python Programmierer die Klassenbibliothek gerne mitnehmen würde.
Ich finde die Semantik am schwierigsten. Die Syntax ist einfach, kann man ja auf Cheatsheets nachsehen. Die Klassenbibliothek ist größtenteils auch einfach, kann man in der API-Dokumentation nachsehen. Aber wie die Sprache tickt, muss man selbst rausfinden und sich in die Sprache reinfühlen.
burli hat geschrieben:Also zwei Sprachen und zwei Klassenbibliotheken lernen? Naja
Hängt ab wer skriptet. Ich würde Usern viel eher Python und die Stdlib zum Skripten zutrauen, als C#.
burli hat geschrieben:Aber da muss ich nochmal die Frage stellen: wäre ein Umstieg auf Boo da nicht sinnvoller? Zumindest für neue Projekte. Eine artverwandte Sprache, die zwar eine andere Klassenbibliothek verwendet, aber syntaktisch an Python angelehnt ist.

Aber krampfhaft zwei Welten mischen, nur um etwas lieb gewonnenes nicht aufgeben zu müssen? Da sehe ich keinen Vorteil
Ist es nicht wieder ein Widerspruch? Du willst was lieb gewonnenes (die Python-Syntax) nicht aufgeben und nutzt dafür ne Sprache die vielleicht ne handvoll User hat? Zugegeben, das ist mit Fantom oder Nemerle nicht viel besser aber die bringen halt andere Vorteile mit als dass sie eine Imitiation von Python sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Leonidas hat geschrieben:Ich finde die Semantik am schwierigsten.
Ok, das ist wohl auch von Programmierer zu Programmierer anders. Die Klassenbibliothek ist vor allem Fleißarbeit.
Leonidas hat geschrieben: Hängt ab wer skriptet. Ich würde Usern viel eher Python und die Stdlib zum Skripten zutrauen, als C#.
C# ist auch nochmal eine ganz andere Sache. Es geht mir hier aber speziell um Boo. Was "Scripten" angeht habe ich gerade noch etwas ausprobiert. In Boo ist sowas möglich.

Code: Alles auswählen

#!/usr/bin/env booi
print "Hallo Welt"
Wenn man es ausführbar macht lässt es sich wie ein Python- oder Shell Script nutzen. Ob das in anderen .Net Sprachen möglich ist weiß ich nicht.
Leonidas hat geschrieben: Ist es nicht wieder ein Widerspruch? Du willst was lieb gewonnenes (die Python-Syntax) nicht aufgeben und nutzt dafür ne Sprache die vielleicht ne handvoll User hat? Zugegeben, das ist mit Fantom oder Nemerle nicht viel besser aber die bringen halt andere Vorteile mit als dass sie eine Imitiation von Python sind.
Finde ich nicht. Da Boo sich an Python orientiert ist die von dir beschriebene Problematik mit einer neue Semantik nicht so groß. Außerdem bietet Boo wie bereits erwähnt gegenüber Python durchaus einige Vorteile wie die Wahl zwischen statischer und dynamischer Typisierung, durchgehend Unicode, mehr Typen wie singed und unsigned Byte oder Char, echte Access Modifier für Eigenschaften und Methoden, automatisierte Test (kann afaik jede .Net Sprache. Keine Ahnung, ob das in Python auch geht) und noch einiges mehr.

Fantom, Nemerle und einige andere Sprachen fallen für mich in die Kategorie "Yet Another C Language". Im Fall von .Net/Mono kann ich also auch genauso gut C# verwenden.

Aber bleiben wir doch bitte mal bei der ursprünglichen Frage. Was ist besser (objektiv betrachtet)? Boo oder Python? Das Boo einige Vorteile gegenüber Python hat habe ich ja schon an verschiedenen Stellen aufgeführt. Das Python deutlich besser dokumentiert ist und die größere Community hat habe ich auch schon erwähnt. Mich interessiert eigentlich nur noch, was sonst noch FÜR Python spricht. Was kann Python, was man bei .Net, im speziellen Boo, nicht kann?

Die Stärke von Python war für mich vor allem, dass es eine Sprache für alles ist. Desktop, Web, Scripting. Die Schwäche war die Performance. Boo hat die gleichen Stärken, aber nicht die Schwäche von Python.
BlackJack

@Leonidas: Ich denke die Java-Leute machen sich mittlerweile mehr Gedanken über die Systemintegration, zum Beispiel mit den Klassen `Desktop` und `SystemTray` in Java 6 und dem `JDesktop Integration Components`-Unterprojekt bei SwingLabs:
https://jdic.dev.java.net/ hat geschrieben:The JDesktop Integration Components (JDIC) project aims to make Java™ technology-based applications ("Java applications") first-class citizens of current desktop platforms without sacrificing platform independence. Its mission is to enable seamless desktop/Java integration.
@burli: Java interessiert Dich nicht, IronPython existiert nicht weil es vielleicht jemand portieren wollte, sondern weil es ein krampfhafter Versuch ist Python auf die .NET-Umgebung zu *heben*, und wenn man gerne zur Syntax auch "pythonische" Module aus der Standardbibliothek verwenden möchte, dann ist man so dumm, dass keine Pillen mehr helfen!? Geht's noch!? Du scheinst mir ein wenig betriebsblind. Dir fällt nur ein, dass ein Python-Programmierer sein Programm durch .NET aufwerten will!? Schon mal an die andere Richtung gedacht!?

Python ist mehr als Syntax. Da die relativ klein gehalten ist, steckt eine Menge was Python ausmacht in den Modulen der Standardbibliothek. So etwas wie `itertools`, `operator`, oder `contextlib` kann man IMHO nicht einfach weg lassen und trotzdem noch von Python sprechen. Und auch andere Module, die Gegenstücke in der .NET-Standardbibliothek haben, weisen dort nicht unbedingt eine "pythonische" API auf, also eine, die mit der Semantik von Python's Syntax so gut zusammenarbeitet wie die Klassen aus der Python-Standardbibliothek.

Deine Aufzählung von Boo's Vorteilen enthält Sachen die ich eher als Nachteil sehe und die ich ebenfalls zu Python's Stärken zählen würde -- teilweise sogar für so wichtige Bestandteile, dass Python nicht mehr Python wäre, wenn man's ändert. Wie gesagt ist für mich eine Sprache mehr als Syntax. Da gehören Idiome dazu und eine Standardbibliothek, die auf diese Idiome zugeschnitten ist.

Nemerle als funktionale Sprache als "Yet Another C Language" zu bezeichnen ist süss. Ebenso wie die ursprüngliche Frage was an Sprache X *objektiv* besser ist als an Sprache Y. Für *Dich* ist Python nichts und Du bist ja anscheinend mit .NET zufrieden. Warum bleibst Du nicht einfach dabei!?
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich gebe zu, dass ich etwas dick aufgetragen habe. Es hat nur langsam genervt, dass ständig der eigentlichen Frage ausgewichen wurde. Als hätte ich gefragt "Was ist besser, Astra oder Golf?" und bekomme die Antwort "Wie wäre es mit einer Mercedes C Klasse, einem Audi A3 oder eine Skoda?"

Und ich weiß, dass ich mit so einer Frage in einem Python Forum auch gleich Jehova rufen könnte.

Das ich Nemerle falsch eingeschätzt habe mag vielleicht daran liegen, dass es die Projektseite seit Wochen oder Monaten nicht mehr gibt und damit wohl auch das Projekt gestorben ist. Also hab ich bis auf ein paar Codeschnipsel nicht viel gesehen und interessiert mich auch nicht.

Wenn ich frage, ob Boo vielleicht ein besseres Python sein könnte und ihr sagt mir, dass zu Python gewisse Dinge dazugehören ohne die es kein Python mehr wäre akzeptiere ich das. Hier könnte man schauen, ob es bei Boo/.Net ein Equivalent gibt.

Wenn ihr sagt, dass das, was ich als Vorteil empfinde, für euch Nachteile sind, akzeptiere ich das auch. Es gibt für mich eben Bereiche, wo ich z.B. hin und wieder mal ein Byte benötige.

Ich weiß aber immer noch kein KO Kriterium, dass für Python und gegen Boo sprechen würde.
BlackJack

@burli: Na dann gibt es dieses K.O.-Kriterium vielleicht nicht!? Muss es denn ein objektives K.O.-Kriterium geben?
lunar

@burli: Lies die Diskussion. Deiner anfänglichen Frage wurde nicht ausgewichen. Sie wurde nur eben nicht in Deinem Sinne beantwortet, stattdessen war man allgemein der Auffassung, Boo wäre für Python-Entwickler zu langweilig und uninteressant. Damit einher ging die Feststellung, dass es gerade für .NET viele, wesentlich interessantere Sprachen gibt.

Bis zu diesen Sprachen reicht Dein eingangs erwähnter Blick über den Tellerrand offenbar nicht. Im Gegenteil, wenn Du Dir ein Urteil über eine Sprache anmaßt, die Du nach eigener Aussage nur aus ein paar Code-Schnipsel kennst, und die Dich noch dazu gar nicht interessiert, scheint Dein Blick eher ziemlich kurz zu sein.

Es zwingt Dich ja nun aber auch niemand, auf Boo zu verzichten. Warum also verwendest Du die Sprache nicht einfach, wenn sie Dir so gut gefällt?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

philistion hat geschrieben: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.
Ich finde es jedenfalls bemerkenswert, wie du M$ oder auch Ballmer im speziellen prinzipiell jegliche Lernfähigkeit absprichst. Das verstehe ich auch unter radikal.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

lunar hat geschrieben:Bis zu diesen Sprachen reicht Dein eingangs erwähnter Blick über den Tellerrand offenbar nicht. Im Gegenteil, wenn Du Dir ein Urteil über eine Sprache anmaßt, die Du nach eigener Aussage nur aus ein paar Code-Schnipsel kennst, und die Dich noch dazu gar nicht interessiert, scheint Dein Blick eher ziemlich kurz zu sein.
Bei einer Sprache, die allem Anschein nach nicht mehr existiert? Warum sollte ich mir da mehr antun als einen flüchtigen Blick? Ok, exisiteren tut sie noch, wird aber nicht mehr weiterentwickelt.

Und ich hatte ebenfalls den Eindruck, dass hier ein Urteil über Boo gebildet wurde, ohne dass es je angeschaut wurde. Deshalb finde ich Aussagen wie "Boo ist langweilig" oder "Boo bietet nichts neues" unangebracht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

burli hat geschrieben:Und ich hatte ebenfalls den Eindruck, dass hier ein Urteil über Boo gebildet wurde, ohne dass es je angeschaut wurde. Deshalb finde ich Aussagen wie "Boo ist langweilig" oder "Boo bietet nichts neues" unangebracht.
Na du hast aber auch keine Argumente gebracht die Python-Programmierer motivieren würden es sich genauer anzuschauen. Die Argumente die du dafür gebracht hast, hatten die anderen angesprochenen Sprachen ja auch und ggf. noch weitere.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Leonidas hat geschrieben:Na du hast aber auch keine Argumente gebracht die Python-Programmierer motivieren würden es sich genauer anzuschauen. Die Argumente die du dafür gebracht hast, hatten die anderen angesprochenen Sprachen ja auch und ggf. noch weitere.
Mindestens zwei Argumente, die die anderen Sprachen nicht haben. Python-ähnliche Syntax und wahlfreiheit zwischen statischer und dynamischer Typisierung. Außerdem Scriptfähig und interaktiver Modus. C# z.B. hat nach meinem derzeitigen Kenntnisstand keines davon. Ob Java, F# oder was auch immer sowas hat weiß ich nicht.
Antworten