Dans quelques jours, la conférence
RubyRussia se tiendra à Moscou. Notre invité
Charles Nutter (travaillant sur JRuby et le support JVM sur Red Hat) a répondu à quelques questions.
Comment êtes-vous entré dans le monde de la programmation et de Ruby?En 2004, j'ai passé un contrat pour une société d'État en tant qu'architecte Java Enterprise. J'ai travaillé sur un projet pour l'USDA et j'ai passé quelques semaines par mois à Washington. Un de ces voyages a coïncidé avec RubyConf 2004, et depuis qu'un de mes amis m'a longtemps recommandé de faire attention à Ruby, j'ai décidé d'aller à la conférence. Je me suis donc retrouvé à un événement dédié à Ruby, n'ayant aucune idée de ce langage ... mais j'ai compris chaque morceau de code, chaque exemple donné. J'ai été étonné et me suis promis de trouver un moyen d'amener Ruby dans mon monde Java.
Sur quels projets travaillez-vous actuellement?Je suis l'un des deux chefs de projet JRuby. Ce travail comprend divers projets connexes, par exemple, la prise en charge des bibliothèques natives (nous prenons en charge Ruby FFI sur JRuby) ou la conversion de chaînes (portage d'une logique similaire à partir de CRuby). De plus, je travaille avec la communauté pour faire en sorte que nos utilisateurs puissent toujours obtenir de l'aide de notre part. En général, le travail est toujours complet!
Lequel de ces projets a le plus bel avenir?Je pense que c'est JRuby, bien que ce ne soit pas le langage le plus populaire sur la plate-forme JVM.
Au moins, nous avons contribué aux changements positifs dans la machine virtuelle Java elle-même. En grande partie grâce à notre collaboration avec Sun Microsystems et Oracle, la JVM est devenue une plate-forme pratique pour de nombreux langages dynamiques, pas seulement Java. J'espère que nous avons joué un rôle important dans ce changement.
Quelles langues écrivez-vous le plus souvent? Laquelle préférez-vous et pourquoi?J'écris principalement en Ruby et Java, puisque JRuby est écrit en utilisant les deux. Chacune de ces langues est bien adaptée à ses tâches. Ruby - pour créer des applications qui doivent se développer et s'adapter rapidement. Java - pour écrire des bibliothèques et des services rapides et fiables. Et JRuby combine le meilleur des deux mondes!
Aimez-vous la programmation en Java?Oui, en particulier compte tenu de toutes les améliorations de langage récemment ajoutées, telles que les lambdas (fermetures ou blocs dans Ruby), et la nouvelle syntaxe de déclaration des variables locales (var) lorsqu'un type statique est unique.
Que pensez-vous de Rust?La rouille est une excellente langue! Au collège, j'ai beaucoup utilisé le C ++, mais je peux certainement dire que si je connaissais Rust à ce moment-là, je préférerais écrire dessus. J'aime particulièrement le modèle de propriété de type statique, qui nous permet d'écrire des programmes parallèles stables et garantit un accès sécurisé à la mémoire. Je pense que d'autres langues devraient l'adopter à l'avenir.
Que pensez-vous des perspectives de Ruby? Pendant de nombreuses années, beaucoup de gens croient que la langue et sa communauté "meurent" ...Après de nombreuses années de travail sur JRuby, je suis tombé amoureux de la syntaxe Ruby et de son fonctionnement. Mais, je crains que le problème de performances existe vraiment et soit important. JRuby a du mal à faire des threads parallèles une réalité pour les développeurs Ruby, mais jusqu'à présent, la grande majorité des services Ruby utilisent plusieurs processus isolés, gaspillant d'énormes quantités de ressources CPU et mémoire. Je pense que cela est dû à l'API C trop grande et invasive pour l'écriture d'extensions Ruby, qui ne permet pas la mise en œuvre d'améliorations telles que les threads parallèles.
Mais je ne perds pas espoir qu'un jour nous verrons encore des changements.
Laquelle des fonctionnalités Ruby les moins populaires devriez-vous envisager à l'avenir?J'ai hâte que les chaînes deviennent immuables par défaut, comme c'est le cas dans la plupart des autres langues. La programmation simultanée serait beaucoup plus simple si davantage d'objets Ruby pouvaient être rendus profondément figés. Il peut ressembler au modèle utilisé dans Rust ... si vous partagez un objet dans des flux, vous devez choisir la version de l'objet qui ne sera pas modifiée exactement. Cela s'étend aux tableaux, aux hachages et à presque tout autre objet modifiable dans Ruby: nous devons simplifier le blocage des modifications de données.
J'ai un gros vieux projet monolithique Ruby. Je me demandais si je pouvais le traduire en JRuby. Comment cela pourrait-il être fait et est-ce même logique?En fait, la première question est de savoir si cette étape vous aidera.
Les arguments importants pour passer à JRuby pourraient être:
- Réduire le coût des ressources en cas d'inconvénient, par exemple, si plusieurs applications sont hébergées sur le même serveur à la fois
- Déploiement d'une application Ruby dans un environnement lourd JVM utilisé par de grandes organisations financières et gouvernementales
- La nécessité d'accéder à des bibliothèques qui n'existent qu'en Java, ou qui sont plus faciles à porter sur la JVM, que leurs équivalents en Ruby ou C
- Une légère augmentation des performances dans les applications avec une informatique lourde (qui charge le processeur) ou avec un grand nombre de tâches parallèles.
Je dirais que si l'application évolue bien et ne vous coûte pas trop cher, alors vous ne devriez peut-être rien faire. Mais si vous décidez d'obtenir plus de Ruby, voici le processus de migration:
- Rassemblez toutes les bibliothèques tierces que votre application utilise.
- Mettez en surbrillance parmi eux ceux qui utilisent des extensions C.
- Trouvez l'équivalent de JRuby pour chaque extension. Nous avons plusieurs
- pages sur le wiki JRuby à ce sujet. Les bibliothèques les plus populaires ont des versions JRuby. S'il n'y a pas de version JRuby, vous pouvez utiliser une version Ruby pure (elle sera assez rapide sur JRuby) ou des bibliothèques JVM (en Java, Scala, Clojure, etc.), qui peuvent être utilisées en remplacement.
- Dès que toutes vos gemmes auront gagné sur JRuby, l'application entière fonctionnera! Nous accordons beaucoup d'attention à la compatibilité et essayons de prendre en compte les nouveaux problèmes auxquels nos utilisateurs sont attentifs. Par conséquent, avec une forte probabilité, si vous disposez d'un bundle sur JRuby, l'application fonctionnera.
Eh bien, alors la partie la plus difficile commence - que faire des ressources libérées. Combien de threads pour paralléliser l'application, comment dépenser l'argent économisé ... :)
Que doivent savoir les étudiants pour devenir de bons programmeurs?Quand j'étais à l'université, mes cours d'informatique enseignaient le schéma, un langage fonctionnel comme le lisp qui était parfait pour apprendre les bases de la programmation. Je recommande toujours aux programmeurs novices d'étudier au moins une partie du livre Structure and Interpretation of Computer Programs, publié par le Massachusetts Institute of Technology (MIT). Eh bien, en général, plus vous connaissez de langues différentes, mieux c'est. Cela donne de nouvelles idées et vous permet d'envisager la solution à vos problèmes sous différents angles.
Où trouvez-vous la motivation pour travailler? Avez-vous rencontré le problème de l'épuisement professionnel?L'épuisement professionnel est un vrai problème dans notre industrie. Travailler surtout en open source
Cela apporte beaucoup de stress. Je pense que cela est arrivé à tout le monde ... quand il y a trop de travail, vous n'avez pas le temps de tout faire, vous sacrifiez du temps avec votre famille et vos amis, vous oubliez votre santé pour corriger un autre bug régulier. Pour lutter contre cela, j'essaie de me concentrer sur un passe-temps: jouer à des jeux informatiques et de société, apprendre à jouer de la guitare,
apprendre des langues étrangères et parcourir le monde, rencontrer de nouvelles personnes. Un bourreau de travail grognon vivra toujours en moi, me persuadant de retourner au travail, mais j'essaie toujours de maintenir le bon équilibre.
Quelle est votre opinion sur la Russie et qu'attendez-vous du prochain événement RubyRussia?J'adore la Russie et tous mes voyages à la conférence ici au cours des dernières années ont été très utiles. Ce sera ma quatrième visite, auparavant j'étais à Saint-Pétersbourg, Moscou et même à Novossibirsk (!!!). J'ai hâte de retourner à Moscou et de rencontrer la communauté russe Ruby, dont j'ai beaucoup entendu parler.
Les questions ont été préparées par
Dmitry Matveev , PM d'
Evrone . Et vous pouvez poser votre question dès le 6 octobre. Alors rendez-vous à la conférence! Tous les détails sur le
site .
Vous pouvez lire l'original en anglais sur
hype.codes .
Et un grand merci aux entreprises qui soutiennent le principal événement Ruby en Russie:
Associé commandité -
ToptalPartenaires Or -
Gett et
CookpadPartenaires Silver -
Instamart ,
UCHi.ru ,
JetBrains et
QleanPartenaire
Afterparty -
TeachbasePartenaires Bronze -
Bookmate et
InSales