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 et printf, 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] ) }
        On a un code principal (JSCocoa, ou même ObjC) le plus simple possible, et un code localisation js qui peut récupérer toutes les informations nécessaires pour afficher une traduction correcte.
    • 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 ;)
  • Quels sont les prochaines évolutions du projet et quels contributions recherche tu pour le projet (documentation, code, etc.) ?

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 :)

Articles similaires