PyObjc

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
The Spirit
User
Beiträge: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Mittwoch 27. Februar 2008, 10:40

Hi.
Wollte mal fragen, ob schon jemand mit PyObjc gearbeitet hat und mir eine gute deutsche Anleitung, Tutorial, ... oder dergleichen für mich hat.
Über Links würde ich mir auch freuen (kenne halt nur die Originalpage).
Thx
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 1. März 2008, 12:49

Hatte auch mal über Cocoa-Programmierung auf dem Mac nachgedacht, doch da die Doku quasi nicht-existent war, mein Wissen über Cocoa gleich 0 und da zu Objective-C nur unwesentlich größer ist (ich kann aber Smalltalk, wo die Sprache 1986 abgespalten wurde) und die Sourceforge-Seite veraltet schien, habe ich das Thema wieder ad acta gelegt.

Google findet aktuell dieses halbe Tutorial.

Auch zu Ruby-Cocoa gibt es nur sehr wenig Infos - und das obwohl doch eigentlich das Gros der Ruby-Entwickler Mac User sind und Apple eigentlich Scriptsprachen wie Python und Ruby durchaus in aktueller Version direkt bei Leopard mitliefert.

Mich persönlich stört etwas, dass die Sprachanbindungen nicht die von Smalltalk geerbte Eigenschaft von Objective-C, bei Schlüsselwortnachrichten die Argumente *in* die Nachricht zu schreiben, übernehmen (können) und so das Ergebnis immer irgendwie häßlich aussieht. Vielleicht würde ich mich mit FScript wohler fühlen.

Wenn's nur um GUI-Programmierung auf dem Mac geht, wäre vielleicht auch wxWindows eine Alternative. Diese Bibliothek liegt auch bei und ist plattformübergreifend. Dafür kann man nicht mehr mit dem InterfaceBuilder native Anwendungen bauen.

Es bleibt unbefriedigend...

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

Samstag 1. März 2008, 16:37

sma hat geschrieben:Mich persönlich stört etwas, dass die Sprachanbindungen nicht die von Smalltalk geerbte Eigenschaft von Objective-C, bei Schlüsselwortnachrichten die Argumente *in* die Nachricht zu schreiben, übernehmen (können) und so das Ergebnis immer irgendwie häßlich aussieht.
Naja, was erwartest du? Das PyObjC die Syntax von Python ändert?

@The Spirit: Also die Suche nach irgendwelchen Deutschen Dokus würde ich aufgeben, da wirst du nichts finden. Viel Dokumentation zu dem Thema gibt es zur Zeit leider nicht, dazu kommt auch, dass sich die bestehenden nicht auf PyObjC 2 beziehen. Am hilfreichsten wird es wohl sein sich die PyObjC-Beispiele im Developer-Ordner anzugucken und für den Rest die Cocoa-Doku zu bemühen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 2. März 2008, 11:02

Darii hat geschrieben:Naja, was erwartest du? Das PyObjC die Syntax von Python ändert?
Nein, aber missfallen darf's mir doch trotzdem, oder? Ich finde halt

Code: Alles auswählen

array.concatenate_withSeparator_('*', ',')
häßlicher als

Code: Alles auswählen

[array concatenate: @"*" withSeparator: @","]
was mich allgemein an dem Versuch, Cocoa mit etwas anderem als Objective-C (oder F-Script) programmieren zu wollen, zweifeln lässt. Die ganze Klassenbibliothek ist auf Schlüsselwortnachrichten abgestimmt.

Man könnte sich ja auch einen Präprozessor überlegen, der tatsächlich ein "Objective-Python" erzeugt und Nachrichtenausdrücke in Python einmischt, so wie es mit C passiert. Die "[]" beißen sich dann mit Listen und man müsste entweder auf `list(...)`als einzige Form zurückgreifen oder aber z.B. ein "$" voranstellen.

Code: Alles auswählen

[$[1, 2, 3] concatenate: "*" withSeparator: ","]
Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Sonntag 2. März 2008, 11:58

sma hat geschrieben:
Darii hat geschrieben:Naja, was erwartest du? Das PyObjC die Syntax von Python ändert?
Nein, aber missfallen darf's mir doch trotzdem, oder?
Natürlich, wollte ich dir auch nicht verbieten. ;)
Man könnte sich ja auch einen Präprozessor überlegen, der tatsächlich ein "Objective-Python" erzeugt und Nachrichtenausdrücke in Python einmischt, so wie es mit C passiert.
Aber wozu, Python kennt im Gegensatz zu C schon Nachrichten/Objekte, da muss man nichts hinzufügen. Nur damit es schöner aussieht? Die Schreibweisen sind doch isomorph.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 2. März 2008, 12:34

Darii hat geschrieben:Nur damit es schöner aussieht? Die Schreibweisen sind doch isomorph.
Ja, Syntax ist extrem wichtig. Sonst könnte man Python ja auch so schreiben:

Code: Alles auswählen

class Foo extends Bar {
  /**
    * Adds given arguments.
    */
  def baz($a,$b) {
    return "$a+$b=" . $a + $b
  }
}
Stefan
BlackJack

Sonntag 2. März 2008, 14:06

Wie wär's mit so einer API?

Code: Alles auswählen

array.concatenate('*', withSeparator=',')
Funktioniert natürlich nicht, wenn es auf Objective-C-Seite Nachrichten gibt, die die gleichen Schlüsselworte aber in anderer Reihenfolge verwenden.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 2. März 2008, 18:14

BlackJack hat geschrieben:

Code: Alles auswählen

array.concatenate('*', withSeparator=',')
Wie's bei Cocoa aussieht weiß ich nicht, aber bei Smalltalk ist #with:with: oder #value:value:value: nicht ungewöhnlich. Das ließe sich nicht abbilden.

Über einen speziellen codec (PEP 263) könnte man aber einen Präprozessor installieren, der z.B. diesen ansonsten syntaktisch falschen Code transformiert:

Code: Alles auswählen

array.(concatenate: '*' withSeparator: ',')
=>
array.concatenate_withSeparator_('*', ',')
Stefan
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 2. März 2008, 19:08

sma hat geschrieben:Über einen speziellen codec (PEP 263) könnte man aber einen Präprozessor installieren
Das wird aber ab Python 3.0 nicht mehr möglich sein, dort werden die Codecs einzig dazu da sein, Bytestrings in Unicode zu wandeln.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten