¿Es una buena idea para mí aprender Python antes que C o algún otro lenguaje compilador?[cerrado]

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

Pregunta

En este momento estoy realizando el curso de introducción a la informática del MIT a través de OpenCourseWare.Como parte de este curso, estoy aprendiendo el lenguaje Python.

He leído muchas cosas sobre los beneficios de aprender C.Antes de profundizar más en Python, me pregunto si aprender Python primero me obstaculizará o me ayudará.

¿Crees que desarrollaré malos hábitos o algo así con Python?

EDITAR:Se cambió a Community Wiki debido a la naturaleza subjetiva de la pregunta.

Agradezco todas las excelentes respuestas a mi primera pregunta SO.De hecho, estoy bastante impresionado por la sinceridad de las respuestas/comentarios.¡Muchas gracias a todos!

¿Fue útil?

Solución

Hablando desde los 37 años de actuación en Dios sabe cuántos idiomas, que se puede decir que el trabajo en Python le permite centrarse casi exclusivamente en conseguir el algoritmo correcto y no preocuparse por Detalles . He escrito probablemente 300-400,000 líneas de C en mi vida y la única manera era soportable era básicamente para crear mi propio entorno OO.

C tiene sus usos, pero en estos días tienden a ser ya sea a: a) dejar que se acerque a una pieza de hardware, o b) manipular un lazo muy estrecho. Si encuentra una necesidad de ella, vistazo a una herramienta como el TRAGO o SIP para integrar su C en su Python.

Otros consejos

Por razones históricas, C fue de los primeros lenguajes de muchos programadores, en particular, éstos de la generación anterior, aprendido. Sin embargo, muchos de ellos (incluyendo en esta generación de más edad), aprendió por uno o varios otros idiomas, por lo general los que tienen un mayor nivel de abstracción (Básico, LISP, Pascal, por nombrar unos pocos) antes de aprender C.

Yo era de este último tipo (es decir, C no era mi lengua "nativa", si bien, llegué a dominar el montaje muy temprano), y estoy totalmente convencido de los muchos beneficios de la asociada con un serio " Tour" en el lenguaje C , a pesar de que, como una cuestión de practicidad, muchos de nosotros nunca se programa mucho de cualquier consecuencia en este idioma. Dicho esto, no veo ninguna razón de peso para que sea su C primero lengua, o cualquier indicio de que el dominio de alguna manera Python (o Prolog o ...) ¿De alguna manera las capacidades de programación de uno deterioran para la próxima década ...

Así que mi consejo: disfrutar de Python, lo toma en
! Cuando se obtiene una idea de programación, lo hacen un punto para aprender C en algún momento. Es particularmente relevante en un plan de estudios que incluye la escritura compilador y / o sistemas operativos, y, como se ha dicho, relevante en muchas otras maneras. Verá que aparte de la posible "superficie" trampas / sintácticos (esto sucede todo el tiempo, al menos para mí, al aprender un nuevo idioma o volver a un viejo lenguaje de la mina de conmutación, después de haber sido expuesto a algo más de una tiempo), que no debería tener problemas con C, al menos no hay problemas asociados con el aprendizaje de otros idiomas.

No soy un experto programador, pero desde mi comprensión y el uso es que Python es un lenguaje muy sencillo y potente que le permite hacer casi cualquier cosa que necesite.

Con C se obtiene un mayor control sobre lo que está ocurriendo y que también significa que tiene que escribir todos esos detalles a sí mismo, mientras que en Python que alguien ha hecho por usted y usted tiene opciones que el trabajo para casi todos los casos diferentes.

Debido C más baja de nivel (más cerca de cómo la máquina funciona en realidad) que se compila a código de máquina más de cerca a lo que quieren los CPU, mientras que Python, siendo mayor nivel de idioma, no va a llegar a ser tan rápido.

Creo que los dolores de transición de Python a C serán más como "¿Por qué tengo que hacer todo esto? En pitón que se llevaría a cabo en una sola línea!"

Sólo puede ofrecer que el aprendizaje de C le hará apreciar Python y otros lenguajes de tipado dinámico más. A menudo digo lo mismo a cualquier persona que es competente con PHP. La creación de ambos rascó unos picores graves. Y no, no es como un "cuando tenía tu edad que caminaba a 300 millas en la nieve a la escuela" tipo de cosas.

La posibilidad de asignar un valor a una variable y tienen la variable simplemente 'ajustarse' para almacenar lo que le da de comer es un increíble logro para cualquiera que haya pasado un tiempo considerable trabajando con C en múltiples arquitecturas.

Además, escribiendo un servicio multihilo de algún tipo en C le hará realmente apreciar lo portátil de Python es en realidad.

Hay otras buenas razones, el poder, conseguir 'más cerca al metal', gestión de memoria comprensión y el aprendizaje sobre los compiladores y optimización. Sin embargo, sospecho, lo primero que llegará a ti es lo cómodo lenguajes de alto nivel son en realidad.

exención de responsabilidad:. Principalmente utilizo C

Usted tiene que empezar en alguna parte, y Python es una opción buena para un programador de partida: No es necesario utilizar un compilador (-> fácil de usar), tiene una rica biblioteca (-> se puede lograr mucho), y está orientado a objetos (corriente principal en estos días). Así frustración evitables se minimiza en este sentido. Pero siempre tener en cuenta que hay un montón de otros idiomas por ahí, y que se debe aprender de ellos, también. Si desea convertirse en programador y ganar dinero, es necesario (al menos) recoger C ++, Java o C # después de Python.

Buena pregunta! Recuerde siempre que sus habilidades de programación nunca deben ser independientes del idioma. Aunque, C es un lenguaje ideal para aprender lo que se refiere a la Informática. Usted tiene 4 niveles cuando se trata de la programación y, normalmente, todas las universidades Undergrad supuesto ofrecer estos temas:

  1. programación de procedimiento
  2. Programación Orientada a Objetos
  3. Programación con Estructuras de datos
  4. Design Patterns **

Hay que ir paso a step.Do maestro de todos estos 4 niveles. Luego, al final del día usted tiene que decidir lo que realmente quiere hacer y luego podrás tener suficiente conocimiento lo que cuenta en el idioma que usted tiene que utilizar para qué problema. C es el lenguaje de muchos sistemas operativos, incluyendo UNIX, Linux y Windows. potencia de los punteros de C no puede ser igualada por ningún idioma hasta ahora. Python es un lenguaje bueno y tiene sus propios beneficios. Un consejo importante que puedo dar en esta etapa es la de la "sintaxis". Inicialmente usted debe dominar el lenguaje C y ganar un poco de conocimiento práctico de Python como well.Once que se sienta cómodo con C, entonces será bastante más fácil para usted a programar en C ++, C #, Java y PHP. Pero si se inicia desde Python inmediatamente a continuación, es posible que no se sienten cómodos con languages.Same basado c_syntax va para principiantes que tienen pasión por la programación y parten de Visual Basic. También hay que tener un ojo en las tendencias de la industria y la evolución de la programación. Pero seguir con lo que los cursos de pregrado que están enseñando.

Soy un estudiante de licenciatura de CS, así y trabajar como programador al mismo tiempo, así que sé lo que está pasando. Espero que mi consejo te ayudará.

El problema principal con el aprendizaje de Python primera es que cada otro idioma que tratar de aprender después de que sufrirá probablemente de la inevitable comparación. Sin embargo, hay ocasiones en las que debe utilizar una herramienta diferente porque no tiene otra opción. Ejemplos de estas situaciones pueden incluir:

  • ejecución muy rápida (TRAGO, Cython, psyco, PyPy, sin carga de tragar, etc)
  • plataformas en las que no hay tiempo de ejecución pitón (pero éstas son raras)
  • demanda de alta concurrencia multi-núcleo (diferente pitón VM pueden por lo general hacer frente a esto)

Es probablemente el mejor para acercarse a cada herramienta desde una posición de necesidad en lugar de uno de prudencia; en otras palabras, aprender C sólo cuando es necesario hacerlo debido a los requisitos específicos de situación.

Python tiene una inmediatez que hace que sea más fácil de aprender. Python para la facilidad, C (y lenguas relacionadas) para la potencia.

Como se afirma la pregunta: No. No se aprende C en primer lugar. Aprender Python.

Con el tiempo, tendrá que aprender C cuando se necesita para piratear sistemas embebidos, bootsequences, código del núcleo de Linux, etc Usted tendrá que aprender acerca de los punteros y que su sistema crasch y quemar si no los recibe bien la primera hora. Tendrá que volver memoria usada por sí mismo. Esto suele ser una pesadilla, y realmente no contribuyen a la alegría de programación ya que estas cosas en el camino y te hace pasar un tiempo sin fin en el depurador.

Con el tiempo en sistemas embebidos usted aprenderá algunas de lenguaje ensamblador, y luego se dará cuenta de que C es sólo una envoltura alrededor de la mayor parte de montaje / posibilidades de CPU en la arquitectura de chip. Punteros es un modo de direccionamiento que se apoya en el fondo por los transistores.

Todas las lenguas modernas que hace un mejor y más rápido programador, y han acabado con estas cosas. En realidad, no aprender a utilizar una máquina de escribir en estos días, a menos que su ir a un lugar sin electricidad, ¿verdad? C es simplemente para aplicaciones muy especiales.

No creo que va a ser de alguna manera fundamentalmente defectuoso aprendiendo Python primero. Hay una gran cantidad de beneficios para el aprendizaje de múltiples lenguajes de programación Python y en sí es una forma interesante de explorar eso. Por ejemplo, si usted tiene algunos problemas de rendimiento con Python se puede explorar a escribir algunas partes de su código en C (o pyrex / Cython o Fortran, etc ...) y luego empaquetarlo y lo que es utilizable en su código Python.

En lo personal, me gusta escribir mucho código con la mano cuando estoy aprendiendo cosas. Creo que es una práctica buena y algoritmos de escritura (en papel) en Python es un montón de veces más convenientes de escribirlas en C o C ++ (no siempre). Esto es más o menos por las razones que Pedro estaba diciendo, hay menos esfuerzo que se gasta en los detalles y por lo que a continuación, puede pasar que en otras cosas conceptuales.

Estoy siendo en gran medida un aficionado, pero una cosa que yo vengo de abordar es que un lenguaje de programación es una herramienta, pero a menudo es una herramienta única. Hay habilidades de programación que se pretenda una interpretación de un idioma a otro y estos son grandes. Pero ser capaz de 'grok' una lengua es también muy importante, en un sentido práctico. Por esta razón, siento que cualquier idioma que decide aprender primero no importa tanto porque es importante para desarrollar la habilidad de seguir adelante y aprender a expresar efectivamente a sí mismo en otro idioma de todos modos.

En el mundo en este momento hay un cierto grado de pitón "fanboysm". Más y más programadores (algunos de ellos muy respetable) creen que el pitón es la respuesta a todas sus reclamaciones. Después de ver lo "cool" es pitón, que comienzan a evangelizar a la lengua, a un grado psicótico, negar la verdad obvia: Pitón no es para todo / todo el mundo

.

Si va a seguir el camino de pitón es probable que desarrollar un reflejo adicional: "Echemos un vistazo a las bibliotecas para ver si todavía no lo ha hecho", y después de un tiempo, cuando llegue el momento, y usted tiene que aprender C, que va a decir con desesperación: "no puedo creer que tenga que escribir mi propia dict el uso de algunos punteros void * para la celebración de mis datos ¿Qué pasa con este lenguaje C de todos modos!?!"

Después de haber sido enseñado C / C ++ como mi primer lenguaje de programación en el año 1996 a través de Borland TurboC ++ 1.0 (pantalla azul y el texto amarillo) Puedo recomendar seriamente aprender algo (en este caso de Python) que no sea C. Dicho C / C ++ ayuda voluntad si alguna vez quiere saber más acerca de la interacción de hardware (desarrollo embebido, la escritura conductor, etc.)

Según los Hanselminutes del podcast el compilador VB.NET está escrito en C por lo que todavía tiene sus usos.

La mayoría de los conceptos de programación son independientes del lenguaje; usted está mucho mejor servido por comenzar con un lenguaje que es fácil de aprender y aplicar para que pueda centrarse en los fundamentos. Que el lenguaje no sería C

C hace un horribles enseñanza de idiomas; nunca fue pensado para ser utilizado como tal. Fue diseñado para los programadores experimentados que querían más flexibilidad y control que otros lenguajes de la época (principios de los 70'), siempre. Se pasa más tiempo en aprender acerca de las peculiaridades de C que usted acerca de la programación real.

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