Sobre el mal uso del lenguaje Java en las Universidades
Hay dos cosas que no aguanto de Java, la primera de ellas es la falta visible de punteros y la segunda es la perdida completa de los structs respecto a C, en el caso de C++ un desarrollador puede usar una struct de C si quiere pero en Java no, en Java creas un método/función que sea un struct y… bueno, es que no puedes hacerlo.
Java esta siendo escogido en primero y segundo de carrera por muchas universidades para poder ahorrarse tiempo explicando, ya no te enseñan realmente como funciona una lista enlazada o un árbol, ya no se enseñan algoritmos sino que simplemente tiran de Java y sus librerías completamente prediseñadas para que hagas las prácticas, tiene su gracia que al final acabes superando las prácticas de la siguiente manera:
- Llegas a clase de prácticas, solo sabes sintaxis
- Pruebas y le das vueltas, no te sale nada y te sientes inutil
- Decides ir a la libreria general de Java y ves como funciona el tema y aprendes que lo que te han puesto en la práctica ya esta solucionado en la libreria general en forma de clase.
- Copias el contenido de los metodos y los personalizas.
- Tras ensayo y error ves que la práctica te funciona
El problema es la curva de aprendizaje, la mayoría de libros de programación para novatos en Java se quedan en los arrays y en los bucles, ahí no avanzan ni siguen adelante para dar la imagen de que Java es 1000 veces más accesible que C, hay un capitulo en C que es esencial que son los punteros y es el capitulo puente entre los conceptos básicos y los avanzados. Como Java no tiene punteros explicitos, y muchos libros y gente pasan de explicar que es un puntero y sobretodo para que sirve en los lenguajes de programación, pues cuando te encuentras con temas más avanzados, donde los punteros si que son esenciales para explicar y entender lo que estas haciendo, es cuando aparece el “usa la clase tal que te lo hace por la cara”.
Al final acabas por odiar a Java solamente por eso, es el nuevo Visual Basic, todo el mundo lo esta usando pero mal, en vez de aprovechar la potencia del lenguaje para crear los algoritmos desde 0 mucha gente prefiere no pensar y tirar de la libreria general de Java, muy poca gente prefiere pensar y hacer las cosas desde 0. Si esta actitud ya se enseña desde la Universidad entonces mal vamos.
vía: Entre Maqueros
el problema no es del lenguaje de progración, sino de las personas que enseñan, que tienen pocas ganas de enseñar o no quieren dedicar mucho tiempo a hacerlo.
En mi universidad al menos, empezamos con java (sólo java) en primero. Utilizamos java para aprender su sintaxis, y las estructuras de control básicamente. Luego hacemos una lista y aprendemos flujos de entrada y salida. En segundo ya damos c,c++ y algún que otro lenguaje, utilizando como base la sintaxis que ya sabemos de java, a la vez que aprendemos estructuras de datos y algoritmia, que no dependen del lenguaje. De hecho, en la última práctica que entrege hecha en java, tuve que implementar yo la lista, el iterador y la pila que usaba.
Como digo en el titulo, no tienes ni puta idea. Si no sabes hacer un arbol binario en java dedicate a otra cosa, mariposa.
En la univerisdad (al menos en la que yo estudié) te enseñan a pensar, a diseñar y a conceptualizar algún problema y resolverlo con un algoritmo o modelo matemático, la parte de la programación en un lenguaje en específico no se enseña del todo en la universidad, eso se aprende en tutoriales, documentación y en cursos extracurriculares o bien con la experiencia laboral, entonces me parecen erroneos tus argumentos diciendo que JAVA es un lenguaje para principiantes en la programación orientada a objetos, si algo tiene JAVA es que es muy accesible su programación y no se tiene que reinventar el hilo negro, he programado sistemas WEB en JAVA rápido, fácil y limpio mientras que en C++ serían muy complejos y viceversa también he programado sistemas de graficación científica en C++ que resultan complejos pero muy eficientes cosa que carece JAVA, en conclusión dependiendo del sistema y del problema a resolver se debe usar el lenguaje adecuado.
El error no es JAVA, sino explicar un lenguaje sin pasar primero por algorítmica.
Puede ser que sí, que en algunas universidades se enseñe de arranque el JAVA (the hutt, es broma xD). Pero bueno, en mi universidad, yo inicié el estudio en mi primer semestre con algoritmos secuenciales (para entrar en onda) y codificarlo en C++. En el segundo semestre, el que curso actualmente estoy cursando, recién entramos en el paradigma de objetos. Lo que el profesor enseña es la teoría sobre el paradigma y la codificación tenemos que investigarla nosotros mismos (ya sea en C++ o en Java) claro que también nos da ejemplos en Java para que vayamos familiarizándonos. Paralelo a este curso llevo otro llamado ESTRUCTURA DE DATOS, que es como una extensión al curso del primer semestre; en ése curso se enseña todo lo que dices falta en la enseñanza de diversas universidades. Estoy tranquilo que al menos en mi universidad (y también varias en mi entorno, por lo que veo) se enseñe de esta manera. Gracias.
Estoy de acuerdo con el mal uso de java en la enseñanza de la programacion en las universidades. Pienso que la verdadera evolucion del estudiante como programador parte del estudio desde algoritmos simples hasta los mas complejos y no especificamente en un lenguaje en particular, en pseudo codigo aplicando solamente la logica de programacion.
Ante todo decir que solo soy un aprendiz (audidacta) y con muchas carencias en la programación informatica. Pero me parece que aqui has puesto el dedo en la llaga, por fin escucho a alguien decir algo que esperaba oir sobre el tema.
sabias tu que el diablo le encanta el pene
sabias tu que el diablo se convirtio en mujer de papa dios, ahora se murio llorando con sus demonias, vive en un mundo ficticio el maricon
Yo concuerdo en que se debe enseñar primeramente C y C++ para luego enseñar Java, en una universidad en la que soy docente se implanto que desde el primer modulo de programacion es decir programacion I se de Java, yo no estoy muy de acuerdo con eso porque pienso que quedan muchos vacios en el alumno que deberian ser cubiertos con C o C++ como el caso de los punteros. Ahora bien tambien pienso que no se puede comparar Java con C, todo evoluciona y es verdad que java y la POO es la evolución que cubre la deficiencia de los lenguajes estructurados, ahora cada quien usa lo que necesita para sus fines comunes, mo tod es buen asi como no todo es malo, esta en uno como ingeniero concer y elegir la mejor opción, ahora si me par4ece que se deberia dar C y C++ antes de ver Java
Parece que en el comentario que he puesto no ha escrito correctamente una parte: nos pedían hacer un árbol binario definido con class T
Según transcurría la lectura de tu artículo. Refrescaba mi primera práctica de Java en la que nos pedían hacer un árbol binario definido con . Creo que la mayoría no terminó de comprender muy bien cómo funcionaba esta clase genérica. En java si se pueden crear estructuras del tipo colas, pilas, arboles... Pero hacerlo de forma genérica es más complicado. Me parece un verdadero error que la gente salga de la universidad sin saber cómo funciona una pila o un árbol binario. Y por lo que me comentan compañeros de profesión se empieza a notar con la gente que sale ahora de la universidad.
Para que crear una estructura en un lenguaje orientado a objetos?, que no saben que la POO surgio de las limitaciones de la programacion estructurada?, es como querer armar una motocicleta con partes de un automovil. Para que utilizo PHP (que es un lenguaje interpretado para generar HTML dinamico) cuando lo puedo sustituir con JSP?. Si aprendiste a programar en C++ vas a entender muy facil JAVA. Todas las personas que he conocido y que se quejan de JAVA curiosamente es gente que nunca a aprendido a programar y que lo unico que saben utilizar es .NET. Un buen ingeniero no es el que lo sabe todo si no el que sabe en donde buscar.
Para que crear una estructura en un lenguaje orientado a objetos?, que no saben que la POO surgio de las limitaciones de la programacion estructurada?, es como querer armar una motocicleta con partes de un automovil. Para que utilizo PHP (que es un lenguaje interpretado para generar HTML dinamico) cuando lo puedo sustituir con JSP?. Si aprendiste a programar en C++ vas a entender muy facil JAVA. Todas las personas que he conocido y que se quejan de JAVA curiosamente es gente que nunca a aprendido a programar y que lo unico que saben utilizar es .NET. Un buen ingeniero no es el que lo sabe todo si no el que sabe en donde buscar.
La semana pasada pregunté a un grupo de personas del medio que me dijeran que usarían como plataforma de desarrollo para un sistema de ventan en línea en la internet. Base de datos, lenguaje, etc. Casi todos me contestaron, PHP, MySQL y otros anexos. Al preguntarles, porque no usan Java y DB2? Casi me lincha, me excomulgan y me crucifican de cabeza. Lo primero que argumentaron fue, sabes cuantas personas saben Java realmente, pero con la capacidad de saberlo usar de manera práctica y no teorica? Sabes cuanto tiempo se requiere para desarrollar una misma aplicación en coparación al hacerlo en PHP, Phyton, Perl, C, etc? Sabes los recursos que se nececitan y el echo de que tienes que obligar a los usuarios a bajar el tan mentado runtime de más de 100mb? Sabes...... y asi se la pasaron apedreándome durante unos largos 30 minutos. Asi que como dijo muy atinadamente Marcelo, dejemos crecerlos libremente, la entidad desarrolladora sabrá que es lo que más le conviene. Pues son con pensar : Que quieres? Para que lo quieres? Y como lo quieres? Derterminará, Java o .... Por ello es importante que en las escuelas se les enseñe adicionalmente de la teoria, los casos práctos, los peros y los pros. Eso les permitirá elegir adecuadamente.
Comparar C con Java es como comparar peras con naranjas: ambas son frutas (ambos son lenguajes de programación) pero el sabor es diferente y tienen distintas propiedades. Ya se ha dicho en otro comentario que "depende para que lo quieras" será que utilices Java o C y es así de cierto, pero faltó aclarar "porque son dos cosas distintas" (que se parecen, pero nada más). No hay uno mejor, ambos son útiles en algún momento. El secreto está en saber cuándo utilizar uno u otro (o Ensamblador, como dijo otro opinante). No creemos ángeles y demonios, dejemos crecer en paz a ambos y veamos que acontece; al fin de cuentas son solo herramientas y se trata de saber usarlas.
Comparar C con Java es como comparar peras con naranjas: ambas son frutas (ambos son lenguajes de programación) pero el sabor es diferente y tienen distintas propiedades. Ya se ha dicho en otro comentario que "depende para que lo quieras" será que utilices Java o C y es así de cierto, pero faltó aclarar "porque son dos cosas distintas" (que se parecen, pero nada más). No hay uno mejor, ambos son útiles en algún momento. El secreto está en saber cuándo utilizar uno u otro (o Ensamblador, como dijo otro opinante). No creemos ángeles y demonios, dejemos crecer en paz a ambos y veamos que acontece; al fin de cuentas son solo herramientas y se trata de saber usarlas.
Todas las estructuras de datos simples Pilas, colas, listas, arboles, grafos se pueden implementar "por debajo" usando Java muy facilmente. No se puede hablar de lo que no se conoce. Tu puedes hacer maravilla con lo que te da java, pero si en ultima no te sirve puedes crear tus propias estructuras a partir de Tads bien diseñados. Se debe aprender a aprender
El problema de Java es encontrarle una utilidad real. Es decir, para que lo quieres utilizar. No solo porque digan algunos que Java es bueno lo es. Cuando me lo dicen, les pregunto, ok, es bueno, pero para que realmente? Es lo mismo cuando me dicen que C es lo máximo, ok, pero para que? Dicen que Java esta hecho par Web, pero ahi esta el pero, porque no hacer lo mismo con PHP, Phyton, Perl, etc? Más sencillos, más prácticos, menos requerimientos. IBM tuvo que sacar su Eclipse para lograr a traer a desarrolladores e ntentar bajar el costo hota/hombre cuando con menos recursos y tiempo lo haces en otros lenguajes. No requieres de bajar cientos de megabites de runtime de java porque si no no trabaja, además de actualizar sus librerias complejas. Y el tiempo de carga es (claro hablamos de segundos) pero es desesperante. Pregunto, para que me serviría Java, salvo para mantener a Websphere, la plataforma mas compleja y engorrosa (roñosa) de mantener? Conectividad con CRM's en la web? Conectividad con RDBM's en web tambien? Si checamos podemos encontrar otros lenguajes menos complejos, fáciles de utilizar y hasta seguros para hacer lo mismo. En las escuelas, me encuentro que dependiendo del maestro, es el lenguaje, ellos enseñan lo que creen entender mejor. Otras de acuerdo a donde sople el viento de la popularidad, yo enseño de acuerdo a la simplesa, practiidad y claro que tenga la utlidad práctiva en la vida real. En gustos se rompen géneros.
He vivido esa sensación de que java es un lenguaje que trae muchas cosas hechas y aunque pueda parecer una ventaja no lo es tanto porque no hay nada mas complejo que descifrar lo que otros han hecho, menos placentero que crearlo uno mismo, muchas veces me pregunto que ocurre en el mas bajo nivel de programación. Por otro lado la dedicación de una persona que busca entender lo que es tirar buen codigo va mas alla de la charla del profesor en la universidad y esta en uno investigar aunque sin prisa para evitar muchas decepciones...
Me parece que tu artículo es erróneo. Cada lenguaje, aunque sea de propósito general, tiene un campo en el que se desempeña mejor. Ese campo para Java es la Web y para C es la programación a bajo nivel. Java ha eliminado la utilización de punteros porque para un desarrollador web es molesto preocuparse de depurar cientos de líneas de código para encontrar un puntero mal inicializado, no porque sea innecesaria esta funcionalidad. La potencia de C para desarrollar sistemas operativos y controladores de dispositivos radica en su manejo de punteros. Y sobre los structs de C, creo que resultan inapropiadas ante las robustas clases de Java. Lo que si es cierto es que se enseñen en las universidades los fundamentos de los algoritmos y estructuras de datos con las APIs de Java, cuando lo más apropiado es aprender a hacer un árbol a mano, trabajando con punteros.
Es que java no está pensado para eso, esta pensado para objetos y relación entre objeto, se tiene que pensar en objetos desde el análisis. El Error está en enseñar java como otros lenguajes.
Estoy de acuerdo contigo en cuanto a lo de que se pierde conocimiento real de lo que "está por debajo". Pero yo entiendo que en la carrera seguirán dando otras asignaturas tipo Algorítmica y Estructuras de datos. El caso de Java es lo mismo que el de los lenguajes de Programación estructurada con respecto al Ensamblador. Yo estudié ensamblador y aunque no se me ocurre ni pensar en utilizarlo, si algún día tengo que programar alguna rutina de renderizado de objetos 3D, tengo claro que la más rápida será con ensamblador, la segunda con C y la tercera con Java/C# y demás lenguajes OO. El caso es lo que le interese a la gente aprender no lo que se enseñe. Yo tengo muchos compañeros/as que aprobaron las prácticas de árboles (en C) y que saben lo mismo que tu dices que saben los de ahora, es la ley del mínimo esfuerzo. SAludos










































