Pourquoi commencer à apprendre la programmation avec C

Résumé: L'auteur de l'article explique pourquoi C est bon au stade de l'entraînement et du pompage du cerveau d'un futur programmeur. Et après un certain temps, ou même en parallèle, vous pouvez apprendre un langage plus moderne et faire, par exemple, du développement d'entreprise ou Web.





Photo: Liam Briese sur Unsplash Il existe de



plus en plus de langages de programmation. Il y en a maintenant environ 700. Cependant, la plupart des développeurs en utilisent 20. Ici, comme dans de nombreux autres domaines, il y a les notations, les tendances et même la mode.



Citons simplement quelques langues populaires. Pour le développement d'entreprise, Java est activement utilisé (bientôt Kotlin y sera également corrigé), C #, pour le développement Web - JavaScript, Go, Python et PHP, pour le développement mobile - Swift, Java / Kotlin, eh bien, j'ose appeler JavaScript (parce que peut-être, parce que React Native). Les développeurs de jeux utilisent souvent C # et C ++. Tous sont demandés pour plusieurs raisons:



  • syntaxe simplifiée (pour la plupart) et sémantique claire - dans le contexte du langage C;
  • ensemble complet d'API standard;
  • soutien communautaire actif;
  • un écosystème croissant de cadres et de bibliothèques.


Le langage C est utilisé dans le développement de solutions logicielles et matérielles. En C, vous pouvez également implémenter partiellement les fonctionnalités de produits logiciels exigeants en termes de performances. Bien que tous les programmeurs ne souhaitent pas et ne puissent pas travailler sur de tels projets. Mais revenons à la phase d'apprentissage.



En règle générale, les futurs développeurs commencent à coder dans des cours d'école, d'université ou de changement de carrière. Soit dit en passant, cette dernière option gagne maintenant en popularité.



Tôt ou tard, ils se demandent: quel langage de programmation est préférable d'apprendre en premier? À l'école et à l'université, cette question peut trouver une réponse pour vous: le plus souvent, apprendre là-bas commence par le langage C / C ++ (comme ça, par "/"). Mais sur les sites de formation alternatifs, il est peu probable que quelqu'un vous propose également d'étudier simplement C pour élargir vos horizons ou pomper votre cerveau. Tout le monde veut entrer rapidement, comme on dit, dans l'informatique. Donc, comme vous pouvez le voir, ici et là, vous devrez faire preuve de volonté et d'indépendance si vous décidez de commencer à apprendre du langage C.  



Dans cet article, nous parlerons du stade de la formation et de la formation d'un futur spécialiste. Par conséquent, permettez-moi maintenant d’exposer mes arguments, puis vous pourrez exposer les vôtres.



C vous oblige à approfondir la solution du problème



Les langages plus modernes offrent plusieurs abstractions intégrées (ou abstractions de bibliothèques standard) à la fois pour toutes les occasions courantes. Cela s'applique principalement aux problèmes algorithmiques standard. Par exemple, si vous devez copier des éléments spécifiques du premier tableau vers le second, vous pouvez utiliser la méthode filter () intégrée dans JavaScript. Si vous écrivez en Java, vous disposez de la méthode filter () du package java.util.stream. 



JavaScript: Array.filter ()



const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
//     6,     
const result = words.filter(word => word.length > 6);  
console.log(result);
//    : Array ["exuberant", "destruction", "present"]
      
      





Java: stream (). Filter ()



List<String> lines = Arrays.asList("spray", "limit", "elite");

//  List  Stream
List<String> result = lines.stream()              
//   elite  
       .filter(line -> !"elite".equals(line))     

//      List
       .collect(Collectors.toList());   

//   :  spray, limit
        result.forEach(System.out::println);   
      
      





En langage C, notamment à des fins pédagogiques, vous pouvez proposer l'implémentation suivante (pour ne pas compliquer l'exemple, j'ai changé les chaînes en nombres et changé la condition de "filtrage"):



#include <stdio.h>
#define SIZE 5

void copy_aka_filter_arr(double trg[], double src[], int n);

int main(void){
    int i;
    double source[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double target[SIZE];
   
 printf("Source:  ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", source[i]);
    }
    putchar('\n');
    copy_arr(target, source, SIZE);   
    return 0;
}

void copy_aka_filter_arr(double trg[], double src[], int n){
//  i-      ,    3.3. 
//    i-    0.0 
    int i;
    for (i = 0; i < n; i++){
            if (trg[i]) > 3.3){     
                trg[i] = src[i];
            }
            else{
                trg[i] = 0.0;
            }
    }       
    printf("Target: ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", trg[i]);
    }
    putchar('\n');
}
      
      







En essayant de mettre en œuvre ces fonctions à la main, vous rencontrerez des principes fondamentaux et des nuances qui devront être profondément compris. En particulier, la mise en œuvre indépendante d'algorithmes de traitement de structures de données en langage C est un excellent moyen d'apprendre à résoudre des problèmes, et non de rechercher des solutions toutes faites. 



Quel que soit le langage sophistiqué et avancé dans lequel vous écrivez, des problèmes complexes apparaissent de temps en temps qui ne peuvent pas être résolus à l'aide de bibliothèques standard et d'abstractions intégrées. Dans ces cas, une telle compétence est tout simplement nécessaire.



À propos, les développeurs participant à des hackathons compétitifs forment souvent cette compétence, résolvant des problèmes non standard uniquement en C.



C vous permet de toucher à la programmation "bas niveau"



Il est pratique d'écrire dans des langages modernes de haut niveau (Python, C #, Java ou ce que vous voulez). Cependant, ces langages sont très limités dans leur interaction avec le matériel. En d'autres termes, vous n'obtiendrez pas l'expérience matérielle complète tant que vous n'aurez pas commencé à programmer en C. Les langages de programmation modernes cachent les détails d'implémentation dépendants du matériel et émulent à la place une sorte d'abstraction. Dans la plupart des cas, il est créé à l'aide d'une machine virtuelle.



Malheureusement, les débutants n'ont absolument aucune idée de la gestion de la mémoire, de la gestion des fichiers et de l'optimisation du code, car ils n'ont jamais vu même d'exemples de programmation "de bas niveau" en C.De ce point de vue, les langages de programmation modernes automatisent et cachent trop . Le langage C vous oblige à faire beaucoup avec vos mains et à écrire du code hautement optimisé.



Quant à moi, c'est un must pour tout développeur professionnel. Eh bien, au moins un backender.



C enseigne la liberté et la responsabilité



Lorsqu'un langage de programmation propose un ensemble d'abstractions conviviales, il devient moins flexible. Chaque méthode intégrée ou de bibliothèque agit comme une boîte noire codée en dur. En d'autres termes, les langages de programmation modernes cachent les détails de l'implémentation et indiquent au développeur de se référer simplement à un ensemble d'interfaces. Le contrôle manuel de l'allocation de la mémoire dynamique dans les langages de programmation modernes est impossible dans la plupart des cas. Pendant ce temps, C vous donne une réelle liberté, vous permettant de choisir comment vous l'implémenter à un niveau inférieur.



Les compilateurs C, lorsqu'ils sont correctement optimisés, produisent un code d'assemblage incroyablement rapide. Certes, en plus de définir les indicateurs d'optimisation nécessaires pour la compilation, vous devez également écrire vous-même un code source haute performance. En C, nous devons déclarer soigneusement les variables, allouer et nettoyer la mémoire dans le temps, accéder aux ressources et ne pas oublier de les libérer. Si C était votre premier langage, vous vous habituerez à utiliser la mémoire et les ressources de manière rationnelle, et vous vous habituerez à choisir des structures de données optimales. Cette habitude se poursuivra au fur et à mesure que vous commencerez à écrire dans d'autres langues.



C vous motive à écrire du code propre



Contrairement aux langages de programmation modernes, vous devrez écrire plusieurs fois plus de code pour implémenter les mêmes tâches en C. Cela est dû au fait qu'en C, beaucoup doit être implémenté à un niveau inférieur, plutôt que d'utiliser des wrappers et des abstractions intégrés de bibliothèques standard qui masquent les détails de l'implémentation. À mesure que le nombre de lignes dans le code augmente, la complexité du code augmente également. Pour compenser cet effet et maintenir l'ordre dans le projet, vous devez essayer d'écrire un code propre et compréhensible.



L'écriture de code propre est une compétence particulièrement recherchée lorsque l'on travaille sur de grands projets commerciaux. Si vous pouvez apprendre à écrire du code C propre, il vous sera plus facile de le faire dans un autre langage plus simple.



Pas encore convaincu?



Avec le développement actif du C ++, le langage C a cessé d'être perçu par beaucoup comme un langage indépendant. Il semble être devenu un sous-ensemble du langage C ++. Il est clair qu'en fait ce n'est pas le cas. C ++ est un langage de programmation vraiment moderne avec un ensemble complet de bibliothèques standard. À mon avis, le C ++ ne devrait pas être le premier langage à apprendre. Certes, il y a une mise en garde: si vous souhaitez vous spécialiser dans le futur, alors allez-y. Dans ce cas, ces deux langages peuvent être enseignés en parallèle, mais à un moment donné, ils se "croiseront" - et la transition du C au C ++ sera organique et presque instantanée. 



Presque tous les langages de programmation modernes sont en concurrence les uns avec les autres, introduisant une nouvelle syntaxe, une nouvelle sémantique et étendant des bibliothèques et des cadres standard. Comme on dit, tout est pour les gens. C'est captivant. Mais si les futurs développeurs commencent à apprendre ces langages à partir de zéro, ils passeront à côté des précieuses opportunités offertes par C.À un moment donné, ils ne pourront tout simplement pas franchir une nouvelle étape dans leur développement, ne sachant pas comment le code fonctionne à un niveau inférieur. , ne sachant même pas comment leurs frameworks et bibliothèques préférés sont implémentés à l'intérieur.



Choisissez donc C comme premier langage de programmation. Cela prendra plus de temps à apprendre, mais vous aidera à devenir très rapidement un expert en langues plus modernes à l'avenir.






Les serveurs cloud de Macleod sont parfaits pour le développement en C et dans d'autres langages de programmation.



Inscrivez-vous en utilisant le lien ci-dessus ou en cliquant sur la bannière et bénéficiez d'une remise de 10% pour le premier mois de location d'un serveur de toute configuration!






All Articles