¿que lenguaje elegir?

Iniciado por kaniho, 8 Junio 2015, 09:30 AM

0 Miembros y 1 Visitante están viendo este tema.

kaniho

Hola, llevo días y días mirando foros y no termino de decidir que lenguaje aprender. Me gustaría saber si alguien de vosotros ya paso por eso, y que lenguaje y por que?, ya que me gustaria empezar con uno a fondo, y no terminar arrepentirme, porque a mi me costaría mucho.
Tengo claro algunos puntos:
1-Debe tener mucha documentación de ayuda con ejemplos, una comunidad
... Esto es super importante para mi
2- programar apliaciones visuales de escritorio cliente servidor y también Android y si se puede algo para web mejor...

Hasta ahora creo q tanto c# y java son idóneos, pero cual y por qué? Leo tanto de que java esta muriendo...que en c# cambia el código de escritorio a Android... Uff un lío.un saludo compañeros.

RaloGomez

Esta misma pregunta hize yo... Me recomendaron codecademy, aprendes a progamar bien sea un lenguaje de iniciación como python, loque me gusta de esta web esque aprendes con ejemplos prácticos a la vez que teoricos. Ya me contarás que te parece..
PD: en cuanto a lo otro esperemos a que venga un hombre mas sabio.. Xd
Salu2

Hurdano

Y donde has visto que Java esté muriendo? Muriendo? Java?  :¬¬ :¬¬ :¬¬ Yo solo diré, que si java está muriendo, las empresas deben de estar al borde de un lapsus. Porque la inmensa mayoría de las ofertas de empleo es raro no ver alguna que pida java, y no te miento.

A parte, de que estamos hablando de java, "java" multiplataforma... Que si alguien te ha dicho que está muerto está un poco equivocado, y que salga alguien aquí si tiene huevos y diga que está muerto!! xD. (Es broma).

Que salgan nuevas cosas, y si empiecen a usar por modas o lo que sea vale, pero de ahí a llamar a un lenguaje de programación como java muerto...uff...

En definitiva, java es un lenguaje muy importante y extendido por el mundo, y que si alguna vez tiene que morir, no va ser hoy ni mañana.

RaloGomez



Esta es la evolucion de la utilizacion de estos lenguajes en el 2014. Para 2015 java sigue en cabeza...

Eleкtro

#4
Cita de: Hurdano en  8 Junio 2015, 10:44 AMY donde has visto que Java esté muriendo? Muriendo? Java?

Existe un mito innegable que afirma el hecho de que "Java está muriendo", pero probablemente solo sea eso ...un mito, ya que aparte de que por el momento son afirmaciones que no se cumplen, realmente los lenguajes no mueren, se van quedando en cierto deshuso ante la competencia, pero se siguen usando durante muchos años e ncluso décadas más.

Cita de: Hurdano en  8 Junio 2015, 10:44 AMla inmensa mayoría de las ofertas de empleo es raro no ver alguna que pida java

Si, y lo mismo se puede decir de C#.




Cita de: kaniho en  8 Junio 2015, 09:30 AM1-Debe tener mucha documentación de ayuda con ejemplos, una comunidad

He usado muy poco Java cómo para elaborar un análisis o comparativa profunda, así que me basaré en mi poca experiencia con Java, pero mi bastante experiencia con .Net, mi opinión, y fuentes externas de información.

Java y C# disponen de una referencia online del lenguaje, pero, la MSDN en mi opinión es muy superior, obviamente encontrarás toda la información necesaria, con ejemplos de ayuda, y con la comunidad/foros de MSDN, pero también una infinidad de artículos sobre como iniciarse, tutoriales, video tutoriales, consejos; en fin, infinidad de documentación sobre el lenguaje, VisualStudio, y todo lo que lo que compne .Net; es algo normal, ya que la calidad que puede ofrecer un tiburón cómo Microsoft no puede tener competencia en ese sentido.




Cita de: kaniho en  8 Junio 2015, 09:30 AM2- programar apliaciones visuales de escritorio cliente servidor

Sobre esto no puedo decir nada sobre Java, ya que no tendría suficiente criterio para hacerlo.

Lo que está claro es que C# es auto-suficiente en aplicaciones de escritorio, ya sea teniendo en cuenta sus capacidades remotas/cliente-servidor o no. y Java del mismo modo parece serlo también.




Cita de: kaniho en  8 Junio 2015, 09:30 AMAndroid

Java, entre otros lenguajes, ha sido utilizado para el desarrollo de android, particularmente para el desarrollo de la interfáz de usuario de Android, y las Apps de Android están desarrolladas en Java, así que quizás sería sensato pensar que Java es el lenguaje más adecuado en este sentido.

De todas formas, en C# también se pueden desarrollar aplicaciones para Android, existe una muy buena herramienta para esto (un framework completo) llamado Xamarin, en su versión standalone llamada "Xamarin Studio", y en su versión extensión para integrarse en Visual Studio, llamada "Xamarin for Visual Studio", sin duda sería mejor elegir C# en caso y solo en caso de que éste fuese tu lenguaje principal, ya que gracias a esto no tendrías que hacer una transición a Java solo para programar apps para Android, pudiendo hacer lo mismo en C#, no faltaría de nada ni desarrollando una app en Java ni en C#.




Cita de: kaniho en  8 Junio 2015, 09:30 AMsi se puede algo para web mejor...

Sobre el desarrollo de aplicaciones Web, al parecer, un gran inconveniente de Java es que las librerías no están incluidas, necesitas incluir una tonelada de librerías de terceros (y aprender su documentación, suponiendo que la tengan) de lugares como Apache commons, esto, aparte de que puede causar un incremento insano del tamaño del proyecto donde la aplicación web más simple puede llegar a pesar 100 MB, también puede resultar en un infierno de dependencias Jar, y si encima cargas los archivos Jar incorrectamente entonces la has pifiado, necesitas utilizar otras herramientas para esto cómo Maven.

Al parecer, utilizar Java para aplicaciones web disminuye considerablemente el rendimiento del programador en comparación con una webapp desarrollada en C#.

En conclusión, parece estar claro que C#, es decir, la tecnología ASP.Net, te lo pone todo más facil, y esto aumentaría considerablemente la productividad del programador.

Fuente:
Cita de: http://programmers.stackexchange.com/questions/102090/why-isnt-java-used-for-modern-web-application-developmentBatteries not included:

I programmed java web apps for 10 years before I switched to python, 4+ years ago. I feel that I'm much more productive using python and can get much more done in a shorter period of time, and to be honest, I'm much happier when I develop in python. Here are some of the reasons why I think python is better then Java based on my personal experience, your milage may very.
Web Frameworks:

When I first start programming web apps in Java, Struts just came out, and it wasn't great, but it was the best thing available. I created a bunch of struts apps, and a few in other frameworks along the way. Whenever a new framework came out (Tapestry, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, etc), I would try it out and see if it was any better, and most times it was only a little better, and sometimes not better at all. I do have to say the play framework is a step in the right direction.
Batteries not included:

One of the most annoying parts of Java was the fact that most of the libraries that you use were not included in java itself, you had to include a ton of 3rd party libs from places like apache commons. If you use something like hibernate with any other large library, you end up in Jar dependency hell, where hibernate needs one version of a jar, and something else needs another version. If you load the jar files in the wrong order, you are out of luck. You need to depend on tools like maven, and ivy to manage your dependencies, and this just brings in more dependencies into your project which results in projects being huge. I had some war files 100MB+ war files for the simplest web apps.
Too many options:

For some reason there seems to be way too many different ways to do the same thing in Java. There are over 38 different web frameworks for java according to wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) and 23 different ORM's ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#Java ) just to name a couple of examples. If you look at other languages they have a more reasonable number. Some people think that having lots of options is a good thing, but it isn't it leads to a lot of wasted effort in the developer community, everyone is reinventing the same wheel, and if you are a new person to the language you have too many option to pick from.
App servers:

Java web applications are really heavy, and require a lot of resources to run. They are especially memory hungry. Like any piece of software they can be tuned to reduce their resource footprint, but compared to other languages their out of the box setup is horrible. In my past I have used weblogic, websphere, Jboss, tomcat, and jetty. I only used the first three when I was forced to use EJB's, but even if you aren't using EJB's they were large app servers and sometimes hard to configure and get running correctly. Tomcat and Jetty are much better and easier to setup, but are still resource hogs.
App Hosting:

If you aren't running your own server it is real hard to find shared hosting for your java apps at a reasonable price. The main reason is because java apps require much more memory compared to other languages, so it doesn't make sense for a shared hosting provider to spend their valuable RAM running a java site, when they could run 5 php sites in the same place. That means there are less providers offering java hosting, which in turn means higher costs to run your website.
Development Time:

When I developing in java, I found myself much slower then what I can do in python. I would need to make a change, compile, redeploy and then test, and this slows down the iterative process. I know there are ways to make this faster, but even at it's best, I felt much slower then what I can do in python.

There is also a lot less boilerplate code to do the same thing in python, so I spend less time developing the code as well.

Java just feels over engineered in a lot of parts, A lot of the API's and interfaces are just way to complicated for what you want to do. And everyone and their brother thinks they are a java architect and this results in big complicated systems that are hard to use and develop with.
IDE:

When I was developing in Java, I felt stuck to the IDE, I was lost without it. IntelliJ is the best IDE's on the market, and it was hard switching to python because there wasn't anything like it for python. So instead of an IDE, I just used textmate, which is just a normal text editor. It was hard at first, but because it was just a text editor, it was a really fast and responsive application. I could open my whole project in a few seconds, whereas when I want to open a project in an IDE it could take a minute or more, with a machine with a ton of RAM. The makers of IntelliJ came out with a python editor called pycharm, I bought it when it first came out, and it is great. But what I realized is that I don't need an IDE for python, I'm fine with a text editor. When I go back to working on Java web apps which I have to do from time to time, I try to use the text editor, but I haven't quite mastered that yet. I personally need the IDE for Java more because If I mess up something it takes longer to recompile and redeploy, which slows me down.
ORM:

When I first started using Hibernate as an ORM, I thought it was great, it had it's problems, and it wasn't perfect, but it was better then what I was doing before. I was happy with it, until I did an application with Django's ORM on a python project, and that opened up my eyes, that is how an ORM is suppose to work. After that project I went back to hibernate, and I just felt disappointed, and longed for going back to Django's ORM. Another great python ORM is sqlalchemy, which is similar to Django's ORM, but a little different. I have limited experience with ROR's ORM, but from what I remember, it was pretty good as well.
Templates:

The web templating systems in Java aren't that good, and I think I have tried them all (tiles, freemarker, velocity, etc). Most of them offer only basic functionality and are a pain to work with. On the Python side, my two favorites are Django templates and Jinja2, they have everything that I could need in a templating engine, and are really easy to use.

En esa misma página encontrarás opiniones muy diversas sobre el uso de Java en la web.




Cita de: kaniho en  8 Junio 2015, 09:30 AMHasta ahora creo q tanto c# y java son idóneos, pero cual y por qué?

Java es soportado en más sistemas operativos que C#, pero eso no quiere decir que en el futuro, podamos ver un MSIL corriendo en otros sistemas operativos que no sean Windowsm nada lo impidem y C# es un lenguaje por el que cualquiera podría apostar a favor.

Si quieres desarrollar una aplicación que hoy en día corra en casi cualquier sistema, entonces ese lenguaje es Java, si por lo contrario quieres desarrollar una aplicación para Windows o Web y con soporte adicional para Android, entonces ese lenguaje es C# (o VB.Net, ya que ambos son pracicamente lo mismo), ya que las características internas, es decir, la librería de classes de .Net Framework, la cantidad de funciones built-in, es en gran medida superior que la de Jajva (aunque la de Java también es muy inmensa).

Ante dos lenguajes semejantes, lo mejor sería elegir el lenguaje con el que mejor te sientas programando, comparar sus capacidades/limitaciones, pero sobre todo su sintaxis, y su IDE, ¿por qué?, por que siendo dos lenguajes que ofrecen practicamente las mismas características, ese sería el punto a favor que marcará la diferencia en tu rendimiento, cómo ya he dicho, la sintaxis, el modo de operar con el lenguaje, y la IDE, tu entorno de trabajo.

Ten en cuenta una cosa muy importante también, C#, es decir, la IDE de Microsoft, Visual Studio, es el entorno de programación más completo y más elaborado en comparación con cualquier otra IDE freeware o comercial, esto en mi opinión es lo que marca la diferencia entre elegir C# o Java (cómo ya dije he usado poco Java, pero si he manejado varias IDES de Java).


Cita de: kaniho en  8 Junio 2015, 09:30 AMHasta ahora creo q tanto c# y java son idóneos, pero cual y por qué?

Por último, te sugiero que leas este artículo de MSDN donde realizan un análisis comparativo sobre C# y Java, cuyas consluciones son que practicamente los dos son muy buenos lenguajes en comparación:

C# and Java: Comparing Programming Languages

PD: Para que veas también hasta donde llega el alcance de la comunidad MSDN, infinidad de documentación sobre todas las cosas de .Net cómo dije antes ...incluso sobre Java xD.

Saludos!








Usuario Invitado

No sé de donde han sacado el mito, pero Java no está muriendo para nada. De hecho, se ha incrementado su uso en las empresas.

No se puede comparar Java y C# porque son muy parecidos y hacen lo mismo. El problema con .NET es que aún luego de ser open source, estás por así decirlo, casado con los productos de la tecnología .NET.

Por ejemplo, cuando haces uso de Entity Framework, estás prácticamente obligado a usar SQL Server. No tiene soporte para MySQL o PostgreSQL.

WPF, solo funciona en Windows. No hay port ni lo habrá para GNU/Linux ni Mac. Ni con mono podrá correr en esas plataformas.

Por otro lado, Java es muy parecido a .NET. La razón de ser el lenguaje #1 según TIOBE en popularidad, es que con Java tu armas tu equipo de desarrollo. Los frameworks son interoperables unos con otros, puedes elegir a dedo en el mercado, algunos de muchos frameworks para Java, como Spring, JSF, Play!, Vaadin, OpenXava, etc.

Por ejemplo, Hibernate funciona con muchos motores de bases de datos. La API WebSockets es moderna y práctica. Bean validation, utilísimo al validar entidades antes de ser persistidas por JPA. EJB remotos (pueden llamarse desde otra JVM), WebServices, y mucho más.

Java ahora, es muy muy rápido. Lo lamentable es que los que no conocen Java piensen que Java es:

  • Muy lento
  • Swing

    Y eso es lo que no les permite al 90% de los usuarios principiantes, comprender su verdadero potencial: la web.

    El lenguaje debe ser una herramienta, no se casen con los lenguajes, entiendan ésto. Cada situación se adapta mejor a X lenguaje. Es por eso que deben conocer varios para hacer un software de calidad y a medida.

    Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

ivancea96

Entre Java y .NET, C# en este caso, yo recomiendo C#. Obviando toda la documentación, a nivel práctico:

-Casi idéntico a C++. Si en algún momento quieres programar en un lenguaje puramente compilado, C++ te será muy sencillo. Java es también parecido, pero no tanto xD

-Java hace un uso muy grande de clases, programación orientada a objetos. Si no has aprendido aun programación orientada a objetos, no te recomiendo Java. En un instituto de donde vivo, dan Java como primer lenguaje, y apenas les explican lo que es un objeto a mitad de curso. Creo que es preferible aprender bien antes lo que es, a aprenderse de memoria como crear un programa en Java.

-Luego, entre esos 2, ambos son interpretados. Si quieres un lenguaje compilado, C++ es mi elección. C++ o C, teniendo en cuenta que C es algo más complicado, por el hecho de que no te da hechas muchas cosas. Claro que C y C++ son algo más complicados de portar a Android.
Si te quedas con C++, ten en cuenta también que para trabajar con web, tendrás que elegir entre usar API del sistema operativo, o utilizar librerías (que las hay, y muy útiles, como SFML)

Ahora bien, te diré, que si aprendes C++ bien, no tendrás ningún problema en usar librerías, o hacerte las tuyas propias para utilizar sockets.

kr.chacacreker

[youtube=640,360]https://www.youtube.com/watch?v=WOmhpXPuKmc[/youtube]
Yo no eleji ni java ni C#(C,asm y python por las utilidades que les doy). Si quieres ver algo hecho en C y/o asm mira tu fondo de escritorio o hazle telnet al router.  :)

RaloGomez

Cita de: kr.chacacreker en  8 Junio 2015, 19:55 PM
[youtube=640,360]https://www.youtube.com/watch?v=WOmhpXPuKmc[/youtube]
Yo no eleji ni java ni C#(C,asm y python por las utilidades que les doy). Si quieres ver algo hecho en C y/o asm mira tu fondo de escritorio o hazle telnet al router.  :)
Flipé con el vídeo...  ;-)

kaniho

#9
Buenas , Gracias por las respuestas a todos, la verdad es que me han aclarado muchas cosillas que no sabia....
Eleкtro me lo ha puesto en bandeja para C# , es que pinta muy bien , ya que desconocía xamarin, que era una desventaja que tenia frente a java para mi.

después viendo que todas las gráficas indican que java es el mas popular y eso no cambia en años, no esta muriendo como se lee por ahi...
pero creo que alguien que empieza desde 0 como yo , unas de las cosas mas a tener en cuenta es la ayuda que puedo tener respecto a comunidades online activas. y los ejemplos practicos , ya que he mirado en msdn  y los foros de C# y estan muy activos , cosa que en java no he encontrado.

descarto algo mas complejo como c++ de momento o asm , me conformo con ventanas graficas y sockets y poco mas para empezar...

el video muy bueno tio , me molo :)

Aunque no me queda claro intentare probar los dos , pero creo que todo apunta a que C# se va actualizando y tiene mas ayuda que sobretodo es lo que quiere un novato como yo...Saludos y gracias!