Tout commence par un Hello World, chaque développeur a déjà écrit un Hello World ou rencontré un code comme celui-là. En programmation et dans le monde de l’informatique, tout doit partir d’un cas de base pour évoluer. Le terme Hello World est apparu en 1972 dans « The C Programming Language » écrit par Brian Kernighan dans le premier chapitre et le code contenu était :
int main() { printf("Bonjour tout le monde !\n"); renvoie 0 ; }
"C'était le moyen le plus simple et le plus rapide de montrer un exemple en langage C avec printf"
Depuis lors, le terme est devenu très courant, normalement utilisé pour enseigner comment afficher des messages à l'écran dans une certaine langue. Vous trouverez un exemple dans pratiquement tous les langages de programmation dans le référentiel Hacktoberfest-2018/Hello-world].
Dans cette publication, j'ai l'intention d'archiver mes études sur les différences, les avantages et les inconvénients entre les langages de programmation. A titre illustratif, j'afficherai le Hello World de la langue et ci-dessous les comparaisons avec ses sources. Allons-y :
Front-end
##Réagir app.tsx
importer * en tant que ReactDOM depuis "react-dom" ; importer * en tant que React depuis « react » ; importer HelloWorld depuis "./components/helloWorld" ;
const rootElement : HTMLElement = document.getElementById("rootElement");
si (rootElement) {
ReactDOM.render(
composants/helloWorld.tsx
importer * en tant que React depuis « react » ;
interface IProps { salutation : chaîne ; }
exporter la classe par défaut HelloWorld extends React.Component<any, any> { public render() : JSX.Element { retour ( {this.props.greeting} ); } }
"React (parfois appelé React.js ou ReactJS) est une bibliothèque JavaScript open source permettant de créer des interfaces utilisateur. Elle est maintenue par Facebook, Instagram et une communauté de développeurs individuels et d'autres sociétés. Selon le service d'analyse JavaScript Libscore, React est utilisé sur les sites Web de Netflix, Imgur, Feedly, Airbnb, SeatGeek, HelloSign, Walmart et autres.[1]." Wikipédia
Avantages
- Flux de données unidirectionnel
- Bons outils de débogage
- Composants faciles à réutiliser
- Rendu côté serveur
- Tests faciles à tester et faciles à écrire
- Prise en charge du DOM virtuel
- Développement mobile rapide avec React Native
- Une plus grande liberté pour prendre les bonnes décisions et vous donne plus de contrôle. Sans opinion
- Indépendant du moteur de template (Template Engine)
Inconvénients
- Verbeux
- Lourd en mémoire
- Pas de support pour les navigateurs existants
- Pas une solution complète
- Vous devez apprendre une nouvelle syntaxe
Avis final
Informations supplémentaires
Taille : à partir de 145 Ko une fois minifié
##VueJS app.vue
<modèle>
composants/helloWorld.vue
<modèle>
</modèle>"Vue.js (communément appelé Vue ; prononcé /vjuː/, comme view) est un framework JavaScript open source permettant de créer des interfaces utilisateur et des applications d'une seule page.[4]" Wikipedia
Avantages
- Faible courbe d'apprentissage
- Facile à mettre en œuvre dans le projet
Inconvénients
- De gros concurrents comme React (de Facebook) et Angular (de Google)
- Beaucoup de matériel en langues asiatiques
Avis final
Informations supplémentaires
Taille : à partir de 21 Ko une fois minifié
Angulaire
app.js
var app = angulaire.module("app", []); app.controller("HelloController", fonction($scope) { $scope.helloworld = "Bonjour tout le monde !"; } );
index.html
"Angular (communément appelé "Angular 2+" ou "Angular 2") est une plate-forme d'application Web frontale open source basée sur TypeScript dirigée par l'équipe Angular de Google et une communauté d'individus et d'entreprises. Angular est une réécriture complète d'AngularJS, réalisée par la même équipe qui l'a construit. " Wikipédia
Avantages
- Vaste écosystème de composants tiers
- Connexion de données facile et directe
- Prise en charge d'une architecture orientée composants composable avec des directives
- Immense communauté
- Fournit un injecteur de dépendance
Inconvénients
- Courbe d'apprentissage abrupte
- Il est presque obligatoire d'utiliser Typescript
- Difficulté à utiliser le rendu côté serveur -Configuration explicite
- Le modèle HTML n'est pas conforme aux standards
Avis final
Informations supplémentaires
Taille :
##Backend
C-Lang
int main() { printf("Bonjour tout le monde !\n"); renvoie 0 ; }
"C[2] est un langage de programmation compilé à usage général, structuré, impératif, procédural, standardisé par l'Organisation internationale de normalisation (ISO), créé en 1972 par Dennis Ritchie chez AT&T Bell Labs pour le développement du système d'exploitation Unix (écrit à l'origine en Assembly).[3]" Wikipédia
##Python
print('Bonjour tout le monde !')
"Python est un langage de programmation de haut niveau, [4] interprété, scripté, impératif, orienté objet, fonctionnel, typé dynamiquement et puissant. Il a été lancé par Guido van Rossum en 1991. [1] Il dispose actuellement d'un modèle de développement communautaire ouvert géré par la Python Software Foundation à but non lucratif. Bien que diverses parties du langage aient des normes et des spécifications formelles, le langage dans son ensemble n'est pas formellement spécifié. " Wikipédia
Nœud (JavaScript)
window.onload = () => { document.write('Bonjour tout le monde !'); }
"JavaScript est un langage de programmation interprété.[2] Il a été initialement implémenté dans les navigateurs Web afin que les scripts puissent être exécutés côté client et interagir avec l'utilisateur sans qu'il soit nécessaire que ce script passe par le serveur, contrôlant le navigateur, effectuant une communication asynchrone et modifiant le contenu du document affiché. " Wikipédia
"Node.js est un interpréteur de code JavaScript open source, axé sur la migration du Javascript côté client vers des serveurs. Son objectif est d'aider les programmeurs à créer des applications hautement évolutives (comme un serveur Web[1]), avec un code capable de gérer des dizaines de milliers de connexions simultanées, sur une seule machine physique.[2] " Wikipedia
##Java
classe publique Principale { public static void main (String[] arguments) { System.out.println("Bonjour tout le monde !"); } }
"Java est un langage de programmation orienté objet développé dans les années 90 par une équipe de programmeurs dirigée par James Gosling, de la société Sun Microsystems. Contrairement aux langages de programmation classiques, qui sont compilés en code natif, le langage Java est compilé en un bytecode qui est interprété par une machine virtuelle (Java Virtual Machine, mieux connu sous son abréviation JVM). Le langage de programmation Java est le langage conventionnel de la plateforme Java, mais ce n'est pas son seul langage." Wikipédia
Rubis
met "Bonjour tout le monde !"
"Ruby est un langage de programmation interprété multi-paradigmes qui a été développé à l'origine en 1995 par Yukihiro "Matz" Matsumoto pour être utilisé comme langage de script. Matz voulait un langage de script plus puissant que Perl et plus orienté objet que Python. Perl, Smalltalk, Eiffel, Ada et Lisp, étant très similaires à bien des égards à Python. [5] Ruby fait partie des 69 langues les plus anciennes, selon une enquête menée par RedMonca.
##GoLang
paquet principal
importer "fmt"
fonction main() { fmt.Println("Bonjour tout le monde !") }
"Go est un langage de programmation créé par Google et publié en open source en novembre 2009. Il s'agit d'un langage compilé axé sur la productivité et la programmation concurrente,[4] basé sur le travail effectué sur le système d'exploitation appelé Inferno.[5] La conception initiale du langage a été réalisée en septembre 2007 par Robert Griesemer, Rob Pike et Ken Thompson.[4] Actuellement, il existe des implémentations pour Windows, Linux, Mac OS
##PHP
« PHP (acronyme récursif de « PHP : Hypertext Preprocessor », initialement Personal Home Page) est un langage interprété librement, utilisé à l'origine uniquement pour le développement d'applications présentes et actives côté serveur, capables de générer du contenu dynamique sur le World Wide Web. qui génère également la page Web à visualiser côté client. Le langage a évolué, offrant désormais des fonctionnalités de ligne de commande, et en plus, il a gagné des fonctionnalités supplémentaires, qui ont permis des utilisations supplémentaires de PHP, sans rapport avec les sites Web. Il est possible d’installer PHP gratuitement sur la plupart des systèmes d’exploitation. Wikipédia
Voici la liste étendue des langues, conservant la même présentation et organisation que le fichier d'origine. J'ai ajouté de nouvelles langues avec des exemples, des avantages, des inconvénients et des informations supplémentaires pour maintenir la cohérence :
Connaître plus de langues
En plus des langages déjà présentés, il en existe d’autres qui méritent également d’être mis en avant dans le développement moderne. Ci-dessous, nous en explorons certains en détail.
Rouille
Rust est un langage de programmation moderne axé sur la sécurité, en particulier sur les systèmes critiques. Il offre un contrôle précis sur les ressources système sans sacrifier les performances.
Exemple de Hello World
fn main() { println!("Hello World!"); }
Contexte et applications :
Créé en 2010 par Graydon Hoare, Rust a été conçu pour être une alternative sûre au C et au C++, en mettant l'accent sur la prévention des bogues courants tels que les fuites de mémoire et la concurrence dangereuse.
Avantages de la rouille
- Sécurité de la mémoire : Élimine les problèmes tels que les pointeurs nuls ou les accès invalides.
- Haute performance : Combine une efficacité de bas niveau avec des abstractions modernes.
- Gestion des ressources : ne nécessite pas de garbage collector, ce qui réduit les frais généraux.
- Communauté active : Excellent soutien de la communauté open source.
Inconvénients de la rouille
- Courbe d'apprentissage élevée : Sa complexité initiale peut être un défi pour les débutants.
- Écosystème mineur : Bien qu'en croissance, il compte toujours moins de bibliothèques que les langages plus anciens.
Informations supplémentaires
- Taille : Les binaires générés sont généralement optimisés et compacts.
Kotlin
Kotlin est un langage moderne développé par JetBrains, conçu pour être interopérable avec Java. Il est largement utilisé dans le développement Android en raison de sa simplicité et de sa robustesse.
Exemple de Hello World
fun main() { println("Hello World!") }
Contexte et applications :
Lancé officiellement en 2016, Kotlin a été rapidement adopté par l'écosystème Android, devenant ainsi le langage officiel de développement mobile de cette plateforme.
Avantages de Kotlin
- Interopérabilité avec Java : Facilite la migration des projets existants.
- Syntaxe propre : Réduit la verbosité et augmente la lisibilité.
- Type Safety : Empêche de nombreux types d'erreurs lors de la compilation.
- Support officiel : Approuvé par Google pour le développement Android.
Inconvénients de Kotlin
- Courbe d'apprentissage : Pour les développeurs Java expérimentés, il peut y avoir une période d'adaptation.
- Performances initiales : Dans certains cas, le temps de démarrage peut être plus long.
Informations supplémentaires
- Taille : Petite surcharge par rapport à Java, mais avec de meilleures performances à long terme.
Rapide
Swift est un langage de programmation créé par Apple, principalement destiné au développement d'applications iOS, macOS, watchOS et tvOS.
Exemple de Hello World
print("Hello World!")
Contexte et applications :
Lancé en 2014, Swift a été conçu pour remplacer progressivement Objective-C comme principal langage de développement pour les appareils Apple.
Avantages de Swift
- Facile à apprendre : Sa syntaxe simple attire les développeurs débutants.
- Performances supérieures : Meilleures performances par rapport à Objective-C.
- Sécurité : Réduit considérablement les erreurs de programmation courantes.
- Terrains de jeux interactifs : Outil idéal pour l'apprentissage et le prototypage rapide.
Inconvénients de Swift
- Exclusivité Apple : Limité aux plateformes Apple, limitant son utilisation dans d'autres environnements.
- Évolutions rapides : Des changements fréquents peuvent nécessiter des mises à jour constantes du code.
Informations supplémentaires
- Taille : Les binaires générés sont hautement optimisés pour les appareils mobiles.
Tapuscrit
TypeScript est une extension JavaScript qui ajoute du typage statique et des fonctionnalités avancées, facilitant ainsi le développement d'applications volumineuses et complexes.
Exemple de Hello World
function greet(name: string): string { return `Hello, ${name}!`; } console.log(greet("World"));
Contexte et applications :
Développé par Microsoft, TypeScript est largement utilisé dans les projets frontend et backend, notamment dans des frameworks comme Angular.
Avantages de TypeScript
- Saisie statique : Aide à identifier les erreurs avant l'exécution.
- Intégration JavaScript : Entièrement compatible avec le code JavaScript existant.
- Outils avancés : Prise en charge robuste des IDE et des outils de développement.
- Écosystème riche : Grande variété de bibliothèques et de frameworks compatibles.
Inconvénients de TypeScript
- Complexité initiale : Cela peut être déroutant pour ceux qui sont habitués au JavaScript pur.
- Compilation supplémentaire : Nécessite une étape supplémentaire pour transpiler vers JavaScript.
Informations supplémentaires
- Taille : Variable selon les dépendances utilisées.
Scala
Scala est un langage hybride qui combine l'orientation objet et la programmation fonctionnelle, fonctionnant sur la JVM.
Exemple de Hello World
object Main extends App { println("Hello World!") }
Contexte et applications :
Conçu pour être une alternative élégante à Java, Scala est largement utilisé dans le Big Data et les systèmes distribués.
Avantages de Scala
- Programmation fonctionnelle : Vous permet d'écrire du code plus concis et modulaire.
- Compatibilité Java : S'intègre facilement aux bibliothèques Java.
- Concurrence simple : Des modèles comme Akka facilitent la création de systèmes simultanés.
- Haute Performance : Exécuté sur la JVM, il garantit de hautes performances.
Inconvénients de Scala
- Courbe d'apprentissage abrupte : Sa complexité peut être un défi pour les débutants.
- Documentation limitée : Moins de fonctionnalités disponibles par rapport à Java.
Informations supplémentaires
- Taille : Selon le projet, cela peut varier considérablement.
Élixir
Elixir est un langage fonctionnel construit sur la machine virtuelle Erlang (BEAM), idéal pour les systèmes distribués et hautement évolutifs.
Exemple de Hello World
IO.puts "Hello World!"
Contexte et applications :
Créé en 2011 par José Valim, Elixir est connu pour sa capacité à gérer des millions de connexions simultanées, étant largement utilisé sur les serveurs web.
Avantages de l'Elixir
- Concurrence native : Le modèle d'acteur vous permet de créer des systèmes résilients.
- Robustesse : Hérite de la stabilité de la machine virtuelle Erlang.
- Syntaxe moderne : Plus lisible et productif qu'Erlang.
- Écosystème riche : Les frameworks comme Phoenix facilitent le développement Web.
Inconvénients de l'élixir
- Adoption limitée : Moins populaire que les autres langues, ce qui entraîne moins de prise en charge.
- Courbe d'apprentissage : La programmation fonctionnelle peut être nouvelle pour de nombreux développeurs.
Informations supplémentaires
- Taille : Efficace en termes de mémoire et de CPU.
##R
R est un langage de programmation axé sur les statistiques et l'analyse de données. Il est largement utilisé dans la science des données, la recherche universitaire et l’apprentissage automatique.
Exemple de Hello World
cat("Hello World!\n")
Contexte et applications :
Développé dans les années 1990 par Ross Ihaka et Robert Gentleman, R est devenu indispensable aux data scientists et aux analystes, offrant des outils puissants pour manipuler et visualiser les données.
Avantages de R
- Bibliothèques robustes : Des packages tels que
ggplot2,dplyrettidyversefacilitent l'analyse et la visualisation des données. - Communauté académique : Excellent soutien dans les domaines de la recherche et des statistiques.
- Graphiques avancés : Possibilité de créer facilement des visualisations complexes.
- Intégration avec d'autres langages : Peut être combiné avec Python, SQL et d'autres technologies.
Inconvénients de R
- Performances limitées : Par rapport aux langages comme Python ou C++, il peut être plus lent sur de gros volumes de données.
- Courbe d'apprentissage : Sa syntaxe spécifique peut être difficile pour les débutants.
Informations supplémentaires
- Taille : Selon l'installation, elle varie en fonction des packages utilisés.
Julie
Julia est un langage hautes performances conçu pour le calcul scientifique et l'analyse de données. Il combine la simplicité de Python avec la rapidité du C.
Exemple de Hello World
println("Hello World!")
Contexte et applications :
Lancée en 2012, Julia a été créée pour résoudre des problèmes de haute performance en mathématiques, physique et ingénierie, idéale pour les calculs numériques intensifs.
Avantages de Julia
- Vitesse : Code compilé en temps réel avec des performances similaires à celles du C.
- Syntaxe simple : Facile à apprendre pour ceux qui sont familiers avec Python ou MATLAB.
- Parallélisme natif : Prise en charge intégrée de l'informatique parallèle et distribuée.
- Intégration avec d'autres langages : Peut appeler du code C, Python, Fortran et plus sans surcharge significative.
Inconvénients de Julia
- Écosystème plus petit : Bien qu'en croissance, il compte toujours moins de bibliothèques que Python ou R.
- Adoption limitée : Moins populaire dans certains secteurs industriels.
Informations supplémentaires
- Taille : Les binaires générés sont optimisés pour plus d'efficacité.
Fléchette
Dart est un langage développé par Google conçu pour créer des applications Web, mobiles et de bureau de manière efficace et modulaire.
Exemple de Hello World
void main() { print('Hello World!'); }
Contexte et applications :
Créé en 2011, Dart a pris de l'importance avec l'émergence du framework Flutter, permettant un développement multiplateforme de haute qualité.
Avantages de Dart
- Intégration Flutter : Idéal pour créer des applications mobiles natives.
- Saisie statique : Aide à identifier les erreurs avant l'exécution.
- Compilation multiplateforme : génère du code natif pour Android, iOS, Web et ordinateur de bureau.
- Outils modernes : Les IDE et débogueurs intégrés facilitent le développement.
Inconvénients de Dart
- Adoption limitée : Moins populaire en dehors de l'écosystème Flutter.
- Documentation spécifique : De nombreuses fonctionnalités sont documentées uniquement dans le contexte de Flutter.
Informations supplémentaires
- Taille : Le framework Flutter est peut-être volumineux, mais le code final est hautement optimisé.
##Haskell
Haskell est un langage fonctionnel pur connu pour son élégance et sa rigueur mathématique. Il est souvent utilisé dans l’éducation et la recherche.
Exemple de Hello World
main = putStrLn "Hello World!"
Contexte et applications :
Créé en 1990, Haskell est principalement adopté dans les universités et les entreprises qui valorisent la robustesse et l'exactitude du code.
Avantages de Haskell
- Programmation fonctionnelle pure : Favorise un style de codage propre et mathématiquement précis.
- Évaluation paresseuse : L'évaluation paresseuse vous permet de travailler avec des structures de données infinies.
- Type Safety : Réduit considérablement les erreurs de type lors de la compilation.
- Communauté académique : Excellent soutien dans les domaines de recherche avancés.
Inconvénients de Haskell
- Courbe d'apprentissage élevée : Les concepts fonctionnels peuvent être difficiles pour les débutants.
- Écosystème plus petit : Moins de bibliothèques disponibles par rapport aux langages impératifs.
Informations supplémentaires
- Taille : Efficace en termes de mémoire et de traitement.
Lune
Lua est un langage léger et flexible, largement utilisé dans les jeux et les applications embarquées.
Exemple de Hello World
print("Hello World!")
Contexte et applications :
Développé en 1993 par PUC-Rio, Lua est connu pour sa simplicité et sa facilité d'intégration avec d'autres langages.
Avantages de Lua
- Légèreté : Faible encombrement, idéal pour les systèmes aux ressources limitées.
- Intégration facile : Facile à intégrer dans des applications écrites en C ou C++.
- Syntaxe simple : Facile à apprendre et à utiliser, même pour les débutants.
- Popularité dans les jeux : Largement utilisé dans les moteurs tels que Unity et Unreal Engine.
Inconvénients de Lua
- Performances limitées : Dans certains cas, il peut ne pas être aussi rapide que les langages compilés.
- Écosystème plus petit : Moins de bibliothèques disponibles par rapport aux langages plus populaires.
Informations supplémentaires
- Taille : Les binaires générés sont compacts et efficaces.
##Erlang
Erlang est un langage fonctionnel conçu pour les systèmes distribués et concurrents et largement utilisé dans les télécommunications.
Exemple de Hello World
-module(hello). -export([start/0]). start() -> io:fwrite("Hello World!~n").
Contexte et applications :
Créé en 1986 par Ericsson, Erlang est connu pour sa capacité à gérer des millions de connexions simultanées.
Avantages d'Erlang
- Concurrence native : Les modèles d'acteurs vous permettent de créer des systèmes résilients.
- Robustesse : Projet axé sur la haute disponibilité et la reprise après panne.
- Évolutivité horizontale : Idéal pour les systèmes distribués.
- Communauté active : Excellent support dans les domaines des télécommunications et des serveurs.
Inconvénients d'Erlang
- Courbe d'apprentissage : La programmation fonctionnelle peut être nouvelle pour de nombreux développeurs.
- Adoption limitée : Moins populaire en dehors du secteur des télécommunications.
Informations supplémentaires
- Taille : Efficace en termes de mémoire et de CPU.
Conclusion
Les langages mentionnés ici reflètent la diversité et les besoins spécifiques du monde de la programmation moderne. Chacun apporte ses propres fonctionnalités uniques, permettant aux développeurs de choisir le meilleur outil pour chaque cas d'utilisation.
Que vous soyez débutant ou professionnel chevronné, expérimenter différentes langues élargit votre répertoire et améliore votre capacité à résoudre des problèmes de manière efficace et créative.
A lire aussi
-Cloudflare Workers en production : qu'est-ce qui change après hello world
