Pasado If declaraciones Matrices, bucles ... ¿Y ahora qué?

9

Dejé de programar hace poco más de un año cuando seguí golpeando este muro. Estoy revisando el tema porque quiero crear una aplicación básica de Android. Pero siento que mi conocimiento limitado no será suficiente.

Aquí está mi problema.

Leí algunos libros y vi tutoriales en video sobre C # / Java, seguí ejemplos y luego terminé el libro. Al final, siempre parecen dejarme estupefacto en cuanto a qué hacer a continuación.

Lo que significa es que te enseñan desde tu aplicación básica "hello world" hasta if's y arrays, y aparentemente esperas que sepas cómo salir al mundo de la codificación y crear cualquier cosa.

¿Me estoy perdiendo de algo? Sé que estos son los componentes básicos de todos los programas, pero los libros que leo nunca me muestran qué hacer a continuación.

La respuesta fácil, supongo, sería 'comenzar a codificar', pero ¿dónde? Leí "Head First Java" por ejemplo; hasta el punto en que te dicen que tomes todo lo que has aprendido y crees un juego de carreras de perros ...

"intenta no hacer trampa y mira el código fuente provisto, ya deberías poder hacerlo" _ esa no es una cita exacta pero básicamente eso es lo que me dijeron ...

Hace media hora solo explicaban cómo hacer matrices, ¿y sin ninguna teoría, estoy destinado a crear un juego de trabajo?

La razón por la que pregunto esto es porque me temo que esto es todo lo que se supone que debo saber al menos para comenzar a codificar, sin embargo, parece que me dieron una pequeña caja de herramientas y me dijeron que construyera un rascacielos.

Gracias por cualquier consejo

usuario76625
fuente
"Juego de carreras de perros" podría significar muchas cosas. Para empezar, ¿implica incluso algún gráfico? Mientras lo que estás creando no implique ningún gráfico, creo que es perfectamente apropiado para un principiante. Tal vez hagas ahorcado solo para evitar pensar en imágenes ...
jhocking
Es muy posible construir un rascacielos con esa pequeña caja de herramientas: los grandes programas son solo colecciones organizadas de MUCHOS pequeños bits. Sin embargo, no podrá AHORA : debe comenzar a construir una casita para pájaros y avanzar. Como dijo jhocking, todavía no intentes hacer nada con los gráficos: hay una buena razón por la que las cosas iniciales siempre se basan en texto sin formato.
Loren Pechtel el

Respuestas:

10

Lo que significa es que te enseñan desde tu aplicación básica "hello world" hasta if's y arrays, y aparentemente esperas que sepas cómo salir al mundo de la codificación y crear cualquier cosa.

¿Me estoy perdiendo de algo? Sé que estos son los componentes básicos de todos los programas, pero los libros que leo nunca me muestran qué hacer a continuación.

En realidad no. No lo son Los componentes básicos de todos los programas son la abstracción y la reutilización. Muchos lenguajes de programación ni siquiera tienen matrices ifo bucles.

Hay algunos libros excelentes que le enseñan cómo programar en lugar de cómo funciona un lenguaje de programación en particular, que parecen ser los libros que ha estado leyendo.

Cómo diseñar programas, también conocido como HtDP, es un libro de este tipo. Te enseña, bueno, cómo diseñar programas. Y lo hace dándole recetas a seguir sobre cómo analizar problemas, resolverlos, transformarlos en algoritmos y más adelante en programas de trabajo.

Tenga en cuenta que "receta" es básicamente otra palabra para "programa", por lo que, en otras palabras, el libro le enseña programas para que los humanos los ejecuten en sus cabezas con el fin de generar programas para ser ejecutados por computadoras. ¿Cuan genial es eso? :-)

Los autores están trabajando actualmente en un borrador para una segunda edición de HtDP , que es posible que desee leer en lugar de la primera edición. El material sobre programación imperativa se ha eliminado y se tratará en el segundo volumen aún no escrito Cómo diseñar componentes , pero puede leer los capítulos que faltan en la primera edición.

Tenga en cuenta que HtDP no asume ningún conocimiento de programación y está dirigido a estudiantes de secundaria. Pero no dejes que eso te detenga: solo significa que probablemente podrás terminar algunos de los primeros capítulos más rápido, pero no creo que te aburras.

Abstracciones concretas también es una buena lectura a lo largo de venas similares. Al igual que HtDP, no asume ningún conocimiento de programación.

Otro libro que puede escuchar mencionado es Estructura e interpretación de programas de computadora, también conocido como SICP. Es uno de los mejores libros de programación jamás escrito, y de nuevo, no asume ningún conocimiento de programación.

Que es , sin embargo, orientado a los principiantes completos que estudian en el MIT . Y así, aunque no asume ningún conocimiento de programación, asume bastante conocimiento de dominio , por ejemplo, en los campos de ingeniería eléctrica, física y matemáticas. Nota: estos no tienen nada que ver con los conceptos que se enseñan, solo son necesarios para comprender los ejercicios y ejemplos . Por lo tanto, podría ser mejor leer HtDP o Abstracciones concretas primero, y luego leer SICP.

Jörg W Mittag
fuente
1
Nunca he oído hablar de un lenguaje de programación sin una ifdeclaración o algún tipo de loop: No estaría completo sin ellos.
Restablecer Monica - M. Schröder
@ Martin Schröder: Existen lenguajes de programación sin loopenunciados y están completos.
Giorgio
@ Jorge: ¿Por ejemplo? AFAIK necesitas algún tipo de loop / goto.
Restablecer a Monica - M. Schröder
2
@ MartinSchröder: Lambda Calculus es Turing completo (de hecho, es el lenguaje para el que se inventó ese término), y solo tiene abstracción de funciones y aplicación de funciones. ¡Ni siquiera tiene recursividad, tienes que codificar eso usando un combinador de punto fijo! Por otro lado: hay muchos lenguajes de programación que no son completos de Turing, como SQL (antes de 2003), o más sutilmente, C (la integridad de Turing requiere almacenamiento infinito, pero C garantiza que puede tomar la dirección de cualquier cosa y guárdelo en una variable de tamaño finito).
Jörg W Mittag
2
@ MartinSchröder: O, otra táctica: hay lenguajes de programación en los que simplemente compilar el programa puede obligar al compilador a resolver problemas difíciles. En C # puede codificar problemas 3-SAT como problemas de resolución de sobrecarga y hacer que el compilador los resuelva, y en Haskell puede codificar problemas equivalentes al problema de detención en el sistema de tipos y hacer que el compilador los resuelva. Parece pensar que los "lenguajes de programación" son lenguajes imperativos , pero hay muchos lenguajes no imperativos que pueden representar cálculos complejos.
Eric Lippert el
5

Bueno, no estás en una situación única. La mayoría de los libros para principiantes en lenguaje de programación tienden a centrarse más en los componentes básicos del lenguaje y eso es algo bueno. Sin embargo, como sucedió con usted, al final nos encontramos en una situación en la que hemos aprendido cada construcción que el lenguaje tiene para ofrecer, pero no podemos aplicar eso para resolver algunos problemas prácticos. En resumen, la brecha entre los ejemplos textuales y los programas prácticos solo se puede cerrar cuando intentas jugar con el código (como dice Telastyn). Esto es lo que generalmente hago mientras aprendo algunas cosas nuevas:

  1. Mientras aprende del libro, intente encontrar algunos escenarios de la vida real donde se puedan aplicar algunos ejemplos de código / técnica en el libro.
  2. Intente mezclar los programas de ejemplo dados en el libro para hacer algo más grande y complicado. Después de eso, intente minimizar el código y escriba un código diferente que dé el mismo resultado.
  3. Google para proyectos prácticos para el idioma en consideración.
  4. Una vez que esté seguro de haber aprendido el elemento básico del lenguaje, experimente con el marco de su elección. Por primera vez, elija algo que tenga una curva de aprendizaje más fácil.
  5. Busque algún proyecto existente e intente estudiar su diseño.
  6. Busque libros avanzados que le enseñen cosas de diseño de aplicaciones más avanzadas, como patrones de aplicación, diseño e implementación OO, etc.

Al final, todo se trata de práctica e investigación que lo ayudarán a mejorar sus habilidades de programación y, en última instancia, lo convertirá en un arquitecto de muchos rascacielos.

mlakhara
fuente
2

Vea esto para C #. Está muy completo: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Lo usé yo mismo, hace apenas medio año. Utilizo el compilador #Develop con él para los ejemplos. No puedo ayudarte mucho con Java porque casi nunca lo usé.

Cuando llega el momento de programar, lo que muchas personas no se dan cuenta es que usualmente usas un SDK o marco adicional para lo que estás diseñando. Por lo tanto, no espere saltar inmediatamente de Java o C # a la programación del teléfono, porque es probable que necesite un buen marco intermediario, y las curvas de aprendizaje para ellos pueden ser tan aburridas como las curvas de aprendizaje para los lenguajes de programación. Aunque el tutorial de C # que publiqué solo cubre C #, muchos de los conceptos que cubre se ven en otros lenguajes orientados a objetos, como Java.

Editar: El escenario que describe es, desafortunadamente, la ruta que siguen muchos tutoriales. No tiene que seguir este tutorial, y si funciona en contra de la forma en que aprende, probablemente sea mejor intentar elegir uno diferente (no sé de ninguno, pero Google probablemente sí). Pero solo para estar seguro, verifique si el autor del libro que está describiendo explicó el código línea por línea. No te preocupes por lo inteligente que eres, solo un prodigio podría pasar directamente de un libro a un juego de trabajo. Solo recuerde, los tutoriales no son en absoluto la medida estándar de habilidad, ¡así que haga lo que le enseñe mejor y no se desanime!

persona27
fuente
Gran respuesta, y me gustaría agregar que debe decidir sobre un proyecto que le gustaría emprender. Google maneras de resolver los problemas que presenta el proyecto. Aprenderá mucho buscando mejores formas de resolver los problemas que enfrenta.
mortalapeman
1

Sí, eso debería ser suficiente para hacer programas súper básicos. En este punto, intentas hacer un programa un poco más complejo que el que te hicieron los libros. Cuando necesita hacer algo específico y no sabe cómo, incluso con algo de trabajo, busca en Internet o pregunta a un maestro / mentor. Esto conducirá a características más avanzadas (y con bastante frecuencia a un callejón sin salida ya que, sin saberlo, eligió algo mucho más complejo de lo que puede hacer).

Ningún libro te va a enseñar cómo resolver problemas.

Ningún libro explicará cómo diseñar programas, eso viene con la práctica. Ningún libro te va a enseñar cómo hacer una aplicación no trivial: hay demasiados matices; aprendería cómo construir esa implementación, no cosas como esta.

La mejor manera de aprender en este punto es incursionar. Jugar con el código para crear algo. Al igual que los artistas a menudo comienzan garabateando pequeñas cositas que se vuelven progresivamente más sofisticadas y atractivas, los programadores necesitan esa progresión exploratoria.

Telastyn
fuente
1
"Ningún libro explicará cómo diseñar programas" - Los autores de Cómo diseñar programas pueden estar en desacuerdo :-)
Jörg W Mittag
1
@ JörgWMittag: Tendrán algunas técnicas comunes y demostraciones de programas típicos, pero cualquier cosa no trivial requerirá un alto grado de juicio humano aprendido, que a partir de 2013, todavía no se puede mecanizar.
cuál es el
1

Realmente no puedo recordar si usé un libro para entrar en la programación, pero supongo que en esos días era más un manual de referencia de sintaxis en lugar de un libro tutorial. Me enseñó lo que podía hacer el lenguaje de programación, pero no cómo construir una aplicación real con él.

Afortunadamente, había algunos ejemplos en el libro que solía escribir (sí, no había ejemplos de código fuente descargables) y luego traté de averiguar cómo funcionaba. Esa no es la forma óptima de aprender programación, pero para mí fue divertido en ese momento.

Lo que recomendaría es que se establezca un objetivo como " Quiero construir una aplicación Javascript que dibuje un círculo de rebote " y luego use su conocimiento ya adquirido para comenzar y buscar todo lo demás en el lenguaje SDK / documentación y / o aquí en lo.

Ese es el enfoque que estoy usando cuando intento saltar a un nuevo idioma y aprender mis primeros pasos. La mayoría de los libros que leí en los últimos días no estaba satisfecho porque tenía la misma sensación de perder algo importante . Pero afortunadamente ahora tenemos Internet, por lo que sea cual sea el idioma que desee aprender, puede encontrar un código fuente de ejemplo en Internet y usarlo para continuar su aprendizaje.

editar Por supuesto, algunos libros más generales que le enseñan cómo diseñar una aplicación o qué proceso (SCRUM, XP, V-Modell) seguir es una buena adición al conocimiento del lenguaje puro.

encogerse
fuente
1

Estoy de acuerdo con Jörg en que también debería leer algunos libros generales sobre los conceptos de programación en lugar de aprender demasiados detalles sobre un idioma en particular en esta etapa. Con respecto al libro Cómo diseñar programas , se utiliza como referencia en este curso , lo que podría ser de su interés.

De lo contrario, otra herramienta que otros no han mencionado es hablar mucho con otros desarrolladores . Recuerdo que para mí una de las formas más efectivas para aprender a programar era pasar muchas horas discutiendo con colegas u otros programadores sobre aspectos de programación, lenguajes de programación, técnicas o problemas concretos que estaba enfrentando en ese momento en particular. La transmisión oral del conocimiento puede ser uno de los medios más efectivos para aprender nuevas habilidades.

Giorgio
fuente
+1. Conozco personas que van a conferencias sin ir a una sola charla. Simplemente van allí para pasar el rato en los pasillos y discutir problemas con extraños, solo para obtener un punto de vista diferente.
Jörg W Mittag
0

Sugeriría encontrar proyectos de código abierto y convertirlos en cajas de arena personales. Modifique los comportamientos existentes, agregue nuevos comportamientos y elimine también algunos. Juega un poco, implementa tus propias ideas y "y si lo intentara".

No estoy abogando por que conviertas el proyecto de código abierto de otra persona y lo reclames como tuyo.

Estoy diciendo que mire otros proyectos de trabajo como un medio para aprender cómo llegar a los siguientes pasos. Hay muchos sitios disponibles con código de código abierto para descargar. Aquí hay algunos que vienen a la mente: CodePlex CodeProject

Matt Raffel
fuente
-5

Esa es la vida de los codificadores. No conoces una tecnología, pero desarrollas un 'hola mundo' y te conviertes en un experto. En las empresas (la vida real) es así como funciona. Buena suerte

usuario76655
fuente
2
Esa no es una respuesta muy útil.
svick