Eu aprendi recentemente C e quero iniciar um projeto para solidificar meus conhecimentos. Eu decidi criar um editor de texto muito simples, algo como o vim. O problema que enfrento é que eu realmente não tenho idéia de como um editor de texto funciona, e não sei o que procurar no Google para aprender sobre isso.
A pesquisa no Google levou ao repositório GitHub do vim, que é inútil para mim porque a base de código é enorme e o código está me confundindo. Também encontrei tutoriais para criar um editor de texto em C que funciona como o vim.
Embora eu tenha pensado em seguir os tutoriais, parece trapaça. Como os desenvolvedores do vim descobriram como codificar o vim sem tutoriais específicos? Ou eles começaram com editores de texto mais simples? Como eles descobriram isso apenas com o conhecimento de idiomas e sua documentação?
O que é exatamente o que eu preciso para começar a escrever este editor de texto sem seguir diretamente um tutorial? Outro exemplo em que gosto de pensar é: como Dennis Ritchie e Ken Thompson criaram o Unix? Tenho uma ideia de como o sistema operacional funciona, mas não faço ideia de como colocá-lo em código. O que estou perdendo? Como transfiro esse conhecimento do idioma para uso prático e real?
Respostas:
Se este é seu primeiro projeto de programação, mesmo um simples editor de texto pode ser muito complicado. Algo como o vim ou um sistema operacional está completamente fora de questão.
Abordando o problema
Em geral, a maneira de começar é aproximadamente semelhante para a maioria dos projetos, no entanto:
Exemplo
Vamos dar o exemplo do editor de texto.
Você deseja exibir uma parte de um arquivo de texto na tela, inserir e remover caracteres e salvar a versão atual.
Comece apenas lendo um arquivo e exibindo seu conteúdo.
Você identificará (entre outros) os seguintes subproblemas:
Depois de chegar a um ponto em que seus requisitos (carregar e exibir arquivos) são concluídos, você pode começar a considerar como exibir apenas uma parte que caiba na tela, navegar no arquivo, etc.
O próximo passo
Com o tempo, à medida que enfrenta problemas cada vez mais complexos, você perceberá que fica cada vez mais difícil encontrar maneiras adequadas de decompor seus problemas. Você também notará que a alteração do código pode se tornar tediosa ao longo do tempo.
Nesse ponto, é hora de aprender alguns conceitos básicos de arquitetura e design.
fonte
Você não
Se você nem tem uma vaga idéia de como fazer algo, é um sinal de que está além das suas habilidades atuais. Porque se você não tem idéia de como começar, certamente não terá idéia quando se trata da parte mais difícil do aplicativo.
fonte
less
,more
ouview
programas. Eles compartilham alguns dos aspectos dos editores, sem a complexidade dos buffers de edição mutáveis.Você precisa decidir como você quer seu editor de texto para trabalho.
Esta é uma das experiências mais agravantes e gratificantes de desenvolver seus próprios projetos do início ao fim. Ninguém está lhe enviando requisitos para construir. Você precisa desenvolver seus próprios requisitos.
Isso significa que você precisará fazer uma enorme quantidade de trabalho de design antes de escrever sua primeira linha de código. Você precisará decidir como será a interface. Você precisará decidir qual funcionalidade incluir. Ambas as perguntas acima serão orientadas pelo que você se sente capaz de fazer. Se você pensa na situação "ideal" (como deseja que a interface funcione), mas não se sente capaz de codificá-la, precisa começar a procurar abordagens alternativas: Como eu poderia fazer isso funcionar? Isso ajuda a focar você nas abordagens de codificação sobre as quais você pode querer aprender mais.
Como já foi dito, tentar copiar o vim pode não ser a melhor abordagem, pois é uma base de código grande e complicada. Você também está negando a si mesmo o trabalho de design que, na minha humilde opinião, ajuda a se destacar como desenvolvedor.
Isso não significa que você precisará projetar todo o aplicativo do início ao fim antes de escrever sua primeira linha de código. Não há problema em mudar os requisitos ao longo do tempo à medida que você aprende mais. Não há problema em adicionar novos recursos nos quais você não pensa até testar / usar seu próprio aplicativo e pensar: "Não seria bom se ..." Não há problema em começar de maneira simples.
fonte
Escrever um editor de texto com todos os recursos do zero, sem experiência em programação, é tolice: você será desencorajado e o abandonará antes de aprender muito.
Várias alternativas vêm à mente:
vim
, examine-o e tente entender algo pequeno e isolado, como como ele representa os dados ou procure por um único caractere (of
comando).cat
command ewc
, emgrep
seguida,sed
por exemplo.fonte