2009-09-14 12 views
8

Siempre creí que al comenzar a aprender un nuevo programador de programación de lenguaje debe crear ciertos proyectos para obtener una mejor comprensión del lenguaje y/o marcos. Personalmente para mí fue con php (libro de visitas, abstracción de base de datos, motor de plantillas), ruby ​​(en rieles, sitio web de twitter, plugin de registro activo, gema simple) y object-c (cocoa, todo-list, cliente de twitter).Primero debo programar proyectos como un hobby

Me pregunto cuáles son los proyectos imprescindibles para otros lenguajes de programación como Java, C++, Python, etc. ¿Quizás tenías otros lenguajes de aprendizaje de ruta?

Respuesta

11

ProjectEuler

Los primeros 20 o así son agradables pequeños problemas que le permiten experimentar con lenguajes cosas básicas de control de ejecución. Te da una buena idea de cómo funciona un lenguaje en el "pequeño".

3

Para Java Creo que algo así como un sistema de inventario estaría bien, ya que cubre la mayor parte de la materia como los conceptos orientados a objetos, interfaz gráfica de usuario, la programación de bases de datos, etc. Es lo suficientemente inteligente como para empezar

En C++ I Supongo que algo relacionado con el rendimiento puede ser genial. Te sugiero que desarrolles una aplicación de procesamiento de imágenes simple en C++. Obtendrá una buena comprensión sobre los indicadores y la gestión de la memoria

2

Lamentablemente, ha pasado un tiempo desde que aprendí un nuevo idioma.

Pero cuando aprendía nuevos idiomas todo el tiempo, tenía una estrategia simple: mi primer programa era su "hola, mundo" básico, algo que simplemente muestra un mensaje y sale. Mi segundo programa fue Life. (Ver, por ejemplo, http://www.math.com/students/wonders/life/life.html)

En días más recientes, mi siguiente esfuerzo se convirtió en un programa de base de datos simple, aunque nunca se me ocurrió uno estándar. Pero algo para leer y escribir desde una base de datos.

Creo que es una buena idea escribir el mismo programa en diferentes idiomas. De esa manera ya conoce el problema y los principios detrás de la solución, por lo que lo único nuevo con lo que se enfrenta es el lenguaje de implementación.

+1

Punto de interés. ¿Pero no abordar los mismos problemas con las mismas soluciones desafía el paradigma de "hay más que una forma de hacerlo"? Después de todo, cada idioma tiene su propia filosofía. ¿No es así? – Eimantas

+0

Claro. Pero cuando estoy aprendiendo un nuevo idioma, lo primero que quiero aprender es lo básico. ¿Cómo hago yo/o? ¿Cómo leo un archivo? ¿Cómo llamo a una subrutina? Etc. Mi primer programa C++/Windows se veía muy diferente de mi primer programa Fortran porque, sí, la filosofía de diseño detrás de ellos es muy diferente, es decir orientado a objetos y GUI vs procedural y TTY. No pretendía que mi comentario de "ya sepan la solución" fuera tan lejos. Lo que quería decir es que, cuando estoy escribiendo mi primer programa, quiero estar pensando en cómo funciona el lenguaje, sin luchar con los requisitos funcionales. – Jay

2

Normalmente me gusta hacer algunos juegos por un par de razones.

  • Tienden a ser más divertidos de implementar porque, después de todo, son juegos.
  • Tienen reglas claramente definidas, por lo que no pasa mucho tiempo averiguando la especificación en lugar de escribir el programa
  • Tienden a tener un buen nivel medio de complejidad. Lo suficientemente duro como para no ser tan trivial y simple que puede hacerlo en pocas horas o días
  • Tienden a ser independientes. ES DECIR. no necesita un backend de base de datos para el ajedrez a menos que realmente lo desee, a diferencia de una aplicación más real como un blog donde una base de datos es básicamente obligatoria.
  • Con una gran cantidad de juegos que puede pegarse con sólo una interfaz de usuario de texto o ASCII arte que tiende a simplificar las cosas cuando se está aprendiendo una lengua

empezar con algo tan simple como verdugo, la mente maestra o torres de Hanoi. Luego puedes pasar a un juego más completo como póker/monopolio.Con un juego como ese, puede agregar funciones arbitrarias como guardar juegos en una base de datos si desea experimentar con el marco de acceso a datos del idioma.

+0

Ahorcado es exactamente el tipo de cosa que haría: ver mi publicación anterior. Monopoly parece un juego bastante complejo de programar para un problema de práctica descartable. Tal vez dediques mucho más esfuerzo a un problema de práctica que yo. O tal vez estoy sobreestimando cuánto esfuerzo es. Oh bien. – Jay

+1

Monopoly está en la parte alta de los juegos que haría para practicar. Aunque si solo tienes una IU basada en texto, solo me molesto en crear una interfaz de usuario real si quiero practicar el marco de la interfaz de usuario, no está mal con quizás 20-30 reglas principales de las que quieras preocuparte. Además, si está presionado por el tiempo o lo que no, siempre puede descartar arbitrariamente las reglas. Lo principal que me gusta es que un enfoque OO funciona bien con él y lo hace más simple. Casi de cualquier manera que trato de escribirlo termino con al menos un jugador y una clase de propiedad. En algo así como el verdugo, tiendo a escribir de manera procedimental ya que es muy simple. – Joshua

+0

Hmm, me trae a la mente un pensamiento interesante: como la mayoría de los lenguajes modernos son OOP, quizás un problema de buenas prácticas sea aquel que ejercita múltiples objetos que tienen métodos reales y no son solo contenedores de datos, y eso incluye algunas subclases. De esa forma, practicará un poco sobre cómo funciona el "objeto de cosas" en este idioma. – Jay

Cuestiones relacionadas