¿Cuánto tiempo para aprender C?

Soy un progtwigdor de C # y se me venden los beneficios de aprender C. Quiero profundizar en mi conocimiento del sistema operativo y la CPU subyacentes, entender el dolor de la administración de memoria que la recolección de basura encapsula y, en general, mejorar mis progtwigs de alto nivel gracias a una apreciación de los problemas de bajo nivel que el comstackdor está tratando en mi nombre.

Mi pregunta es ¿cuánto tiempo puedo esperar para aprender el lenguaje C con el fin de obtener estos beneficios?

¿Pasan un par de fines de semana leyendo el libro de K&R de principio a fin, o necesito progtwigr un tiempo para cortar un código? ¿Necesito dedicar tiempo a profundizar en las bibliotecas, o es suficiente comprender los conceptos de primer orden en el idioma para mejorar mi código C #?

Para ser claro, no tengo la intención de escribir ningún progtwig significativo en C. Mi objective es más aprender del idioma que convertirse en un experto en el idioma.

C tomará una semana para aprender, y toda una vida para dominar.

Leer un libro de K&R y no escribir un código es como leer un libro sobre armas y nunca disparar. Sí, has leído en un libro que funciona de esta manera, pero nunca has encontrado los problemas típicos que surgen al hacer esto. Sin práctica, tal “conocimiento” vale muy poco.

Planee pasar 2-3 años escribiendo lentamente pequeños progtwigs para resolver diferentes tareas en C. Esto contará como experiencia real. C proporciona la gratificación retrasada por su esfuerzo.

No estoy seguro de cuánto tiempo se tarda en aprender un idioma; probablemente se trate de un individuo. Pero estoy bastante seguro de que no puedes aprender uno sin escribir y depurar el código en él.

Diez años

Si puede leer K&R y entenderlo todo, eso es bastante bueno, ya que K&R cubre casi todo el idioma.

Sin embargo, leerlo y entenderlo todo es muy diferente. Probablemente debería tomar algunos pases a través de K&R y hacer todos los ejercicios asociados para asegurarse de que realmente lo sepa.

Incluso después de leer todo eso, pasará más meses aprendiendo punteros de la manera más difícil. Espera muchas fallas seg. Sin embargo, en el lado positivo, ¡serás realmente bueno leyendo hexágonos!

Hay algunas advertencias que el lenguaje tiene que descubrirás también. Uno que solía darme problemas es que todos los punteros son del mismo tamaño (4 bytes en x86), independientemente de a qué apuntan. Un char * es del mismo tamaño que un void * y un int *.

Definitivamente necesitas escribir un código, no creo que puedas aprender ningún idioma sin hacer eso. K&R tiene muchos ejercicios que puedes practicar. Es difícil saber cuánto tiempo transcurrirá en términos de tiempo para obtener un buen conocimiento práctico; solía enseñar prácticamente todo el idioma en 4,5 días, pero eso es bastante intenso. Te sugiero alrededor de un mes, si estás haciendo una hora o más al día.

Edit: Debo admitir, me parece un poco deprimente que tanta gente piense que C es tan difícil. K&R tiene 272 páginas, en mi copia, y cubre básicamente todo lo que necesita saber, incluida la biblioteca estándar. ¿Hay algún libro en CUALQUIER otro lenguaje de progtwigción que cubra todo el shebang tan concisamente? No lo creo, y la razón no es que K&R esté comprimido de alguna manera (Brian Kernighan es EL mejor escritor técnico, IMHO) sino que el lenguaje es simple y fácil de describir.

Tomará mucho más tiempo si te sientas a hacer preguntas abstractas y no te sumerges y lo haces. ¿Tienes un plazo o algo así? ¿Cuánto tiempo me llevará aprender el piano? A quién le importa, solo quiero hacer un poco de ruido. Así es como los niños aprenden tan rápido. No les importa convertirse en expertos, ni siquiera en buenos. Sólo les gusta jugar.

En cualquier caso, si quieres aprender algunas cosas interesantes, prueba también un ensamblador. Mucha gente realmente lo odia, pero eso es solo porque no les gusta pasar incontables horas sin lograr mucho. Me gusta muy bien

Leí la portada del libro de K&R y no diría que tengo una gran comprensión de C. En algún momento, hacer los ejercicios en K&R sería enormemente beneficioso.

Estoy seguro de que las bibliotecas de C te harán más productivo en los progtwigs de escritura, pero si simplemente estás aprendiendo a C que te interesa, puedes implementar cualquier cosa que necesites. http://www.projecteuler.net es una buena fuente de problemas (aunque un poco matemáticos en general) para que puedas comenzar, si te apetece probar algo de encoding fuera de los ejercicios K ^ R.

En un par de fines de semana, obtendrás principalmente dos resultados:

  1. Hola Mundo
  2. muchas fallas de segmentación

C no es fácil, en particular si no estás acostumbrado a su concepto hardcore. Tendrá que invertir semanas, incluso meses en juguetear con él, para captar la esencia más oscura (pero todavía no demasiado).

40 días y 40 noches.

Si no puede hacer los días y las noches secuencialmente, entonces serán 42 fines de semana.

Pero en serio, sin poner ningún contexto en la rapidez con la que aprendes otros temas, nadie puede darte una respuesta real que sea relevante para ti. Podemos decir cuánto tiempo nos llevó aprenderlo a un nivel satisfactorio, pero eso no tiene ninguna correlación con el tiempo que debería llevarle aprenderlo.

Si dijiste que te tomó 6 meses para ser bueno en C #, entonces tal vez podamos decir que debería tomarte 6 meses * X (donde X todavía es una conjetura, pero una mejor estimación que ahora).

Sin embargo, todos podemos estar de acuerdo en que leer el libro no es suficiente. Por supuesto que tendrás que escribir código. Así es como aprendemos mejor cualquier cosa: léelo, escríbelo, enséñalo. Si realmente quieres aprender algo, enséñalo.

Para comprender el dolor de la administración de memoria, solo está escribiendo progtwigs de muestra con stacks, listas enlazadas, árboles binarios, etc. Verá en qué se está metiendo.

En la escuela me enseñaron C como lenguaje introductorio y cuando los punteros se introdujeron, un montón de personas abandonaron la clase porque, francamente, es un concepto difícil de entender.

Como muchas de las otras respuestas han indicado … Planifique no solo leer sino también practicar. No hay duda de que no has aprendido mucho de C # simplemente cometiendo errores al codificar y tener ‘¡ajá!’ momentos

OMI: 3 a 4 años para entender realmente la mayoría de los conceptos. Un libro lo ayudará a darse cuenta de cuáles son las capacidades del idioma.