Peut-on débuter en programmation avec le langage Dart ? (Flutter)

J'enseigne la programmation depuis 11 ans, principalement à des débutants, dans des centres de formation, sur LinkedIn Learning et sur Purple Giraffe. J'ai pu tester plusieurs langages avec ce type de public : C, C++, Java, C#, Swift, Kotlin, Python et même PHP).

Comment se situe le langage de Flutter, le Dart, avec des personnes n'ayant jamais programmé ?

Je vous préviens, j'ai un avis assez tranché sur la question des langages pour apprendre 😁 J'aime aussi les débats constructifs donc je compte sur vous pour utiliser les commentaires et me dire à quel point nous sommes en accord ou en désacord 👨‍💻

Les critères essentiels d'un bon langage pour débuter en programmation

Je considère que le choix du langage est le point essentiel pour apprendre à programmer et voici mes critères :

  • il doit être simple pour garder la motivations des apprenants
  • il doit être suffisamment restrictif pour donner de bonnes habitudes (types des variables, initialisation, etc.)
  • il doit pouvoir être installé rapidement et proposer des outils tout-en-un (avec un gros bouton Play 😁)
  • il ne doit pas être trop exotique pour permettre de migrer facilement vers d'autres langages si nécessaire (désolé Objective-C...)

Comment se situent les autres langages que j'ai pu tester ?

J'ai débuté ma carrière de prof en école d'ingé avec le C et le C++ pour apprendre les bases de la programmation aux débutants (Bac+1 et Bac+2).

J'ai trouvé ces 2 langages inadaptés aux débutants : de nombreux détails complexes bloquent l'apprentissage des notions essentielles. Rien que les chaînes de caractères en C suffisent à démotiver une bonne partie des apprenants.

Puis, nous avons migré vers des solutions plus modernes comme le C# et le Java qui ont donné d'excellents résultats. Nous utilisons encore ces langages pour la plupart des formations initiales et continues.

Sur certains groupes on m'a demandé (imposé?) de tester le Python et le PHP : je n'ai pas du tout apprécié. L'absence de types et de compilateurs mène à la création d'une armée de Joe-la-bidouille prêts à tout pour que leurs apps se lancent. Avec ces langages, ça marche toujours, même quand on fait n'importe quoi. J'ai vraiment très peur du résultat sur des projets de grande envergure, avec des développeurs formés à 100% sur ces langages.

Le Swift et le Kotlin sont des langages que j'aime beaucoup car ils sont très stricts et donnent d'excellentes habitudes. Cette rigueur extrême peut être parfois complexe avec des grands débutants mais beaucoup restent motivés si on leur explique correctement les principes de bases.

Et le Dart dans tout ça ?

Le Dart possède beaucoup de points communs avec le C# et le Java donc je pense qu'il sera très bien pour débuter.

L'arrivée de la gestion stricte des valeurs nulles en Dart va contribuer à prendre des habitudes encore meilleures (similaires au Swift et au Kotlin).

Le seul inconvénient du Dart pour les débutants c'est la partie installation de Flutter. Si on n'installe que les outils pour Dart c'est plutôt simple et rapide. Mais beaucoup de personnes apprennent le Dart pour pouvoir utiliser Flutter (et créer leurs apps mobiles). Et dans ce cas, l'installation est beaucoup plus lourde car il faut installer Dart + Flutter + Android Studio pour Android + Xcode pour iOS avant de pouvoir commencer à travailler.

Dans mes cours dédiés, je suis obligé de schématiser les différentes étapes de l'installation avant de commencer les vidéos si je veux être certain que tout le monde suive :

Installation de Flutter et Dart sur macOS/Windows avec Android Studio et Xcode

Heureusement que ce soucis ne se posera que pour le premier cours 😁

La suite devrait se passer de façon très positive car le Dart est un langage très classique qui donne d'excellentes habitudes. Il permettra aussi d'être prêt pour de futurs apprentissages dans les années à venir.

Et vous ?

Sur quel langage avez-vous débuté la programmation ? Que pensez-vous de mes critères de sélections pour les langages d'apprentissage ?

Happy coding!

Maxime