Newbie enseñando a sí mismo python, ¿qué más debería estar aprendiendo? [cerrado]

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Soy un novato en la programación. Tuve 1 semestre de informática (usamos java). Obtuve una A en el curso y pude hacer todo lo asignado, pero no estoy seguro de haberlo entendido bien. Ignoré el texto y aprendí mirando programas de ejemplo y luego probando y error. Estaba por delante de la clase, excepto por dos tipos que llegaron con un lenguaje Java u otro OOP.

Me gustaría aprender Python. También voy a construir una segunda PC con partes adicionales que tengo y usar Linux. Básicamente, quiero mejorar mi conocimiento de las computadoras. Esa es mi motivación.

Ahora, en el aprendizaje de python, ¿hay algún buen libro de teoría de la programación que sea útil? ¿O debería leer más sobre cómo funcionan las computadoras en los niveles más bajos? No creo que sé lo suficiente para hacer la pregunta que quiero.

Supongo que para hacerlo más simple, me pregunto qué debo saber para aprovechar al máximo el aprendizaje de python. Esto no es para una carrera. Esto es por un deseo de saber. Ya no soy un especialista en informática (tampoco tendría ninguna aplicación directa para mi carrera profesional prevista).

No busco aprender en " 30 días " o " 1 semana " o lo que sea. Por lo tanto, a partir de un nivel muy básico está bien para mí.

Gracias de antemano. Hice una búsqueda y no encontré lo que estaba buscando.

ACTUALIZACIÓN: Gracias por todos los buenos consejos. Encontré este sitio en el trabajo y no lo pude encontrar en la computadora de mi casa, por lo que ahora estoy empezando a leer.

¿Fue útil?

Solución

Mi recomendación siempre es comenzar con un alto nivel de abstracción. No necesitas saber cómo funcionan las puertas lógicas y cómo puedes usarlas para construir una CPU, son cosas geniales, pero son cosas geniales que hacen que un lote tenga más sentido una vez que lo has hecho. en los niveles superiores Python es, por lo tanto, una excelente opción como ayuda para el aprendizaje.

Cómo pensar como un científico informático: Aprender con Python está disponible en Internet y es una excelente introducción a los conceptos de alto nivel que hacen que las computadoras funcionen. E incluso es específico de Python.

Si desea que su cerebro se vuelva del revés, SICP hará un buen trabajo. Sin embargo, no lo recomiendo como primer texto; va pesado.

Ambos de estos libros son de alto nivel. No le enseñarán nada sobre los detalles de bajo nivel, como las estructuras de memoria o lo que realmente hace una CPU, pero eso es algo que reservaría para más tarde de todos modos.

D'A

Otros consejos

Específicamente para la parte de Python de tu pregunta, puedo recomendarte http://www.diveintopython3.net/ por Mark Pilgrim. Eso es gratis y bastante bien estructurado.

Python es una buena opción, ¡te divertirás!

http://www.pythonchallenge.com/

Creo que este Reto es perfecto para ponerse en contacto con las principales fortalezas de Python y hay un buen foro con muchos Temas de Python interesantes para cada Nivel.

Mucho de esto depende de cuál sea su objetivo general para aprender Python. ¿Lo está viendo como aprender un segundo idioma o comprender mejor las computadoras y cómo usar un lenguaje de programación de manera efectiva?

Por lo que parece que quiere obtener una mejor comprensión de las computadoras y ser un mejor programador. Aprender un nuevo idioma como Python probablemente no te ayude a este respecto. Sigo recomendando aprender Python si está interesado, pero una vez que haya aprendido un lenguaje de programación, gran parte del aprendizaje de un nuevo lenguaje se está familiarizando con la sintaxis y los tipos de datos (generalmente).

Usted mencionó que no estaba seguro de entender el material de la clase que tomó. Si sientes que no entiendes conceptos fundamentales (como bucles, clases, etc.), aprender Python te ayudará a entender la programación, ya que la mayoría de los libros / guías revisan estos conceptos ( Learning Python, 3rd Edition debería ayudar con esto). Si comprende estos conceptos, pero no está seguro de cómo aplicarlos, entonces mi recomendación sería aprender acerca de las estructuras de datos y los algoritmos comunes (por ejemplo, clasificación, búsqueda, etc.).

Hablando por experiencia personal, no sabía cómo aplicar lo que aprendí de la clase de programación introductoria a los proyectos de programación personal. Aprender acerca de las estructuras de datos de una clase me ayudó a consolidar los conceptos que aprendí anteriormente al proporcionar algoritmos / estructuras de datos que se basan en este conocimiento anterior. Esta clase también me permitió pensar de manera diferente sobre los problemas en términos del uso de estas estructuras de datos.

Para obtener información sobre los diferentes tipos de estructuras de datos, consulte: http://en.wikipedia.org/wiki/List_of_data_structures . Normalmente, cada estructura de datos es útil para un propósito específico (por ejemplo, los árboles de búsqueda binarios son buenos para buscar información clasificada). Desafortunadamente, no tengo recomendaciones de libros (nuestra clase no usó un libro). Googlear " Estructuras de datos " Debería ser un buen punto de partida.

Las estructuras de datos también me hicieron pensar acerca de cuán eficiente es una implementación. La " complejidad " de un algoritmo determina cuánto tiempo tarda en ejecutarse una determinada pieza de código. Esto facilita comparar otras implementaciones y determinar cuál es mejor.

También me gustaría comentar que cuando se trata de aprender conceptos informáticos, la mejor manera de aprender es hacerlo. Un libro / clase solo puede explicar mucho, y el resto lo tienes que aprender por tu cuenta. Cada persona aprende de manera diferente, y la programación es una forma de tomar el material sobre el que lees y de pensar de una manera que tú entiendas mejor.

Espero haber respondido a tu pregunta. En este punto, realmente no necesita preocuparse por el hardware subyacente. Esto es útil para saber si planea hacer esto como una carrera (que no lo es) o si desea realizar optimizaciones específicas para el hardware en el que se está ejecutando (en cuyo caso, no querría usar Python) . Python es una buena opción para aprender acerca de las estructuras de datos, ya que implementa muchos de ellos para ti, pero es importante saber para qué se usan.

Si todavía estás en la escuela, toma una clase de estructuras de datos y mira lo que piensas. Si te gusta, te aconsejaría que reconsideres el papel de la programación / CS en tu carrera. No tienes que especializarte en ello, pero considera una posición menor o al menos una posición que hace uso de estas habilidades que estás aprendiendo. Digo esto porque, a pesar de que no sea tu especialidad, estás interesado en comprender cómo funciona una computadora y tomar iniciativas como aprender Python, crear tu propia computadora e instalar Linux.

Si tiene más preguntas, no dude en preguntar. Buena suerte!

Python es un lenguaje de alto nivel, por lo que no le daría muchos beneficios directos para saber cómo funcionan las computadoras en los niveles más bajos.

No me malinterpretes, creo firmemente que la operación de bajo nivel de una computadora, por ejemplo. el lenguaje ensamblador y el hardware, es algo con lo que todo buen programador debe estar familiarizado, ya que le ayuda a programar de manera más efectiva en cualquier lenguaje que esté usando, alto o bajo nivel. Pero no hará mucha diferencia en la codificación de Python hasta que tengas un poco de experiencia. Si recién está comenzando con Python, sugeriría que se mantenga alejado del funcionamiento de bajo nivel de las computadoras y que se concentre en los conceptos básicos de Python por ahora. Una vez que te sientas cómodo con eso, puedes pasar a algo como C y luego podría ser apropiado comenzar a ver algunas cosas de nivel inferior.

En cuanto a lo que debes saber ... no mucho, supongo. Python es un gran lenguaje para comenzar a programar. Mantiene las cosas simples y simples, pero es lo suficientemente rico como para permitirte trabajar en tu camino hasta un alto nivel de complejidad. Yo sugeriría probablemente mirando un tutorial; El que yo sepa es en el sitio web de Python , pero no estoy diciendo que sea necesariamente el el mejor para ti Una búsqueda en Google debería darte mucho para comenzar.

Comencé Python (como mi primer lenguaje de programación) hace unos meses. Recomendaría Learning Python, por Mark Lutz , para empezar. Pero tenga en cuenta que la clave para aprender bien es tener una mente abierta, paciente y dispuesto a trabajar y buscar cosas que no entiende.

¡Diviértete!

Sugeriría consultar el libro en línea en http://www.diveintopython.org/ para aprender python.

En cuanto a los proyectos de Python, intentaría aprender el marco de Django. Es un framework para la construcción de aplicaciones web. Tienen un gran tutorial para comenzar. Esto también le brindaría experiencia en la creación de un servidor web en una caja de Linux.

  

mejorar mi conocimiento de las computadoras

Bueno, ¿qué quieres decir exactamente con eso? Python, o cualquier otro lenguaje de alto nivel, están diseñados para ocultar realmente todos los detalles desagradables. Esa es una de las razones por las que es apto para no profesionales como (por ejemplo, un científico).

Si quieres saber cómo funcionan las cosas, deberías aprender solo C. Pero, de nuevo, si no planeas tener ninguna carrera relacionada con SC, no tiene mucho sentido. Aprenda algunos algoritmos más avanzados y estructuras de datos en su lugar. Eso te resultará más interesante, útil y no afecta a la plataforma ni al lenguaje.

Respuesta corta: todos ellos

Respuesta larga:

Aprender su primer idioma siempre es un desafío, y después de su experiencia con Java, muchos otros idiomas parecerán mucho más simples. Dicho esto, el verdadero desafío para aprender lenguajes de programación es aprender cuándo usar un lenguaje en particular, puedes encontrar documentos decentes para lo que elijas cuando llegue el momento.

Como un inicio concreto, vaya a wikipedia y busque sus lista categórica de lenguajes de programación , haz clic en todos los nombres que hayas escuchado (y en cualquier otra cosa que te llame la atención) y si el artículo tiene un código de ejemplo, dale un minuto o dos para que se hunda (el resto del artículo te ayudará, por supuesto) ). El punto aquí no es dominar cada idioma (lo que es (1) sin sentido y (2) imposible), sino dominar lo que está ahí fuera. Para cualquier idioma, hay un puñado de otros idiomas como este, y si al menos puede leer un idioma en la mayoría de esas categorías, habrá dominado una parte bastante grande del universo de programación. Cuando surge un nuevo proyecto, y algo al respecto le recuerda el lenguaje que encontró, puede aprenderlo como parte de hacer el proyecto. Puede parecer un montón de trabajo, pero después de, digamos, tu quinto gran lenguaje, pierdes la cuenta por completo y aprendes accidentalmente nuevos todo el tiempo sin darte cuenta.

Cuando deje de relacionarse con un idioma como idioma de su hogar, podrá aprender de ejemplos en otros idiomas, incluso si nunca los ha programado. Personalmente, solo he escrito algunos programas de Haskell, pero ser capaz de leer Haskell me ha expuesto a muchas ideas que podría reciclar en programas más prácticos de Scala y Python (oh sí, después de ti aprende Python, dale un vistazo a Scala y probablemente nunca volverás a usar Java)

Incluso encontrar el mejor lenguaje para el trabajo no es toda la historia. Tener muchas herramientas en tu caja de herramientas te permite juntar cosas increíbles en poco tiempo al escribir cada pieza de tu proyecto en el lenguaje más fácil que puedas. Puede que esto no sea apropiado para todos los proyectos, pero, ¿puedes hacer algunas demostraciones impresionantes?

Se tarda muchos años en llegar al punto en que ningún lenguaje de programación sea totalmente extraño (o al menos extranjero por más de un día de piratería), pero creo que es un plan a largo plazo muy saludable y realista para intentar conquistar una muestra representativa de cada categoría aproximada. Buena suerte!

Como Python no fue mi primer idioma, encontré el Python Cookbook útil para aprender

  1. De lo que Python era capaz
  2. El idiomático, de " pythonic, " manera de hacer algo.

La enseñanza del lenguaje de programación siempre se ha asociado con una declaración de cliché mientras se aprende. " Escribir programas para aprender a programar " ;. Yo también sugeriría lo mismo.

Si vas a empezar desde lo básico. Este es, por supuesto, el punto de partida más sugerido. Es largo, pero vale la pena todo el tiempo. http://www.diveintopython.org/

Debido a que estás en algún Java, esto podría ser incluso mejor para ti. http://www.swaroopch.com/notes/Python . Iniciar cualquiera de python 2.xo 3.0. Personalmente, soy un fan de python 3. Pero para un principiante podría ser difícil obtener muestras y referencias a programas en línea. Así que para ti 2.x podría ser mejor. Pero te lo dejo a ti.

Al igual que empecé " Escribir programas ... " ;. Puedes empezar aquí.

  1. http://www.spoj.pl/ : un sitio de programación de desafíos, donde puede elegir de una amplia variedad de temas, en su mayoría algoritmos y tiene una enorme base de datos de preguntas. Por supuesto, la elección de los lenguajes de programación depende de usted.
  2. http://projecteuler.net/ : un sitio de preguntas matemáticas, aquí solo tiene que enviar una respuesta. Aquí se permite hacer trampas, así que sé libre de tomar prestada la lógica de los demás, pero intenta escribir el programa tú mismo.

Después de que creas que has adquirido suficiente competencia en Python, puedes probar las recetas en este libro de recetas de python http://www.amazon.com/Python-Cookbook-Alex-Martelli/dp/0596007973 .

Para el desarrollo de aplicaciones, después de que crea que puede manejarlo, comience en wxPython o < a href = "http://www.riverbankcomputing.co.uk/software/pyqt/download" rel = "nofollow noreferrer"> PyQt . Personalmente sugeriría PyQt. Es responsivo, rápido y tiene un ciclo de desarrollo decente. No he usado WxPython por mucho tiempo, pero pocos programas que escribí hace mucho tiempo no me sentían tan bien. Una vez más, depende de ti.

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