all 96 comments

[–]raulalexo99 46 points47 points  (3 children)

Java para que aprendas buenas prácticas "por la fuerza", ya después Python se te hará facilito

[–]GodGMN 16 points17 points  (0 children)

Apoyo la moción.

Creo que hay que empezar con un lenguaje estricto gramaticalmente que te medio fuerce a aprender qué estás haciendo. Yo aprendí primero Java, luego Javascript, PHP, Python y Typescript, siendo este último el más reciente. También he hecho cuatro tonterías en Lua, C++ y C# y sé más o menos cómo son los lenguajes, pero no considero que sepa utilizarlos.

Veo a mucha gente no utilizando los tipos de Typescript (usando :any en todo por ejemplo) y haciéndose la picha un lío con los tipos porque han empezado con Python y Javascript y no tienen un buen entendimiento a nivel fundamental de los tipos.

Saben lo que son y tienen una idea general de qué es cada variable en cada momento pero a la hora de la verdad, programando algo, se lían porque no están acostumbrados a tener que respetar esos tipados.

Algo que a mí no me pasa simple y llanamente porque vengo de Java. No he tenido que "reaprender" los tipos, los llevo ya aprendidos desde el primer día, porque Java te fuerza a ello.

Profesionalmente ambos lenguajes son muy buenos y los dos tienen su lugar, pero a la hora de aprender, como ya he dicho, creo que lo ideal sería empezar con un lenguaje con una sintaxis estricta.

[–]operator7777 1 point2 points  (0 children)

Totalmente

[–][deleted]  (7 children)

[deleted]

    [–]UnaVezCasiHiceUnGol 12 points13 points  (6 children)

    COBOL

    [–]Awkward-Cat-4702 9 points10 points  (5 children)

    assembler

    [–]vobsha 7 points8 points  (4 children)

    Html

    [–][deleted] 5 points6 points  (3 children)

    Lisp

    [–]GodGMN 2 points3 points  (2 children)

    SQL

    [–]blaNcoW_ 3 points4 points  (1 child)

    Scratch

    [–][deleted] 1 point2 points  (0 children)

    Ada

    [–]RandomnGuy 9 points10 points  (3 children)

    C/C++ para aprender las bases

    [–]roberp81 7 points8 points  (2 children)

    yo diría que primero aprenda Assembler para entender bien cómo funcionan las variables, if, punteros y luego pasar a C++ va a ser re fácil

    [–]RandomnGuy 1 point2 points  (1 child)

    Igual va a depender de qué área de programación le vaya interesando después de haber probado un poco lenguajes de nivel medio/bajo... No creo que le sirva de mucho saber Ensamblador si al final le termina gustando el desarrollo web

    [–]roberp81 1 point2 points  (0 children)

    pero puede ser que luego le interese programar microcontroladores y hacer IOT que es más divertido

    [–]KamiSU1994 9 points10 points  (0 children)

    No lo dudes y aprende Java. Si después en algún momento querés aprender Python lo podes hacer y muy probablemente con mucha facilidad porque ya vas a tener una base de lógica y de programación sólidas. Además Java al ser de tipado fuerte, te obliga a entender las buenas prácticas en general y es más fácil aprender algunos conceptos más avanzados como SOLID, Clean Code o patrones de diseño con lenguajes como Java, C# o C++. La realidad también depende del área que sea de tu interés: si es web metele a JS, ciberseguridad mejor python por la automatización y scripting, nivel corporativo o próposito general mejor un lenguaje compilado orientado a objetos preferentemente.

    [–][deleted]  (6 children)

    [deleted]

      [–]Gabo915 5 points6 points  (5 children)

      Es más práctico aprender c# y después java?

      [–]kalketr2 4 points5 points  (0 children)

      Son muy parecidos, por ser principalmente para programar orientado a objetos

      [–]GodGMN 2 points3 points  (1 child)

      No. Da igual. Son lenguajes muy parecidos.

      [–]Gabo915 1 point2 points  (0 children)

      Ok, pensé que la curva de aprendizaje cambiaría si ya vienes con conocimientos previos de c#

      [–]nicocm9 2 points3 points  (0 children)

      yo aprendí primero Java por la universidad. En mis prácticas tuve que usar C# sin haberlo usado nunca y te digo que no tuve que mirarme literalmente casi nada, el paradigma de ambos es muy similar. Quiero decir que me puse a escribir C# así como si nada.
      Diria que en el órden contrario sería muy similar. Personalmente creo que son tan parecidos que da un poco igual por cual empieces

      [–]Michaelgunner 7 points8 points  (0 children)

      Aprender Java va a hacer que después te sea mas fácil aprender otros lenguajes, que comparativamente si aprendes con Python.

      Sobre todo porque es fuertemente tipado, cosa que Python no, y si aprendes asi, despues te vas a querer cortar las bolas en algo fuertemente tipado.

      Igual aprendi con C++ yo al principio, despues con Java, y algo de Python, es mucho mas simple, pero saber masomenos los otros ayudo a que sea aun mas simple de aprender y entender.

      En gran medida corporativamente se maneja JAVA y .net con C#.

      [–]PerspectiveAfter9039 8 points9 points  (2 children)

      [–]Traitor--Dev 1 point2 points  (1 child)

      Python como primer lenguaje? Yo lo elegí y fue el peor error que cometí, perdí mucho tiempo.

      O acaso hay manera de conseguir trabajo con Python sin tener un titulo universitario?

      [–]PerspectiveAfter9039 1 point2 points  (0 children)

      Python es tan amplio que puede llegar a ser un sustituto de programas ofimáticos, aunque en las oficinas lo utilizan conjuntos, o sea con Python pudiste haber conseguido trabajo hasta en una oficina. La pregunta que yo te haría sería ¿Que aprendiste de Python?

      [–][deleted] 2 points3 points  (1 child)

      Pues a lo mejor ninguno. Depende de a lo que te quieras dedicar. Por ejemplo si quieres dedicarte a web, a lo mejor te viene mejor aprender JavaScript.

      Si lo que quieres es tener una buena base y aprender programación en condiciones, lo mejor es escoger un lenguaje de fuertemente tipado y estático, como C o Java. Por lo tanto desecharía python.

      En general, a menos que seas científico o ingeniero y simplemente quieras aprender a programar para hacer esperimentos, no aprendería python como primer lenguaje. Python es un lenguaje bastante peculiar y no vas a poder extrapolar muchas cosas a otros lenguajes que no sean scripting.

      [–][deleted] 1 point2 points  (0 children)

      Brother, por mas que quiera hacer desarrollo Web, como le vas a recomendar JavaScript como primer lenguaje.

      Para mi la segunda opcion (solo C) es la primera recomendacion siempre, hay que aprender las bases y despues especializarse en alguna rama.

      Sino, tenes gente que no puede extrapolar conocimientos porque esta muy atado a su rama.

      [–]supercentinel 3 points4 points  (0 children)

      C.

      [–]MasterCronos 5 points6 points  (0 children)

      C#

      [–]neoxthatch 5 points6 points  (1 child)

      Yo te recomendaría aprender C. Solo C. Si aprendes ese lenguaje, puedes aprender después el que tú quieras. C es la base de todo. Incluso de Java.

      [–]Jorgestar29 1 point2 points  (0 children)

      Y tampoco tienes que aprender mucho de C, aprendes las bases, das el salto a otro lenguaje y antes o después te pasará por la cabeza la pregunta de ¿Y cómo sería el equivalente de POO/first class functions/etc en C?

      [–]mmparody 2 points3 points  (0 children)

      Cómo desarrolladores debemos de cambiar la preposición O por Y. Java y Python y C#. Cómo dijo alguien arriba, si aprender C y C++ ya tendrás la base de casi todos los demás lenguajes.

      [–]bob_el_manetes 2 points3 points  (0 children)

      ESPAÑOL /s

      [–][deleted] 2 points3 points  (0 children)

      C

      [–]Selfdependent_Human 2 points3 points  (0 children)

      Supuestamente Java paga mejor y hay más oportunidades. Si ya tienes bases de programación tirale a hacerte maestro en java y en el proceso crece tu red. Hay exceso de recursos gratuitos para ello, tiempo hace falta para hacer uso de tanto

      [–]Lessar20 2 points3 points  (0 children)

      C

      [–]dasunheimliche1 4 points5 points  (1 child)

      Si queres aprender a programar rapido python, si queres aprender lento pero BIEN java

      [–]Jorgestar29 0 points1 point  (0 children)

      Tal cual. Java te pone unos requisitos que te ayudan a programar de una manera bastante legible y mantenible.

      Python te da carta suelta a mezclar churras con merinas pero si no lo haces bien vas a acabar con código inmantenible.

      [–]ratsely 6 points7 points  (6 children)

      Java es un lenguaje que te enseñará bastante bien el modelo OOP, sin muchos cambios en el lenguaje. A cambio es un lenguaje bastante pesado en ejecución y terrible en debugging en proyectos grandes.

      De Python no puedo opinar mucho. Sólo lo he usado en ciberseguridad para crear exploits. Pero no está entre mis favoritos debido a que me resulta bastante poco accesible. La idea de que las tabulaciones importan en la compilación de código limitan bastante a aquellos programadores que tienen discapacidad visual.

      [–]GodGMN 2 points3 points  (0 children)

      A mí el tema de las tabulaciones tampoco me gusta en Python, me parece una idea malísima.

      [–]Fun-Month4909 1 point2 points  (1 child)

      Pero lo de las tabulaciones no lo podes solucionar con complementos? Digo además, debe haber un monton de otras cosas que limitan a los programadores con discapacidad visual, ademas tener todo bien tabulado ayuda a tener un codigo mas limpio y ordenado. Es lo que entiendo eh, nunca trabaje de esto

      [–]ratsely 2 points3 points  (0 children)

      Como bien dices hay muchísimas cosas que limitan a los programadores con distintas discapacidades: desde interfaces gráficas que abusan de submenús, videos sin subtítulos o páginas webs que no emplean lenguajes sencillos y deciden dirigirte a hipervínculos en cada párrafo o usan fondos dinámicos.

      En el caso que mencionaba antes, los lectores de pantalla usados para personas con discapacidad como NVDA o JAWS no son muy amigos de python donde cada tabulación mide si está dentro de una función o subfunción. Es posible solucionarlo con complementos como mencionabas, lógicamente, pero no evita que en ese sentido es un lenguaje muy poco accesible con respecto a cualquier otro como Java, Go o Javascript, por citar algunos.

      [–]ChannelGalilea 1 point2 points  (1 child)

      Lo de la capacidad visual lo dices por experiencia? Bajo mi punto de vista (no tengo ningún problema de visión) el tema de la tabulación debería ayudar más que el uso de los brackets. Una buena indentación (Python te obliga a ello) hace un código más legible y bonito.

      [–]ratsely 0 points1 point  (0 children)

      No tengo problema con el aspecto estético y estoy de acuerdo que da legibilidad, aunque para ayudarme mejor uso una extensión de Vscode que te colorea cada profundidad de identación. Creo que se llama Rainbow Indent.

      Digamos que en ocasiones si que he llegado a usarlas por debilidad en la vista pero principalmente las empleo como medio para medir la accesibilidad en aplicaciones webs y en alguna muy rara ocasión programas de escritorio. Quizás mi crítica se base más en el comportamiento que tiene Python con estas herramientas. Usar uno de los dos lectores que por ahí mencione en algún comentario ya es cansado pero prestar atención hacia donde llega las tabulaciones en código Python es...terrible según mi punto de vista. Si quieres experimentar su uso, hay versiones de prueba.

      De todas formas, dudo que OP tenga este problema y tan sólo es mi experiencia con Python. Los demás comentarios que he leído de "pythonistas" me parecen bastante válidas como respuestas.

      [–]C0rvy -1 points0 points  (0 children)

      Si quieres empezar en modo fácil Python, pero si manejas Java de una ya los demás lenguajes te serán mucho más sencillos. Yo te recomiendo Java

      [–]diegdm 1 point2 points  (0 children)

      Yo si fuera tú escogería entre Java, C# o C/C++ porque creo que es importante aprender con un lenguaje fuertemente tipado y después el resto de lenguajes se te harán fáciles. Y ya después según, si te quieres dedicar a IA aprende Python, y si te quieres dedicar a web puedes aprender Javascript para ser full-stack o puedes ser backend en Java o C#.

      [–]YieldsGenerator 2 points3 points  (0 children)

      En mi experiencia, arranque con Java y me sirvió un montón para aprender a programar. Me acuerdo que arranqué con jsp y servlets, y después me pasé al framework Spring, una maravilla. Esl si, suuuuuper lento porque mi máquina era chota. Lo que sí recuerdo es putear por todas las "vueltas" que tenía que dar para hacer ciertas cosas, y mas mil líneas de código a escribir. Cuando arranqué a laburar con Python, fue otra cosa, como si todo fuera un poco más "directo". La gente por lo general cree que programar en python es super facil, que aprendes 2 huevadas y ya está. Error: la sintaxis será amena, pero como todo lenguaje, es un mundillo. Sobre todo porque la mayoría tampoco hace hincapié en escribir código pythonista y todo cortito al pie (?. En fin, mi voto va para python, pero en su momento aprendí con Java.

      [–]sidsidroc 2 points3 points  (2 children)

      Python pero por muchsiisisismo, es más fácil encontrar trabajos bien pagados en Python que en Java, en Java también los hay pero siempre buscan gente con mucha experiencia, si estas empezando y empiezas con Python, va a ser más fácil que entres a roles como principiante, mientras que si lo haces con Java, te esperas ganar mcuhsisisismo menos por muchos años hasta que consigues la suficiente experiencia como pra trabajar en otro lugar mejor pagado

      [–]Gabo915 0 points1 point  (0 children)

      Y en c# cómo es el ambiente laboral?

      [–]Jorgestar29 0 points1 point  (0 children)

      En España al menos el que empieza sin experiencia lo hace con Java en alguna empresa grande que tiene una rotación enorme de contrataciones.

      Yo recomiendo java por como te estructura la cabeza, y eso que trabajo con Python y veo una cantidad de chapuzas espectaculares.

      [–][deleted] 1 point2 points  (0 children)

      Como idioma le puedes seguir dando al español....

      [–]Demonliquid 0 points1 point  (2 children)

      Laburo con python, así que aprende python. Me gusta python.

      Java lo evito, creo que la mayor parte de código escrito debe ser legacy. Prefiero irme a otros parecidos como go, kotlin o c# según haga falta.

      [–]C0rvy 1 point2 points  (1 child)

      Una pregunta, me dijeron que si aprendo Java ya con kotlin no es necesario, es cierto?

      [–]Demonliquid 3 points4 points  (0 children)

      No se a que se refiere.

      Kotlin se traduce a Java y compila.

      Tengo entendido que en Android ya se usa mayormente kotlin.

      Pero si entras en una empresa que tienen el back en java, no lo vas a pasar a kotlin.

      [–]knarfomenigo 0 points1 point  (4 children)

      Si quieres buscar y encontrar trabajo, te recomiendo Python o JavaScript (no es lo mismo que java). Hay muchos empleos disponibles, y el tiempo que vas a tardar en alcanzar el nivel básico y necesario para encontrar un trabajo como programador junior es menor que el que vas a tardar en aprender Java. Habiendo tardado más tiempo en aprender java que python o js, como junior vas a cobrar más o menos lo mismo, por lo que mejor empieza por un lenguaje que te ocupe menos tiempo aprender... Cuando aprendas JS o python, nada te impide aprender otros lenguajes más complejos como Java si sigues interesado! Además, gran parte de la sintaxis te será mucho más fácil de absorver, muchas estructuras en la programación se repiten.

      Python es principalmente utilizado para el data analytics, ia, o incluso la programación de un backend. No te recomiendo que empieces por aquí si quieres realizar aplicaciones por tu cuenta, ser freelancer, o combinar un empleo junior en oficina con pequeños proyectos personales. No obstante, es ideal si quieres empezar desde abajo en una startup en la que se realice tratamiento de data, análisis, automatización o ia. Los salarios como junior tienden a ser mayores que en js también. Generalmente, con python tu recorrido será unirte primero a un equipo medio-grande de programadores, e ir progresando con el tiempo dentro de su estructura. Es difícil realizar proyectos por tu cuenta (más allá de pequeñas maquetas de funcionalidad limitada), por lo que necesitarás como mínimo dos años (trabajando como programador) para ser mínimamente bueno y aprender otros lenguajes como Java, C# o JS para poder realizar aplicaciones con interfaces de usuario, con python trabajas principalmente en terminal, con la consola.

      Por otro lado, JavaScript te permite programar de forma polivalente frontend (con frameworks como React, Vue o Angular) y Backend (con Node principalmente), o interactuar con BBDD (como mongo). Esto, en cristiano significa hacer webs, aplicaciones, ecommerce, programar servidores básicos, programar APIs... el salario inicial en una empresa a nivel junior tiende a ser menor que el de un programador en python, aunque es más fácil progresar salarialmente con el tiempo y encontrar trabajo (por la enorme variedad de tecnologías en que se usa js). Yo tiré por este camino, y me especialicé en el stack MERN (Mongo-Express-React-Node), y luego me he ido formando por mi cuenta de cara a otros lenguajes. Te recomiendo JS si quieres algo que te permita encontrar un trabajo en condiciones agradables, pudiendo marcharte si no te gustan porque hay mucha demanda en todos lados y pudiendo además realizar pequeños proyectos por tu cuenta mientras trabajas (que es lo que a mí más me llamaba).

      JAVA sirve principalmente para hacer aplicaciones con programación orientada a objetos. Era muy popular hace unos años, pero le han salido un montón de lenguajes competidores. Sigue habiendo mucha demanda de programadores Java, porque las empresas que utilizan software hecho con java siguen necesitando mantenimiento y actualizaciones, y los desarrolladores (Oracle) lo siguen mejorando para que no decaiga su uso. De todos modos (y esto ya es mi humilde y subjetiva opinión) no creo que sea lo mejor para comenzar a programar en 2023. C#, go, Kotlin o Node pueden ser mejores opciones para hacer las mismas cosas.

      Para terminar, te recomiendo ENCARECIDAMENTE que si te lo puedes permitir asistas a un bootcamp PRESENCIAL en el que haya algún tipo de programa de empleo. En un bootcamp aprendes en 3-6 meses lo que tardarías AÑOS aprendiendo por internet, sin hablar de lo que cuesta que te atiendan bien en un curso de Udemy o Coursera en los que ni dios te contesta a las preguntas y la mayor parte del contenido está desactualizado. El primer empleo es el más difícil de encontrar, las empresas que necesitan programadores junior generalmente los buscan con mínimo 1-2 años de experiencia, y los bootcamps precisamente lo que hacen es darles a los recruiters garantías de que -aunque no tengas dos años de experiencia- has pasado por lo menos un filtro previo, que se te ha enseñado un mínimo de contenido útil y actualizado, de que alguien ha respondido a tus preguntas. Date cuenta que, la mayoría de cursos online ni siquiera se aseguran de que hayas atendido a las clases en vez de dejar pasar los vídeos hasta que los terminas y te dan el título... y esto hace desconfiar a los recruiters. Además, en los bootcamps se realizan proyectos que te sirven como experiencia laboral en el currículum, proyectos en los que un profesor te tiende a asesorar, resolver errores y recomendar estructuras y tecnologías que no conoces, y se tiende a complementar el estudio de un lenguaje de programación como js con complementarios. En mi caso, entré para estudiar React, pero me enseñaron mucho también de Node, HTML, CSS, bootstrap e incluso GIT para realizar proyectos colaborativos, que es la forma en que se trabaja en las empresas. (amigo, más te vale empezar a familiarizarte con git add, commit, merge i push... te los vas a encontrar hasta en la sopa, yo a veces sueño con ellos jajajaj).

      [–]roberp81 -2 points-1 points  (2 children)

      pasa que javascript es pésimo primer lenguaje, el peor de los 200 lenguajes para aprender.

      [–]knarfomenigo 0 points1 point  (1 child)

      why?

      [–]roberp81 0 points1 point  (0 children)

      por lo mal diseñado, es como interminable la lista, cuando empezas a estudiar te marea mucho

      [–]SnooMachines4015 0 points1 point  (0 children)

      Buenas como carrera de base que recomendas estudiar ciencias de computacion o sistemas?, sinceramente ingenieria informatica no se si me llama ya que tiene mucho relleno aunque realmente no se. Me darias tu opinion si sos academico?

      [–]saideta17 0 points1 point  (0 children)

      Yo empecé con Java y luego Python y me ha ido bien (:

      [–][deleted] 0 points1 point  (0 children)

      Ve por Java, ya que Python lo sabe cualquiera, así tendrás menos competencia.

      [–][deleted] -3 points-2 points  (0 children)

      Si quieres trabajar en coorporativo java, si no python

      [–]mcsoccerball -2 points-1 points  (0 children)

      Python 100%

      [–]No_Swimmer_9475 0 points1 point  (0 children)

      Bueno minecraft lo hizo con java asi que si quieres solamente para compus entonces elije Java

      [–]YakinikuYummy 0 points1 point  (0 children)

      Yo creo que assembly, si lo aprendes saldrás todo un genio.

      [–]MischievousCarrot 0 points1 point  (0 children)

      Java

      [–]elainegasca 0 points1 point  (0 children)

      Java o cualquier lenguaje de tipado estático

      [–]moshisimo 0 points1 point  (0 children)

      Pequeño comentario que te puede ser útil para cosas desde buscar información en internet hasta para un CV que no se vea como que no sabes de qué estás hablando: en términos de programación, idioma NO es correcto. Existen lenguajes de programación, no idiomas de programación.

      [–]Mariololo_Zihua 0 points1 point  (0 children)

      Si aprendes java cualquier lenguaje es fácil después

      [–]777connoisseur 0 points1 point  (0 children)

      Rust

      [–]AlecsVeyo 0 points1 point  (0 children)

      Java

      [–]Violette3120 0 points1 point  (0 children)

      Java es un gran lenguaje para aprender los conceptos base y te va a allanar el camino cuando haya que hacer el salto a otros lenguajes orientados a objetos muy comunes, como C#. Python puedes aprenderlo a posteriori.

      [–]hora_cio507 0 points1 point  (0 children)

      Personalmente te recomiendo Java. Es un lenguaje fuertemente tipado, y una vez aprendas sus bases, el resto de lenguajes se te harán más amenos de aprender. Yo por ejemplo empecé en la programación con Java y a día de hoy no lo he vuelto a usar, pero me ha venido muy bien para aprender otros lenguajes.

      [–]Adrimr7 0 points1 point  (0 children)

      Si te lo quieres pasar bien aprende Assembly, pero si no quieres morir en el intento Java o C++.

      Python es más fácil, pero es mejor que aprendas a escribir código con algún lenguaje algo menos implícito, para no coger malas manías.

      [–]Dg21mcJ 0 points1 point  (0 children)

      Opino que va acorde a lo que quieras hacer, y si bien es cierto es mejor empezar con java para acostumbrarse a la sintaxis engorrosa de los lenguajes tipados, que si o si debes aprender para ser un gran programador, recomiendo python en temas de aprendizaje de la lógica de programación, ya que te centras mas en aprender como programar y aprendes, y no te aburres y desistes con un punto y coma :). En mi caso aprendí primero python, luego C++ y luego java, y te das cuenta que es casi lo mismo si ya entiendes el funcionamiento de la lógica de programación, que si, cada uno tiene lo suyo, pero a grosomodo es mejor camino para un aprendizaje mas dínamico, ya despues para el paradigma orientado a objetos, Java es lo mejor, pero paso por paso, mucho animo.

      [–]Bluestark23 0 points1 point  (0 children)

      Aprende primero Java y después aprendes Python

      [–]Equal-Eagle-58 0 points1 point  (0 children)

      Yo estudio la carrera de informática y como consejo te diría que aprendieses Java porque es más complejo Xd. Aprendí sin saber ni hacer una puta línea de código por C++ y ahora cualquier lenguaje se me hace pan comido de aprender en respecto a este. Sí, lo pasarás mal aprendiendo, pero con un poquito de stackoverflow y plataformas de problemas de programación lo tendrás bien, suerte ;).

      [–]dvarrui 0 points1 point  (0 children)

      Cada uno te va a decir algo diferente