¿Cómo codifica algo cuando no tiene idea de cómo funciona realmente? [cerrado]

14

Recientemente aprendí C y quiero comenzar un proyecto para solidificar mis conocimientos. Me he decidido a hacer un editor de texto muy simple, algo como vim. El problema al que me enfrento es que realmente no tengo ni idea de cómo funciona un editor de texto, y no sé qué buscar en Google para aprender sobre él.

Buscar en Google lo llevó al repo de GitHub de vim, que no me sirve de nada porque el código base 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, es como hacer trampa. ¿Cómo descubrieron los desarrolladores de vim cómo codificar vim sin tutoriales específicos? ¿O empezaron desde editores de texto más simples? ¿Cómo se las arreglaron solo con el conocimiento de los 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 hicieron Dennis Ritchie y Ken Thompson para codificar Unix? Tengo una idea de cómo funciona el sistema operativo, pero no tengo idea de cómo ponerlo en código. ¿Qué es lo que me estoy perdiendo? ¿Cómo transfiero este conocimiento del idioma al uso real y práctico?

    
pregunta Faithlesss 10.02.2018 - 15:40

4 respuestas

17

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.

Cómo abordar el problema

En general, la forma de comenzar es más o menos similar para la mayoría de los proyectos:

  • Usted reúne sus requisitos. ¿Qué exactamente hará el software?
  • Comienzas con muy pocos requisitos y luego agregas funcionalidad poco a poco.
  • Descompone los problemas planteados por sus requisitos actuales en subproblemas.
  • Sigues descomponiendo tus subproblemas hasta que tengas algo que sepas cómo implementar.

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 con solo leer un archivo y mostrar su contenido.

  • Identificarás (entre otros) los siguientes subproblemas:

    • ¿Cómo sé el nombre del archivo para mostrar?
    • Dado un nombre de archivo, ¿cómo obtengo el contenido del archivo?
    • Dado el contenido de un archivo, ¿cómo los visualizo?

Una vez que haya alcanzado un punto en el que se completó su requisito (cargar 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 enfrenta 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.

    
respondido por el doubleYou 10.02.2018 - 16:26
15

Usted no.

Si ni siquiera tienes una vaga idea de cómo hacer algo, es una señal de que está más allá de tus habilidades actuales. Porque si no tienes ni idea de cómo empezar, ciertamente no vas a tener ninguna idea cuando se trata de la parte más difícil de la aplicación.

    
respondido por el Telastyn 10.02.2018 - 15:48
2

Debes decidir cómo quieres que tu editor de texto funcione

Esta es una de las experiencias más agravantes y gratificantes de desarrollar tus propios proyectos de principio a fin. Nadie te está enviando requisitos para construir. Necesitas desarrollar tus 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ás que decidir cómo se ve la interfaz. Tendrás que decidir qué funcionalidad incluir. Las dos preguntas anteriores se guiarán por lo que usted se sienta 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 debe comenzar a buscar enfoques alternativos: ¿Cómo puedo hacer esto para ¿Trabajas? Eso te ayuda a centrarte en los enfoques de codificación sobre los que te gustaría aprender más.

Como han dicho otros, tratar de 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, te ayuda a redondearte como desarrollador.

Esto no significa que deba 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 funciones que no se te ocurran hasta que estés probando / usando tu propia aplicación y pienses: "¿No sería bueno si ..." Está bien comenzar de manera simple?

    
respondido por el Randall Stewart 10.02.2018 - 20:05
1

Escribir un editor de texto con todas las funciones desde cero sin experiencia en programación es una tontería: se desanimará y lo abandonará antes de aprender mucho.

Varias alternativas vienen a la mente:

  • Estudie el código de algún producto con el que esté familiarizado. Si dominas vim , observa eso y trata de entender algo pequeño y aislado, como la forma en que representa los datos, o busca un solo carácter (el comando f ).
  • Estudie el código de un programa muy simple y avance desde allí: cat comando luego wc luego grep luego sed por ejemplo.
  • Intente escribir un programa que haga solo una característica del editor. Tal vez elimine el segundo carácter en cada línea de un archivo (sin escribirlo de nuevo), o muestre solo las líneas 50 a 70 de un archivo.
respondido por el wallyk 10.02.2018 - 20:05

Lea otras preguntas en las etiquetas