EDICIóN GENERAL
401 meneos
5233 clics
Las universidades de EEUU al fin lo han reconocido: empezar a programar por Java es una mala idea

Las universidades de EEUU al fin lo han reconocido: empezar a programar por Java es una mala idea

Java ha sido y es desde hace mucho tiempo uno de los pilares básicos de la programación. Un lenguaje óptimo para según qué tareas. Sin embargo, su reinado como punto de partida para el estudiantado parece estar llegando a su fin. "Hay que aprender la lógica de la programación. El lenguaje es lo de menos. Por eso es un error enseñar con Java porque los programadores no tienen idea de lo que están haciendo", decía hace un par de años para Economía Digital Ricardo Galli, profesor universitario y socio-fundador de Menéame.

| etiquetas: programación , universidad , java , python , javascript
Comentarios destacados:                                  
#171 #97 Ya me dirás tu como explicas a alguien que un programa no funciona porque una linea tiene un tabulador y la otra 4 espacios en blanco. Si estas con un IDE todavia lo ves, pero en un editor de textos normalito ni te enteras que esta pasando. Y no prentenderás enseñar a programar con un IDE, eso si que no tiene sentido.

Uso Python a diario y cada día me gusta menos.
@blacar @nemeame @angelitoMagno He tenido que autodescartar la anterior noticia www.meneame.net/story/universidades-eeuu-fin-han-reconocido-empezar-pr porque el enlace no se abría bien desde PC, y esperar 30 minutos para volver a publicarla con el enlace corregido porque según menéame:
"Ya has enviado un enlace al mismo sitio hace poco tiempo - Debes esperar 30 minutos entre envíos al mismo sitio."
CC @ur_quan_master @apple3
Eso se ha sabido siempre. Lo malo es que ahora "la gente" va a pedir que se enseñe a programar usando algo que este de moda como la mierda de funcional o algun lenguaje de script "libre" en vez de volvernos a Pascal, que se diseño especificamente para aprender a programar. O a C, y que a fuerza de borrar cores los estudiantes se acostumbren a liberar memoria...
#2 El problema es que antes la memoria en los equipos era muy cara, ahora no hay casi límite, entonces es más fácil duplicar código que pensar en la forma de ahorrar
#4 yo en el curro se lo digo a mis compañeros, si tardas más en optimizar eso que un mes más de gasto en RAM, no lo hagas, ahora es más barato el hierro que la hora de desarrollo, pensando siempre en el precio final, no en lo que tú cobras.
#34 optimizar en qué? cualquier algoritmo que hagas que tenga una complejidad igual o mayor de O(n^2) se convierte en algo inútil cuando crece n por mucho hierro que compres.
#96 Déjalo, debe ser programador de Java.
#96 Exacto. Por mucha máquina que tengas, cuando crecen los datos, el rendimiento se va a pique. Es bastante normal usar tablas de histórico para poder volcar parte de la información de una tabla principal a otra secundaria, para poder mantener un rendimiento aceptable. Y hablamos de bases de datos, que están muy optimizadas en algoritmos de búsqueda. Imagina algoritmos hechos por profesionales poco experimentados, y de prisa y corriendo. Un simple bucle que concatena cadenas, si concatenas siempre sobre la misma variable string en lugar guardar en un array para luego unirlo todo, puede hacer que la aplicación sea inusable.
#96 Bueno, también hay que acordarse que la optimización prematura es un antipatrón, que se ve por ahí a cada “crack” que hacen truños de código que no los entienden ni ellos al día siguiente
#4 #34 Estáis en un nivel demasiado alto para lo que se comenta en la noticia, volved a aquel momento en que la RAM era lo que hacía que tus juegos tirasen o no en el 386 y entenderéis porque Java o similares no son buenos lenguajes de aprendizaje.
#34 Eso vale para el desarrollo web ligero y cuando puedes externalizar los costes al usuario (desarrollo de aplicaciones).

Pero el desarrollo web es cada vez más pesado y las aplicaciones que tragan memoria dan una mala experiencia.
#34 Claro, y por actitudes como la tuya es como hasta el sistema más simple escala como el puto culo o sólo funciona medianamente bien en desarrollo/test con 4 datos y revienta en producción a las dos semanas de subirlo porque a nadie se le ocurrió agregar un índice a la DB o paginar un resultset.

Los errores cuestan más y más dinero arreglarlos cuanto más tiempo pasó desde el momento en que se cometieron/se introdujeron en el código. Que pienses que el coste de optimizar es comparable al coste de la RAM que te ahorras demuestra que no has tenido que pagar por errores en tiempo de desarrollo.
#4 como en este mundo sólo existen las aplicaciones de escritorio...
#41 en las de servidor pasa exactamente lo mismo, le dices al cliente te lo optimizo en 50h (50h x 50€) o le pones otros 16gb al server... Se echa rápido la cuenta.
Hay otros entornos en los que efectivamente los recursos están más limitados y no queda otra que optimizar.
#62 ¿Optimizar algo en un servidor 50€?
¿Qué eres la puta sin dientes?
#82 Jomio hay que explicarlo todo, 50h x 50€/h = 2500€, se me olvídó el "/h," cantidades al azar por decir algo al tuntún. Con la tecnología cliente/servidor que yo trabajo depende de la pieza pueden ser 8h o pueden ser 800h, era un simple ejemplo.
#62 Y así a lo tonto llega un día en que no puedes meter más RAM y en vez de 50 horas son 2300
#85 Luego se quejan de que no se les reconoce y valora. Con esas soluciones de consultor chusquero que esperen bien cómodos las palmaditas
#85 Depende de la complejidad de la pieza a optimizar, con meterle la RAM te puede servir para siempre jamás, o acabar siendo 4600h, o 9200h o sabe dios. Pero eso se calcula y se le ofrecen las alternativas al que paga explicándole lo que hay.
#62 No se trata de optimizar. Se trata de saber o no programar.
El problema con enseñar a la gente usando Java no es que luego no saben optimizar. El problema es que no entienden como funciona el programa y el SO a bajo y medio nivel. No saben cual es el resultado físico de lo que programan.
En definitiva, no saben programar.
Si sabes programar de verdad la optimización que hay que hacer es nula o marginal.

Lo veo continuamente en el trabajo. Hay cosas que no hay que optimizar, simplemente…   » ver todo el comentario
#4 En los mobiles, la memoria sigue siendo limitada. No caigamos en el mismo error que Bill Gates, que el mismo se arrepintió.
#2 ¿Qué es eso de "borrar cores"? Por lo que recuerdo, para asignar memoria se usala "malloc" y para liberarla "free".

En la facultad nos enseñaban pseudocodigo (Usando tipos abstracto de datos, no recuerdo si se veía la gestión de la memoria) y C. Pero en la noticia no hablan de pseudocodigo. Por otro lado, el ejemplo que ponen no me parece muy bueno.
#6 madreee... ¿Tan bueno eres programando que nunca tuviste un "core dumped" en ejecución? Qué cosas.
#6 si, pero si programas en C y haces el tonto con la memoria, tarde o temprano el programa casca y te escribe un fichero "core", al menos en *nix. En los lenguajes con GC te puedes olvidar de que la memoria existe y una mierda de programa teermina de ejecutarse igual que un programa optimizado porque de la memoria se encarga otro.
#8 bueno, una cosa es que un programa esté o no optimizado, y otro que tenga fugas de memoria.

Lo que sí que me parece cierto es que abusar de Java en la carrera hasta el punto de dar a entender que cualquier lenguaje que se precie debe tener un recolector de basura es mala idea. En particular, cuando empiezas a programar sin ruedines vienen los cores, las visitas del oom_killer o iluminados como este señor: matt.sh/howto-c (al que, menos mal, hay gente dispuesta a rebatirle: github.com/Keith-S-Thompson/how-to-c-response/blob/master/README.md).
#22 Normalmente en una carrera de ingeniería informática, por lo menos habrá una asignatura de sistemas operativos donde se programe en C, y alguna optativa de sistemas embebidos o cosas así, que al final es donde hoy por hoy se usan mallocs y frees.

En todo lo demás, los recolectores de basura cada vez son más prevalentes, así que tampoco veo mal que se enfoquen como "lo normal", siendo la gestión manual algo especializado. La verdad es que hoy por hoy, no creo ni que el 20% de los…   » ver todo el comentario
#60
Normalmente en una carrera de ingeniería informática, por lo menos habrá una asignatura de sistemas operativos donde se programe en C, y alguna optativa de sistemas embebidos o cosas así, que al final es donde hoy por hoy se usan mallocs y frees.

En C, y en C++ también (que los new hay que emparejarlos con su delete). C y C++ siguen siendo usados en aplicaciones de escritorio de forma masiva, no olvidemos.

En todo lo demás, los recolectores de basura cada vez son más

…   » ver todo el comentario
#80 Me parece que hablas de una realidad muy dura y es que la mayoría de trabajos de informática realmente no necesitan a un ingeniero informático, y por extensión, les da lo mismo a alguien que se haya sacado la carrera a duras penas.
#80 si programas en C++ y usas new y delete, seguramente estés haciendo algo mal. Busca el concepto RAII.
#60 Pues yo no acabo de ver bien que se aprenda que la memoria es limitada en un asignatura de sistemas operativos en lugar de "troncales" de programación.

Como ingenieros, los ingenieros informáticos debería aprender a diseñar soluciones informáticas usando el mínimo de recursos posibles. Si se aprende a programar con un lenguaje que te da a entender que la memoria es barra libre, difícilmente harás un programa mínimamente eficiente.
Tampoco estoy hablando de afinar las cosas a…   » ver todo el comentario
#22 Las fugas de memoria y el oom_killer también afectan a Java.

En Java también puedes tener problemas de memoria, solo que son mucho más oscuros y difíciles de resolver. Por ejemplo nunca pongas un new en un bucle.
#8 Error. En un lenguaje con GC hay varias cosas que pueden salir mal y pueden agotar la memoria de la misma manera que te ocurriría en un lenguaje sin GC. Si en Java no usas los Soft/Weak References donde corresponde te puede ocurrir que te queden referencias duras a objetos que creías haber descartado. Esos objetos se acumulan y terminan por consumir todo el heap.
#6 speaker en meneame hay mucho self learned con nivel de inglés medio-bajo que usa expresiones como o. a c, borrar cores y Core dumped... El problema es que filtran de Menéame a la realidad y luego los tienes que aguantar en el mercado laboral.

Es un mercado laboral de mierda el informático en parte por todos esos que tiran de acrónimos sin venir a cuento y postulan desde su falta de estudios base.
#42. Conozco autodidactas que superan en conocimientos y capacidades a muchos con carrera, aunque también conozco a gente con carrera con un nivel de conocimientos similares a esos autodidactas. Creo que tanto unos como otros tienen ese mismo espíritu autodidacta, unos con la ventaja añadida de poder haber estudiado en auténticos entornos universitarios de calidad y haber recibido una formación reglada impartida por expertos. Buscando bien y contrastando hay muy buenas universidades públicas en España y Europa en ciencias de computación.
#53 Si no critico a los autodidactas en concreto sino en general los antipatrones de los desarrolladores de uno y otro tipo. Y eso de empezar a soltar palabras que no son las correctas es tan de autodidacta. Los ingenieros obviamente tienen tambien lo suyo, de hecho lo de ametrallar a acronimos estupidos es muy de ingeniero (bueno, más de jefe con estudios no técnicos).
#42 El sector es una mierda EXCLUSIVAMENTE porque esta lleno de mierdas que no mueven un dedo por sus derechos.

De nada.
#42 He visto miles de "titulados" sin capacidad de hacer nada en ningun campo de los que se le supone conocimiento, y unos pocos de autodidactas que eran unos putos máquinas en su campo concreto. Esos son los que se buscan, como una aguja en un pajar.
#2 que funcional sea una mierda, es tu opinión, que no comparto. Que esté de "moda", llamarlo así lo dudo mucho.
#15 Venía a decir lo mismo. Los lenguajes funcionales son tan viejos como los imperativos, y si ahora están "de moda" es porque se está viendo que la programación funcional es útil. Si hasta C++11 tiene lambdas...
#48 #15 la ventaja de los lenguajes funcionales se ha hecho evidente con la llegada del big data, el modelado de datos y la programación basada en redes neuronales. Y tiene visos de explotar definitivamente en los próximos años gracias a la programación no lineal y la IA
#74 La verdad es que no...

Es la ultima moda. Sin mas. No tiene pinta de nada mas. El ultimo tren de hype que pasa por la estacion de las ilusiones.

Tiene su utilidad, es cierto, pero sacarlo de ahi es ridiculo...

Pensar que el codigo va a ser mejor por ser un lenguaje funcional es no tener memoria.

Lo util y lo correcto es mezclar ambos conceptos. A eso es a lo que se va a tender.
#48 el verdadero problema de C++11 (ahora ya C++17) es que nada te impide seguir programado "como siempre",
incluso con funciones en C puro y duro.
Pro lo demas, si te ciñes a los nuevos estándares, es una gozada
#2 pues para mí no se ha sabido siempre, hoy en día tener que estar gestionando memoria (cuando hay básicamente de sobra) en vez de centrarte en la solución de lo que quieres arreglar es una perdida de tiempo y de recursos. Llámame loco.
#20 claro para que optimizar... más madera!
#44 exacto, luego salen engendros como windows vista
#44 obviamente tampoco he querido decir eso. Pero que Java es perfectamente usable para la mayoría de entornos, pese a no ser el lenguaje mas optimizado, es un hecho (por eso se usa en todas partes) . Eso no quiere decir que tengamos que programar sin tener en cuenta el rendimiento, eso nunca, claro.
#20 que la chavalada piense así en parte me alegra ya que hace que mi trabajo sea más valorado, sobre todo en las empresas que ya han tenido que sufrir software hecho por gente que piensa así, Gracias. ;) (una de ruedines para toda la chavalada)
#20 No sobra. ¿Has escuchado hablar del concepto "deuda técnica"? El sector de la informática se está endeudando de forma masiva. De momento los intereses ya los paga la ley de Moore pero se le va viendo ya el cansancio.
#299 del comentario #20
Para #2. Si buscas programadores que resuelvan problemas en empresas en general, Java es la opción natural en muchos casos.

Si buscas programadores que resuelvan problemas cientítico-técnicos relacionados con computación y computadoras 'C' es la opción natural para sistemas operativos y pequeñas utilidades mientras que 'C++' es la opción natural para proyectos grandes que sigan requiriendo cercanía al hardware y una optima velocidad de proceso.
Goto #26 #29.
#38 Ya sé que no tiene nada que ver con el tema pero siempre he tenido curiosidad, ¿Se dice c más más, c plus plus...?
#70. Se dice 'C Plus Plus'. Ante la duda usa siempre la palabra en inglés. Es lo que tiene que los desarrollos de esos lenguajes sean en esa lengua.

'... En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C...'
es.wikipedia.org/wiki/C++
#116 #70 #72 #89 Podéis decirlo en ingles o en castellano, siempre y cuando no mezcléis lenguajes.

Mucha gente dice "Ce plus plus" en lugar de "Si plus plus" y queda raro.

Aunque supongo que quedaría peor decir "si mas mas"
#70 "C plas plas" y los de rrhh de la entrevista te hacen la ola...
#70 yo he dicho toda mi vida C plus plus (algunos dirían Si plas plas), pero actualmente a veces digo C más más porque aunque no quiera se acaba uno siendo influido por los "modernos" ;) Ademas de que mucha chavalada les dices C plus plus y seguramente ni saben de que les hablas ;)
#70 /Si plas plas/ en inglés, en español he oído "ce más más".
#70 Siempre lo he conocido, en español, como C más más. No recuerdo a nadie llamarlo C plus plus en la carrera.
#38 #45 #47 estamos hablando de aprender a programar, no de poner un programa en produccion, de meterle en la cabeza a los novatos conceptos y que los usen para ordenar sus ideas y escribir un programa bien. Ya tendran tiempo de malearse con objetos, funcionales, singletons y las gilipolleces que esten de moda en los blogs en ese momento como las lambdas o los "final" de las declaraciones de los metodos en lenguajes que pasan parametros por valor. De…   » ver todo el comentario
#2 Pascal es una mierda pinchada en un palo, no lo usa nadie ni nadie ha programado nada jamás con eso
puestos a aprender a programar podemos volver al lenguaje ensambador o quizá al cobol
#45 Pues con el lenguaje ensamblador se aprende bastante bien cómo funciona un ordenador.
#45 para Pascal tienes Delphi/Lazarus, y se usa muchísimo más de lo que mucha gente piensa. Mucho software popular está hecho con esos compiladores.
#45 Hasta no hace mucho en la facultad de Coruña se enseñaba a programar en Pascal, y Delphi (que es prácticamente lo mismo) se utiliza aún bastante. Para aprender es un lenguaje que está muy bien, muchísimo mejor que C.

Mejor eso que engendros como el "C+-" que usan en la UNED...
#45 Delphi fue el lenguaje que use en el trabajo que mas me ha durado y era una brutalidad que tenia unos controles visuales a años luz de cualquier otra cosa.. anda que no he echado de menos esa facilidad muchas veces a lo largo de mi carrera.
Tambien me las he tenido que ver con el COBOL ... por suerte solo fueron 8 meses y conservo el uso de las falanges.
Ensamblador en mis años mozos , era divertido pero no te enseña a manejar proyectos realmente complejos.
Lo que no entiendo es para que tipo de tarea puede ser ideal el Java... para mi combina lo peor del COBOL y del C, pero bueno , para gustos , lenguajes.
#2 Pascal se diseñó para aprender a programar, pero en los 70, y se nota mucho. Creo que no tiene sentido usarlo hoy en día.

Yo enseño programación en Pascal, y me río cada vez que alguien dice que es un lenguaje muy didáctico porque es muy estricto. Sí, es estricto en las chorradas que no importan: no te deja definir una variable en mitad de una función, por ejemplo. Pero luego resulta que te deja poner variables globales (y las puedes poner hasta sin querer, mis alumnos lo hacen a menudo:…   » ver todo el comentario
#47 A mi no me agrada pascal para empezar, pero también diré que muchas cosas de las que mencionas si son muy didácticas, muchos de los problemas que mencionas son principalmente porque el que tiene que mantener las "reglas" del juego es el programador. No hay que olvidar que hablar de público o privado no deja de ser una forma de organización en la que estableces un contrato sobre como vas a acceder a ciertas variables y eso tiene que entenderlo el alumno.

Por ejemplo en java, no puedes acceder a algo privado porque no te deja, no porque tu sepas que no deberías.
#47 Es go (golang) una opción?
#2 > ...mierda de funcional...

No sé muy bien que decirte con esa burrada que has soltado. En fin, no merece la pena que me ponga a explicarte por qué la programación funcional es tan importante ni por qué la tendencia es programación funcional y no de otros tipos. Tu a lo tuyo. A borrar cores para liberar memoria.
#54 a ver, la tendencia no es la programacion funcional. La tendencia (academica, no real) es la programacion imperativa de toda la vida metiendo funciones declaradas inline de vez en cuando. Aunque no lo creas, una lambda no convierte tu programa en "programacion funcional".

Y por cierto, si usaras funcional pura te darias cuenta de que se llena la pila por la recursividad. Y eso tambien te deja un core.
#2 cada lenguaje responde a una necesidad, y del mismo modo que Pascal tenia como objetivo la educación en programación imperativa, los lenguajes funcionales responden otras necesidades académicas y prácticas.

En mi opinión no está de más enseñar programación funcional en la universidad, como parte de la aplicación matemática de la computación.

La gran ventaja es la capacidad de escribir código ad hoc para modificar un set de datos, y poder aplicar técnicas programáticas a información, lo que ahora se conoce como data modeling.

Particularmente creo que Python + Haskel + mathlab sería una combinación perfecta para iniciar a los futuros profesionales.
#58 Si yo no digo que no se enseñe, ojo. De la universidad deberias salir habiendo estudiado un lenguaje imperativo, uno de objetos, uno funcional, uno de script, etc. Por lo menos. Y despues, un par de lenguajes que se usen en ese momento en el mundo real. Y muchas otras cosas mas, claro.

Yo lo que digo es que no se debe enseñar a programar usando funcional. Ni objetos. Aprender a programar deberia ser ordenar las ideas, hacer las cosas en orden, cerrar lo que has abierto, liberar lo que has…   » ver todo el comentario
#2 la mierda del funcional. ¿Cuánto rencor no? Precisamente muchísimos de los problemas existentes en la programación hoy en día son debidos a la no utilización de conceptos funcionales: poca reutilización y composición, baja escalabilidad, y bugs por todos sitios debido a la dificultad de razonar en software concurrente por la mutabilidad, así como la falta de un sistema de tipos medianamente cuerdo.

"En este caso, que los alumnos se apasionen por la materia y aprendan fundamentos que luego sirvan en la empresa." Lógico, no enseñes Java en la universidad, porque luego el 70%> de las empresas en España lo van a usar :shit:
#2 Que usen PHP, se enseña a gente en diseño web y se aprende fácil. Luego de ahí puedes interesarte por lenguajes de nivel más alto y especializarte, o ganarte la vida con él, que se usa mucho en ecommerce y otros.
#2 Que grande y bonito Pascal.
Fue mu primer lenguaje, y me gusto tanto que aun tiendo a programar de manera estructurada antes que orientacion de objetos.

Yo cada curso tenia un lenguaje diferente. Pascal el primero. C++ el segundo. Java el tercero.

Logicamente ahora no me saques de java y su poo. Pero todos deberian empezqr con algo como Pascal.
#2 Justo venia a decir lo mismo: Pascal. Y utilizando el libro "Algoritmo +estructura de datos = programa"
#2 Sí, yo creo que van a repetir el error pero con otro lenguaje.
#2 y no hace falta volver a Pascal o C. El Python es una excelente opción para iniciarse y mucho más molona para la gente joven. E incluso php.
Empezar con php estructurado, pasar a php orientado a objetos y luego ya si eso a Java. Pero nunca nunca empezar por Java.
Se lo dije hace uans semanas a una profesora mia del master y se puso en modo egocentrica sabelotodo.
#3 yo hace lustros que lo digo. El día que me enteré que habían cambiado de Pascal a Java lo flipé. Si es aprender el objetivo, como si es pseudocódigo, aunque tiene que después traducirse a algo compilable.
#10 Hay gente que se ha quedado anclada en Java y de ahi no los sacas. De programacion no tengo mucha idea pero algo con lo que se hizo el Minecraft no puede ser bueno :troll:
#12 xD

Hombre, java es potente y tal, pero no es lo mejor para aprender. Para hacer el código más sencillo tienes que usar elementos que no se dan el primer día de clase precisamente, así que te quedas con la idea de "esto es así por narices" hasta que te lo explican cuando toca.

Para aprender, Pascal. O el que me "enamoró a primera instrucción", Python, que luego te sirve para hacer POO también.
#10 Yo empecé con Pseudocódigo -> Pascal -> C++ -> Java
#24. C++ es bastante más complicado que Java, incluso en sintaxis. Java se parece más a Pascal y casi nadie le tiene miedo al lenguage Pascal que parece una evolución natural del Basic de los 80 y 90.

El problema con Java es que libros y profesores pretendan empezar a enseñarlo por el tejado, cuando como en todo lo ideal es empezar por la base. Para empezar con Java lo mejor es seguir ejemplos y olvidarse al principio de los conceptos repetidos una y mil veces sobre programación orientada a objetos.
#24 yo con BASIC, como un campeón y a pesar de lo que dijese el impresentable de Dijsktra >:-(
¿Los pobrecitos hijos de papá se quejan porque es muy complicadito para ellos aprender a programar en Java?

Vaya mierda de universidades, sinceramente. Que les pongan como me pusieron a mí, en Pascal o en C++ con objetos a cascoporro, ampersands y asteriscos. Al menos así aprenderían algo sobre gestión de memoria.

O con tarjetas.

Otra cosa es que un padre enseñe a sus hijos a programar usando Java. Son niños y hay que darles facilidades. ¿A una persona de 18 años? ¿no pasan la selectividad…   » ver todo el comentario
#5 Es lo malo de vivir en una época en la que el esfuerzo personal está mal visto, y hacer estudiar a de verdad es casi maltrato infantil.
Por lo que parece el nivel de los nuevos estudiantes es en general penoso, a nivel de redacción (no son capaces de escribir más de 10 líneas seguidas), gramática, comprensión lectora, matemáticas...

www.elconfidencial.com/alma-corazon-vida/2013-10-08/solo-uno-de-cada-t
#27 Algo que no me agrada es cuando parece que toda la motivación tiene que venir por parte del profesor. Así lo que consigues es un burro que solo se mueve si le pones una zanahoria delante. No me parece mal que los profesores se esfuercen en motivar a los alumnos o hacer contenidos atractivos, pero no todo puede ser motivar al alumno, su principal motivación debe ser interna y tiene que buscarla él.
#5 amen
#5 A mi personalmente me parece que Java es una buena opción, sobretodo para darse cuenta si te gusta la programación o no. Yo empecé con C y todo bien, cuando pasé a Java vi que no me iba ese rollo, demasiado léxico, así que me pasé a robótica con Siemens y todo guay. ^_^
#68 Java es una buena opción para odiar la programación.
#81 Si es un problema realizar algoritmos con POO seguramente esa persona no debería programar. No va a ser feliz.
#5 Scheme es del MIT. Intenta acabarte el SICP. Qué narices, ni en un finde haces dos lecciones.
Ojo, el SICP es DURO.
#5 Perdón por el negativo. Te compenso en otro.
#5 El mundo se va a la mierda. Si la gente pudiese ver las chapuzas montadas de cualquier forma que manejan sus datos...

La conbinación de titulitis + demanda de programadores lleva a esto. Hay que repartir papelitos a toda costa y pasa lo que pasa.
#5 pues hay otros de programación por bloques muy potentes, app inventor.del MIT bloky de google, Snap! De Berkeley... Para empezar a programar los veo bien
Lo de Standford además de antiguo es mentira, no va a sustituir su curso, simplemente ahora da la posibilidad de hacer el curso de introducción en Javascript o Python además de en Java. Lo que al final sigue siendo irrelevante porque el resto de cursos se dan en C++. Siendo una noticia de inicios de Año en Xataka ya se podrían haber informado un poco más.
De los lenguajes que conozco, Python me parece el más adecuado para aprender.
#11 Python tiene de malo el forzar la tabulación para darle sentido al código, en una línea metes espacios y en la otra tabuladores y te has cargado el programa. Yo iría más por lenguajes como swift o kotlin, mucho más modernos y con muchas más posibilidades. Y son lenguajes tipados, que es algo que me parece importante para programar cosas serias.
#57 Python no es antiguo y tiene tipado fuerte.
#63 Python no tiene tipado. Tidas las variables son iguales, los campos de las estructuras se crean dinámicamente, no se compila para detectar errores de código, la tabulación es una pesadilla y el rendimiento es ridículo.

Sinceramente, no entiendo ese fan por Python. Es un lenguaje script para ubas pocas lineas de código al estilo MATLAB. Ya está. Pero sí he visto como hubo que tirar un millón de euros a la basura de un proyecto que hubo que reprogramar entero en C, porque al manager le comieron la oreja con el Python.
#79 es.wikipedia.org/wiki/Python : Sistema de tipos  Fuertemente tipado, dinámico
La tabulación es una chorrada, los IDEs ya la ajustan automáticamente, te obliga a hacer legible el código, no tienes que usar llaves o BEGIN/END...

Lo que pierdes en rendimiento lo ganas en facilidad de desarrollo, todo depende del tipo de proyecto.
#87 Python tiene tipado dinámico, que es todo un coladero de bugs con programas de mediano tamaño. Para un script genial pero pasando de eso es un dolor de muelas. Y el IDE poco puede hacer para ayudarte porque puedes pasar cualquier tipo de datos a cualquier funcion y solo falla cuando se ejecuta.

A mi personalmente no me gusta para proyectos que pasen de las mil lineas de código. Me ha dado muchos dolores de cabeza.

No se puede forzar a alguien que esta aprendiendo a que los tabuladores o espacios tiene significado en un programa, es un poco locura. Sobre todo porque no se ven. Y no vas a poner a alguien que empieza a usar un IDE, asi poco va a aprender.
#79 #63 #173 Python es de tipado fuerte, tipado dinámico

Si yo por ejemplo defino una variable como
a= 8

Y luego intento guardar en esa variable
a= "b"

Me va a dar un error de type mismatch, porque espera que esa variable a sea un entero, en vez de una cadena de texto.

Confundis tipado dinámico/estático con débil/fuerte. Python es de dinámico fuerte. Dinámico, en el sentido que no necesitas declarar las variables que vas a usar, pero las necesitas inicializar, y si no has declarado una variable de alguna manera, te va a petar el programa.

por ejemplo, intenta usar:
a=8
c=a*b
Te va a dar un error, porque b no ha sido definida en ningún lado.
#63 tiene tipado wtf! :palm:
#63 Algo que por cierto no me agrada nada, es como que, bueno, programa y no te preocupes por los tipos, pero TENGO tipos y te los voy a escupir a la cara en cuanto pueda. :troll:
#63 Python es del 91, java del 95. Ahí te lo dejo. Python no tiene tipado, ni javascript tampoco.
#57 Python tiene de malo el forzar la tabulación para darle sentido al código, en una línea metes espacios y en la otra tabuladores y te has cargado el programa.

Eso es BUENO. Es lo mejor de python.
#57 #71 no estoy de acuerdo.

Para empezar, coincido con #97 y #157: creo que obligar a tabular correcta y coherentemente es bueno para el que aprende.

Por otro lado, creo que el que está empezando no necesita aprender a programar "cosas serias", sino cosas sencillas y centrarse en lo básico en lugar de perderse en detalles como el tipado, acerca del cual se puede profundizar más adelante con otros lenguajes.
#97 Ya me dirás tu como explicas a alguien que un programa no funciona porque una linea tiene un tabulador y la otra 4 espacios en blanco. Si estas con un IDE todavia lo ves, pero en un editor de textos normalito ni te enteras que esta pasando. Y no prentenderás enseñar a programar con un IDE, eso si que no tiene sentido.

Uso Python a diario y cada día me gusta menos.
#97 Pregunto desde la ignorancia ¿Es necesario tabular, no se pueden omitir las tabulaciones?
#97 Pues yo le tengo que dar la razón a #171. No se me olvidará nunca la primera vez que escribí algo en Python, para modificar a mi gusto un mod del Civilization IV (que hace uso de ese lenguaje, entre otros). No tenía IDE, así que usé el Notepad++ para hacer los cambios. Era bastante sencillo: desencadenar una declaración de guerra en varios turnos concretos. No tenía ni que inventar nada, sólo copiar el código de otros eventos similares ya existentes y modificarlo pertinentemente. Bueno,…   » ver todo el comentario
#57 Si no eres capaz de usar los espacios o los tabuladores de forma coherente deberías dedicarte a otra cosa.

No hay nada peor que un programador descuidado.
#11 Si vas a enseñar a progranar, que aprendan a programar con un lenguaje de programación, que luego ves en las empresas barbaridades infumables hechas con Python.
#71 Como el buscador de Google!
#73 Dudo que el buscador de Google esté hecho en Python, como mucho lo habrán utilizado para algún módulo suelto.
#11 Para nada:

C.

Aprendes que estas haciendo. Aprendes que esta haciendo la maquina con lo que tu ordenas.

A partir de ahi C++, Java, python, kotlin... lo que quieras, pero para aprender: lo basico.
#95 Pascal es mejor para aprender y se parece mas a pseudocódigo.

Python por sintaxis tampoco me parece malo, pero luego tiene el problema del tipado, ya que si, creo que debes tener unas bases y el tipo estático es el mejor. Lo que nos lleva a Pascal o Ada, que es el lenguaje que se usaba en la UIB.
#95 C es demasiado enrevesado para el que está aprendiendo. En mi opinión es un lenguaje mucho más adecuado para gente que ya tiene nociones. Y te lo digo porque yo aprendí con C.
Que aprendan programación funcional. Haskell, por ejemplo. Luego no lo van a usar, pero los conceptos los pueden usar en casi cualquier lenguaje y seguro que les cunde.
#14 Yo creo que alguien que se tome la informática en serio tiene que aprender programación funcional en algún momento, pero no al principio. Simplemente porque el modelo imperativo ("yo le voy dando instrucciones a la máquina, le digo haz esto, y ahora lo otro...") es mucho más sencillo conceptualmente que definir funciones matemáticas que te devuelvan lo que quieres.
#67 El funcional es una muy buena introducción a la programación para alguien que ya viene con cierta base de matemática. Haskell en particular tiene una sintaxis muy cercana a la manera en que se expresan funciones matemáticas, lo que trae aparejado que puedes explicar conceptos de algoritmos usando conceptos matemáticos como ejemplos.

El problema de hacer algo funcional PURO a la hora de empezar a aprender a programar es que si quieres hacer algo medianamente serio y bien tienes que meterte…   » ver todo el comentario
Esto ya lo decía Niklaus Wirth hace 40 años... por eso diseñó Pascal y luego Modula-2 para enseñar a programar a sus estudiantes.
#16 hace 40 años existía Java? Jaja
es cierto, lo mejor es hacer como yo, que empecé programando en html y css 8-D 8-D
#17 Querrás decir "programando" :-D
#19 #17 En el currículum luce mucho lo de programación en html. Excepto si es para un trabajo de programador, claro.
#17 Yo empecé programando un despertador 8-D 8-D
#23 Yo un vídeo VHS :troll:
#30 yo una calculadora Casio. :-D
#30 yo haciendo unos programas Beta...
:troll:
#17 Yo empecé con un software que facilitaba mucho la creación de aplicaciones: NeoBook. Luego en mi afán de aprender a crear plugins para NeoBook que amplían enormemente las funciones de las aplicaciones que creas, me metí a aprender Pascal con Delphi, imagínate chiquita transición cuando el lenguaje de NeoBook era un poco a lo Python, las variables no tenían nunca tipo y en Delphi había que definirlo todo, y los plugins usaban mucho los PChar para comunicarse con NeoBook xD los plugins en…   » ver todo el comentario
" Por eso es un error enseñar con Java porque los programadores no tienen idea de lo que están haciendo" WTF. Si el profesor sabe explicar bien los conceptos de programación, porque los programadores no van a tener ni idea de lo que están haciendo? Por no tener punteros? Venga va, a otro con la monserga del abuelo cebolleta.
#18 La única piedra es que en el Hola Mundo ya tocas las clases, los atributos, los modificadores de acceso, los métodos, sus argumentos y retornos y los métodos estáticos. Si salvas eso o pasas de puntillas, no sé dónde está el problema. Se les supone un nivel a los universitarios.
#25 claro, eso se explica diciendo: esto lo volveremos a ver más adelante. Y luego, cuando se enseña cada uno de esos conceptos, se vuelve al Hola Mundo, que encima será un sitio ya conocido. En mi opinión, si empiezas con un lenguaje que tiene punteros, vas a marear más que otra cosa.
#18 Python no tiene punteros, no es verbose, los conceptos de estructuras son más rápidos y sencillos de implementar, se puede crear aplicaciones interesantes con más facilidad y menos líneas de código,etc.

En definitiva, la curva de aprendizaje es más corta y la barrera de acceso al mundo de la programación es más fácil de saltar.
#56 En general estoy de acuerdo, pero también pienso que python tiene mucha magia entre medias, y eso también puede ser contraproducente. No te olvides que al final lo que se intenta es educar a un profesional, si es por escribir líneas de código y hacer cosas, pues igual no necesitas ir a una universidad para aprender python...
#56 el problema es que en el mundo laboral, al final tendrás que aprender Java. Porque no aprenderlo desde el principio?
Tonterias.

El miedo a Java es infundado e incomprensible. Incluso es posible programar en Java con un estilo tirando a Pascal dejando mucho de lado la programación orientada a objetos al principio. La programación orientada a objetos no es tan complicada de entender (si no te metes de lleno con temas de estructuras de datos avanzadas) y permite que incluso gente que no entiende bien como funciona internamente un ordenador escriba programas de forma ordenada y efectiva que resuelven problemas del mundo real.
#26 No confundas miedo con el asco. Y sí, una de las peores decisiones que se tomarón en Android fue elegir Java.
#83. Android dispone de un SDK de Java y de un NDK de C y C++ para aplicaciones nativas :

'...The Android NDK (Native Development Kit) is a toolset that lets you implement parts of your app in native code, using languages such as C and C++. For certain types of apps, this can help you reuse code libraries written in those languages...'

public class MyActivity extends Activity {
/**
* Native method implemented in C/C++
*/
public native void computeFoo();
}

NDK : developer.android.com/ndk/index.html
SDK : en.wikipedia.org/wiki/Software_development_kit
#86 Por mucho NDK que uses Android sigue siendo Java y todo la interacción con la interfaz, etc, es en Java.
#162 Y aunque así fuera en parte, ¿cual es el problema? ¿es qué funciona mal? ¿es desesperadamente lento? ¿no vende?
(CC #86)
#169. Android es un compromiso entre coste por hardware y coste por software que cumple su propósito. A mi tampoco me parece perfecto ni la panacea, pero desarrollar al nivel que pides sin duda encarecería el producto y no cambiaría sustancialmente la experiencia de uso al usuario profano en materias de computación.

Para todo lo demás un portatil o un PC de sobremesa.
(CC #164 #86)
#86 Algo extremadamente difícil de hacer con Android es programar módulos con el ndk y el resto con el sdk.
Cualquier aprendiz abandona el día uno si le metes en semejante berenjenal.
iOS lo resuelve mucho mejor... Tienes una librería compilada en C y Objective-c o swift te la leen al añadir los headers.

Cuando programas para una plataforma móvil el lenguaje es secundario. Lo relevante es manejarse con el entorno de desarrollo/ide... Conocer el sdk, los widgets, las interacciones etc. Ahí el…   » ver todo el comentario
#83 ¿Qué hubieses elegido para Android?
¿No es es php la foto de portada del artículo?
#28 Sí, el artículo trata sobre Java, así que lo mejor es poner una foto de código PHP para ilustrarlo.
#91 Sí, creo que lo que escribe es klingon.
Me encantan esas comparativas de lenguajes y framework que se basan en comparar hello worlds.

Pues ale, a crear empresas de hello world.
#31 Lo del "hello world" aquí es pertinente porque no se trata del uso empresarial de la programación, sino de cómo empezar a aprender a programar.
"Las universidades de EEUU al fin lo han reconocido: empezar en matemáticas por las derivadas es una mala idea."
#32 Y la solución que proponen es enseñar a usar wolfram alpha...
Ada FTW!
#33 Ufff, nunca comprendi el amor por ADA. Tuve asignaturas de Sistemas Operativos en la Universidad con ADA y esas enormes cadenas para pasar entre Bounded y Unbounded String me parecia de todo menos una forma optima de programar.

En cuanto al articulo, yo en su dia empece con Pascal y al principio pensaba que para que daba un lenguaje que nunca iba a usar, cuando descubri C, sus punteros y su manejo de memoria agradeci enormemente haber aprendido a utilizar punteros de forma mucho mas simple en Pascal.
#33 En mi universidad enseñaban con Ada. De estudiante no entendía por qué, si es un lenguaje que no se utiliza apenas, pero después vi que para aprender es un lenguaje muy adecuado. Tiene de todo y se puede aprender de manera escalonada: tipado fuerte, punteros, orientación a objetos (que no utilizas si no quieres) y concurrencia a alto nivel (barreras, monitores), así que yo recuerde.
Lo que mola es empezar con Div2 8-D .

Sí, soy un abuelo cebolleta, lo admito.
Mis primeros lenguajes fueron C# y Python y no podría recomendarlos mas.

La sintaxis de python es muy cercana a un lenguaje de scripting, con lo que es extremadamente facil iniciarse. Mientras que C# es un lenguaje de 3º generacion un poco mas moderno que java. Si combinas las convenciones de ambos lenguajes, terminas un estilo de código realmente limpio.
#40 El C# uno piensa que es un buen lenguaje, porque en principio te permite crear codigos más robustos, hasta que te das de narices con el problema de los stuttering.
Una de las soluciones es pasar a utilizar structs en vez de clases y gestionar la memoria con el stack. Entonces te das de narices con otro problema, de que no existen default constructors, y que al no existir referencias tienes que hacer cosas raras para modificar los datos en una List, por ejemplo.

A parte de que la gente se…   » ver todo el comentario
#94 En medida de lo posible C# protege al programador de si mismo. Es un lenguaje que evita al programador amateur cometer muchos errores comunes, y eso es bueno para adquirir buenos habitos.

En cuanto a lo de aplicaciones en tiempo real... El rendimiento de C# es muy alto. Hay pocos casos en los cuales hay que realmente necesites recurrir a lenguajes de bajo nivel. Ya depende de la finalidad del programa.
Java tiene una API gigante que para cualquier cosa que quieras hacer, ya existe una función y si encima lo usas con IDEs modernos que te autocompletan todo... ya ni te hace falta saber como funciona una lista.

Pero bueno, creo que cada punto de vista tiene su lógica.
Que prueben con javascript, que el ecosistema ahora es facilito jajajajaja
Yo aprendí Java, luego C y luego C++. Creo que es un buen orden, pero no habría estado mal empezar con algún lenguaje de script más sencillo antes de Java.

Recuerdo mi primera clase de programación:

PROFESOR: La programación orientada a objetos es muy sencilla, tan sólo tenemos que representar las clases, por ejemplo un Camión. ¿Qué tiene un camión? Cuatro ruedas, pues eso son los atributos. ¿Qué hace? Avanza, pues eso es un método.

ALUMNOS: ¿Pero qué cojones nos estás contando?

PROFESOR:…   » ver todo el comentario
#51 Aquí lo clásico era :

1.-Llegar a clase
2.-Ver llegar el profesor 30 minutos tarde con un café y un diario
3.-Encender el proyector y colocar un pdf.
4.-Leer el pdf.
5.-Decir que "aprender a programar se tarda una tarde, aprender a dominar el código se tarda toda una vida" al final de clase.
6.-Recordarnos que miremos el moodle para las practicas y adiós.

Desde entonces, universidad online, la mejor decisión de mi vida. Por suerte, pasé antes por un CFGS, y allí nos enseñaron pseudocódigo en papel seguido de C, Java, HTML, PHP, CSS, JavaScript, C#, algo de Python y otros "códigos" que ya ni recuerdo el nombre.
Mi primer lenguaje fue Visual Basic. Me lo enseñó mi padre a los 11-12 años. A los 14 o así me compré un libro de C++ (mi padre no le daba a eso) y ese fue mi segundo lenguaje.
Lo que se ve en los comentarios es que hay mucha gente programando que no debería estar currando en ello, madre mía que cantidad de despropósitos.
Yo creo que el problema de fondo es que ha terminado "ganando" la teoría de que la Universidad debe preparar para el mundo laboral y no debería ser así.
La universidad debería dar una base sólida de conocimientos teóricos lo más absolutos e inmutables que permita el estado de la ciencia y el conocimiento, y sobre eso que el alumno practique con "el mundo real" en las asignaturas "laboratorio" (que al menos había cuando yo estudié, ahora lo mismo se las han…   » ver todo el comentario
#64 Pues la teoría de que la Universidad debe preparar para el mundo laboral parece que aún no ha ganado si las universidades de EEUU dicen que java no es adecuado para aprender a programar.
A mí lo que me parece una mala idea es empezar por JavaScript o cualquier otro lenguaje interpretado y debilmente tipado donde el intérprete hace lo que le sale de las bolas y tú no tienes ningún control, ni responsabilidad, ni mucho idea sobre lo que está ocurriendo a bajo nivel.

Lo de mayor abstracción y tal está muy bien...y que el programador se concentre en la lógica pero cuando ya tienes claros los conceptos y fundamentos. En otro caso es como ir a la autoescuela y hacer prácticas en un fórmula uno.

(En mi modesta opinión de desarrollador cutre y salchichero)
#66 Javascript FTW  media
#76 Oye, pues poca broma. Javascript bien aprendido es un puntazo, y desde que Node.js esta dando la chapa hay un ecosistema bastante majo. Pero claro, lo de usar prototipos en vez de herencia es un mindfuck como te pille con el pie cambiado...
#76 cuanta maldad xD
#66 Sí, pasar de Java a JavaScript como lenguaje introductorio es lo que se dice saltar de la sartén para caer en las brasas. El libro más recomendado para JavaScript es uno que se llama "JavaScript: The Good Parts", y el paradigma del lenguaje es una variante rebuscada de orientación a objetos.

Estoy de acuerdo con lo que decía Gallir: creo que, si de verdad se quiere que el alumno entienda lo que está haciendo, lo mejor es empezar por C. Es cierto que no es muy glamuroso, y que…   » ver todo el comentario
Se introduce a la idea de que es mala práctica enseñar Java con el argumento de que con pocas instrucciones haces mucho. Pero luego promueven Python como lenguaje alternativo. WTF?
#92 En este artículo no he visto lo que dices, se dice esto:

"Hay que aprender la lógica de la programación. El lenguaje es lo de menos. Por eso es un error enseñar con Java porque los programadores no tienen idea de lo que están haciendo"

Algo que en mi opinión también es un problema de python también, en cuanto quieres hacer cualquier cosa con un mínimo de utilidad estarás usando instrucciones con mucha magia por debajo.
A mi no me parece algo tan simple, por ejemplo en python te encuentras de repente con que hay mucha magia de fondo por otra parte javascript es de lo más cerdo por todas las barbaridades que te permite hacer, y si empiezas por C también tienes que dar cierto salto de fe a la hora de escribir tu código.

Tampoco pienso que sea lo ideal empezar por java, pero tampoco pienso que sea algo que por sí mismo convierta a buenos alumnos en un desastre, el problema de la motivación me parece más grave. Los profesores tienen que motivar a los alumnos, pero no todo puede ser que el profesor motive, la principal motivación la tienen que encontrar ellos mismos. Si no les motiva estudiar una carrera pues igual deberían irse a otra...
#93
Como si no hubiera magia en Java xD xD xD, más que en Python.
Pdp11 y así fijo que sabes lo que estar haciendo xD
#99 echale un ojo a hackmem
comentarios cerrados

menéame