Ruby

Après deux ans à pratiquer du “front end”, c'est-à-dire développer pour le Web côté client par opposition à côté serveur, j'ai finalement décidé d'apprendre la “vraie” programmation, orientée objet, et d'attaquer cet apprentissage avec le langage Ruby.

En fait, je ré-apprends la programmation, en partant de bonnes bases, en effaçant tout ce que je sais déjà, en me forçant à partir de zéro comme un débutant.

Voici pourquoi, et comment.

MA LIFE

Quand je dis que je ré-apprends la programmation, c'est parce que je l'avais déjà fait au siècle dernier, en 1987, avec le “GFA Basic” sur Atari ST.

Le GFA Basic n'avait de Basic que le nom, principalement pour des raisons marketing, et c'était en réalité un langage purement génial : un mélange de programmation structurelle “à la Basic” et de fonctions “à la C”, avec également la possibilité d'utiliser un peu d'assembleur Motorola 68000.

Donc un langage relativement abordable, pas trop abscons, mais néanmoins puissant et capable d'opérations complexes. A condition d'être très rigoureux dans la gestion de la mémoire et des composants de la machine. Oui, car à cette époque mes amis, on parlait directement aux microprocesseurs, ou presque.

En effet, les performances des machines étaient très faibles et il fallait redoubler d'ingéniosité pour exploiter au maximum les processeurs et co-processeurs.

Avec les résultats que l'on connaît, la révolution de la Demo Scene.

Cette programmation “classique” bien que débridée, j'en ai mangé mon aise pendant toutes les années 80 et un peu au début des années 90.

Je me débrouillais plutôt bien en GFA, surtout pour ce qui était de créer des interfaces avec le GEM, pour créer des Demo Menus pour les copains swappeurs de floppies, des séquences de scrolltext, des lecteurs de MOD (Trackers), etc.

Je faisais la structure et la logique en GFA, et d'autres codaient des bouts en Assembleur spécifiquement pour les animations à l'écran ; j'intégrais ensuite ces mini blocs en datas binaires dans mes programmes GFA et on tenait là… des trucs loin d'être parfaits mais qu'est-ce qu'on s'éclatait !

Ensuite j'ai voulu commencer sérieusement le C mais la vie a fait que j'ai pris une route tout à fait différente au final, et j'ai arrêté de programmer pour me lancer dans le son et la musique.

En 1996 avec l'arrivée du Web dans ma contrée, j'ai redécouvert le plaisir de coder avec le HTML et le JavaScript alors encore balbutiants.

Mais encore une fois, je n'ai pas insisté, car j'étais plus attiré par autre chose professionnellement.

Vers 2001 j'avais complètement arrêté de coder quoi que ce soit à la main par moi-même, je me contentais de bidouiller dans Linux, un peu de Shell, pas grand chose.

Et voici qu'en 2011 une formidable occasion se présente, alors que je bouillais à nouveau, depuis deux ou trois ans, de me replonger dans le code et notamment dans les sites Web.

Cette occasion -et d'autres ensuite- m'ont redonné confiance et motivation. C'était reparti, aussi simple que ça !

En fait, pas vraiment. Coder du front-end pour des sites Web ‘normaux’ c'est formidable, j'adore ça, mais ce n'est pas suffisant.

Si je veux vraiment m'investir dans ce futur et changer de profession, il faudra que ça me porte bien au-delà du Web pour me satisfaire.

Je veux tout simplement créer des applications.

Et comme j'ai appris il y a longtemps avec des méthodes et des outils désormais obsolètes, il faut repartir de zéro si je veux vraiment être performant.

Donc : ré-apprendre à programmer, et le faire avec un langage moderne et tourné vers l'avenir.

POURQUOI RUBY ET PAS PYTHON ?

Et d'ailleurs, pourquoi pas Objective-C tant qu'on y est ?

Soyons sérieux. Avant d'apprendre un langage tel que l'Obj-C je dois d'abord ré-apprendre la programmation : tout mon ancien savoir est basé sur de la programmation structurelle de machines qui n'existent plus !

Accomplir cette tâche et en même temps apprendre un langage réputé difficile (en fait surtout la complexité et la quantité des frameworks à manipuler ensuite), ce n'était pas une bonne idée.

Exit donc le C ou l'Objective-C pour le moment, on verra plus tard. Et je refuse d'entendre parler de Java, d'une manière ou d'une autre, ce n'est pas du tout mon univers.

Restait donc le choix cornélien : Ruby ou Python ?

Car ce sont en effet les deux langages modernes, orientés objet, bénéficiant chacun d'une large communauté, qui sont conseillés aux inconscients dans mon genre.

Ces langages sont des langages de script, donc non compilés (mais parfaitement distribuables), de haut niveau, parfois aux limites de l'abstraction par rapport à la machine, qui permettent de s'exprimer dans un code très naturel.

L'un comme l'autre présentent d'énormes qualités, mais ils ont chacun des spécificités bien précises.

D'après mes recherches, les grandes lignes étaient que Python est plus facile d'accès au début, mais que Ruby donne plus de liberté ensuite. Cette affirmation simpliste m'a pourtant convaincu.

J'ai donc choisi Ruby. :)

Et pas seulement pour ça : après avoir étudié de nombreux scripts, même quand je ne captais rien à leur contenu, je voyais bien que j'étais plus attiré par la syntaxe de Ruby que par celle de Python.

D'autre part, je m'étais un peu initié à Ruby quand j'ai appris à utiliser Jekyll et Nanoc, et je me sentais en terrain favorable.

Pourtant, Ruby est parfois vraiment surprenant, et pourrait paraître rebutant au premier abord.

En effet, alors qu'en Python on va toujours rechercher la manière idéale, la plus pythonesque d'accomplir une tâche (et on finit toujours par la trouver, paraît-il), en Ruby c'est totalement différent : il y aura d'innombrables méthodes très disparates qui amèneront au même résultat, et il sera difficile de considérer que l'un est meilleure que l'autre. Tout dépendra du contexte.

C'est qu'en Ruby, tout est objet. Au point que par moment on peut se retrouver en pleine “inception” et se perdre dans son propre code trop peu explicite si l'on n'a pas commenté correctement.

Tout du moins, c'est la sensation que j'ai maintenant, alors que je découvre.

C'EST LE DEBUT D'UNE LONGUE AMITIE

Mais je sais déjà que j'aime Ruby.

Je vais donc m'acharner sur ces livres :

J'y travaille en parallèle, car je ne tire pas le même enseignement de ces deux ouvrages, et bien évidemment je me gave aussi de tutorials trouvés sur le Web (attention à bien trier il y a des horreurs) et je commence à écumer les forums de questions-réponses.

J'essaie également de créer mes propres exercices en fonction des questions que je me pose.

A chaque inconnue (c'est-à-dire toutes les trente secondes) je cherche d'abord à résoudre le problème moi-même avant d'aller me renseigner.

Evidemment je fais plein de conneries et ça ne marche jamais vraiment comme je le pensais, mais c'est une méthode que j'ai déjà utilisée et éprouvée et qui me convient très bien, j'ai l'impression de faire des bonds de géant.

Gourmand, je me tape un repas gargantuesque de A à Z (les livres) et en parallèle je pique dans toutes les assiettes et je mange même le dessert d'abord, tiens. ;)

Sur ce, c'est la fin de cette note de blog, la toute première concernant cette nouvelle aventure au pays de Ruby.

C'était très “ma vie”, les prochains articles seront probablement plus techniques. Et il y aura bien sûr toujours les articles de blog et tutoriels habituels.

Si vous avez lu jusqu'ici, bravo, et à bientôt !

Auteur: Eric Dejonckheere