Le cours "Langages de programmation Web" (basé sur Ruby) de MSTU. N.E. Bauman sur la chaîne Technostream



Dans cet article, nous parlerons du cours "Langages de programmation Web" , qui est enseigné au Département "Systèmes et réseaux informatiques" (IU-6) MSTU. N.E. Bauman. Des exemples sont donnés sur Ruby, et le cours lui-même est composé de 16 conférences vidéo disponibles gratuitement sur la chaîne Technostream . Chez Baumanka, le cours est dispensé à des étudiants de deuxième année déjà familiarisés avec les langages de programmation de haut niveau tels que Pascal, C ++ ou Java. L'accent principal est mis sur une compréhension systématique des technologies utilisées dans la programmation Web, et non sur la profondeur de développement des technologies Ruby. Par conséquent, le cours sera également utile aux étudiants qui ont une connaissance sommaire des technologies Web dans n'importe quelle langue.

Table des matières


  1. A propos du cours "Langages de programmation Web"

  2. Contenu de la conférence

  3. Comment créer un cours pour une université
  4. Pourquoi Ruby?
  5. Pourquoi Ruby n'est pas populaire?
  6. Résumé

Langages de programmation Web


Pourquoi le cours s'appelle-t-il Langages de programmation Web? La réponse est très simple. Comme il y a 30 ans, alors qu'Internet venait à peine d'émerger, il est désormais impossible d'utiliser un seul langage de programmation.

  • Les langages de balisage sont HTML et CSS.
  • Langages de configuration et d'échange de données - JSON, XML, YAML.
  • Programmation du navigateur - Javascript (Typescript, Coffeescript ...).
  • Programmation serveur - Ruby, PHP, Perl, Java, Javascript ...

Pour comprendre la programmation Web, même en quantité minimale, vous devez connaître le langage de balisage et de programmation 4-5 (bien que les frontières entre eux soient maintenant floues).

Objectif du cours


L'objectif principal du cours est de comprendre les technologies nécessaires au développement Web, car la plupart des projets modernes sont en quelque sorte liés au développement Web. Le cours est organisé de manière à donner aux étudiants sous une forme concise les bases qui peuvent être utilisées comme cadre pour une étude approfondie.

Les étudiants développent des compétences spécifiques de manière indépendante au cours de la formation, et le degré de développement dépend de votre intention de vous immerger dans le développement Web à l'avenir.

Auteur du cours


Le principal développeur du cours est un candidat en sciences techniques, professeur agrégé de la chaire "Systèmes et réseaux informatiques" du MSTU. N.E. Bauman Samarev Roman Stanislavovich. Programmeur avec plus de 20 ans d'expérience (C ++, C, Java, Perl, PHP, Ruby et autres pour Windows, Linux, Embedded Linux, MacOS), responsable du développement logiciel, chercheur dans le domaine du SGBD, du traitement des données et du big data, a travaillé en Russie, en Allemagne et aux USA.

Durée et format


Le cours complet comprend 192 heures académiques: 16 conférences de 2 heures, 8 séminaires de 2 heures, 48 ​​heures pour 12 travaux de laboratoire. Le reste du temps est consacré à l'autoformation. Le matériel vidéo ne comprend que la partie conférence. Ceux qui souhaitent approfondir le sujet du cours, le matériel de travail en laboratoire et les séminaires devront apprendre de manière indépendante. Toutes les questions peuvent être posées à l'enseignant: samarev@acm.org .

Résultats


Dans le cadre de la formation, nous formons la compréhension des étudiants non seulement des technologies Web spécifiques implémentées dans le langage de programmation Ruby, mais plutôt une perception holistique des problèmes qui se posent lors de la création d'applications Web et de tout ce qui les accompagne, en utilisant Ruby comme une très bonne illustration. Le langage Ruby lui-même est un ajout utile pour les étudiants, qui peut être largement utilisé en dehors du cours.

Contenu du cours


Conférences 1-2. Présentation

  • Une introduction à la programmation web en termes d'architecture de base.
  • Informations minimales sur les langages de balisage et les feuilles de style.
  • Introduction minimale à Javascript.



Javascript aurait peut-être dû consacrer beaucoup plus de temps, mais comme la programmation Web par navigateur n'est pas l'objectif principal du cours et que les technologies de programmation côté serveur en Javascript n'ont pas encore été établies, le matériel disponible est suffisant pour une compréhension initiale.

Conférences 3-5. Rubis

Les trois prochaines conférences sont consacrées au Ruby, car ce sont les technologies de ce langage Ruby qui sous-tendent le cours. Les conférences comprennent:

  • Les bases du langage Ruby.
  • Informations requises sur la structure de type et le modèle d'objet.
  • Style fonctionnel.




Conférence 6. Principes de création d'applications Web

  • Interface de passerelle commune.


Quelqu'un dira que cette norme n'est pas pertinente, mais elle sous-tend toute la programmation Web moderne. Par conséquent, tout programmeur Web est simplement obligé de savoir de quoi il s'agit et doit comprendre que l'application Web la plus simple est simplement mise «Hello World».

Conférence 7. Rack

  • Rack est une couche intermédiaire pour la plupart des frameworks Web Ruby.
  • Sinatra est un cadre commun pour créer des applications simples.
  • Un exemple de création d'une application.


Conférence 8. Introduction aux rails

  • Aspects clés d'une application Rails.


Ruby on Rails est le cadre même qui a rendu Ruby célèbre et est presque devenu son synonyme. Ceci est un exemple d'un framework profondément développé avec le concept Model-View-Controller, qui a servi de prototype pour la création de nombreux autres frameworks web, dont Grails et Django. Notez que le concept Rails est de générer autant de code que possible avec des générateurs automatiques et d'écrire moins à la main.

Conférence 9. Interaction asynchrone

La plupart des applications Web modernes utilisent la méthode asynchrone, c'est-à-dire que les demandes du serveur disparaissent en arrière-plan pour l'utilisateur. Les réponses sont élaborées quelque part au fond du navigateur. Que devez-vous savoir ici?

  • Formats d'échange - XML ​​et JSON.
  • Exécution d'une demande asynchrone à partir de Javascript.
  • Le concept de Javascript discret appliqué à Rails.


Conférence 10. Test

Tous les programmes modernes devraient être couverts par des tests automatiques. Ruby implique l'utilisation de tests unitaires. Et, bien sûr, Rails suggère que toute action devrait être couverte par des tests. La conférence comprend les sujets suivants:

  • Test de divers aspects des applications Web.
  • Introduction aux langages de domaine (puisque RSpec et Cucumber sont les exemples mêmes de «l'humanité» dans les tests: un programme de test doit être compréhensible non seulement pour un programmeur qui est «adapté» au langage utilisé, mais aussi pour une personne normale). Notez que l'approche utilisée dans RSpec et Cucumber est maintenant largement reproduite dans les outils de test pour de nombreux autres langages de programmation.
  • Des outils comme SikuliX et Selenium, qui peuvent être utilisés pour tester des programmes avec une interface graphique et des navigateurs, respectivement.


Conférence 11. Technologies XML

  • Langages de requête comme Xpath, Xquery.
  • XSL et XSLT.


Il semblerait, qu'est-ce que tout cela a à voir avec la programmation Web? Mais XML est au cœur de la technologie Web. Le fait que nous n'utilisons pas XML comme format d'échange maintenant ne garantit pas qu'après 5 ans, nous ne recommencerons pas. Il n'y a toujours pas d'approche unifiée pour vérifier les données au format JSON. Et dans le cas de XML, le schéma de balisage est défini par le langage lui-même.

Le langage de requête Xpath est, en fait, un langage de requête de waypoint universel qui peut être utilisé pour rechercher tous les éléments de structures de données arborescentes, y compris JSON.

Les transformations XSLT sont également une autre façon de transformer des documents XML, dont la connaissance permettra aux étudiants de ne pas réinventer la roue à l'avenir lorsqu'ils rencontreront ETL.

Conférence 12. ORM (Object-Relational Mapping)

Presque n'importe quel cadre de programmation Web moderne fournit des moyens de transformation relationnelle-objet. Les étudiants doivent comprendre:

  • pourquoi un tel mécanisme est nécessaire;
  • quelles sont ses limites;
  • comment l'utiliser dans la pratique.

Dans ce cas, tout est considéré dans le cadre de Ruby on Rails.


Conférence 13. Sessions, sécurité et tout ce qui s'y rapporte.

  • Une méthode de stockage d'état basée sur les cookies.
  • Méthodes d'authentification typiques.
  • Un exemple d'ajout d'autorisation dans Rails.
  • Considérations de sécurité pour les applications Web en soi.


Conférence 14. Services

  • Aspects historiques.
  • Recommandations spécifiques sur le développement et le déploiement de leurs propres services pour le Web.


Conférence 15. CMS (Content Management Systems)
En programmation web, il est important non seulement de pouvoir écrire une application, mais aussi de savoir si vous avez besoin de l'écrire. Cette conférence est une démonstration des principaux types d'applications Web déjà créées qui peuvent être personnalisées en fonction des besoins d'un client particulier et, si nécessaire, finalisées.

  • Accent sur les outils Ruby.
  • Le CMS le plus commun écrit en PHP.


Conférence 16. Hébergement d'applications Ruby Web sur Internet

L'idéologie générale des services Web est considérée. Les origines de cette architecture avec le format XML d'échange et sa modification ultérieure dans l'API Web avec JSON et REST ou GraphQL sont expliquées.

  • Serveurs Web
  • Méthodes de virtualisation.
  • Façons d'héberger l'application sur Internet.


Comment créer un cours pour une université


Il est difficile de créer des cours de formation sur des sujets liés à la programmation, où la technologie change tous les 5 à 10 ans. Lors de la création d'un cours pour une université, il est nécessaire d'équilibrer entre la formation de compétences pratiques dans des langages de programmation spécifiques et la présentation des fondements théoriques nécessaires à la compréhension des technologies en tant que telles. De plus, la différence entre l'enseignement universitaire et les cours de formation réside dans la présentation systématique du matériel, qui impose également des restrictions sur le moment et le volume de certains matériels pouvant être soumis.

Ces dernières années, on a eu tendance à enregistrer des conférences universitaires sur la vidéo et à créer des cours vidéo. Le cours "Langages de programmation Web" est la première tentative formelle de ce type par notre université. Et sur la base des commentaires, nous déciderons comment et dans quel format faire de nouvelles entrées.

Il y a 10 ans, il était nécessaire de mettre à jour radicalement le programme, en introduisant, entre autres, la programmation Web. Au département "Systèmes et réseaux informatiques", les cours d'électronique et de conception informatique allouent traditionnellement à peu près autant d'heures de formation que la programmation. De plus, les cours de programmation incluent une formation algorithmique en langages de haut niveau Pascal, C, C ++ / Qt, une formation en divers assembleurs, ainsi que la théorie des langages de programmation et des compilateurs. Et même des langages de programmation pour FPGA et matériel spécifique. Autrement dit, le département prépare des spécialistes universels qui choisissent à l'avenir leur propre spécialisation.

Il nous fallait identifier des technologies web prometteuses pouvant être maîtrisées en un semestre, et il est souhaitable que ces technologies puissent être projetées dans d'autres langages de programmation.

Pourquoi Ruby?


Pourquoi Ruby est-il sélectionné? Le choix des langues pour la programmation Web est assez riche. En plus de Ruby, ce sont PHP, Perl, Javascript, Java, Go et autres. Si nous approchons du point de vue des applications Web très chargées, puis en envoyant des Benchmarks qui doutent du Web Framework , nous voyons au premier plan C ++, Java, Rust, Ur, Go, etc. Ruby n'est ni le plus populaire pour le développement Web, ni le plus rapide pour solutions très chargées. Cependant, Ruby a une foule d'autres vertus qui en font un langage de programmation, que tout programmeur averti devrait connaître.

Ruby a récemment célébré son 25e anniversaire, ce qui signifie que c'est une langue assez mature. Malgré le fait que la plupart des langues mentionnées ont également dépassé ou sont proches de cet âge (Rust, Dart, Go sont toujours "vertes" par rapport à lui), Ruby est l'une des rares langues qui a maintenu une compatibilité descendante au fil des ans.

Dans le monde de Ruby, on peut dire qu'il n'y a pas eu de révolutions et de changements radicaux. Il se réfère à des langages initialement bien conçus, dont les concepts de base sont restés inchangés à ce jour. Les revendications de performance se rapportaient à des versions plus anciennes antérieures au 1.8.7, qui ont été abandonnées il y a 10 ans. Les versions modernes montrent chaque année une augmentation multiple de la productivité. Les affirmations selon lesquelles cette langue n'est pas très populaire ne sont valables que pour notre pays. Malheureusement, dans notre pays, les grandes entreprises le contournent vraiment sans raison.

Pourquoi Ruby est-il bon pour l'enseignement universitaire? Il s'agit d'un langage objet pur. Et comme il est dynamique, presque tout peut être redéfini. Il n'y a pas de types simples dans son modèle (nous ne penserons pas ici à l'implémentation d'un système, nous ne parlons que d'un modèle). Toute donnée est un objet. Le code est un objet. Autrement dit, Ruby facilite l'apprentissage des principes de la programmation orientée objet. De plus, la syntaxe du langage est assez simple et n'a presque aucune exception. Tout code écrit dans le programme doit être exécuté une seule fois, et peu importe où ce code est écrit - à l'intérieur de la déclaration de classe ou à l'extérieur. Tout ce qui est écrit, il sera accompli. La syntaxe Ruby est très flexible, ce qui la rend très pratique pour écrire des langages spécifiques au domaine (DSL / DSEL). De plus, le concept de base de Ruby - le bloc - est une fonction anonyme. La maîtrise de ces principes permet aux étudiants de maîtriser facilement la programmation fonctionnelle dans des langages de programmation fonctionnels purs.

Et, plutôt, le mérite décoratif de Ruby - pas besoin de perdre du temps à expliquer la mise en forme obligatoire du code avec indentation. Le programme est clairement délimité de toute façon. Le formatage fournira automatiquement rubocop et les étudiants apprendront à écrire correctement au fil du temps.

Pourquoi Ruby n'est pas populaire?


Pourquoi Ruby, avec de tels avantages, n'est toujours pas populaire et fait référence à des langues avec un seuil d'entrée élevé?

La première chose à comprendre: Ruby n'est pas seulement un autre langage de programmation impératif que vous pouvez commencer à programmer le soir, mais bien comprendre en une semaine. Il s'agit d'une langue différente avec une philosophie différente.

Le premier principe de Ruby: le texte du programme doit être perçu comme du texte en langage naturel. Autrement dit, Ruby est un langage pour un programmeur qui est une personne, et non un langage pour lequel vous devez trouver le bon programmeur. Malheureusement, la plupart des langages de programmation modernes suivent le principe "le programmeur endurera", et la retraite est déjà perçue avec difficulté.

Ruby est souvent critiqué pour avoir fait la même chose de dizaines de façons. Mais en langage naturel, nous avons un grand nombre de synonymes, et c'est le choix du bon synonyme qui rend notre discours riche. C'est donc en Ruby. Outre le fait que les mêmes actions peuvent être effectuées de différentes manières, il existe de nombreux synonymes associés aux mêmes méthodes associées aux méthodes spéciales alias et alias_method .

Un exemple simple des limitations de la plupart des autres langages de programmation. Supposons qu'il existe un tableau de produits et que vous souhaitez déterminer qu'il n'est pas vide. Dans la plupart des langues, nous écrirons quelque chose comme if (products.size() > 0 ) .... Mais, étant venu en magasin, nous ne demandons pas au vendeur: "Si vous avez plus de zéro de tel ou tel produit?" Nous posons une question simple: "Avez-vous tel ou tel produit?". Dans Ruby, vous devez utiliser des méthodes qui expriment le sens de l'action. Oui, nous pouvons utiliser le chèque «supérieur à zéro», mais la façon naturelle est de demander if products.any . C'est littéralement: y a-t-il des produits? Notez que Ruby fonctionne bien avec Unicode, donc si nécessaire, basé sur cette langue, vous pouvez créer des langues spécialisées avec une adaptation régionale. Par exemple, si vous souhaitez redéfinir en russe tous les noms de classes et de méthodes.

Un exemple intéressant, mais pas entièrement direct: Bato: un port Ruby pour les Philippins .

Au sujet de l'objectivité du langage: Ruby distingue clairement les variables / constantes et les objets. En raison de la nature dynamique du langage, les données «vivent» leur vie en tant qu'objets. Tout identifiant est une constante ou une variable qui fait simplement référence à un objet. La méconnaissance de ce principe entraîne des surprises:

 str1 = "Test" str2 = str1 str1.sub! "Te", "La" puts str2 # => "Last" ????    str1,  ?.. 

Ici, nous venons d'utiliser la méthode de modification de l'objet, dont les références ont été stockées par deux variables. Je note que ce n'est pas une façon traditionnelle pour Ruby de changer. En règle générale, les objets restent inchangés et les modifications donnent lieu à de nouveaux objets. De plus, la méthode sub! Utilisée ici a un suffixe - un point d'exclamation - qui est le schéma de dénomination accepté par Ruby pour les méthodes qui modifient l'objet lui-même. Sans ce symbole, la méthode génère simplement un nouvel objet.

Autre particularité de Ruby, qui déroute très souvent des développeurs issus d'autres langages de programmation: le concept de "block". Syntaxiquement, le bloc a la même apparence que dans les autres langages de programmation, et dans deux versions à la fois: {…} et do..end (n'oubliez pas que Ruby est créé pour les humains, nous sélectionnons donc les crochets si l'expression est sur une seule ligne et les mots s'il y a beaucoup de lignes). L'essence d'un bloc dans Ruby est le code qui est stocké en tant qu'objet et peut être activé en appelant yield . La contrepartie directe en C et C ++ sont des fonctions de rappel. En Javascript, une fonction anonyme comme some_func('on_element_click', function(event) {…} ).

Grâce à ce concept, Ruby est l'un des langages de programmation les plus concis et expressifs. Par exemple, la conversion des éléments d'un tableau selon la fonction de mise au carré ressemblera à ceci:

 (1..5).map { |x| x * x } # => 1, 4, 9, 16, 25, 

{ |x| x * x } { |x| x * x } - un bloc avec une variable locale déclarée x , c'est-à-dire une fonction de conversion des éléments du tableau. Et la méthode à laquelle elle est transmise est simplement appelée carte (c'est-à-dire "carte"). Et vous n'avez pas besoin d'écrire le mot return , bien que cela soit possible, car tout est déjà clair (dans Ruby, le résultat de la dernière opération est toujours la valeur de retour). De plus, le code de bloc est un code appelé de façon autonome pour chaque élément du tableau. C'est pourquoi cela n'a aucun sens d'essayer de démarrer les variables à l'intérieur du bloc et d'espérer que leur valeur sera préservée lors du traitement de l'élément suivant. Un bloc est une fonction de traitement stockée, et pas plus.

Si nous voulons analyser une chaîne avec des chiffres saisis au clavier, il suffit d'écrire:

 gets.chomp.split.map(&:to_i) 

Autrement dit, lisez la ligne (gets), jetez tous les déchets comme chomp caractères de chomp ligne ( chomp ), chomp le en mots ( split ), appelez la conversion avec la fonction to_i (à proprement parler, la méthode des objets de type "chaîne"). Et rien de plus. Split sait qu'en langage humain normal, «rompre une ligne» signifie la séparer par des mots, où les délimiteurs sont des espaces et des signes de ponctuation. La carte peut être utilisée sous une forme aussi courte avec le nom de la méthode à extraire de l'objet. Bien qu'il soit possible d'écrire la map { |x| x.to_i } formulaire complet map { |x| x.to_i } map { |x| x.to_i } , ou même { |x| return x.to_i } { |x| return x.to_i } . Mais cela n'améliore pas la lisibilité, vous pouvez donc laisser simplement la map(&:to_i) .

Je note que le concept du bloc imprègne franchement Ruby. Même le code de vue

 class HelloWorld (1..3).each { puts 'Hi from class declaration!' } def hi   puts 'Hello World!' end end HelloWorld.new.hi 

s'affiche à l'écran:

Hi from class declaration!
Hi from class declaration!
Hi from class declaration!
Hello World!


Qu'est-ce qui peut sembler inattendu ici? La boucle à l'intérieur des messages imprimés de déclaration de classe. Ensuite, nous avons reçu un message d'une méthode d'instance de cette classe. Et le secret est très simple. Ruby est un langage avec un modèle de programmation régulier. Une façon typique d'appeler n'importe quelle méthode avec un bloc:

 method_with_block(args) do ... end 

Les mots class et def dans l'exemple sont essentiellement les noms des méthodes auxquelles les arguments HelloWorld , hi sont passés. L'argument HelloWorld deviendra pour nous le nom constant de la classe, et hi deviendra le nom de la méthode. Le reste du mot end est un bloc. Et le code de bloc est activé en appelant yield, après quoi tout est exécuté séquentiellement. Autrement dit, même ici, il n'y a pratiquement aucune différence entre appeler une méthode régulière et déclarer des méthodes, des classes, des modules.

Faites également attention à la construction d'activation HelloWorld.new.hi . HelloWorld - constant - pointe vers un objet de type Class . Cet objet a une new méthode. Le résultat de l'appel de new est un objet créé de type HelloWorld , à partir duquel nous appelons la méthode hi . Et même ici, la régularité de Ruby se manifeste. Nous n'écrivons pas something = new HelloWorld , mais appelons simplement la méthode d'un objet spécifique (la Class référencée par HelloWorld ), qui génère un objet de type HelloWorld .

Le manque de compréhension de la langue est également facilité par de longues chaînes d'appels:



Si vous connaissez JavaScript ou jQuery, vous ne voyez rien de terrible ici. Ceux qui sont venus de C et C ++ peuvent être confus quant au nombre de points. Ruby utilise la transformation d'objets fonctionnels. C'est-à-dire que toute cette chaîne est le processus de conversion d'une chaîne, qui consiste à sélectionner des mots, à les convertir en nombres, à n'en sélectionner que des pairs, à les mettre au carré et à ajouter le résultat.

Toute méthode de Ruby génère un objet valeur. Il n'y a aucune exception. Même nul est un objet. Ruby étant un langage dynamique avec un garbage collector automatique, il n'est pas nécessaire de créer de nouvelles variables. Les objets intermédiaires seront supprimés. C'est-à-dire qu'une expression longue peut facilement être analysée en une séquence d'attribution de valeurs à des variables locales, qui appellent successivement les méthodes correspondantes. Mais pourquoi, si tout est déjà clair?

Dans les programmes Ruby, il est extrêmement rare de voir des boucles comme for , while , loop . Ils sont fournis dans la syntaxe, mais ne sont presque jamais utilisés. Pourquoi? Oui, car ils ne portent pas de charge sémantique.

Exemple: dans une gamme de produits, vous devez trouver un "petit pain aux graines de pavot". Pour les langages de programmation traditionnels, nous pouvons utiliser approximativement le code Ruby suivant:

 products…# -    — . found_product = nil for i in 0...products.size do if products[i].name == '  '   found_product = products[i]   break end end if  found_product != nil #  ,  - . end 

Dans ce cas, le code Ruby normal ressemble à:

 products… # -   - found_product = products.find { |product| product.name.eql? '  ' } unless found_product.nil? #  ,  - . end 

Autrement dit, nous écrivons littéralement sur une seule ligne: recherchez le produit par son nom. Et c'est tout. Parce qu'en réalité nous ne nous intéressons qu'à la sélection des biens, et pas du tout aux indices des biens et non à leur quantité.

Exemple de vie: vous êtes venu au magasin et avez demandé au malheureux vendeur de deux manières: la première - « Pour toutes les marchandises de zéro à 15143, si le nom du produit est égal à un petit pain aux graines de pavot, alors donnez-le moi »; le deuxième - " Donnez-moi un petit pain avec des graines de pavot ." Les deux options semblent être syntaxiquement correctes, mais la seconde est naturelle. Pour une raison quelconque, la plupart des programmeurs considèrent la première option comme normale. Et les programmeurs Ruby sont les seconds. Et la méthode de find ici n'est qu'un des remplacements de boucle. J'attire l'attention sur cela, anticipant les commentaires selon lesquels d'autres langues ont également une recherche de tableau avec une fonction de sélection.

Ainsi, bien que Ruby ait des constructions syntaxiques for , while et loop , presque personne ne les utilise car il existe des méthodes spécifiques: each , each_index , each_with_index , select , map , reduce , find , detect et bien d'autres exprimant une signification spécifique - pour chaque index, pour chaque élément et son index, sélectionnez, transformez, réduisez, trouvez, etc. Et si nous avons besoin d'obtenir des index, nous utiliserons array.each_index . Et si vous devez sélectionner des éléments, utilisez select . Accent sur le naturel. Nous demandons seulement ce qui doit vraiment être fait. Aucun index nécessaire - pas besoin de le demander. Voir la documentation du module Enumerable pour plus de détails.

Résumé


Ruby est un langage syntaxiquement simple mais flexible avec un modèle objet développé, dont l'accent principal est un code concis mais bien perçu axé sur une personne vivante. Ruby est présent par défaut dans le bundle de tout système d'exploitation moderne (ou peut être installé sur Windows). Un grand nombre de programmes ont été écrits dans cette langue, il existe des communautés stables prêtes à aider avec des conseils ou des actions. Les programmes Ruby sont des scripts d'administration de base pour Linux et MacOS (OpenSuSE / SuSE et brew.io respectivement), il s'agit de mathématiques et d'apprentissage automatique , ce sont des tests (Rspec, Cucumber, Capybara ...), il s'agit de déploiement d'applications (Puppet, Chef) et bien plus.

Si les élèves connaissent Ruby, cela élargira considérablement leurs horizons et leur permettra d'avoir un regard complètement différent sur des choses familières. De plus, il est très facile d'apprendre d'autres langages de programmation de script après Ruby, mais la question est de savoir si vous souhaitez les utiliser.

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


All Articles