Dudas POO Java y Programacion Estructurada

Iniciado por Tonyskater, 16 Junio 2017, 04:02 AM

0 Miembros y 2 Visitantes están viendo este tema.

Tonyskater

Hola! Soy Tony, primero que nada gracias por la ayuda que he recibido en el foro.
Ahora bien, queria hablar sobre un tema que me tiene algo preocupado, o más que preocupado, expectante...

Empiezo por el principio, soy un estudiante de Desarrollo de Aplicaciones Web (DAW), un ciclo formativo que se imparte en España (Donde lo estoy estudiando actualmente).
El primer curso de este ciclo superior de 2 años, ha sido rápido, aburrido en algunos aspectos e interesante en otros.

Qué  quiero decir con ésto, básicamente este primer año nos hemos centrado en asentar las bases principales que todo desarollador debe tener en cuenta para crear un código decente, con esto me refiero a la indentación, creación de funciones para no tener el código hecho un barullo de ideas, etc.

Pero lo más lejos que hemos llegado es a trabajar con ficheros de texto, de forma muy "pobre" por decirlo mal y pronto, el ejercicio más complicado que he tenido de este estilo es uno que tuve que consultar en el foro para poder arreglar los fallos que tenía.(Hablo de mi anterior post que era de una duda de LeetSpeak).

Quería saber, porque la verdad no me hago una idea, de qué hace un programador ya formado en el día a día, dudo que sea traducir "HOLA ME LLAMO TONY" a "H0L4 M3 LL4M0 70NY", y si lo es.... Creo que me hago una idea de lo que NO quiero seguir estudiando... Porque sí, puedo haber tenido ejercicios complicados que me han costado 5 horas resovlerlos, pero no son el tipo de actividades que hace un programador en el día a día.
¿Qué tipo de "programas", "código", acaba uno aprendiendo a hacer y por qué es tan potente Java?

Gracias por vuestra atención, un saludo
Cita de: Manual de mantenimiento de IBM"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo"
Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.

Serapis

#1
Vaya por delante que estoy de acuerdo, en que es muy probable que en la mayoría de sitios, el profesor marea mucho la perdiz y no va al grano, pero probablemente esto se deba a que los alumnos cada uno está a un nivel distinto y aporende a un ritmo diferente. Si fuera rápido, probablemente solo 4 ó 5 podrían seguir el ritmo, y el resto no aprendería nada. si va lento, quizás consiga que otros 20 salgan adelante, a costa de que aquellos 5 se aburran soberanamente.

Por eso creo que alguien que le interesa un tema, no debe conformarse con lo que aprende en la escuela, especialmente si considera tener capacidad para más... y debería por su cuenta avanzar lo que pueda....

Citarporque la verdad no me hago una idea, de qué hace un programador ya formado en el día a día, dudo que sea traducir "HOLA ME LLAMO TONY" a "H0L4 M3 LL4M0 70NY", y si lo es.... Creo que me hago una idea de lo que NO quiero seguir estudiando... Porque sí, puedo haber tenido ejercicios complicados que me han costado 5 horas resovlerlos, pero no son el tipo de actividades que hace un programador en el día a día.
Si, recuerdo el tema, porque yo te respondí al tema.
El caso es que ese ejercicio, por inútil que resulte en la vida, lo que pretende es enseñarte a pensar.
De hecho la programación se puede considerar dividida en 3 partes:
- Conocer la base de los lenguajes.
- Conocer un lenguaje en específico (o dos o tres), pero al menos uno a fondo.
- Ser capaz de hallar una solución a un problema (lo más eficazmente posible, dado el límite de los conocimientos que se posea).

---------------------------------------------------------
- Lo 1º se aprende probablemente en los 1-3 primeros años... saber a que se llama una función, método, por qué se llama propiedad a algo que evidentemente es lo mismo... como es el proceso de compilación, qué tipos de datos hay y cómo se pueden considerar, etc... Generalidades, pero todas, un amplio abanico de todo, pero sin profundizar en nada y sin llegara la especificación última de cada cosa y cada caso.

- El paso 2º es detallar todo lo anterior (solo lo que sea preciso) ciñéndose a un lenguaje específico. Aunque es normal (o sería lo razonable) que estudiando no se dé excesiva prepoderancia un lenguaje sobre otro, aunque lógicamente llega un momento de 'pisar el terreno' y por tanto debe tomarse uno para empezar a jhacer ejercicio (sin dejar que eso implique que ese es lo mejor ni perfecto, no dejarse influenciar, el mejor lenguaje es aquel al que mejor te adaptas (y resulta útil, obviamente)). Aquí en referencia a lo anterior, por ejemplo hablando de tipos de datos, se ve que no se acepta cualquiera y lo hace de una forma específica.... incluso el nomnbre de ese tipo de datos se llama muy diferente al modo en que se llame en otro lenguaje.

- En lo 3º, es la parte más difícil, y sucede como en las matemáticas, se intenta que los alumnos mediante ejercicios pueriles aprendan a usar su mente para resolver problemas. Pero esto en parte es algo innato en cada persona y en parte algo que se aprende. Igual que con las matemáticas, a unos se les da mejor y a otros peor. Al final, las dos partes previas son más de memoria, pero esta es la que define si tienes posibilidades de resolver problemas que 'nunca han estado en tu memoria'. Si eres capaz de enfrentarte a retor no tratados, no memorizados,

Es la diferencia entre saber como llegar desde Madrid a París (porque has memorizado un plano de carreteras) y como llegar desde el punto X al punto Y (Madrid y París), dadas sus cordenadas y orientándose con una brújula, el sol, las estrellas, etc... no cabe tanto espacio para resolverlo con memoria, requiere aplicar los conocimientos adquiridos.

Es normal que te aburras si tienes ganas de aprender. si quieres hacerlo más rápido estudia por tu cuenta aparte (si te sobra tiempo libre y tienes ganas, claro).


p.d.:
Una cosa que no es estudiar informática, es aprender x lenguaje al dedillo. Y espero que ninguna universidad cometiera tal error, eso son vertientes y con el tiempo hay preferencias por una vertiente y pasado el tiempo por otra.
Siendo estudios inespécificos (como las células madre), pueden materializarse luego en cualquier lenguaje... es decir la especialización en un lenguaje requiere por lo general estudios adicionales por parte del interesado.

Es también de bobos, pretender que en la escuela te enseñan todo-todo... simplemente porque es imposible...

Tonyskater

Cita de: NEBIRE en 16 Junio 2017, 14:48 PM
Vaya por delante que estoy de acuerdo, en que es muy probable que en la mayoría de sitios, el profesor marea mucho la perdiz y no va al grano, pero probablemente esto se deba a que los alumnos cada uno está a un nivel distinto y aporende a un ritmo diferente. Si fuera rápido, probablemente solo 4 ó 5 podrían seguir el ritmo, y el resto no aprendería nada. si va lento, quizás consiga que otros 20 salgan adelante, a costa de que aquellos 5 se aburran soberanamente.

Por eso creo que alguien que le interesa un tema, no debe conformarse con lo que aprende en la escuela, especialmente si considera tener capacidad para más... y debería por su cuenta avanzar lo que pueda....
Si, recuerdo el tema, porque yo te respondí al tema.
El caso es que ese ejercicio, por inútil que resulte en la vida, lo que pretende es enseñarte a pensar.
De hecho la programación se puede considerar dividida en 3 partes:
- Conocer la base de los lenguajes.
- Conocer un lenguaje en específico (o dos o tres), pero al menos uno a fondo.
- Ser capaz de hallar una solución a un problema (lo más eficazmente posible, dado el límite de los conocimientos que se posea).

---------------------------------------------------------
- Lo 1º se aprende probablemente en los 1-3 primeros años... saber a que se llama una función, método, por qué se llama propiedad a algo que evidentemente es lo mismo... como es el proceso de compilación, qué tipos de datos hay y cómo se pueden considerar, etc... Generalidades, pero todas, un amplio abanico de todo, pero sin profundizar en nada y sin llegara la especificación última de cada cosa y cada caso.

- El paso 2º es detallar todo lo anterior (solo lo que sea preciso) ciñéndose a un lenguaje específico. Aunque es normal (o sería lo razonable) que estudiando no se dé excesiva prepoderancia un lenguaje sobre otro, aunque lógicamente llega un momento de 'pisar el terreno' y por tanto debe tomarse uno para empezar a jhacer ejercicio (sin dejar que eso implique que ese es lo mejor ni perfecto, no dejarse influenciar, el mejor lenguaje es aquel al que mejor te adaptas (y resulta útil, obviamente)). Aquí en referencia a lo anterior, por ejemplo hablando de tipos de datos, se ve que no se acepta cualquiera y lo hace de una forma específica.... incluso el nomnbre de ese tipo de datos se llama muy diferente al modo en que se llame en otro lenguaje.

- En lo 3º, es la parte más difícil, y sucede como en las matemáticas, se intenta que los alumnos mediante ejercicios pueriles aprendan a usar su mente para resolver problemas. Pero esto en parte es algo innato en cada persona y en parte algo que se aprende. Igual que con las matemáticas, a unos se les da mejor y a otros peor. Al final, las dos partes previas son más de memoria, pero esta es la que define si tienes posibilidades de resolver problemas que 'nunca han estado en tu memoria'. Si eres capaz de enfrentarte a retor no tratados, no memorizados,

Es la diferencia entre saber como llegar desde Madrid a París (porque has memorizado un plano de carreteras) y como llegar desde el punto X al punto Y (Madrid y París), dadas sus cordenadas y orientándose con una brújula, el sol, las estrellas, etc... no cabe tanto espacio para resolverlo con memoria, requiere aplicar los conocimientos adquiridos.

Es normal que te aburras si tienes ganas de aprender. si quieres hacerlo más rápido estudia por tu cuenta aparte (si te sobra tiempo libre y tienes ganas, claro).


p.d.:
Una cosa que no es estudiar informática, es aprender x lenguaje al dedillo. Y espero que ninguna universidad cometiera tal error, eso son vertientes y con el tiempo hay preferencias por una vertiente y pasado el tiempo por otra.
Siendo estudios inespécificos (como las células madre), pueden materializarse luego en cualquier lenguaje... es decir la especialización en un lenguaje requiere por lo general estudios adicionales por parte del interesado.

Es también de bobos, pretender que en la escuela te enseñan todo-todo... simplemente porque es imposible...

Hola, gracias por dedicar tu tiempo a responder mis dudas.
Quería decir que sí,estoy de acuerdo con lo que dices de que el profesor debe ir a un ritmo al cual más personas avancen aunque sea un ritmo más lento.

Hablando de mí para justifcar un poco mi pregunta, sí he estudiado cada día en casa, sí, me he mirado otros lenguajes y he aprendido a hacer otras cosas que se salían de mi zona de confort solo para avanzar un poco en mis estudios, pero... No he llegado a nada profesional, con esto me refiero, sí se hacer páginas web muy bonitas y todo lo que tu quieras, pero... Dudo que ahora mismo supiera hacer un carro de la compra completo desde 0 para esta pagina web.
No sé aplicar mis programas simples en una web simple, no sé me siento como incompleto, claro porque no he acabado supongo, pero...  De que me sirve la serie de Fibonacci a la hora de hacer una web? Claro, es práctica para que veamos en profundidad arrays y operaciones, en fin para ganar experiencia programando, pero nada útil mas allá de lo que hace el programa.

Yo leo un código completo de un profesional y solo veo que conexiones entrantes y salientes a recursos que no conozco y hacen operaciones con ellos, apenas se ven "funciones para traducir el true a sí y el false a no", me explico? Espero que sí.

Gracias de nuevo.
Un saludo.
Cita de: Manual de mantenimiento de IBM"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo"
Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.

3n31ch

Antes de responder:
    • El titulo de la pregunta no es para nada descriptivo.
    • No creo que esto tenga que estar en Java



La idea de la universidad o instituciones de enseñanza no debería ser "enseñarte un lenguaje, o una herramienta" sino enseñarte la base para seguir por tu cuenta. Yo en la actualidad trabajo en una plataforma para controlar turbinas de agua por internet... nadie me enseño eso pero uso lo aprendido para aprender mas y desarrollar cosas mas complejas (Y esto no es lo mas difícil o raro que he hecho).

Lo que te pasa es que te falta experiencia, y esa experiencia la sacas trabajando o practicando. Perfectamente te puedes poner a hacer un carrito de compras por partes y afrontar tus dudas de apoco.

1. Creas el sitio web con imagenes y cosas estáticas
2. Le pones un poco de bases de datos y haces que los productos los tome de ahí
3. Creas los mantenedores y ahora no manipulas directamente la base de datos
4. Creas un login para acceder a los mantenedores
5. Pones un sistema de compras falso que al hacer click reduzca el stock
6. Agregas que al hacer click también cree un correo con una boleta falsa
7. Ya no reduces directamente al hacer click sino que creas un sistema que al hacer click los agregue al cache y creas otro botón que diga Comprar, en donde se descuente el stock de todo y envié el correo
8. Creas otro sistema para ver los historicos de compras anteriores
9. Le agregas mas datos del cliente, como para que se pueda registrar si quiere comprar
10. etc, etc etc...

Cada paso tiene su reto y seguramente si lo vez todo de golpe te marees porque no sabes manejarlo, pero poco a poco aprendes.

Ahora... es necesario que una institución te enseñe como hacer esto?

No!, caerías en la mediocridad si necesitaras que alguien te enseñara todo y mas si es informática en donde todo cambia cada tres segundos. Solo necesitas la base: Aprender la lógica de programación, entender como funcionan algunos protocolos, etc...

En particular yo adoro esos pequeños retos de programación como Fibonacci iterativo o recursivo, me ayudan a pasar el tiempo cuando estoy aburrido.

PD: Yo creo que muchos de este foro pasaron por la depresión existencial del informático (al menos así le llamo ya que fue bastante fuerte por mi parte... casi me jodí la vida)

Tonyskater

Cita de: 3n31ch en 16 Junio 2017, 18:16 PM
Antes de responder:
    • El titulo de la pregunta no es para nada descriptivo.
    • No creo que esto tenga que estar en Java



La idea de la universidad o instituciones de enseñanza no debería ser "enseñarte un lenguaje, o una herramienta" sino enseñarte la base para seguir por tu cuenta. Yo en la actualidad trabajo en una plataforma para controlar turbinas de agua por internet... nadie me enseño eso pero uso lo aprendido para aprender mas y desarrollar cosas mas complejas (Y esto no es lo mas difícil o raro que he hecho).

Lo que te pasa es que te falta experiencia, y esa experiencia la sacas trabajando o practicando. Perfectamente te puedes poner a hacer un carrito de compras por partes y afrontar tus dudas de apoco.

1. Creas el sitio web con imagenes y cosas estáticas
2. Le pones un poco de bases de datos y haces que los productos los tome de ahí
3. Creas los mantenedores y ahora no manipulas directamente la base de datos
4. Creas un login para acceder a los mantenedores
5. Pones un sistema de compras falso que al hacer click reduzca el stock
6. Agregas que al hacer click también cree un correo con una boleta falsa
7. Ya no reduces directamente al hacer click sino que creas un sistema que al hacer click los agregue al cache y creas otro botón que diga Comprar, en donde se descuente el stock de todo y envié el correo
8. Creas otro sistema para ver los historicos de compras anteriores
9. Le agregas mas datos del cliente, como para que se pueda registrar si quiere comprar
10. etc, etc etc...

Cada paso tiene su reto y seguramente si lo vez todo de golpe te marees porque no sabes manejarlo, pero poco a poco aprendes.

Ahora... es necesario que una institución te enseñe como hacer esto?

No!, caerías en la mediocridad si necesitaras que alguien te enseñara todo y mas si es informática en donde todo cambia cada tres segundos. Solo necesitas la base: Aprender la lógica de programación, entender como funcionan algunos protocolos, etc...

En particular yo adoro esos pequeños retos de programación como Fibonacci iterativo o recursivo, me ayudan a pasar el tiempo cuando estoy aburrido.

PD: Yo creo que muchos de este foro pasaron por la depresión existencial del informático (al menos así le llamo ya que fue bastante fuerte por mi parte... casi me jodí la vida)

Perdón estaba en duda de donde poner el post la verdad, gracias por moverlo y por contestar.
Entiendo lo que dices, y es verdad que es todo una base y no deberían enseñarnos a programar como monos amaestrados, sino motivarnos a ser creativos y ponernos en situaciones fuera de nuestra zona de confort para así aprender más y lo que aprendamos aplicarlo posteriormente.
Creo que sí, que seguiré estudiando esto, ya que programar me gusta mucho, y solo he visto la punta del iceberg dese lejos... Espero seguir compartiendo dudas y procurare a medida que vaya aprendiendo resolver dudas de otras personas.

Muchas gracias por todo.
Cita de: Manual de mantenimiento de IBM"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo"
Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.

Serapis

Aunqe no te lo parezca, yo he usado por lo menos una docena de veces la serie de Fibonacci en diferentes campos.

La serie de Fibonacci, presenta escalones de una curiosidad intelectual enorme, que luego si tienes ocasión puedes aplicar generosamente con más eficacia que otros medios más simples y toscos.

Orubatosu

Bueno, aunque resulta molesto, antes de correr hay que saber andar

Y si, al principio todo resulta aburrido, sosos y parecen tonterías. Pero o se conocen y se dominan perfectamente los fundamentos, o no se hace nada.

¿Que adaptar tal o cual algoritmo no te va a servir para nada? Lamento decirte que normalmente la mayoría de los programadores, no eligen lo que van a hacer. Les piden lo que quieren o les dan un algoritmo, y lo tienen que sacar

Tanto si les gusta y les parece interesante, como si no

Lo del HTML... bueno, sin algo que te conecte con bases de datos obviamente no podrás hacer mucho. Eso puede ser normalmente PHP, JavaEE o cualquier otra tecnología por el estilo acompañada de un servidor de bases de datos (generalmente MySql, Oracle, Sql Server...) y otras tecnologías.

Te recomendaría si te interesa el tema PHP o si has dado Java, JavaEE aunque lo cierto es que la mayoría de las implementaciones se hacen sobre PHP (no por ser mas o menos fácil, sino porque hay mas servidores que lo usan)

Y si te interesa el tema, aprende SQL, que hace falta y mucha, y no es dificil
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

Tonyskater

Cita de: Orubatosu en 16 Junio 2017, 22:23 PM
Bueno, aunque resulta molesto, antes de correr hay que saber andar

Y si, al principio todo resulta aburrido, sosos y parecen tonterías. Pero o se conocen y se dominan perfectamente los fundamentos, o no se hace nada.

¿Que adaptar tal o cual algoritmo no te va a servir para nada? Lamento decirte que normalmente la mayoría de los programadores, no eligen lo que van a hacer. Les piden lo que quieren o les dan un algoritmo, y lo tienen que sacar

Tanto si les gusta y les parece interesante, como si no

Lo del HTML... bueno, sin algo que te conecte con bases de datos obviamente no podrás hacer mucho. Eso puede ser normalmente PHP, JavaEE o cualquier otra tecnología por el estilo acompañada de un servidor de bases de datos (generalmente MySql, Oracle, Sql Server...) y otras tecnologías.

Te recomendaría si te interesa el tema PHP o si has dado Java, JavaEE aunque lo cierto es que la mayoría de las implementaciones se hacen sobre PHP (no por ser mas o menos fácil, sino porque hay mas servidores que lo usan)

Y si te interesa el tema, aprende SQL, que hace falta y mucha, y no es dificil


Si, bueno en teoria el curso proximo daremos PHP, javascript, python, y aunque este año hemos hecho bastante SQL, PL/SQL, y tal, indagaremos más en la materia. Pinta interesante.

Aunque no es exactamente mi programación del curso, más o menos indica lo que se hace en este Ciclo, en mi centro de estudios, hablabamos de que hariamos más lenguajes de programación a parte de Java, como PHP, python etc en el curso siguiente.

Cita de: Manual de mantenimiento de IBM"Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo"
Mi nombre es Tony y estoy aqui para aprender, pero si hay algo que pueda compartir con vosotros lo haré.

Randomize

Cita de: Tonyskater en 16 Junio 2017, 04:02 AM
¿Qué tipo de "programas", "código", acaba uno aprendiendo a hacer y por qué es tan potente Java?


Más que potencia: universalidad, la aplicación que desarrolles podrás exportarla a cualquier plataforma siempre y cuando cuente con su máquina virtual Java claro está.

Orubatosu

El programa parece interesante, pero ten en cuenta que será solo una introducción. Luego tendrás que meterle caña por tu cuenta.

Las páginas dinámicas son lo que llaman ahi "desarrollo web en entorno servidor". Básicamente las páginas que ves normalmente se hacen así.

Mezclan código HTML y CSS con php y javascript en ocasiones. El código php es invisible al destinatario porque lo que haces literalmente es construir páginas "a cachos" uniendo el código html de la página con lo que general el PHP. Lo que ve el cliente es el resultado del proceso

Una vez veas eso, puede que te comenten (o no) que php es solo una de las tecnologías que se pueden usar.

Lo suyo seria que practicases en casa, se puede hacer perfectamente en local sin usar un "servidor" porque es fácil montarte un servidor de páginas web con Apache, base de datos MySQL y php y demas. Solo tienes que buscar un paquete WAMP o XAMPP o similar. Normalmente vienen en un solo paquete que te lo instala todo.

Si quieres hacer experimentos usando Java en lugar de PHP necesitarás un entorno que pueda manejar JavaEE (como Eclipse Neon) y que el servidor Apache tenga un plugin llamado Apache Tomcat

Y a practicar
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998