El otro día mi papá me hizo una pregunta que nunca hubiera esperado de él.
"¿Cómo puedo aprender C ++?"
Mi padre cumple 56 años este año y las computadoras son un concepto distante para él. No sabe cómo usar un teléfono muy bien además de llamar a números (sin marcación rápida ni contactos); aunque ha comenzado a aprender las computadoras un poco mejor, hasta el punto de que sabe cómo abrir Internet (en Windows) y navegar (y ha completado con éxito varias solicitudes de trabajo completamente solo en línea, de las cuales también se le ofrecieron puestos) ) Pero aún así, estas son experiencias demasiado estrechas para significar mucho, en realidad.
Si bien es posible que no tenga los antecedentes, mi papá sabe leer. Y quiero decir que leer es una habilidad, no solo una habilidad. Tiene poca o ninguna educación universitaria (problemas financieros, familiares, etc.) y tuvo la suerte de terminar la escuela secundaria, pero aún así se enseñó a sí mismo a convertirse en un maestro electricista y lo ha sido durante casi 30 años. Hizo lo mismo con la guitarra, aprendió a tocar a un nivel muy profesional y ha sido elogiado por su habilidad. En la escuela secundaria, tomó un libro de levantamiento de pesas, y en ese momento era la única persona en su escuela secundaria que calificaba oficialmente como "atleta" según los estándares nacionales.
En todos los casos, solo necesitaba algo para leer. Algo para enseñarle. Absorbe información como una esponja.
No tengo dudas sobre la motivación o capacidad de mi padre para hacer esto, por lo que mi objetivo general es simplemente:
Llevar a mi padre al mundo de las computadoras y llevarlo a la programación.
Creo firmemente que una vez que lo haga pasar por los fundamentos, su habilidad para manejar y leer lo mantendrá por su cuenta.
Entonces les pregunto a todos: ¿por dónde debería comenzar con todo esto? ¿Y cuáles son los mejores recursos disponibles? ¿Debo hacer que inicie Linux en lugar de Windows? ¿C ++ es una mala idea?
Recuerde, él necesita (IMO) aprender computadoras primero, y luego obtener esa primera comprensión (la experiencia "Hola mundo") de programación.
Por el bien del dinero y con la máxima preferencia, me gustaría obtener recursos en línea gratuitos que pueda leer, pero por supuesto, cualquier buena sugerencia impresa o de pago en línea es bienvenida (que posiblemente podría buscar más adelante para comprar).
Y también, tengo la intención de comenzarlo con C ++ (sin Python, Java, etc.), porque lo sé mejor y podré ayudarlo en el camino con código. (Tengo un conocimiento mínimo en este momento en otros idiomas).
Editar: Recibo muchas sugerencias persistentes para usar Python. La única razón por la que quería hacer C ++ es porque lo sé y puedo estar allí cuando mi padre necesita ayuda. Mi PRIMERA exposición a la programación fue Java. Aprendí Java, y me hice bueno en eso. Me abro a otras sugerencias, pero proporcione una aplicación efectiva de sus sugerencias.
EDITAR # 2: Entiendo que mi enfoque / pensamiento / conocimiento podría faltar aquí. Soy un estudiante de segundo año de licenciatura CS importante. Si no estás de acuerdo con nada en mi publicación, dime por qué, dame ideas, información, es por eso que te pregunto en primer lugar. Para reducir mi objetivo general a objetivos específicos alcanzables.
Respuestas:
En primer lugar, incluso si conoce personalmente bien C ++, es un primer idioma horrible, horrible para principiantes, y no puedo recomendar lo suficientemente fuerte como para mantenerlo lo más alejado posible si quiere aprender a escribir código con éxito. La programación de aprendizaje no se trata de un lenguaje, se trata de aprender a expresar requisitos abstractos en lógica formal. C ++ hace que sea difícil enfocarse porque constantemente estás tropezando con problemas específicos del idioma.
Si quiere aprender a expresar ideas en lógica formal, busque algo que lo haga simple. Mis opciones serían Pascal (para el desarrollo a nivel de aplicación) o Python (para el trabajo a nivel de script) porque ambos están diseñados con ser intuitivos y fáciles de aprender como prioridades centrales. Una vez que realmente conoce los principios de cómo escribir código, entonces si realmente le importa C ++ específicamente, puede aprenderlo.
Por la misma razón, no lo inicie en Linux en lugar de Windows, porque entonces tiene dos problemas en los que centrarse: ¡aprender Linux y aprender codificación, al mismo tiempo! Mantenga las distracciones al mínimo.
En cuanto a los recursos de programación reales, es bastante fácil encontrar tutoriales en línea, pero he descubierto que la mejor manera de aprender a programar es mediante la programación. Encuentre algo que le gustaría hacer y luego comience a descubrir cómo hacerlo.
Hace varios años, vi un juego y pensé: "Podría hacer esto, y podría hacerlo mejor". Así que encendí a Delphi y comencé a descubrir los principios involucrados. Todavía estoy aprendiendo cosas nuevas de ese proyecto personal, y en el camino, ¡me he convertido en un muy buen programador! Así que intenta eso; pregúntale a tu padre qué le gustaría hacer si pudiera programar, y asegúrate de que sea posible, y de un alcance razonablemente pequeño ya que aún no tiene experiencia, y luego siéntate con él y comienza a descubrir cómo hacerlo. eso.
Y si tiene alguna pregunta, consígale una cuenta StackOverflow. :)
fuente
Creo que el interés de su padre en C ++ es definitivamente bueno, pero no sería mi elección para un primer lenguaje de programación, a menos que tenga un requisito muy específico de que le interese cumplir. (Incluso entonces, aprender C ++ después de aprender otro lenguaje más simple podría ser mucho más fácil).
Hay un puñado de cosas que son importantes para la programación:
En muchos sentidos, la sintaxis y la semántica de lenguajes específicos está cerca del final de las habilidades necesarias para la programación. Después de todo, si estás cerca de la derecha, la mayoría de los compiladores te dirán qué error has cometido, aunque se necesita experiencia para decodificar lo que los compiladores específicamente están diciendo.
Entonces, sugeriría que su padre aborde un lenguaje de programación mucho más simple al principio: Ruby, Python, C, C #, Haskell, etc. (Haskell es definitivamente difícil para las personas que han programado solo lenguajes imperativos, pero yo ' sería curioso saber si los novatos completos sufren la misma sensación de "pez fuera del agua").
Seguir con un lenguaje más simple por adelantado significa que tu papá tendrá más éxito antes y será más fácil "jugar". El bucle REPL interactivo de muchos idiomas es un excelente lugar para aprender.
Una vez que su padre esté familiarizado con las funciones, clases, objetos, métodos, las minucias y los matices de C ++ no se sentirán tan abrumadores. Diablos, incluso comenzar con C sería más fácil: no es indulgente , pero hay menos características confusas de las que preocuparse.
Tienes curiosidad sobre Linux vs Windows; No estoy seguro de que la distinción importe mucho. Si ya está familiarizado con uno u otro entorno, el cambio es solo otro obstáculo. Si él no sabe ninguno de los dos, sugeriría Linux, pero principalmente porque instalar buenas herramientas es ridículamente fácil:
apt-get install <foo>
funciona en la mayoría de las distribuciones, y las distribuciones que no son compatibles aapt
menudo proporcionan algo similar. Un minuto después, se instala su nuevo paquete, a menudo más rápido de lo que me llevaría encontrar una fuente de descarga confiable para los binarios de Windows precompilados que no apesta a caballos de Troya.fuente