J'ai récemment appris le C et je veux démarrer un projet pour consolider mes connaissances. J'ai décidé de créer un éditeur de texte très simple, quelque chose comme vim. Le problème auquel je suis confronté est que je n'ai vraiment aucune idée du fonctionnement d'un éditeur de texte, et je ne sais pas quoi chercher sur Google pour en savoir plus.
Googler à ce sujet a conduit au dépôt GitHub de vim, ce qui est inutile pour moi car la base de code est énorme et le code me déroute. J'ai également trouvé des tutoriels pour créer un éditeur de texte en C qui fonctionne un peu comme vim.
Bien que j'aie pensé à suivre les tutoriels, j'ai l'impression de tricher. Comment les développeurs de vim ont-ils compris comment coder vim sans tutoriels spécifiques? Ou sont-ils partis d'éditeurs de texte plus simples? Comment ont-ils compris cela uniquement grâce à la connaissance des langues et de leur documentation?
De quoi ai-je besoin exactement pour commencer à écrire cet éditeur de texte sans suivre directement un tutoriel? Un autre exemple auquel j'aime penser est: comment Dennis Ritchie et Ken Thompson ont-ils codé Unix? J'ai une idée du fonctionnement du système d'exploitation, mais je ne sais pas comment le mettre en code. Qu'est-ce qui me manque? Comment puis-je transférer cette connaissance de la langue dans une utilisation réelle et pratique?
Réponses:
S'il s'agit de votre premier projet de programmation, même un simple éditeur de texte peut être trop compliqué. Quelque chose comme vim ou un OS est complètement hors de question.
Aborder le problème
En général, la façon de commencer est à peu près similaire pour la plupart des projets, cependant:
Exemple
Prenons l'exemple de l'éditeur de texte.
Vous souhaitez afficher une partie d'un fichier texte à l'écran, insérer et supprimer des caractères et enregistrer la version actuelle.
Commencez par lire un fichier et afficher son contenu.
Vous identifierez (entre autres) les sous-problèmes suivants:
Une fois que vous atteignez un point où votre exigence (charger le fichier et l'afficher) est terminée, vous pouvez commencer à envisager comment afficher uniquement une partie qui s'adaptera à l'écran, naviguer dans votre fichier, etc.
La prochaine étape
Au fil du temps, à mesure que vous affronterez des problèmes de plus en plus complexes, vous vous rendrez compte qu'il devient de plus en plus difficile de trouver des moyens appropriés de décomposer vos problèmes. Vous remarquerez également que le changement de code peut devenir fastidieux avec le temps.
À ce stade, il est temps d'apprendre quelques concepts d'architecture et de conception de base.
la source
Non.
Si vous n'avez même pas une vague idée de comment faire quelque chose, c'est un signe que cela dépasse vos compétences actuelles. Parce que si vous ne savez même pas par où commencer, vous n'aurez certainement aucune idée en ce qui concerne la partie la plus difficile de l'application.
la source
less
,more
ou desview
programmes. Ils partagent certains des aspects des éditeurs, sans la complexité des tampons d'édition mutables.Vous devez décider comment vous souhaitez que votre éditeur de texte fonctionne.
C'est l'une des expériences les plus aggravantes et les plus gratifiantes de développer vos propres projets du début à la fin. Personne ne vous envoie d'exigences pour construire à partir de. Vous devez développer vos propres exigences.
Cela signifie que vous devrez effectuer un énorme travail de conception avant d'écrire votre première ligne de code. Vous devrez décider à quoi ressemble l'interface. Vous devrez décider des fonctionnalités à inclure. Les deux questions ci-dessus seront guidées par ce que vous vous sentez capable de faire. Si vous pensez à la situation "idéale" (comment vous aimeriez que l'interface fonctionne), mais que vous ne vous sentez pas capable de la coder, alors vous devez commencer à chercher des approches alternatives: Comment pourrais-je faire fonctionner cela? Cela vous aide à vous concentrer sur les approches de codage sur lesquelles vous voudrez peut-être en savoir plus.
Comme d'autres l'ont dit, essayer de copier vim n'est peut-être pas la meilleure approche car il s'agit d'une base de code volumineuse et compliquée. Vous vous refusez également le travail de conception qui, à mon humble avis, vous aide à vous compléter en tant que développeur.
Cela ne signifie pas que vous devrez faire concevoir l'application entière du début à la fin avant d'écrire votre première ligne de code. Il est normal que les exigences changent au fil du temps à mesure que vous en apprenez davantage. C'est bien d'ajouter de nouvelles fonctionnalités auxquelles vous ne pensez pas jusqu'à ce que vous testiez / utilisiez votre propre application et que vous vous disiez "Ce ne serait pas bien si ..." C'est bien de commencer simplement.
la source
Il est insensé d'écrire un éditeur de texte complet sans expérience de programmation: vous serez découragé et l'abandonnerez avant d'en apprendre beaucoup.
Plusieurs alternatives me viennent à l'esprit:
vim
, regardez-le et essayez de comprendre quelque chose de petit et d'isolé, comme la façon dont il représente les données, ou recherche un seul caractère (laf
commande).cat
commande puiswc
puisgrep
puissed
par exemple.la source