PyCocoa

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

Hallo,
wollte mal nachfragen ob hier schon jemand Erfahrung mit PyCocoa hat und wenn ja würde mich ein Feedback interessieren?
Wer es nicht kenn und gerne wissen will was es ist kann hier gucken:
http://pyobjc.sourceforge.net
Mit PyCocoa bekommt man die Möglichkeit Programm für den Mac mit Apples Framework Cocoa zu entwickeln.

Viele Grüße,
snatch
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Willst du irgendwas spezielles wissen, irgendwelche konkreten Fragen?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich fand anfangs die Idee, statt sich mit Objective-C beschäftigen zu müssen (welche mir eigentlich zu low-level ist) lieber Python zur Erstellungen von nativen OSX-Anwendungen benutzen zu können reizvoll, doch Code wie

Code: Alles auswählen

myData = NSData.alloc().initWithBytes_length_('the bytes', 9)
fand ich dann doch recht abschreckend. Das ist weder Python noch Objective-C, sondern erbt die Nachteile beider Systeme. Apples Ausschluss von Scriptsprachen für die Entwicklung von Anwendungen für iPhone/iPod-Touch haben ebenfalls dazu geführt, dass ich mich von dem Thema wieder abgewandt habe.

Ich fand die Dokumentation auch von Apples Seite ausgesprochen dürftig und auch das Sourceforge-Projekt macht nicht gerade einen aktiven Eindruck. Mir schien es daher attraktiver, auf MacRuby oder ein vergleichbares Projekt zu warten, auch wenn das jetzt nicht direkt Python sondern die böse Konkurrenz ist ;)

Stefan
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

Also würdest du nicht empfehlen mit PyCocoa zu arbeiten?
Wie sieht denn das Zusammenspiel von MacRuby mit XCode und Cocoa aus?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Ich fand anfangs die Idee, statt sich mit Objective-C beschäftigen zu müssen (welche mir eigentlich zu low-level ist) lieber Python zur Erstellungen von nativen OSX-Anwendungen benutzen zu können reizvoll, doch Code wie

Code: Alles auswählen

myData = NSData.alloc().initWithBytes_length_('the bytes', 9)
fand ich dann doch recht abschreckend. Das ist weder Python noch Objective-C, sondern erbt die Nachteile beider Systeme.
Welche Nachteile beider Systeme? So wie ich dich verstehe störst du dich da einzig und allein an der Syntax.

@snatch: Was genau willst du hören? Der einzige Nachteil, den ich bei PyObjC sehe ist, dass man das ganze nicht gescheit debuggen kann. Bzw. ich wüsste nicht, wie ich das anstellen sollte. MacRuby ist da sicherlich auch nicht besser. Und die Doku ist ein bisschen mau. Ansonsten wüsste ich nichts, was gegen PyObjC spricht.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:Welche Nachteile beider Systeme? So wie ich das sehe störst du dich da einzig und allein an der Syntax.
Korrekt, ich störe ich an der Syntax. Aber genau diese ist ja maßgeblich entscheidend, wenn ich eine Programmiersprache auswähle. Ich kombiniere hier die unpassende Syntax von Python (ich empfinde die Schlüsselwortnachrichten als elegant) mit dem expliziten Anlegen und Initialisieren von Objekte à la Objective-C.

In Python würde ich sowas erwarten:

Code: Alles auswählen

myData = NsData('the bytes', 9)
In erwähntem MacRuby könnte man's so schreiben:

Code: Alles auswählen

myData = NSData.alloc.initWithBytes('the bytes', length:9)
Die anderen Vorteile wie z.B. direkte Integration der Objektsysteme, automatische Garbage Collection, keine Threading-Probleme, usw. die als Vorteile von MacRuby gegenüber der Ruby-Cocoa-Bridge aufgeführt sind, kann ich nur ohne Erfahrung aus erster Hand nachbeten. Ich denke jedoch, sie würden auch für PyObjC gelten.

Wie sähe denn das typische Todo-Listen-Programm mit PyObjC aus, wo ich eine Listbox, ein einzeiliges und ein mehrzeiliges Eingabefeld und zwei Buttons habe, wobei die Listbox mit einer Liste verbunden ist, die Todo-Elemente hält, die jeweils einen Titel und eine Beschreibung haben, diese jeweils über die beiden Eingabefelder eingegeben werden können und über den einen Button der Liste hinzugefügt und mit dem anderen Button wieder entfernt werden können?

Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:
Darii hat geschrieben:Welche Nachteile beider Systeme? So wie ich das sehe störst du dich da einzig und allein an der Syntax.
Korrekt, ich störe ich an der Syntax. Aber genau diese ist ja maßgeblich entscheidend, wenn ich eine Programmiersprache auswähle.
Gut, ich wähle sie nach Funktionalität. :)
In erwähntem MacRuby könnte man's so schreiben:

Code: Alles auswählen

myData = NSData.alloc.initWithBytes('the bytes', length:9)
Das finde ich wiederum schrecklich. ;) Das ist dann nämlich wirklich ein ruby mehr.
Die anderen Vorteile wie z.B. direkte Integration der Objektsysteme, automatische Garbage Collection, keine Threading-Probleme, usw. die als Vorteile von MacRuby gegenüber der Ruby-Cocoa-Bridge aufgeführt sind, kann ich nur ohne Erfahrung aus erster Hand nachbeten. Ich denke jedoch, sie würden auch für PyObjC gelten.
Kann ich leider auch nichts zu sagen.
Wie sähe denn das typische Todo-Listen-Programm mit PyObjC aus,
Ähnlich simpel mit mit ObjC, die ganzen Buttons, Listen und die Anbindungen an die Daten etc. können im Interface Builder definiert werden.

Code: Alles auswählen

from Foundation import NSObject
class ToDoListAppDelegate(NSObject):    
    todo_list = [] 
sowie http://paste.pocoo.org/show/38170/ (automatisch von xcode generiert)
das ist der Python-Teil, dazu kommt noch eine ObjC-Datei die die main.py startet und die Pfade setzt geht aber sicherlich auch irgendwie ohne(ich hab mich damit noch nicht so genau auseinandergesetzt).

Ich müsste mal ausprobieren ob man todo_list problemlos pickeln kann.

Edit: Nein geht bei ObjC-Objekten nicht. Zum Speichern müsste man sich also mehr Gedanken machen.
Antworten