Une deuxième interview sur Cocoa.fr et il s'agit cette fois ci de Patrick Geiller, l'auteur de JSCocoa.
- Bonjour Patrick, peux-tu te présenter en quelques mots ?
J'ai 30 ans, je programme depuis … longtemps. D'abord en C++ sous Windows, puis PHP, Javascript, et maintenant Cocoa.
- Depuis quand utilises-tu un Mac pour développer, et pourquoi être passer sur Mac ?
Sur Slashdot, beaucoup vantaient OSX. J'ai lu les documentations sur developer.apple.com, découvert Interface Builder et sa façon de 'dessiner' les liens entre composants … wow ! Je suis passé sur Mac avec le mini. Cocoa m'a beaucoup influencé : dans mon dernier boulot (web/js), j'avais écrit un framework pour lire un .xml contenant définition d'interface, bindings, règles de resize … tout comme un NIB :)
- Maintenant quelques questions concernant JSCocoa et tout d'abord, depuis quand est-ce que JSCocoa est-il en développement ?
Depuis Juillet. Je voulais un script facile à utiliser dans Cocoa, j'avais eu de mauvaises surprises avec RubyCocoa (rajouter une ligne vide dans une routine stoppait un plantage bizarre !), le bridge de WebKit était limité a Cocoa 'brut' (ni fonctions C, ni dérivation, ni structures — pas pratique pour utiliser NSPoint). Ainsi est né JSCocoa … par frustration :)
-
Quels sont les atouts de JSCocoa par rapport à un programme en Objective-C/Cocoa ?
-
Avantages
- Dynamique ! on peut charger du code en runtime facilement, ou taper du code pour inspecter son application, toujours en runtime.
- Rapide au lancement : le code est interprété au fur et à mesure des besoins. On peut éditer le code (même dans TextEdit !), quitter, puis relancer rapidement.
- Accès aux fonctions Javascript comme les expressions régulières, bizarrement absentes dans Cocoa.
-
Une syntaxe à points :
a.b.c.d
au lieu de[[[a b] c] d]
. -
(peut-être) simplification de la localisation. Plutôt que
NSLocalizedString
etprintf
, donner une petite fonction Javascript qui va renvoyer une string dépendant du langage.// Code application myNSTextField.stringValue = pluralizeNoun('book', myArray.count) // Code localisation function pluralizeNounUS(noun, count) { return count + ' ' + noun + (count>1 ? 's' : '' ) } var noun1 = { 'book' : 'buch', 'shoe' : 'schuh' } var noun2 = { 'book' : 'bücher', 'shoe' : 'schuhe' } function pluralizeNounDE(noun, count) { return count + ' ' + (count>1 ? noun2[noun] : noun1[noun] ) }
-
Désavantages :
- comme Javascript n'est pas compilé, une erreur ne sera pas détectée au lancement, seulement à l'activation du bout de code correspondant. D'où la nécessité de tests pour vérifier le programme une fois lancé
- Javascript est plus lent que ObjC. JSCocoa est encore plus lent — parfait pour écrire la logique, mais on oubliera le raytracer JSCocoa ;)
-
Avantages
-
Quels sont les prochaines évolutions du projet et quels contributions recherche tu pour le projet (documentation, code, etc.) ?
- Le faire tourner sur iPhone (Scoop ! JSCocoa tourne depuis hier dans iPhone simulator)
- Rajouter une console texte pour utiliser depuis Terminal (cf Command line interpreter and REPL for JSCocoa)
- Créer un type de fichier .jscocoa qu'on peut double cliquer et surtout rafraîchir facilement, comme une page html
- Régler bugs et performances sur http://code.google.com/p/jscocoa/issues/list
Côté contributions, je recherche des gens pour écrire des exemples — n'importe quel petit projet est le bienvenu ! Et des développeurs iPhone pour tenter de faire marcher JSCocoa sur l'iPhone.
- D'autres remarques ou un message à faire passer aux lecteurs du blog ?
J'aurai bientôt besoin de beta testeurs pour ma première application commerciale. Avis aux amateurs :)