Recientemente aprendí C y quiero comenzar un proyecto para solidificar mi conocimiento. Me decidí a hacer un editor de texto muy simple, algo así como vim. El problema al que me enfrento es que realmente no tengo idea de cómo funciona un editor de texto, y no sé qué buscar en Google para obtener información al respecto.
Buscar en Google lo llevó al repositorio de vim en GitHub, lo cual es inútil para mí porque la base de código es enorme y el código me confunde. También encontré tutoriales para hacer un editor de texto en C que funciona como vim.
Aunque pensé en seguir los tutoriales, se siente como hacer trampa. ¿Cómo descubrieron los desarrolladores de vim cómo codificar vim sin tutoriales específicos? ¿O comenzaron con editores de texto más simples? ¿Cómo resolvieron eso solo por el conocimiento de idiomas y su documentación?
¿Qué es exactamente lo que necesito para comenzar a escribir este editor de texto sin seguir directamente un tutorial? Otro ejemplo en el que me gusta pensar es: ¿cómo Dennis Ritchie y Ken Thompson codificaron Unix? Tengo una idea de cómo funciona el sistema operativo, pero no tengo idea de cómo ponerlo en el código. ¿Qué es lo que me estoy perdiendo? ¿Cómo transfiero este conocimiento del idioma al uso real y práctico?
Respuestas:
Si este es su primer proyecto de programación, incluso un simple editor de texto puede ser demasiado complicado. Algo como vim o un sistema operativo está completamente fuera de discusión.
Abordando el problema
Sin embargo, en general, la forma de comenzar es más o menos similar para la mayoría de los proyectos:
Ejemplo
Tomemos el ejemplo del editor de texto.
Desea mostrar una parte de un archivo de texto en la pantalla, insertar y eliminar caracteres y guardar la versión actual.
Comience simplemente leyendo un archivo y mostrando su contenido.
Identificará (entre otros) los siguientes subproblemas:
Una vez que llegue a un punto donde se complete su requisito (cargar el archivo y mostrarlo), puede comenzar a considerar cómo mostrar solo una parte que se ajuste a la pantalla, navegar en su archivo, etc.
El siguiente paso
Con el tiempo, a medida que se enfrente a problemas cada vez más complejos, se dará cuenta de que cada vez es más difícil encontrar formas adecuadas de descomponer sus problemas. También notará que cambiar el código puede volverse tedioso con el tiempo.
En ese momento, es hora de aprender algunos conceptos básicos de arquitectura y diseño.
fuente
Usted no
Si ni siquiera tiene una vaga idea de cómo hacer algo, es una señal de que está más allá de sus habilidades actuales. Porque si no tienes idea de cómo comenzar, ciertamente no vas a tener ninguna idea cuando se trata de la parte más difícil de la aplicación.
fuente
less
,more
oview
los programas. Comparten algunos de los aspectos de los editores, sin la complejidad de los buffers de edición mutables.Es necesario decidir cómo usted quiere que su editor de texto para el trabajo.
Esta es una de las experiencias más agravantes y gratificantes de desarrollar sus propios proyectos de principio a fin. Nadie te está enviando requisitos para construir. Necesita desarrollar sus propios requisitos.
Esto significa que tendrá que hacer una gran cantidad de trabajo de diseño antes de escribir su primera línea de código. Tendrá que decidir cómo se ve la interfaz. Tendrá que decidir qué funcionalidad incluir. Ambas preguntas anteriores se guiarán por lo que se siente capaz de hacer. Si piensa en la situación "ideal" (cómo le gustaría que funcionara la interfaz), pero no se siente capaz de codificarla, entonces necesita comenzar a buscar enfoques alternativos: ¿Cómo podría hacer que esto funcione?Eso ayuda a enfocarte en los enfoques de codificación sobre los que quizás quieras aprender más.
Como han dicho otros, intentar copiar vim puede no ser el mejor enfoque, ya que es una base de código grande y complicada. También te estás negando a ti mismo el trabajo de diseño que, en mi humilde opinión, ayuda a completar tu desarrollo como desarrollador.
Esto no significa que necesitará tener toda la aplicación diseñada de principio a fin antes de escribir su primera línea de código. Está bien que los requisitos cambien con el tiempo a medida que aprende más. Está bien agregar nuevas características en las que no piense hasta que esté probando / usando su propia aplicación y piense: "¿No sería bueno si ..."? Está bien comenzar de manera simple.
fuente
Escribir un editor de texto completo desde cero sin experiencia en programación es una tontería: se desanimará y lo abandonará antes de aprender mucho.
Se me ocurren varias alternativas:
vim
, mira eso e intenta entender algo pequeño y aislado, como cómo representa los datos o busca un solo carácter (elf
comando).cat
comando,wc
luego,grep
luego,sed
por ejemplo.fuente