2009-02-06 11 views
7

Mi idioma principal es PHP, pero he hecho algo de programación (no mucho) en otros idiomas.Aprendiendo C correctamente: sí o no?

He escrito 2 módulos para Apache en C. Los escribí en C porque esta era una de las cosas en las que el rendimiento sí importaba. (generando mapas proyectados del mundo sobre la marcha y salida a .png).

Estos módulos funcionan, y eso es lo que puedo garantizar la calidad del código. No me malinterpreten, hice todo lo posible para escribir el código correcto, pero estoy seguro de que tiene mucho margen de mejora.

Estoy jugando con la idea de cambiar los módulos actuales para enhebrar pero no tengo experiencia con el software de subprocesos y algo así como buscar errores todavía me lleva mucho tiempo.

mi pregunta es:
¿Debo primero aprender a programar de manera correcta en C (obtener una copia The C Programming Language) o me recomiendan otro enfoque.

nota:
He Actualmente no hay planes para el uso de C que otra de módulos de Apache

Respuesta

10

Si se toma en serio la programación, creo que aprender C es realmente importante. Es la base de muchos lenguajes y encontrarás muchos códigos fuente escritos en C. Sin embargo, podríamos decir lo mismo de Java, C++, etc.

En mi humilde opinión, creo que deberías continuar escribiendo tus módulos y aprende cosas nuevas cuando las necesites. Esa es la mejor manera de aprender cosas

-2

Si no vas a usar C para cualquier otra cosa, me gustaría recomendar a cambiar a Java, como su concurrencia es mucho más fácil (al menos en mi opinión).

También tiene una biblioteca estándar muy grande con la que es muy fácil trabajar y que probablemente acelerará considerablemente su desarrollo.

+0

La concurrencia es muy complicada, y los problemas no se resolverán yendo a un lenguaje que lo maneje mejor. Sugeriría que alguien con el nivel de experiencia del OP se mantenga alejado de él. –

2

Recomiendo mucho ese libro. Incluso si no se ve usando C en el futuro, nunca sabrá si es necesario y ese es un libro perfecto para obtener más experiencia/conocimiento con C.

Y como se mencionó anteriormente, C es la base de muchos otros lenguajes populares, por lo que incluso si no termina usando C más, puede terminar usando uno de sus sucesores.

4

Parece que ya te está yendo bastante bien. ¿Qué hay de abrir los módulos y pedir retroalimentación a la comunidad?

+0

¡Ahora eso suena aterrador! :) – Jacco

0

Yo diría que nunca está de más aprender algo correctamente. Y una sólida comprensión de C definitivamente mejorará su comprensión de la programación.

No importa si usará el idioma en el futuro, pero para entender lo que sucede debajo del capó, no tiene precio.

1

Incluso si no tiene planeado programar en C en el futuro, o incluso está seguro de que nunca tendrá que desarrollar en algunos lenguajes relacionados con c, recomendaría de todos modos el libro K & R por razones históricas: es una buena práctica para aprender de los maestros conocidos de su arte.

0

Yo diría que es importante para cada programador dominar los conceptos de bajo nivel que son importantes en C, como los indicadores y la gestión manual de la memoria. Esto le proporciona una gran comprensión de cómo funcionan realmente las cosas y es útil incluso cuando se programa en niveles superiores. Sin embargo, si no va a usar C regularmente, no veo ningún sentido para dominar realmente todo el lenguaje. Por ejemplo, no dedicaría demasiado tiempo a la biblioteca estándar ni a aprender a diseñar proyectos no triviales en C. Solo me atengo a los conceptos clave.

0

He progresado de BASIC a FORTRAN, luego a Java y actualmente principalmente uso combinaciones de PHP y Perl. Nunca usé realmente C, aparte de jugar con los módulos de Apache, pero cualquier idioma que aprenda, la mejor manera de aprender es hacerlo.

Utiliza un libro para presentarte el idioma, pero aprende prácticamente.

4

Solo aprenda todo lo que necesite.

No necesita dedicar tiempo a leer el lenguaje de programación C y aprender cada característica del idioma para que sea útil. Use The C Programming Language como una herramienta de búsqueda cuando la necesite. Si comienza a programar en c con más frecuencia, entonces invierta el tiempo en aprender el idioma más a fondo.

+0

Si bien el punto en negrita es importante, la lectura del lenguaje de programación C casi debe ser una lectura obligatoria para los programadores. El objetivo no es aprender C sino encontrar un libro bien escrito sobre programación en general. K & R es a lo que todos los libros de programación deberían aspirar. – jmucchiello

+1

Acabo de tropezar con esta publicación, y la parte en negrita me parece un mal consejo. Más bien debería ser "Aprende todo lo que puedas". Cuanto más se aprende, más fácil se vuelve aprender nuevas cosas, especialmente en el desarrollo de software. Ser perezoso sobre el aprendizaje no puede conducir a una mentalidad exitosa. – SirDarius

0

Definitivamente recomendaría obtener el lenguaje de programación C (K & R). Es una referencia muy concisa y útil para C. Si encuentra que aprender de K & R es un poco difícil, no dudaría en obtener un libro más amable sobre el idioma, pero K & R es el libro al que volverá. cuando hay algo de lo que no estás seguro

Además, vale la pena señalar que la programación con hilos abre un mundo completamente nuevo de problemas potenciales, por lo que definitivamente recomendaría obtener un libro para aprender a hacerlo correctamente también.

+0

alguna sugerencia para un buen libro sobre programación con hilos? (Tal vez esta debería ser una pregunta completamente nueva?) – Jacco

0

Lea el libro. Estaras contento de haberlo hecho. Te presentará un montón de cosas que de otra forma no habrías encontrado. Se le presentarán todas las características del idioma, en lugar de tener que tropezar con ellas cuando crea que las necesita.

1

creo que los verdaderos problemas que está enfrentando aquí son:

1) C apropiado para la tarea que está haciendo?
2) ¿debería aumentar su conocimiento del lenguaje C a medida que cambian los requisitos?

Para la pregunta 1, tal vez haya alternativas a C para su aplicación. Necesita generar imágenes .png, y necesita administrar el enhebrado: tal vez Java o Python son mejores alternativas a C (la salida de .png es unas pocas líneas en ambos idiomas, mientras que creo que necesita bibliotecas externas y tal en C. Lo mismo para enhebrar

Para la pregunta 2, si persiste en el uso de C, probablemente sea mejor estudiar el idioma más a fondo, si quiere evitar dificultades a medida que aumenta la complejidad (especialmente para un lenguaje de bajo nivel como C)

+0

La complejidad no está en la salida de .png. Las proyecciones cartográficas son realmente pesadas, por eso elijo el lenguaje de bajo nivel. – Jacco

3

La mejor manera de aprender un lenguaje de programación es usándolo, así que dar un paso adelante y escribir módulos de apache en C es un buen enfoque. Sin embargo, si desea profundizar más en ese idioma, debe hacer varias cosas:

  • utilizan el idioma.Ya lo hiciste :)
  • conozca el idioma. La "biblia" K & R es algo sobre lo que debes tener al menos un poco de conocimiento: no necesitas saber cada parte del libro, pero debes usarlo para tener al menos una idea sobre las características del lenguaje que no son se usa con demasiada frecuencia Será útil algún día.
  • colabora con otros. Involúcrese en un proyecto con otros para que otros lean su código y también lean su código. El código abierto suele ser una buena forma de hacerlo, aunque también hay otras opciones.

Hablando de mi "carrera" que también comenzó con PHP y terminó en los libros de lectura C. (que recomiendo encarecidamente "Experto de Programación C", de Peter van der Linden, que lamentablemente está fuera de impresión) dará usted tiene una comprensión más profunda de los lenguajes internos del lenguaje y, por lo tanto, lo convierte en un mejor programador. No conozco todas las páginas de K & R, pero nunca me arrepentí de usarlas y ponerme cómodo con ellas (creo que prefiero usarlas antes que leerlas, no es un libro de texto sino una referencia en mi opinión).

0

Tal vez soy un poco modernista, pero si va a aprender C correctamente no recomendaría comenzar con K & R. ¿Por qué estudiar un estándar anticuado? Tome un libro que le enseñe el estándar C99 y aprenda de eso. Dado que ya eres un poco familiar, tal vez C Primer Plus o algo similar.