¿Cuánto tiempo tomará aprender C con fluidez para un no principiante?

La respuesta de Matt Grice es acertada.

Ya tenía casi 10 años de programación (no profesional) en idiomas que iban desde Assembly hasta Fortran y desde Pascal hasta Basic cuando me acerqué a C. Me tomó menos de 2 días aprender el idioma en sí.

Tres semanas después me contrataron como programador en C y ya era mejor que los otros tres tipos de mi grupo. Habían sido programadores de C durante algunos años, pero solo conocían a C y un poco a Pascal y todavía tenían problemas con los punteros. Mi experiencia con Assembly me puso muy por delante de ellos como programador en C

Sin embargo, mi experiencia, aunque relativamente larga, no fue profesional. Me tomó de 5 a 6 años de programación (en C y luego en C ++) para convertirme en lo que en ese momento consideraba “bastante bueno”.

C, el lenguaje, es muy fácil. Es pequeño pero potente. Y no hace casi nada en sí mismo. Usted mismo construye toda la funcionalidad o usa bibliotecas.

No se tarda mucho más en aprender C que en aprender ajedrez. Pero puede llevar más tiempo aprender a programar muy bien en C que aprender a jugar ajedrez muy bien.

Depende de cuál sea su experiencia de programación como “no principiante”.

C es dos idiomas: el lenguaje básico y sus tipos, Y el preprocesador C.

Además, el soporte que el lenguaje tiene para las cadenas de caracteres es bastante mínimo: la mayor parte del soporte para las cadenas se encuentra en la biblioteca estándar a la que se accede mediante el encabezado “” o ““.

La E / S no es parte del lenguaje, que (de nuevo) es parte de otra biblioteca estándar, accesible a través del encabezado ““.

La asignación y desasignación de memoria (u objeto) no es parte del lenguaje. De nuevo, parte de una biblioteca estándar.

El uso de estas bibliotecas estándar NO es obligatorio, y de hecho, no es posible en ciertos entornos de programación (como los núcleos O / S o los controladores de dispositivos).

Los punteros en C * se pueden * pensar en referencias de objetos similares, pero no necesariamente en la forma en que aparecen las referencias de objetos en otros idiomas.

La inicialización predeterminada de los valores de las variables en C varía según el alcance, y realmente no existe una variable no inicializada, SIEMPRE tienen algún valor, incluso si el valor no es determinista.

Sintácticamente, los punteros y las matrices se comportan de manera muy similar, pero no de forma idéntica.

Las matrices no se pueden cambiar dinámicamente, y no se verifican los límites.

Le llevará aproximadamente dos semanas aprender las cosas más importantes acerca de C.

Básicamente, comience con un buen libro o con esto: Índice de / ~ nsz / c / c11 / y abra el archivo n1570.pdf, que tiene más de 600 páginas. Si has memorizado eso (¡lo que lleva más de 2 semanas!) Entonces serás fluido en C. Sin embargo, después de dos semanas de lectura y experimentación, debes ser lo suficientemente bueno para convertirte en un Desarrollador Junior C.

Agregue cuatro semanas más para aprender C ++ y 2 semanas más para aprender C # después de C ++ y debería ser un Desarrollador Junior razonablemente bueno.
Para convertirte en más que un Junior, deberías comenzar a trabajar en algunos proyectos reales para ganarte las rayas.

Es mucho más fácil aprender C simple. No tienes que aprender sobre programación orientada a objetos. Pero al final es más difícil de dominar. Eso es porque tienes que construir todo a mano.

Así que la ruta más fácil es aprender los conceptos básicos de C y luego pasar a un lenguaje OO a medida que sus necesidades de programación se vuelvan más sofisticadas.

Depende. La razón es que el lenguaje de programación en sí no es el principal obstáculo. Es la lógica detrás de cómo escribir código de manera eficiente y bien mantenida. Para este fin, un buen programador puede necesitar más conocimientos sobre el sistema operativo, la estructura de datos y el algoritmo.

Lo veo como el ajedrez. Se tarda diez minutos en aprender las reglas, pero toda una vida para dominar.