Comme tous les utilisateurs de Hypercard je suis bloqué, puisque que Classic ne fonctionne plus sur les nouveaux Mac à processeur Intel, et que Apple nous a fait la vacherie d'abandonner Hypercard. Il faut donc convertir, mais vers quoi ? Revolution, Cocoa/AppleScript, Cocoa Objectif-C ?
AppleScript Studio n’est guère plus difficile à apprendre que Hypercard. Il faut s'appuyer sur les exemples types fournis par Apple et le web. Je donnerai ceux de base pour introduire ceux d'Apple, et décrirais pas à pas la construction de mon application de gestion de ma CDthéque.
Toujours partant, alors lisez la suite. Je décris mon processus de choix et d'apprentissage.Pour la petite histoire, j’ai acheté Dreamcard la version pour particulier de Revolution en 2004, mais j’y renonce à cause :
N'ayant pas l'intention de vendre mes applications, je n'ai pas besoin de la portabilité du logiciel Revolution. J'ai donc, quitte à apprendre quelques choses de nouveau, décidé de me tourner vers Cocoa, avec Xcode et Interface Builder, produit pur Apple.
Pour choisir, en premier, j'ai lu le livre de Hillegraas sur Cocoa Objectif-C. J'en ai conclu, que se serai relativement facile d'apprendre à faire les Menus, boutons, etc, avec Interface Builder, par contre l'Objectif-C risquait d'être plus compliqué à apprendre et surtout à ne pas oublier, vu ma faible utilisation. Généralement quelques mois en hiver, quand la Bretagne est sous la pluie.
D'autre part, et bien que je connaisse - ancestralement - des langages comme le Basic, Fortran, et autres, la syntaxe de l'Objective-C m'a fait vomir, car c'est du "programmeur profond", idéal, pour du développement performant à plein temps, mais très loin d'un langage de haut niveau comme Hypercard.
Enfin, n'ayant pas de calcul important dans mes applications, je ne pense pas risquer une faible réactivité en utilisant AppleScript. Je me suis donc tourné vers Cocoa/AppleScript appelé AppleScript Studio.
Pour me faire une idée, j'ai fait les exercices du Tutorial "SarbaMac" pour AppleScript Studio qui comprend Xcode, Interface Builder, et le code en langage AppleScript. La facilité d'apprentissage m'a convaincu. j'ai donc, en préréquisits décidé d'apprendre AppleScript. Ce dont, je vais vous parler maintenant.
Janvier 2008, après un an d'utilisation d'AppleScript Studio (ASS), et passage à Léopard, ai-je changé d'avis. Non, je reste avec ASS, mais j'insulte tous les jours Apple pour la qualité lamentable de sa documentation, l'absence d'un débugeur sérieux, d'un compilateur qui n'indique même pas où est la ligne de code fautive.
Tous est facile, pour créer boutons, tableaux, tiroirs, 99% des cas la gestion est implicite sans ajout de code, mais quand cela ne marche pas, vous êtes comme une poule devant un couteau, sans outil d'aide. Heureusement, l'entraide internet est là avec la mailing liste AppleScript "applescript_fr@patpro.net".
Enfin, se rappeler que ASS ne couvre que les fonctions de base de Cocoa. Suffisant pour des besoins utilisateurs équivalents à la conversion de mes applications Hypercard. Mais insuffisant si vous voulez vous lancer dans des applications systèmes plus pointues, là il faut coder en "C", ou, j'ai pas encore essayé, en Ruby, langage qui me parait être très intéressant.
Notez, que je n'ai pas eu besoin de pousser très loin l'apprentissage de AppleScript avant de m'attaquer à la construction de mon application en AppleScript Studio avec Xcode et Interface Builder.
Deux approches, la lecture d'un livre dans votre fauteuil, si vos yeux fatiguent à lire à l'écran, ou gratuit en PDF chez http://trad.applescript.free.fr/ vous trouverez en français tout ce dont vous avez besoin.
J’ai lu deux livres :
Puis un mois plus tard, j'ai commencé à en lire un troisième "AppleScript the definitive guide" de Matt Neuburg. Il est lui aussi en anglais.
Lisez, le Adam, en introduction, pour vous faire une idée d'AppleScript, et de son utilisation dans Mail, Safari, etc. Ce livre est agréable à lire, en français. Il est vite lu, car c'est un survol, une introduction, et en aucun cas un manuel de référence. Donc, pour moi, il vous sera de peu d'aide pour la mise au point de votre code. Je recommande aussi le Adam pour ceux qui fatiguent à rester trop longtemps à lire sur un écran. Le Adam est parfait à lire d'une traite dans votre fauteuil. Sinon, un PDF gratuit comme AS4AS_FR chez http://trad.applescript.free.fr/applescript.html vous fera une excellente introduction au langage AppleScript, sans les exemples dans Mail, Safari, etc
Un site pour les débutants, avec un pas à pas d'apprentissage :
http://didierdurandet.free.fr/applescript/index.php?Applescript
Le Danny Goodman est un livre de référence, expliquant les concepts, et le détail de chaque commande. Vous y reviendrez à chaque fois que vous avez un doute sur une commande. Je n'ai pas trouvé d'équivalent en français. Je n’ai pas acheté tous les bouquins non plus. Seule s'en approche la documentation officielle Apple, traduite chez http://trad.applescript.free.fr/applescript.html dans le Guide_AppleScript.pdf, PDF de 368 pages.
Le Matt Neuburg "AppleScript the definitive guide" est un livre sérieux, complet, le livre à lire une fois prise la décision d'utiliser AppleScript. Il est en anglais, et cher, car j'ai dû le faire venir des USA.
Très difficile de choisir entre le Goodman et le Neuburg, disons, le Goodman me semble plus un document type "reference manual", soit beaucoup d'exemples, et le minimum suffisant de texte, et le Neuburg est plus un livre de texte avec aussi beaucoup d'exemples. Les deux sont en anglais, et d'un prix élevé.
Notons aussi, puisque je ferai souvent référence à feu Hypercard, que je n'ai pas trouvé l'équivalent de la pile Hypercard de référence, qui donnait la définition de chaque commande et des exemples d'utilisation.
De même, les logiciels de mise au point sont peu nombreux. Celui de Apple est minimal, mais comme les autres du commerce Script Debugger, et Smile, ne m'ont pas convaincu, car pas si simple à appréhender pour débuter. Je suis resté avec Script Editor d'Apple pour mes premiers pas, et passé directement à AppleScript Studio.
Notons que, Smile est gratuit et a une très bonne réputation, et que Script Debugger est très cher, mais possède un environnement de mise au point sophistiqué.
Si vous avez un budget serré, et pas de soucis de lire longtemps à l'écran, notez que vous avez pas mal de PDF, en français et anglais, qui peuvent tout à faire vous suffire pour apprendre.
Chez http://trad.applescript.free.fr/ il y a tout ce qu'il faut.
Il faut bien comprendre que les objectifs ne sont pas les mêmes. Hypercard est un langage autonome s'appliquant sur son environnement propre. AppleScript lui s'applique à différents environnements, comme Mail, iTune, etc. Un article de donnée de iTune n'a rien à voir avec celui de Mail. Il ne peut être manipulé de la même manière.
Ceci implique qu'une même commande ne fait pas la même chose suivant l'environnement. De ce fait, Apple a défini un kernel minimum pour AppleScript commun à tous, puis chaque environnement (Mail, iTune,etc) définit un dictionnaire complémentaire de commande.
La compréhension de chaque dictionnaire est la plus grosse difficulté, que j'ai rencontrée, dans mon apprentissage de AppleScript. C'est abscons et il n'y a pas d'exemple.
De plus, certaines applications n'ont pas de dictionnaire. Il est dit qu'elles ne sont pas "scriptable", sauf en passant par les commandes AppleScript gérant les menus par la souris. Pas simple, et sérieusement abscons. Heureusement, de l'aide vous viendra par les mailing list comme : applescript_fr@patpro.net en français.
J’ai déjà écrit en AppleScript plusieurs de mes routines Hypercard. Les deux langages sont très proches, mais moins de possibilité en AppleScript. Par exemple, pas d’équivalent à une simple phrase Hypercard comme. “if first char of input is space then delete first char of input”.
Ou pas de “If test then next repeat”, donc obligation d'imbriquer des if..then..else.. rendant le code bien moins lisible. Je m’y ferais les scripts seront plus long.
Par exemple une fonction supprimant les espaces en début de ligne.
Premier point, puisque je m'adresse ici à des personnes connaissant déjà Hypercard, la syntaxe est proche, et compréhensible.
Par exemple "Count of input" est l'équivalent de "number of chars". Vous dites "From" au lieu de "=" dans une repeat
Notons la différence, Hypercard 8 lignes, AppleScript 10 lignes.
En excuse à AppleScript, il faut dire que AppleScript est généraliste, permettant de scripter beaucoup d'applications différentes. Donc, il ne peut être aussi performant que Hypercard spécialisé.
A ce stade de la présentation, surtout si vous connaissez déjà Hypercard, vous pouvez aller directement à l'apprentissage d’AppleScript Studio, ou faire un tour par mon expérience d'AppleScript, en étudiant les exemples de script AppleScript que j'ai fait et commentés.