Xavier Noria sur Rails 6, conseil et plus

Déjà ce samedi, nous rencontrerons tous les rubistes lors de la conférence principale consacrée à cette technologie - RubyRussia 2019 . Le 28 septembre est très proche, et dans cette interview, les questions de Xavier Noria ont été préparées par le développeur d'Evrone Pavel Argentov , et les étudiants et les enseignants avec lesquels il travaille sur le cours «Langages de programmation Internet» au MSTU l'ont aidé.

image
Une photo rare de la dernière visite de Chavier en Russie - au RailsClub Moscou 2012

Que considérez-vous comme le plus intéressant et le plus important de ce qui s'est récemment produit dans le monde du RoR?

Je pense que Rails 6 était une version impressionnante. Nouveaux composants de base, prise en charge de plusieurs bases de données, tests parallèles; Un nouveau bootloader qui "envoie à l'histoire" le fameux râteau à chargement automatique.

Vous gagnez votre vie avec Rails consulting. Qu'est-ce que cela vous a donné en tant que programmeur?

Surtout, cela m'a donné l'expérience et la conscience que le travail ordinaire ne peut pas fournir. Le conseil enrichit. Chaque entreprise et chaque équipe, elles sont différentes. Vous rencontrez divers domaines d'activité, cultures, flux de travail, architecture, fonctionnalités et préférences. L'adaptation aux environnements mobiles, les tâches qui doivent être abordées, conservent des compétences pour résoudre des problèmes aiguisés.

En poursuivant avec la question précédente, sur la base de votre expérience, que doivent garder à l'esprit les développeurs de Rails?

Les développeurs doivent tout d'abord connaître Ruby et Rails aussi profondément que possible. Cela signifie lire des livres et de la documentation, plutôt que des articles de blog dispersés. Le maître doit posséder son instrument. Par exemple, vous devez bien comprendre SQL pour que Active Record soit un catalyseur pour le processus, pas une boîte noire. Utilisez Active Record - pour générer facilement et en toute sécurité du SQL qui serait autrement écrit à la main - et traiter facilement les jeux de données résultants. Une bonne compréhension de HTTP est importante car c'est la langue que l'application parle au monde extérieur (y compris la mémorisation des WebSockets). Il y a beaucoup d'autres choses à garder à l'esprit, mais je mentionnerais surtout les performances. Vous devez savoir comment piloter les benchmarks, vous devez connaître GVL en IRM et tout ça. Recherchez des ressources sur ce sujet, étudiez-les, développez une intuition éclairée.

Ruby est-il vraiment le langage qui améliore l'esprit du programmeur? Comment en tirer le meilleur parti?

Je suis personnellement sceptique face à de telles généralisations. Ruby m'excite et Scala excite les programmeurs Scala. Je fais du Perl depuis quelques années et je l'aime beaucoup, mais beaucoup ne l'aiment pas. Différents cerveaux trouvent du plaisir dans différents formalismes, même vos propres préférences peuvent changer avec le temps. En tant que programmeur, il vaut mieux utiliser autant de langues que possible et autant de paradigmes que possible. Le langage qui m'a brisé était Prolog. Le paradigme qui m'a le plus influencé était la «programmation littéraire» dans le style de Knuth. Passer par ces méthodes de programmation complètement différentes vous rend meilleur. Je trouve Ruby particulièrement flexible et de haut niveau.
Un niveau élevé permet de discuter «plus près de la tâche». Cela m'attire vers les langues de très haut niveau (VHLL). Je suis mathématicien de formation et je peux travailler avec n'importe quel formalisme qu'ils implanteront; Les langages de programmation sont ici des jouets pour enfants. L'exhaustivité de Turing, par exemple, ne coïncide pas avec l'équivalence pratique. Pour résoudre de vrais problèmes, il est difficile de trouver quelque chose de mieux que VHLL. Vous vous sentez vraiment puissant et productif, car il y a moins de complexité artificielle et vous pouvez mieux vous concentrer sur la vraie solution au problème. Résoudre de vrais problèmes, c'est ce qui m'a fait poursuivre une carrière en programmation. De manière générale, «là où C est nécessaire - prenez C».

Nous rendons la conférence plus «Ruby» que «on Rails». Quelles sont les applications Ruby en dehors de Rails, ou même en dehors de webdev?

Si ma mémoire est bonne, le premier programme Ruby que j'ai utilisé était le gestionnaire de port / package FreeBSD. C'était au début des années 2000 avant Rails. Les logiciels Ruby populaires non directement liés au développement Web sont Vagrant, Metasploit, Jekyll, Chef, Puppet ou Homebrew. De plus, les systèmes des entreprises Rails se composent rarement uniquement d'une interface Web. En règle générale, il existe tout un écosystème de logiciels. Une entreprise dont la langue principale est Ruby possède généralement également un logiciel backend Ruby propre (peut-être en conjonction avec d'autres technologies).

Par exemple, dans l'entreprise que je consulte actuellement avec Stuart Delivery, je viens de mettre en œuvre un service qui accepte les messages de Kafka à Redis pour le traitement par les employés de Sidekiq. Nous avons également travaillé sur un projet de migration de données non trivial et sur un émulateur d'entreprise super intéressant. Tout est écrit en pur Ruby. Le front-end du côté serveur de l'entreprise est Rails, mais dans les coulisses et sur toute la plate-forme, il y a beaucoup plus de programmes et de langues. C'est un phénomène courant dans ma pratique.

Spoiler Time - Quel sera votre rapport à RubyRussia 2019?

Je vais parler de Zeitwerk, le nouveau joyau Ruby qui implémente le chargement automatique, le redémarrage et le démarrage actif pour les projets Ruby. Rails 6 délègue ces fonctionnalités à Zeitwerk par défaut.

Quelle est votre meilleure impression du monde Ruby? Peut-être du code, de la technologie, des connaissances ou de l'attitude?

C'est une impression subjective, mais je pense que le monde de Ruby était étonnamment innovant. Nous en avons parlé avec Terence Lee il y a quelque temps. Pour commencer, je pense qu'il est difficile d'être en désaccord avec l'affirmation selon laquelle Rails représente une véritable révolution dans le développement Web. Des entreprises comme Heroku, New Relic, Shopify ou GitHub étaient tout simplement révolutionnaires. Cependant, d'après mon expérience, les gens qui gravitent principalement vers certaines communautés sont en partie aveugles à ce qui se passe dans les communautés du quartier. Je suis sûr que l'innovation peut être trouvée dans n'importe quelle communauté, que ce soit Scala, Haskell ou même Brainfuck. Ainsi, si je pouvais observer globalement chaque communauté, je trouverais que la communauté Ruby n'est pas particulièrement innovante, car elles sont toutes innovantes d'une manière ou d'une autre.

À votre avis, Rails a-t-il besoin de quelque chose comme une bibliothèque de composants CMS standard? Comme des échafaudages pour la construction de pièces CMS standard?

À mon avis, c'est un peu hors sujet pour Rails. Permettez-moi également d'utiliser cette question pour dire que les échafaudages ne sont qu'un moyen abordable de faire une démonstration rapide lors d'une conférence ou de générer une application pour vérifier quelque chose, reproduire une erreur, voir comment fonctionne une fonction particulière. Je n'ai jamais vu d'échafaudages «au combat», ils ne conviennent pas à un usage pratique.

Les solutions modernes sont généralement hétérogènes: nous pouvons utiliser Julia pour ML, Java pour les charges de travail lourdes. Ruby fournit-il suffisamment d'outils pour l'interaction linguistique? Existe-t-il des outils pour vous faciliter la tâche?

JRuby communique avec Java nativement. Vous pouvez écrire des extensions C pour l'IRM, vous pouvez envelopper les bibliothèques C de manière portable à l'aide de FFI, et Helix vous permet d'écrire des extensions dans Rust. De manière générale, il est plus facile de communiquer avec les processus de manière standard en utilisant le système de fichiers, les sockets, HTTP, les bases de données, gRPC, les courtiers de messages.

Comme beaucoup l'ont remarqué, Ruby n'est plus "nouveau et brillant". Maintenant, c'est plus un «bon vieux langage». Les étudiants, en revanche, sont jeunes. Comment motiver leur intérêt pour l'apprentissage de Ruby?

Dans les années 2000, j'ai enseigné le Perl aux étudiants de l'Université de Barcelone pendant sept ans pendant mon temps libre. Avant mon cours, ils traitaient principalement du C et de Java, et j'ai parlé des langages de script, et de Perl utilisé comme exemple. C'était très amusant. Nous avons besoin d'un programme fascinant qui enseignera la programmation, se concentrera sur ce qui est disponible avec ces langues et vous permettra de vous plonger dans un choix spécifique. Dans le cas de Ruby, cela va d'une simple mise en œuvre de POO à de fantastiques capacités de métaprogrammation. Vous pouvez montrer, par exemple, comment le modèle Active Record fonctionne sans une seule ligne de code dans le corps de la classe.

Il existe des dizaines de langages de programmation parmi lesquels choisir. Pourquoi choisir Ruby, pourquoi pas Python ou JavaScript, que diriez-vous de Clojure, Rust, C ++, Go? Toutes les options sont controversées ou vice versa - ce sont toutes d'excellentes options. Choisissez-en un, rendez le cours mémorable, amenez les étudiants à étudier la programmation, les meilleures pratiques, le concept d'idiome, laissez-les apprendre à vérifier la documentation et explorez des questions connexes importantes qui dépassent le formalisme. C'est ce qui va les faire grandir, les préparer fondamentalement à la profession. À mon avis, c'est le rôle de l'université.

Il existe de nombreux outils différents pour la même chose: Rails core avec Active Record, Dry-rb et autres. Dois-je saisir les alternatives? Ne font-ils pas des Rails des «chemins» au lieu de «chemins»?

Cela dépend en grande partie des préférences individuelles. Vous devez absolument étudier et comprendre les combinaisons d'outils, de couches et de modèles qui vous conviennent. Il est important de se rappeler que «Chemin Rails» ne signifie pas «déposer l’application entière dans les dossiers par défaut». Il s'agit d'une idée fausse courante. Voulez-vous des décorateurs? Objets de service, PORO? Super! Cela ne contredit pas ce que l'on appelle «The Rails Way». Rails fournit un ensemble d'abstractions par défaut et d'organisation du code, ce qui, à notre avis, est assez bon pour de nombreuses applications, au moins comme point de départ. Et puis, si vous aimez écrire des actions de contrôleur en tant que fichiers à ligne unique qui déchargent tout le travail dans des objets de service, vous pouvez le faire. Certains peuvent ne pas aimer ça. Différentes personnes - différents cerveaux.

Rendez-vous à RubyRussia!

Rappelons que la conférence a déjà lieu ce samedi, les inscriptions sont toujours ouvertes.

Il y aura non seulement des rapports, mais aussi des stands des meilleures entreprises:

Organisateur - Evrone
Associé commandité - Toptal
Partenaire Gold - Gett
Partenaires Silver - Valarm , JetBrains , Bookmate et Cashwagon
Partenaire Bronze - InSales

Source: https://habr.com/ru/post/fr468769/


All Articles