Tecnología, Internet y juegos
401 meneos
5279 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
149 252 4 K 357
149 252 4 K 357
  1. #199 yo creo que las estructuras de datos son mucho más fáciles en Python que en C, donde el array es en realidad un puntero que apunta a su primer elemento, un anacronismo debido a la carestía de la memoria cuarenta años atrás que hace que para pasar un array como parámetro en realidad pases un puntero, lo cual es lioso para el que no tiene ni pajolera idea y no sabe ni lo que es un puntero.

    Yo pienso que es un error usar espacios, sin embargo no veo nada de malo en enseñar a hacer las cosas coherentemente desde el principio. Empezar haciendo todo manual, pero cosas simples, para más adelante ir automatizando dichas cosas simples y centrarse en cosas más complejas.
  2. #190 Sí, era un mal ejemplo. Porque realmente estamos sobreescribiendo la definición anterior.
    Pero intenta hacer esto:
    a= 8
    b= "c"
    c = 8 + c
    Te va a dar un error, porque tienes un tipo entero + un tipo string. Y te va a petar. Esto es porque es tipado fuerte pero dinámico. No necesito de clarar que tipo de variable voy a usar.
  3. #141 Al 90% de los máquinas en un campo concreto, se los destruye con la envidia de sus compañeros.
  4. #195 Hechos, pero no a medida. Trabajo con una plantilla de esas y a veces es un coñazo no poder colocar ciertas cosas de forma más clara. Pero la plantilla de marras es necesaria para evitar que el código se convierta en una guarrada debido a que muchos programadores, si les dejas, no son capaces ni de poner las cosas debidamente alineadas.

    Además las plantillas impiden hacer un uso creativo del espacio, por ejemplo en mis proyectos, si tengo el ruler (la línea que marca hasta dónde terminar las líneas) a 80 carácteres, a veces pongo ciertos comentarios justo a partir de dichos 80 carácteres, así quedan justo a la derecha del ruler, es muy útil para anotar ciertos TODO: y que queden muy visibles.

    Recuerdo que una vez leí un artículo sobre lo difícil que era hacer un formateador de código que dividiese las líneas largas de la mejor forma posible.

    Por otro lado los formateadores de código no siempre están disponibles y es importante saber adaptarse y respetar las reglas de estilo del archivo en el que estás trabajando. Alguna vez me ha tocado editar código entregado en la universidad y al abrirlo estaba todo descuadrado porque habían mezclado espacios con tabuladores. Una persona no debería salir de la universidad así, y mucho menos estar dentro dando clase :palm:
  5. #200 Yo he programado en Python. Y programo en Python.

    Mentira. Hay tipados dinámico/estático y débil/fuerte.

    Que no declare la variable, no significa que no esté tipado. Simplemente no la tengo que declarar antes.

    Sí, quise sobresimplificar el ejemplo de los tipados, y no pensé en que sobreescribía la definición.

    Intenta en Python:
    a= 1
    b="a"
    c= a + b
    A ver que te sale. En JavaScript eso te funcionaría, en Python no, te da un error de tipo incompatible.
  6. #200 si no especificas el tipo de variable entonces es tipado dinámico (frente a estático).
    Tipado fuerte o débil se refiere a sí puedes trabajar con variables de distinto tipo o no. Por ejemplo en JavaScript puedes hacer 8+"3", por lo que es tipado débil. En Python no puedes, por lo que es tipado fuerte.
  7. #202 Eso es un error en tiempo de ejecución, lo cual es un problema. Ahora prueba esto en Python, veras que divertido:
    c = 8 * "2"
    Funciona y ejecuta sin problemas.
  8. #161 No si ya, si lo vivo a diario, la gente programa a cañonazos y luego "egke esto tarda mucho", "egke me tuesta el SQL Server cuando lo lanza" etc etc. Yo aprendí a programar en papel, pascal y C, al menos en mis tiempos en mi facultad era así, pensando en la complejidad de los algoritmos etc etc. Pero la triste realidad es que la gente se molesta muy poco, en este y en otros tantos trabajos...
  9. #207 Si Python fuera compilado, en esa operación de ejemplo que te puse, te petaria como type mismatch.
    Eso no es un problema de tipos.

    En C o cualquier otro lenguaje, esa operación equivalente haría lo mismo.
    Mira, lee sobre esto:
    en.wikipedia.org/wiki/Strong_and_weak_typing

    Un ejemplo de tipo débil, serían las variables Variant de Visual Basic.
  10. #205 en el contexto del que hablamos es de si se tiene o no que declarar el tipo de variable.

    No te quito razón en la teoría.
  11. #99 echale un ojo a hackmem
  12. #172 si, lo es.

    Pero te explica como funciona todo. A partir de conocer ese puedes intuir q hacer por debajo otros como python o java...

    Y si estas aprendiendo...

    Tampoco digo conseguir ser hipereficientes en C, sino tener unos conceptos y capacidades basicas para interiorizar como funciona.
  13. #210 Entonces estamos de acuerdo en el concepto, pero no en la terminología :-)

    Ciertamente, en Python no necesitas declarar la variable, pero eso no no significa que no haya tipos de variables. Y que, si intentas hacer operaciones con el tipo equivocado de variables te vaya a petar.

    E incluso en Python podrías declarar una variable. Por ejemplo:

    from typing import List
    Vector = List[float]

    def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]


    Aunque eso no es lo común.
  14. #70 /Si plas plas/ en inglés, en español he oído "ce más más".
  15. #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.
  16. #126 Sí, tiene tipado fuerte, pero dinámico. Ya he puesto varios ejemplos.
  17. #212 Creo que para eso es mejor Pascal que C.

    E incluso con Pascal/FreePascal puedes llegar hasta la POO.
  18. #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
  19. #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...
  20. #47 Es go (golang) una opción?
  21. #219 A mi me gustaría saber JavaScript bien aprendido, pero no sé realmente qué es lo que se debe y lo que no se debe hacer... Supongo que igual empezar por "JavaScript the good parts" (tengo JavaScript la guía definitiva y poco la he mirado). ¿No te parece más adecuado usar coffescript o typescript?
  22. #200 Se especifica de forma dinámica, en ejecución.
  23. #174 "Aunque supongo que quedaría peor decir "si mas mas""
    Depende del environment :troll:
  24. #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.
  25. #157 sí hay algo peor y es el pedante tipo de meneame, y tu te llevas mínimo el premio del mes, optando fuerte por el del año
  26. #187 Un editor de texto como sublime text o notepad++ es suficiente, colorea el código y te ajusta la tabulación de forma adecuada.
  27. #135 yo en la UNED di modula 2
  28. #223 #174 "No menos menos" {0x1f602}
  29. #221 Más fácil, seguro. Mas adecuado... al final es una capa de abstracción adicional. Es como si me preguntas si es mejor empezar con Javascript a pelo o con AlloyUI/AngularJS/MoustacheJS/jQuery.

    Cuando yo me pase de backend a frontend empecé con uno de la pragmatic library y ese que comentas, y hace poco repasé "Eloquent JavaScript: A Modern Introduction to Programming", que no está mal tampoco (aunque es un poco llover sobre mojado, el de la serie the good parts ya te da una base decente).
  30. #227 sip, aún se cuentan historias, ahora están con C+-, que es como un C capado con cosas extrañas y que, curiosamente, enfocan a orientación a objetos con tipos abstractos de datos a pesar de ser la primera asignatura de programación de la carrera...
  31. #195 #192 ¿Por cierto, que es más correcto, decir indentar o identar?
    Yo siempre he usado "indentar" pero no lo tengo muy claro...
  32. #199 En qué te basas para decir Y python para las estructuras de datos me parece otro dolor de muelas.
  33. #173 Todos los lenguajes tienen tipos. Los sistemas de tipado se pueden dividir en:

    - Dinámicos (que se establecen en "runtime") como los que citas, Javascript, Python, PHP, etc
    - Estáticos: los tipos se establen y se comprueban antes de que el programa se ejecute (Java, C++)

    O bien en:
    - Tipos fuertes, una vez establecido el tipo de una variable no se puede cambiar, como en Python
    - Tipos débiles, sí se pueden cambiar (JS, PHP)
  34. #108 Con C# te evitas los unbounded errors de memoria, pero no es para nada seguro por el tema de las excepciones. En la programación moderna el try catch ya no se recomienda ni se utiliza y C# nunca sabes si una función te puede lanzar una excepcion y cargarse todos los procesos. Al final acabas haciendo cosas tan ridículas como poner el bucle main en un try catch.
  35. Odio Java.
  36. #236 De donde te sacas que usar try catch sea una mala práctica, o que no se use? Todo lo contrario. De hecho lo que es una mala práctica es usar un try catch en main. Es el unico sitio donde no deberías usarlo, de ser posible.

    Cada método debería tener un bloque try con multiples catch, donde tratas cada posible error como sea oportuno. Ahora bien, si no se trata el error en el bloque catch, que ocurre? La excepción se sigue elevando, método a metodo por la pila de llamadas hasta llegar a main y por ultimo, al sistema operativo. Fijate si has tenido oportunidades de capturar el error antes de llegar a main.
  37. #208 Ahí le has dado. La gente no se molesta ni tiene amor propio en ningún trabajo.
  38. #235 Me refería a que no tiene un tipado fuerte.
    El siguiente código funciona en python y no da error en tiempo de ejecución
    a=3
    a="b"
    b=2 * "c"
  39. #243 Se lo que dice la wikipedia:
    Indentación es un anglicismo (de la palabra inglesa indentation) de uso común en informática; no es un término reconocido por la Real Academia Española (consultado en la vigesimosegunda edición). La Real Academia recomienda utilizar «sangrado».

    Y como tu dices identación...
  40. #234 Es una opinión personal. La orientación a objectos de Python no me parece apropiada y no evita cometer muchos errores por la falta de comprobación de tipos y métodos en herencia. Simplemente me resulta más fácil crear y depurar, por ejemplo, un árbol b en java/swift/kotlin que en Python.
  41. #241 Los bloques se interpretan a partir del indentado. Es necesario tabular correctamente.
  42. #244 Como yo ya dije, sí que es de tipado fuerte.

    a=3
    a="b"

    Es como si en C hiciera
    int a
    str a

    Y la última declaración es la que tuviera valor.

    Y sobre lo de b=2*"c" es válido porque le estas diciendo que escriba "c" 2 veces. Estás haciendo una operación válida sobre una cadena de texto.

    En un tipado débil, no fallará una operación de tipo
    a = 2 + "c"
    En Python eso no funciona.
  43. #244 Yo también te remito a la wikipedia ;)
    en.wikipedia.org/wiki/Python_(programming_language)
    Typing discipline  Duck, dynamic, strong
  44. #212 el problema es que, en mi opinión, para aprender algo hay que ir de lo fundamental al detalle y no al revés, y creo que con C es mucho más fácil perderse en detalles. Pero bueno, supongo que hay opiniones para todos los gustos.

    Estoy de acuerdo con #217: para aprender con C, mejor Pascal, que es más o menos equivalente, pero más simple para principiantes.
  45. #150 anda que no hay problemas de memoria en aplicaciones empresariales xD. Te encuentro 20 riesgos en cualquier entorno de prod.
  46. #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 primer lenguaje que aprendas da igual.

    Con C aprendes a programar desde el cimiento. Y tardas mucho en hacer algo que mínimamente sirva para algo.

    Con python o javascript muy rápidamente haces algo que sirva para algo pero te saltas toda la complejidad.

    Personalmente no usaría un lenguaje para aprender a programar. Usaría dos: uno compilado, fuertemente tipado, y otro interpretado y dinámico.
  47. #146 pues a ti algún título te debe faltar para combinar de esa forma xD
  48. #171 si estás usando un editor de texto normalito para desarrollar o leer código, estás haciendo algo mal xD
  49. #153 porque no estés de acuerdo conmigo no tienes porque votaeme negativo. A lo mejor "sobrar" no es el verbo adecuado, pero desde luego no es tan importante ahorrar memoria como lo era antes.
  50. #186 Como instancias un objeto dinámicamente en C++?
  51. #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.
  52. #56 el problema es que en el mundo laboral, al final tendrás que aprender Java. Porque no aprenderlo desde el principio?
  53. #115 Discrepo de la exclusividad que mencionas. Los SUBNORMALES que rantean en foros tienen gran parte de la culpa
  54. #258 dependiendo de lo que necesites:
    auto u = std::make_unique<int>(1);
    auto s = std::make_shared<int>(1);
    std::vector<int> v {1,2,3,4,5};
    Entre otras opciones.
    Pero si puedes tener un objeto en la pila va a ser más eficiente que tenerlo en el "heap".
  55. #108 El C# en aplicaciones de tiempo real es caca. Que se lo pregunten a la gente de Unity. llevan años peleandose con los sttuterings (micropausas) y hoy por hoy lo unico que han conseguido es dar consejos para evitar el recolector de basura.
  56. #239 Pues imaginate que estás desarrollando un controlador para un motor de avión y una rutina que mide la presión del aceite te lanza una excepción. Pantallazo "unhandled error", el avión pierde el control y se estrella. En los sistemas de tiempo real lo que se hace actualmente es si hay un error ignora el proceso. Si el programador se le olvidó gestionar el error, por lo menos no pares otra docena de procesos críticos y otros threads que están funcionando. Por supuesto es un ejemplo muy estúpido, porque nadie es su sano juicio haría el controlador del motor de un A400 con C#... o sí.

    Actualmente es uno de los mas graves incovenientes de C# que no sabes qué rutinas pueden o no pueden lanzarte una excepción, pero aún así, es una mala práctica.
  57. #264 el motivo por el que no se usan excepciones en aplicaciones de tiempo real es porque no se puede garantizar el tiempo de respuesta, no que se te pueda escapar la excepción sin manejarla.
  58. #265 En aplicaciones de tiempo real y no real. Uno te pasa una función que en la versión 2.0 el becario le metió un excepción y ya tienes un problema. Y lo peor es que ese fallo solo te salta cuando ya tienes la aplicación funcionando.
  59. #264 El try..catch es una mala práctica en C#?

    Pero si los bloques los implementan la mayoría de lenguajes modernos, como Java, C++ o Python. Que alternativa hay, a los try..except?
  60. #266 si no tenéis tests y no revisáis el código ( de becarios y de no becarios), tenéis un problema mayor que usar o no excepciones.
  61. #267 en c++ van a añadir el std::expected.
    Es una técnica que se usa en programación funcional. Hay un vídeo de Andrei Alexandrescu que explica muy bien el concepto
  62. #159 Un respeto que yo lo era!!! pero como de la droga se puede salir :-D
  63. #268 En el mundo ideal seguro que debería ser así, pero en el mundo real si las cosas pueden fallar, entonces fallarán.
  64. #267 este es el vídeo: channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandres
    En boost está también la librería Outcome.
  65. #271 igual que van a fallar si te cambian una función de devolver void a devolver un código de error.
  66. #267 Lo que yo he visto es que cuando en un proyecto se estimula el uso del try catch, acaban utiliando para control de flujo código y cosas peores. Además, al final lo que todo el mundo acaba haciendo es
    try
    proceso()
    catch
    throw( que_lo_gestione_otro)

    A esto lo llamo estilo de programación de dar patadas Pero si obligas a la gente a escribir
    if (proceso() == null)
    ...

    En cierta manera le estás obligando a que sea él quien gestione el error o no. Pero como dirían en el circo, la función debe continuar.
  67. #274 eso está bien si lo puede gestionar. Lo más probable es que no pueda y tenga que propagar el error hasta que llegue a un punto donde si se pueda gestionar.
  68. me cansa ya leer mierdas de Xataka con su lenguaje ambiguo que esconde la tira de errores de concepto y artículos escritos en 2 minutos entorno a una anécdota. Ojo a la frase: "mientras que otros apuestan por JavaScript, MATLAB, Scheme y Scratch.". En serio se puede comparar Scratch con Java? Yo creo que maltratar a Java es una afición que deberían contar ya como deporte olímpico porque nadie sale a defenderlo. ¡Uy qué malo es Java! Cuando salió era ciencia ficción, una maravilla muy pero que muy bien pensada, hoy lo he visto comparar incluso con PHP, que está improvisado sobre la marcha y tan lleno de agujeros que da vergüenza ajena. Aprender Java o aprender Python es casi lo mismo, no nos rasguemos las vestiduras tan pronto.
  69. #166 Que tiene en común COBOL con Java?

    No son comparables.
  70. #260 Porque una vez adquiridos los conceptos de programación y orientación a objetos con Python (u otro lenguaje parecido), pasarse a Java es bastante asequible. Al parecer, en este orden es más rápido aprender bien la programación.
  71. #274 El try...catch se usaría donde yo no puedo gestionar el error. Por ejemplo al intentar abrir un fichero, puedo tener varias condiciones pero algunas se me pueden escapar.
  72. #273 No, porque que una función te devuelva null es algo esperable y estandar en cualquier libreria.
  73. #280 sí originalmente devolvía void, y cambian la función para que devuelva un código de error es lo mismo que si te cambian una función que no lanza excepciones a que pueda lanzar excepciones. Cualquier código que usase la función original que no se actualice para contemplar el nuevo interfaz va a terminar mal.
    Es por eso por lo que los interfaces no se cambian, sino que se declaran como obsoletos.
  74. #186 yo también huyo del new/delete, y también puedes usar C++11 y posteriores, smart pointers etc
    El uso de excepciones es "discutible", aunque los trycatcheros se me tiraran encima, hay lenguajes
    nuevos que las evitan por diseño, como google go
  75. #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
  76. #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.
  77. #283 Ya, pero eso le pasa a cualquier lenguaje con solera. En mi universidad se enseñaba C++98, y era una castaña. El día que descubrieron C++11 y C++14, los propios profesores fliparon. Inferencia de tipos (muy limitada, pero ahí está), lambdas, punteros inteligentes, bucles foreach, y muchas más cosas. Lo combinas con bibliotecas como Boost o Qt, y es una maravilla.

    (sí, me gusta Boost)
  78. #282 la solución en go es parecida a lo que he comentado que van a añadir en c++: std::expected o boost::outcome. He puesto el enlace a un vídeo en 272.
  79. #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.
  80. #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.
  81. #166 Entorno/Framework/API <> Lenguaje.

    Cuando dices que no entiendes "para qué tipo de tarea puede ser ideal el Java" y lo comparas con COBOL y C (cuando ninguno de los dos son orientados a objetos, ni tienen GC, ni son multiplataforma y un largo etcétera) demuestras simplemente que no conoces Java lo suficientemente bien, y en tal caso, deberías replantearte la manera en que opinas sobre tecnología.
  82. #128 Estas confundiendo el rol de una universidad con el rol de una academia. El objetivo de una universidad no es insertarte en el mercado laboral, sinó el de convertirte en un licenciado/ingeniero. Es decir, que interiorices los fundamentos teóricos y prácticos de la disciplina en la que pretendes titularte. Con esos fundamentos (y bastante de tu parte) deberías ser capaz de conseguir un trabajo medianamente decente incluso antes de terminar la carrera.
  83. #287 pero tú qué sabes que he hecho y dejado de hacer? Te voy a contar que paginar un cursor es tan de los 90s que no se ni que decirte... Además crear un índice es más barato que la RAM, así que ni aplica a este caso que he dicho. Y ahora, hablando de ingeniería del software seria, no de una regla un poco al azar que no sabes ni interpretar.
    Primera parte, optimización prematura es un anti patrón. Segunda, ante rendimiento o legibilidad a no ser que sea un cuello de botella y sea mejor rediseñar el codigo, siempre es preferible la legibilidad. Y como última parte, el auto escalado y la paralelización están precisamente para este tipo de problemas.
    Luego si quieres poder hablar se técnicas avanzadas de proceso de volumen de datos basadas en streaming, batching o envío de mensajes en plataformas como Kafka...
  84. #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 en conceptos bastante complejos como monoides, mónadas (que son una puta pasada y tienen paralelos directos con otros conceptos matemáticos como la teoría de grupos), functores y demás pijerías.

    Lo que sí es cierto es que casi cualquier introducción a la programación debería centrarse en enseñar los rudimentos del pensamiento lógico, arquitectura de ordenadores, algorítmica, estructuras de datos, etc, y dejar las características "especiales" de los lenguajes para mas adelante.
  85. #287 por cierto, lo de los errores y el tiempo es otra mentira de los 90s, actualmente los errores están ya comprobados que el coste es lineal en el tiempo. Ya no es una curva exponencial. :hug: :hug: :hug: :hug:
  86. #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
  87. #277 Runtime para ejecutarse en cualquier plataforma en un caso , maquina virtual en el otro , asi a bote pronto (igual que el .net... veo una tendencia). Pero mas por la increible cantidad de verborrea para conseguir cualquier tarea sencilla
  88. #290 El COBOL no es multiplataforma? vale...
    No conozco el Java bien , es cierto , solo hice mi proyecto fin de carrera con Java cuando todavia era una beta , y acabe aborreciendolo , quizas ahora con el Kotlin vuelva a probarlo en algun momento.
  89. #294 "actualmente los errores están ya comprobados que el coste es lineal en el tiempo". Puedes mostrar alguna fuente fiable que lo demuestre?
  90. #257 ¿De qué negativo hablas?
  91. #297 O sea, hiciste tu proyecto de fin de carrera allá por el '95/96/97 y asumes que un lenguaje que ha tenido una adopción apabullante en el 2000 no ha cambiado en más de 20 años? Ya sólo la adopción del API de Collections en Java 1.2 fue un salto de funcionalidad impresionante. El HotSpot en 1.3, NIO en 1.4, los Generics, el autoboxing y las anotaciones en 1.5, el soporte de lenguajes dinámicos en la JVM en 1.6, los lambdas en 1.8...

    Java ha cambiado MUCHÍSIMO desde cuando dices haberlo usado. Si eso, se ha estado quedando detrás de C# que ha incorporado auténticas maravillas como Linq, que ya me gustaría haber tenido en Java.

    No esperes a Kotlin para probar lo que puedes hacer con Java en 2017.
comentarios cerrados

menéame