Je suis un étudiant de premier cycle en 3e année d'un diplôme en génie logiciel. Depuis cette année, mon université a introduit un nouveau cours intitulé «Constructions de compilateur», qui vous enseigne les bases de la théorie de la construction d'un compilateur.
Quel serait l'avantage réel pour un ingénieur logiciel d'apprendre la construction d'un compilateur?
Réponses:
Il y a un côté pratique à apprendre la construction d'un compilateur. Il y a eu plusieurs occasions où j'ai eu besoin de construire des analyseurs pour implémenter un langage de commande spécifique à l'application. Cela m'a permis de créer des interfaces flexibles et scriptables pour l'application.
Cela vous donne également une meilleure idée de la raison pour laquelle certaines langues sont conçues comme elles sont et pourquoi aucune langue n'est parfaite.
C'est un cours difficile, l'un des plus difficiles du programme. J'ai fait l'erreur de le prendre lors d'une session d'été; ne prenez jamais de cours de compilateur lors d'une session d'été, votre cerveau va exploser.
la source
Oh, c'est une bonne chose. Prenez-le, vous ne le regretterez pas.
Vous obtenez un aperçu de la magie des langages de programmation, de leurs caractéristiques comparatives, de la transformation du code de haut niveau en sa forme exécutable. Vous comprendrez mieux de nombreuses fonctionnalités du langage, aurez une vision plus large de ce qui est possible et de la façon dont ces choses sont faites. Vous verrez tout cela avec des yeux différents.
Il est sage de passer du temps à l'université pour apprendre des choses fondamentales de la CS. Des langages de programmation, des outils et des bibliothèques concrets, ils vont et viennent tous, mais les fondations restent.
De plus, si vous survivez au cours (à condition que ce soit sérieux), vous pouvez alors vous féliciter d'avoir le bon cerveau pour la programmation. Faites un projet pratique avec cette théorie, mentionnez-le dans votre CV et vous susciterez beaucoup d'intérêt auprès de bons employeurs.
la source
Absolument!
Ce n'est peut-être pas un sujet que vous utiliseriez quotidiennement comme une classe de bases de données par exemple, la compréhension des compilateurs vous donnera une excellente base.
Un exemple similaire serait une classe de systèmes d'exploitation. Vous pourriez être un programmeur et ne pas penser à la façon dont un système d'exploitation fonctionne tous les jours, mais avoir des bases vous aidera à long terme.
la source
Oui! Le cours vous donnera une compréhension beaucoup plus approfondie de l'analyse du langage de programmation, des types de données et des fonctions et comment les traduire en code machine pour un processeur spécifique: s.
En soi, cela peut ne pas être d'une grande utilité quotidienne, mais cela vous donnera l' assurance que vous savez réellement comment les choses fonctionnent . C'est très utile (en parlant d'expérience ici) lorsque vous devez faire une optimisation de bas niveau et trouver ces bugs vraiment désagréables, ce qui a tout le monde perplexe.
la source
Il y a beaucoup de buzz sur les langues spécifiques au domaine de nos jours. Et ils valent vraiment tout le buzz, leur véritable potentiel reste à explorer . Ainsi, les compétences en construction de compilateurs deviendront non seulement importantes mais essentielles à l'avenir. Je passe environ 60% de mon temps de développement à implémenter des compilateurs eDSL, même si le problème actuel n'est pas directement lié aux compilateurs.
la source
Cela vaut la peine de suivre un cours pour comprendre comment les outils que vous utiliserez pour l'intégralité d'une carrière en programmation (par exemple, compilateurs, interprètes, analyseurs) sont construits et quelles sont les limites.
Cela vaut également la peine de le faire dans un contexte académique, car cela expose les fondamentaux intéressants et non les nombreuses complexités du monde réel, qui est désordonné et embourbé dans le traitement des langages et architectures hérités, c'est-à-dire beaucoup de complexité. Il est également plus probable que vous puissiez travailler sur tous les aspects d'un compilateur pour en créer un pour un cours, que pour travailler sur un dans l'industrie.
la source