2009-12-11 17 views
5

Estoy buscando algunos punteros, me señaló este sitio.Programación de red: Python contra C para un principiante completo

Mi principal interés es la programación en red. He hecho bastante lectura y experimentación, y estoy familiarizado con los mecanismos de la mayoría de los protocolos. Ahora quiero comenzar a escribir código. Leí material introductorio sobre pitón y lo entendí bien también. Acababa de empezar a jugar con los módulos de python, cuando conocí a alguien (con una gran reputación) en la reunión local que me dijo que siempre podría aprender Python fácilmente, pero C era el idioma que debía conocer, especialmente teniendo en cuenta mi interés. en la programación de red. Investigué un poco y pensé que quizás el tipo tenía razón. Así que he estado con un k & r durante 4 semanas. No me intimidó, pero estoy progresando muy lentamente y tal vez por eso también esté flojo. Estoy publicando esto porque estoy en la etapa en la que incluso me preocupa. Siempre estoy pensando que en Python podría estar construyendo cosas ahora mismo. Sé que Python no me enseñará cosas de bajo nivel como administración de memoria, etc., pero mi progreso es extremadamente lento en C.

Pregunta: ¿Debo continuar batallando con C como estoy ahora y escribir algún código de trabajo en o cambiar a Python donde estaré un poco más fácil? ¿Un lenguaje de alto nivel me arruinará demasiado para volver a C más tarde?

+0

Vaya http://golang.org podría ser una mejor alternativa que C para la programación de red. – jfs

+2

Si está buscando 'punteros', C es la manera ;-) Más en serio, Python es probablemente un enfoque más apropiado en esta situación ... – mjv

+0

inserte el enlace al cómic xkcd, "punteros", aquí. Pero sí. Posiblemente solo necesites saber c si quieres aprender a trabajar en red en el "¿qué acaba de pasar con este bit individual?" nivel. Que probablemente no, al menos ahora mismo. – neminem

Respuesta

14

Simplemente use Python. Tendrás acceso a las mismas API de socket de bajo nivel que en C, sin tener que aprender sobre indirección y administración de memoria al mismo tiempo.

Más tarde, si encuentra que Python es demasiado lento para sus propósitos, puede reescribir algunas partes en C. Pero no lo haga para empezar.

1

Como programador de Python, te daría el consejo contrario. Aprende python primero. Al menos hasta que aprenda las limitaciones y posibilidades que tiene en comparación con lo que puede hacer en C. Luego use C para resolver esos problemas que no puede solucionar en Python. :)

5

Dependiendo de qué nivel (es) de la pila de red que desea trabajar, C puede ser indispensable, útil o poco relevante. Pero si tratar de abordar C primero está agotando su motivación, regrese a Python y obtenga un cierto éxito y, por lo tanto, un incentivo: puede volver a C más tarde. Aprender un idioma más fácil primero, uno más difícil más adelante, ¡es una progresión perfectamente natural! MIT, por ejemplo, usa Python para algunos cursos de "programación 101", y sin embargo, definitivamente, eso no aleja a los estudiantes de idiomas más duros como C (o incluso C++, que es aún más difícil) en cursos posteriores.

7

depende de los propósitos de programación de la red que tenga. ¿Desea tener un lenguaje de alto nivel muy estable, seguro pero también más lento o desea trabajar con un lenguaje agotador (mi opinión) pero rápido de bajo nivel?

Cuando no depende de la velocidad, tomaría python. Puedes hacer muchas cosas con eso. Y todo lo que necesites ya está allí. Python se basa en C, por lo que también tiene acceso a la misma API.

En Python es fácil pero también potente.Dado que usted es nuevo, tengo algunos enlaces, que puede ayudarle a:

Hay un montón de libros:

Y sólo por diversión, algunos cómics:

espero que esto es servicial para ti.

5

Hace veinte años, incluso diez, no podrías vivir sin él.

Ahora muchos lo hacen.

Es posible (probable, en realidad) que más de la mitad de los programadores en el mundo no conozcan C. Es completamente innecesario para el trabajo web y para la mayoría del trabajo de la aplicación. Estoy siendo amable con esto: si realmente incluyeras web, hobbies, consultores en el extranjero y similares, el porcentaje que ha usado C es probablemente bastante bajo en este momento.

Incrustado a menudo usa C, pero he trabajado en 2 plataformas integradas (un analizador de forma de onda y un decodificador de cable) donde no he hecho más que trabajar con Java.

Honestamente una comprensión básica de C es agradable para la escritura de los conductores y la comprensión de los punteros, pero en estos días, usted puede obtener fácilmente a través de una carrera entera sin necesitar C. I personalmente saltaría por completo en C++, aunque se utiliza un poco , No veo grandes ventajas para aprenderlo ahora.

1

Recomendaría Python como la mejor opción para cualquier principiante en la programación. Y creo que para la creación de redes, Python funcionará muy bien.

En la red, tiene que esperar bastante tiempo (en términos informáticos) para que los mensajes se envíen y reciban. Incluso si su idioma es mucho más lento que C, es posible que no note ninguna diferencia. Y las agallas de bajo nivel de las bibliotecas de red de Python están probablemente escritas en C de todos modos; Python no es muy lento cuando lo usa como una forma de invocar el código C.

Además, como principiante, se sorprenderá de la cantidad de trabajo en C para manejar todas las posibles condiciones de error. En Python, puede usar el manejo de excepciones para manejar fácilmente los errores. Realmente es mejor

Y, por último, en el caso improbable de que su aplicación funcione bien pero es demasiado lenta en Python, puede escribir fácilmente un "módulo" C que reemplazará la parte de rendimiento crítico de su aplicación Python.Obtenga un prototipo funcional, descubra la pieza que debe ser rápida y simplemente reemplace esa pieza con C. Mucho menos trabajo que haciendo todo en C.

Por el momento escribo C como mi trabajo diario y escribe Python por diversión Puedo hacer mucho en algunas líneas de Python. Te resultará más fácil aprender con Python, harás más cosas, tendrás menos errores y disfrutarás más.

Sugiero comenzar con el libro Learning Python.

¡Buena suerte y diviértete!

1

Recomendaría comenzar con Python, a menos que realmente necesite la velocidad. A menudo se dice que los lenguajes de programación son solo herramientas en su caja de herramientas, y que algunos serán capaces de realizar una determinada tarea mejor que otros. Si no necesita la velocidad, Python logrará la tarea que busca lograr con menos código y será más fácil de aprender.

Soy totalmente autodidacta y pasé de Apple II BASIC a ensamblador a lenguajes de scripting (Perl, PHP, Ruby) y ahora estoy usando principalmente C. C es un lenguaje relativamente pequeño, pero creo que si hubiera empezado con C, probablemente habría perdido mi motivación. Comience con Python: aprenderá la esencia de la programación, luego, si tiene la necesidad o desea aprender C más tarde, será más fácil retomarlo.

2

Recomendaría usar Python. Debido a que es un lenguaje de nivel superior a C, puede concentrarse más en el "qué" que en el "cómo". Esto significa que puede evitar el nivel de detalle requerido por C para lograr lo que necesita hacer en este momento.

Esto no quiere decir que nunca se requiera un bajo nivel de detalle. Ciertamente lo es, pero en este momento te recomendaría que lo ignores y lo retires en el futuro, si es necesario.

0

aprende lisp, su rendimiento es casi el de C y es fácil de aprender y puedes hacer más en lisp que en python y no es difícil de aprender. También puede hacer programación de lenguaje natural para resolver problemas. ve lisp.

Cuestiones relacionadas