Pregunta

Estoy interesado en aprender C. He leído K & amp; R , e incluso he realizado algunos trabajos simples de extensión C en R y Python. ¿Cuál es una idea de proyecto que valga la pena para hacer algo más sustancial con C? ¿Algún buen recurso en línea, similar a Sumérjase en Python ? En particular, los recursos se centraron en programadores que ya conocen lenguajes más nuevos que están tratando de aprender C (que mencionan cosas como '' Pedir una matriz por su longitud no tiene sentido en C, Pythonista perezoso '').

Mi fondo:

Matemáticas / estadísticas, programación diaria en Python, R, principalmente en torno al procesamiento de lenguaje natural, algoritmos y similares.

Otros consejos

Varios años atrás, un amigo mío me hizo la misma pregunta: "¿Cómo aprendo C?" Le dije que escribiera un controlador de dispositivo.

Imagina mi sorpresa cuando realmente lo hizo.

Algo fuera de tema, pero como mencionas que tu formación es en Matemáticas y Estadísticas, deberías probar suerte en el Proyecto Euler. Hay más de 200 problemas relacionados con matemáticas / estadísticas disponibles para resolver. Además, una vez que llegue a una solución, puede ver el foro del problema para ver cómo otros resolvieron la misma solución. Muy útil para ver cómo otros resuelven el problema ... ¡y divertido para arrancar!

www.projecteuler.net

Tengo una experiencia similar a la tuya. Utilizo Python para hacer muchos análisis matemáticos y de datos para mi investigación de doctorado y también para programación web. La diferencia es que aprendí C primero, allá por los años 90.

Si puedes escribir extensiones C para Python, entonces diría que tienes un buen manejo de para qué sirve C. En mi opinión, C hoy es el más adecuado para dos cosas:

  • Escribir software de bajo nivel que interactúa con el hardware.
  • Escribir código que haga cosas repetitivas, tediosas e intensivas en CPU (matemática, análisis XML, etc.) ... tal vez como una extensión para un lenguaje de nivel superior.

Por supuesto, muchas aplicaciones de nivel superior también están escritas en C, especialmente en Linux que he encontrado, pero en gran parte no están escritas realmente en los "bare-bones". C de K & amp; R o la biblioteca estándar. Por el contrario, usan marcos como Glib, o wxWindows, o Apache Portable Runtime, u otros, que utilizan algún tipo de estructura o convenciones orientadas a objetos, y a menudo abstraen algunos de los detalles básicos de administración de memoria de C.

Así que creo que hacer que sus habilidades en C sean útiles en el entorno de lenguaje de programación actual se trata principalmente de hacer un trabajo de bajo nivel o familiarizarse con uno de estos marcos de alto nivel. Personalmente, me gustan mucho las bibliotecas Glib y GTK, ya que usan un modelo orientado a objetos muy dinámico (muy parecido a Python) sin impedir que uses las funciones de bajo nivel de C.

Podría escribir un intérprete para un lenguaje simple. Usa flex / bison. Hazlo multiproceso, etc. Esto es divertido y tiende a hacer mucho ejercicio con los punteros. Escribí algo así para un proyecto escolar : un lenguaje simple basado en la pila con dos basuras diferentes coleccionistas, TwoSpace y una versión concurrente. Eso fue divertido. Y factible como el primer programa c más grande que '' hola, mundo ''

echa un vistazo a Learn C de la manera difícil, es un libro electrónico gratuito que te lleva a través de muchos ejemplos de código C y ejercicios para que puedas aprender.

http://c.learncodethehardway.org/

Encuentra o define un problema en tu trabajo diario y esfuérzate a resolverlo usando C en lugar de Python. Eso lo obligará a aprender el idioma mientras mantiene el problema relevante para lo que normalmente hace.

Implemente una máquina virtual (la JVM, por ejemplo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top