Si este es el lugar equivocado para hacer esta pregunta, hágamelo saber.
Soy un programador de Python por ocupación. Me encantaría aprender C. De hecho, lo he intentado muchas veces, pero siempre me desanimo. En Python, escribes algunas líneas y el programa hace maravillas. En C, parece que no puedo hacer nada útil.
Parece muy complicado incluso conectarse a Internet.
¿Tiene alguna sugerencia sobre lo que puedo hacer para aprender C? ¿Hay buenos sitios web? ¿Algún proyecto genial?
Gracias
Respuestas:
No te desanimes.
Python es un lenguaje de programación de alto nivel. En comparación con C, puede producir maravillas en una pequeña cantidad de código. No empiece tratando de imitar los resultados de Python en C: se desanimará rápidamente. Programar en una C requiere un estilo diferente de pensamiento y comprensión porque al interactuar con la computadora a un nivel más íntimo. Aquí hay un buen punto de partida para aprender C:
Libros
Material en línea
fuente
Si quieres aprender C, no comiences por conectarte a Internet. Puedes hacerlo en cualquier otro idioma. Eso no es lo más importante en C.
En su lugar, echar un vistazo a los punteros, arrays, referencias, estructuras de este C Tutorial . Esto lo ayudará a comprender la administración de la memoria y muchas de las características que "lo acercan a la máquina".
Si puede aprender y comprender este material, busque expandirse en un posible proyecto. Estos conceptos son fundamentales para cualquier programación profesional C real.
Este tutorial de puntero también parece útil.
fuente
C_Tutorial
enlace está roto ...Que es muy complicado para conectarse a la Internet! Piénsalo:
Su computadora puede tener múltiples formas de conexión: WLAN, Bluetooth, Ethernet, etc. Cada una de ellas tiene su propia configuración, que debe configurar. Tienes suerte de que ya haya estándares y controladores para estos ... usarlos podría ser mucho más difícil de lo que ya es ahora.
Las direcciones IP pueden ser IPv4 o IPv6, y debe poder manejar ambas.
Puede o no haber servidores proxy configurados para el sistema.
Debe admitir FTP, HTTP u otro protocolo.
Es posible que deba usar el acceso telefónico, por lo que debe especificar una guía telefónica con contraseñas y números de teléfono, si aún no está conectado. Lo mismo ocurre con los nombres de usuario / contraseñas de WLAN.
Es posible que deba trabajar con cookies.
El sistema puede almacenar en caché algunos datos, entonces, ¿desea usar el caché o no?
Y la lista sigue y sigue.
Entonces, el hecho de que es fácil hacer esto con Python significa necesariamente que muchos de estos están ocultos para usted (o son difíciles de configurar), por lo que cambia la simplicidad por el poder. La biblioteca C es todo lo contrario: tiene toda la potencia que necesita (puede realizar fácilmente llamadas al sistema), pero no tiene ningún valor predeterminado (o, de hecho, ninguna función para conectarse a Internet).
En lugar de pensar que C es tedioso, piense que es poderoso. Pero, en cualquier caso, no intentes conectarte a Internet con él, es algo muy difícil de hacer. En su lugar, comenzar a aprender cómo utilizar la biblioteca para tareas más básicas (por ejemplo, archivo de E / S), aprender acerca de cómo apuntadores y arreglos realmente funcionan, y cuando se aprende a todos aquellos, a continuación, tratar de hacer frente a grandes proyectos. También apreciarás Python más de esa manera. :)
Editar :
Yo personalmente sugiero que, si tienes tiempo libre, aprendas C # primero. Tan pronto como se sienta cómodo con él, comience a aprender sobre la
unsafe
palabra clave y cómo usar los punteros y realizar la clasificación en C #. Todavía tendrá una biblioteca realmente grande para trabajar, como con Python, pero podrá hacer muchas cosas que puede hacer en C. Luego haga la transición a las API del sistema de llamadas manualmente (como InternetOpen ) y aprenda cómo conseguir que funcionen. Aún tendrá mucha flexibilidad, pero obtendrá una excelente introducción a los conceptos de nivel inferior. Después de que hayas hecho esto, entonces comience a aprender C, entonces encontrará que es pan comido y verá (C? entiéndelo?) las ventajas y desventajas de los lenguajes de alto y bajo nivel, y podrá para encontrar el que se adapte a tus necesidades.Dicho esto, creo que un curso intensivo en C podría ser útil como punto de partida para saltar al
marC.fuente
No lea el código del núcleo cuando esté aprendiendo C. Está lleno de trucos para exprimir hasta el último rendimiento. Algunos de ellos son muy no estándar. Te volverá loco.
En cambio, eche un vistazo a algunos proyectos pequeños y de alta calidad de código:
fuente
Un propósito de un lenguaje de alto nivel superior es ocultar cosas complicadas. Si desea aprender un idioma de "nivel inferior" y no quiere comenzar con cosas realmente complicadas (que antes le estaban ocultas); intente comenzar con algunos proyectos de aprendizaje más simples, ordenando una serie de números, o invirtiendo una cadena de caracteres, o algo así ...
Es más fácil subir una colina empinada dando pequeños pasos.
fuente
En cuanto a los proyectos geniales a tener en cuenta: los núcleos de Unix están escritos en C.
fuente
Aprenda primero la gramática C y luego úsela para escribir la estructura de datos y el algoritmo. Por supuesto, puedes leer el kernel de Linux como experto en lenguaje C.
fuente