2008-09-23 21 views
16

He estado aprendiendo C, y estoy buscando un proyecto de código abierto (preferiblemente muy) simple para entrar. Lo más probable es que implique más jugar y aprender de mi parte que la contribución real, pero parece una excelente forma de ganar algo de experiencia y ver cómo se usa realmente C. ¿Algunas ideas?Proyecto de código abierto simple C

Respuesta

27

Hay un número de proyectos de código abierto que están codificados en C. Si solo está buscando modificar, en lugar de contribuir, simplemente elija una herramienta que use regularmente (para que esté familiarizado con lo que hace y donde podría ser alterado/mejorado).

Si está buscando sugerencias reales, el busca "menos" es un buen comienzo. Está escrito de una manera limpia, es corta, y it does a surprising amount

¡Por supuesto esto depende principalmente de lo que usted consideraría tan simple! He pirateado todo con the mutt mail client, que está escrito de una manera ordenada, lo que hace que sea fácil de ampliar, pero ni siquiera pretendo entender cómo funciona.

No menciona su entorno, por lo que soy libre de asumir GNU/Linux. Asumiré más adelante que está ejecutando Debian, y si es así puede descargar la fuente a las aplicaciones muy fácilmente. Simplemente ejecute esto:

apt-get source less 
+5

Me acabo de enterar que puede obtener la Fuente de esa manera, es increíble. – dysoco

7

Suena extraño, pero creo que la mejor manera de aprender C es escribir extensiones C para Python. Hay muchas extensiones simples que de alguna manera usan la API de Python C y es divertido trabajar con eso. (Probablemente es menos interesante si usted no sabe Python ^^)

Eso es básicamente la forma en que aprendí C. Para pequeños módulos sólo se ven en la Cheeseshop^Wpypi, hay muchas bibliotecas que están escritas en C

De lo contrario, echa un vistazo a algunas aplicaciones simples de GUI de GNOME. Muchos de ellos están escritos en C.

+1

Dos pulgares arriba. Iba a sugerir lo mismo, si el OP conoce a Python. La API de Python está extremadamente bien diseñada. Le enseñará sobre la gestión de la memoria y obtendrá algo útil para jugar de forma interactiva. Una útil extensión de Python que he escrito: pypi.python.org/pypi/py_sg –

2

Es posible que los proyectos que sean lo suficientemente interesantes como para tener una comunidad de código abierto no trivial implican un poco de complejidad. Naturaleza de la bestia: si realmente no es compleja (o no es realmente compleja), ya está bien resuelta y es estándar o no es lo suficientemente interesante como para atraer mucha atención.

La llegada de nuevos dominios de problemas romper esta condición, por supuesto, por lo que sólo necesita para construir algo tan inteligente que es obvio después del hecho ...

Eso decir, considere dillo, que a pesar de la primera página está trabajando silenciosamente en la versión 2 (basado en fltk).

3

Como mencionó Steve, una utilidad estándar de UNIX como "menos" es probablemente una gran idea.

También pensaba que tal vez un editor de texto liviano podría ser genial para tratar de hackear. "Joe", por ejemplo, está escrito en C y tiene licencia GPL. En la misma línea, si está en Windows, el editor "WinVi" tiene licencia GPL y está escrito en C.

¿O tal vez un juego simple basado en consola de algún tipo? ¿Preferiblemente textual, como un juego de aventura/RP?

3

Si quieres ver un buen código, echa un vistazo a la fuente sqlite.
Independientemente de si puede o no contribuir o jugar con él, no lo sé, pero vale la pena al menos un vistazo para ver el estilo C bueno y limpio.

sqlite

6

¿Qué idiomas que ya sabes? ¿Conoces un lenguaje dinámico como Perl/Python/Ruby/Groovy?

Lo que C es mejor en (en mi opinión) es una programación de bajo nivel que implica acceso a hardware, matemática robusta y algoritmos altamente eficientes.

Obtendrá más satisfacción si no intenta usar C para hacer las mismas cosas que en un lenguaje dinámico, pero intente utilizarlo para lo que es bueno. ¡Intenta piratear el hardware! ¿Tiene una cámara digital, un enrutador, un teléfono celular u otro dispositivo con firmware o utilidades de código abierto? ¡Intenta piratear esos! ¡Intenta escribir un código para mirar archivos binarios! Si le interesan las matemáticas y la ciencia, busque un paquete numérico relacionado con su ciencia favorita y busque en el código.

Por último, intente echarle un vistazo al kernel de Linux. Claro, es una gran base de código , millones de líneas de código, pero también es extremadamente modular y bien documentado. Hay al menos dos libros muy buenos sobre el código: Understanding the Linux Kernel y Linux Device Drivers (este último está disponible gratuitamente en línea).

Cuestiones relacionadas