¿Cuánto tiempo te llevó aprender C?

No hay tiempo para nada.

Bueno, podría haber sido unos días para obtener lo básico, y luego algunos más para comenzar a ser productivos, pero después de tantas veces, varias personas me dijeron que sería difícil, difícil, difícil.

Yo sabía lo básico. Conocía varios lenguajes ensambladores y conocía a Pascal. Como ingeniero electrónico, eso no era malo, no codifiqué para ganarme la vida en ese momento (mediados de los 80). Yo era un tipo de hardware. Luego obtuvimos estos nuevos hechiceros graduados que nos arrastrarían hacia el futuro y agregarían ingeniería de software integrada a nuestra base de habilidades.

Compramos un sistema de desarrollo muy caro (por el momento) para la familia 8051 con emulación en circuito. Era bastante fácil, podía usarlo de inmediato para escribir el lenguaje de ensamblaje 8051 (lo aprendí en el manual de programación suministrado por el fabricante). Realicé algunos proyectos pequeños de esa manera antes de que se activara durante más de unas pocas semanas. Pero los nuevos, bueno, de lo único que podían hablar era de C. C era la respuesta, el santo grial, la forma en que estaríamos programando en el futuro. Nada de esta mierda de ensamblador, y definitivamente no hay Pascal. Por qué, la noción misma de Pascal los hizo reír en su soberbia nube de superioridad.

No hace falta decir que encontré esta actitud bastante molesta, pero tenía que hacer mi trabajo y ellos tenían la suya. Así que una parte de mí cumplió su palabra, ¡como yo, sin un gran golpe! – título universitario – no tenía ninguna posibilidad de entender C. Apégate a tus transistores y amplificadores operacionales, hardware. Yo sabía mi lugar.

Algún tiempo después, mi trabajo había cambiado. Ya no resolví los mapas de Karnaugh y descubrí grandes matrices de puertas lógicas. Simplemente dibujamos una caja grande y escribimos ‘8051’ en ella, o a veces ’68HC11′ y luego enganchamos todo lo demás alrededor de los bordes. Yo estaba cómodo en ensamblador. Usé a Pascal para escribir aplicaciones en la Mac como una línea lateral. Los niños genios todavía hablaban de C, cómo C cambiaría nuestras vidas. La cosa era que tenía trabajo que hacer, y mientras pasaban meses interminables tratando de hacer que un compilador de C trabajara en el sistema de desarrollo y que trabajara con partes de hardware totalmente inútiles para ejecutar su código de prueba, simplemente trabajé en ensamblador. Resolví los problemas que tenía que resolver y construí cosas que funcionaron. Claramente, C era demasiado difícil, incluso esos tipos estaban luchando con eso. Mejor dejarlo bien solo.

Bueno, cambié de compañía un par de veces durante varios años y para entonces ya estaba programando la mayoría del tiempo. (Turbo) Pascal era bastante útil para programar máquinas de escritorio, y el ensamblador estaba bien para hardware de gama baja. Pero terminé en un lugar que era exclusivamente una tienda de C, pero en Mac. Conocía bien la arquitectura de Mac, pero no conocía C, usé Pascal. Me emplearon de todos modos, y me dijeron que aprendiera C.

Así que lo hice. Esa fue la parte de ‘no hay tiempo en absoluto’. Después de todos esos años siendo condenado y dicho que sería demasiado difícil, fue un juego de niños. Fue como un Pascal simplificado para mí. También me di cuenta rápidamente de que era potencialmente mucho más peligroso: no había controles integrados para los límites de la matriz, ni ninguna de esas cosas de lujo. Pero estaba bien con eso, no era diferente al ensamblador en ese sentido. Así que tuve una primera aplicación de trabajo en un par de días. Incluso empecé a meterme con C ++ al mismo tiempo, porque estaba usando THINK C, que venía con un marco basado en C ++ llamado TCL que se usó para el trabajo de esta compañía.

Aproximadamente una semana después, pensé que me gustaría intentar escribir algo ‘real’ en C, para consolidar este nuevo conocimiento y asegurarme de que realmente lo entendí. Así que escribí un clon de Space Invaders llamado ‘Desk Invaders’, que funcionaba como un accesorio de escritorio (un DA era una forma de ejecutar cooperativamente una pequeña aplicación ‘helper’ junto con cualquier otra aplicación en el Mac original que no realiza múltiples tareas, y escribir una era considerado un derecho de paso para los primeros programadores de Mac: si pudieras dominar un DA, te habrías graduado, por así decirlo, como un desarrollador de Mac). Desk Invaders: Macintosh Repository Desk Invaders resultó bien y se convirtió en un éxito moderado de shareware en los días previos a Internet, encontrando su camino en muchos discos de portadas de revistas durante varios años.

También eventualmente fui e hice un título y eso incluyó un curso formal en programación en C, así que también obtuve la introducción académica. Pero yo conocía bastante bien a C para entonces, así que no había nada realmente nuevo en ello.

C se convirtió rápidamente en lo que codifiqué, desplazando a Pascal más o menos de la noche a la mañana. Después de todo, también pude ver sus ventajas para el trabajo integrado, pero al final mi trabajo cambió y nunca usé C para la codificación integrada. Pero luego C ++ gradualmente tomó el control de la C recta, lo que fue una transición bastante suave. Me quedé con C ++ durante más de 12 años hasta mudarme a Objective-C / Cocoa.

Unas pocas horas a unas pocas semanas.

Pero luego llegué (hace mucho tiempo) de Turbo Pascal, que era un Pascal para la programación real (más que una versión educativa) que se había ampliado con muchas características de tipo C que evitaban que Pascal fuera tan torpe.

Los dos idiomas eran básicamente bastante similares en cualquier caso.

En pocos minutos pude codificar lentamente (buscando muchas cosas) y en pocas horas mis programas fueron más que triviales.

Pasaron un par de semanas antes de que escribiera algunos programas sustanciales y diría que conocía C a un “nivel oficial”.

C ++ tardó un poco más, pero ese tiempo se dedicó a aprender las ideas de usar y diseñar clases y objetos, por lo que, en cierto sentido, conocí C ++ casi de inmediato, pero pasé un par de meses aprendiendo a usarlo por completo.

C # (después de C ++) fue similar a aprender C para mí, pero C # fue un lenguaje más pequeño cuando lo aprendí hace un tiempo y muy cerca de C ++ (casi C ++ sin material).

PowerShell (es en gran parte como C #) – nuevamente, casi inmediatamente para hacer las cosas, pero he descubierto que este lenguaje continúa sorprendiéndome con su riqueza y capacidades incluso después de un año de uso SERIO.

Clojure y F # tomaron (o están tomando) más tiempo (unos pocos meses), ya que la sintaxis de cada uno es bastante diferente de los lenguajes similares a C *, y emplean un estilo intrínsecamente diferente: la programación funcional.

(Aunque todos los lenguajes anteriores están adoptando algunas de las ideas funcionales o expresiones idiomáticas).

Por lo general, los lenguajes tipo C se denominan “lenguajes Algol”, ya que Algol es su principal ancestro común.

Aprendí en la universidad, ya conocía Algol, pero necesitaba usar el PDP-11 para escribir mi proyecto de término. El PDP-11 ejecutaba UNIX y necesitaba ser programado en C. Así que agarré el libro de Kernigan y Richie y recogí suficiente C para que comience el proyecto en cuestión de días, gradualmente aprendiendo más tal vez el próximo mes como mi Proyecto de trabajo ampliado.

SIN EMBARGO, mucho depende de lo que ya sabes.

Ya era fluido en Algol (que es un lenguaje fuertemente tipado, estructurado de manera similar a C), así como en Fortran y BASIC, y eso lo hizo bastante fácil.

  • Si no sabe cómo programar ya, entonces no se trata tanto de “Aprender C” como de “Aprender cómo programar (en C)” … y ese es un problema mucho mayor.
  • Si ya sabe cómo programar, pero nunca ha encontrado un lenguaje muy tipificado (quizás sepa JavaScript o Python), entonces será un poco más fácil.
  • Si ya conoce Java (que está fuertemente tipado), entonces C será bastante fácil de aprender.
  • Si ya conoces C ++, entonces ya conoces C, solo tienes que “desaprender” algunos bits de C ++ y es * FÁCIL *.

Así que tu situación probablemente será diferente a la mía.

Los programadores experimentados pueden aprender lo suficiente de un nuevo idioma para comenzar a trabajar con el código existente dentro de un par de días, sentirse cómodos con él en una o dos semanas y tener una fluidez razonable en un mes. Aprender nuevos idiomas es cuestión de comparar el nuevo idioma con los que ya conoces (” Oh C # … sí … un poco como C ++ pero con recolección de basura … ¿verdad? “)

Creo que esta pregunta requiere una aclaración. Aprender C per se no es un gran problema. Literalmente puede tomar algo de unas pocas horas, si ya conoce algún otro lenguaje de programación, a unos pocos días / semanas si es un novato. Lo que realmente querrá saber es cuánto tiempo se tarda en convertirse en un profesional de C? Esa es una pregunta mucho más amplia. Primero debe comprender en qué área de programación está interesado. Por ejemplo, programación del sistema, procesamiento de imágenes, etc. Si no es un desarrollador de software, entonces es absolutamente necesario que aprenda las estructuras de datos y los algoritmos básicos. Entonces es posible que necesite aprender algunas bibliotecas relacionadas con su área de interés. A diferencia de otros idiomas, la biblioteca estándar de C es muy antigua y rudimentaria. Básicamente hay que hacer todo a mano. Esto requiere mucho tiempo, pero ya hay una gran cantidad de bibliotecas escritas en C que tal vez necesite utilizar. Por ejemplo, si desea interactuar con un sistema operativo como Linux, necesita aprender la API de Linux. Si está interesado en el procesamiento de imágenes, es posible que deba encontrar alguna biblioteca de procesamiento de imágenes y aprender a usarla.

Aprendí C / C ++ durante una noche. (Digo “C / C ++” porque no habría podido decir qué pertenecía a qué idioma en ese momento).
Pero por otro lado, eso fue hace 16 años, y todavía estoy aprendiendo cosas relacionadas con eso.
Desde una perspectiva, nadie realmente “completamente” sabe algo, porque siempre hay más que aprender sobre ello. Ni siquiera las personas que hacen un idioma saben todo lo que hay que saber sobre él.

Lo aprendí como parte de una clase donde lo usamos para escribir programas para resolver problemas de ingeniería. Ya conocía a Pascal antes de la clase lo que ayudó enormemente. Creo que probablemente pasamos 2 semanas aprendiendo C, y el resto del semestre usándolo. Ese no parecía ser un ritmo irrazonable.

Como dije, ya conocía a Pascal. Aprendí eso en la escuela de verano, que creo que fue una sesión de 10 semanas, y no estaba tomando mucho más. Realmente disfruté esa clase y tuve el tiempo para dedicarme a ella. Hacía calor en mi dormitorio no acondicionado, pero el laboratorio de computadoras tenía aire acondicionado. No me importaba pasar las horas de luz allí. Me ayudó que ya sabía BASIC. Aunque Pascal era bastante diferente de BASIC, al menos sabía cómo pensar en términos de algoritmos.

BÁSICO fue un lenguaje que aprendí yo mismo, mientras estaba en la escuela secundaria. Realmente no sé cuánto tiempo tomó. Lo estaba recogiendo yo mismo, y no tenía “aprender BÁSICO” como objetivo, sino que “es divertido jugar con esta computadora”. Eso me retrasó, estoy seguro. Digamos que BASIC tomó un año, pero probablemente no fue necesario.

El tiempo que le tome aprender C dependerá en gran medida de lo que ya sabe cuando comienza. C como lenguaje es bastante simple, pero esa no es realmente la parte difícil. La parte difícil es descubrir cómo hacer que una computadora haga algo útil. Una vez que aprendes eso, los idiomas son bastante fáciles de aprender.

No me atrevería a decir que aprendí C completamente, de hecho, con frecuencia descubro cosas nuevas a medida que escribo en este idioma.

El primer idioma que probé correctamente fue en realidad C ++, pero había muchos conceptos avanzados que simplemente no podía entender de ese idioma en el momento, y lo que es más importante, cómo construir, usar y comprender mis propias clases. Esto significa, irónicamente, que bien podría haber estado escribiendo una biblioteca estándar de código C + C ++, que era efectivamente la medida de mis habilidades en ese momento.

Respiré y experimenté con C ++ durante aproximadamente un año, luego pasé a Python, que me ayudó a comprender mejor los conceptos más avanzados que son más difíciles de articular con la sintaxis de C ++.

Después de unos años de eso, comencé a recoger la llanura C correctamente, hace poco más de un año. Como dije, todavía estoy aprendiendo y probablemente lo haré por un tiempo aún, así que supongo que me puede llevar hasta 5 años.

En cualquier caso, lo estoy disfrutando mucho!

Unas horas para aprender la mayor parte de la sintaxis …

Una semana o dos para sentirse cómodo con él.

Años para aprender las implicaciones y capacidades del lenguaje.

Y sigue aprendiendo, después de 20 años.

Probablemente obtuve lo básico en una semana o algo así.

Tengo que ser capaz de escribir software mediano para software decente en los próximos meses.

¿Aprender hasta el punto de ser grande en eso? No lo hice

Depende del tiempo que esté dispuesto a invertir en estudiar el idioma, pero definitivamente 4 horas todos los días durante 6 meses pueden ayudarlo a mejorar * C *

Confía en mí, es un proceso interminable.

Sólo dos letras. Comencé con A y B, ¡finalmente estaba listo para C!