TODOPIC

Misceláneas - Interés General => Off Topic => Mensaje iniciado por: Miquel_S en 04 de Febrero de 2013, 15:29:13

Título: Lenguaje de Programacion
Publicado por: Miquel_S en 04 de Febrero de 2013, 15:29:13
Hola amigos foreros, tengo una consulta para ustedes. Si tuvieran que aprender un lenguaje de programacion de cara al futuro con cual se quedarian.
Hablo de lenguaje para aplicaciones bien para PC bien para moviles etc.. ya que estoy interesado en hacer un curso y no se cual me conviene mas.

Gracias.
Título: Re: Lenguaje de Programacion
Publicado por: MGLSOFT en 04 de Febrero de 2013, 15:57:36
Usa el buscador, hay muchos hilos y referencias a preguntas similares a esta.

Vas a encontrar en todas una gran tendencia a indicarte sobre el lenguaje de su preferencia personal.

De mi parte, y abstraido de mis preferencias, creo que el C tiene mucho camino por delante.
Tambien hoy hay micros que son programados en C++ y .NET, asi que no seria extraño que en pocos años ya podamos programarlos en Android u otro sistema de moda...
Lo unico que se es que todos tienen herencia del C, asi que larga vida al C !!  :D :D
Título: Re: Lenguaje de Programacion
Publicado por: planeta9999 en 04 de Febrero de 2013, 15:59:58
C++ sin dudarlo, aunque para móviles como se está imponiendo por goleada Android, también sería recomendable aprender Java, además Java y C++ se parecen bastante por lo que una vez hayas aprendido uno, no te será difícil engancharte al otro con rapidez.

Para microcontroladores programo en C con los compiladores de Microchip, y para PC uso Visual Studio de Microsoft.
Otro tema es la programación para páginas web, yo ahí empecé con PHP hace 10 años (más o menos), y me mantengo fiel.
Título: Re: Lenguaje de Programacion
Publicado por: Miquel_S en 04 de Febrero de 2013, 17:02:50
Gracias a los dos por sus respuestas, con referencia a usar el buscador lo he usado pero se hace mas referencia a la programacion de micros, y con estos lo tengo bastante claro,  personalmente queria encararlo mas a programacion de aplicaciones.

Saludos!
Título: Re: Lenguaje de Programacion
Publicado por: planeta9999 en 04 de Febrero de 2013, 17:26:26


Otro lenguaje que se está poniendo de moda últimamente (desconozco el porqué), es el Python, que me tiene martir porque la mayoría de aplicaciones para Raspberry Pi se están haciendo en ese lenguaje, y al final no me quedará más remedio que claudicar y aprenderlo.

A lo largo de los años he trabajado con unos cuantos lenguajes de programación, muchos de ellos prácticamente en desuso hoy en día, como el Cobol, Pascal, Clipper, etc... el único lenguaje que ha resistido el paso del tiempo, es el C que evolucionó a C++, C#...
El lenguaje más rarito que he usado, es el RPG para sistemas IBM (S36, S38, AS400), con los que estuve trabajando casi 15 años.
Título: Re: Lenguaje de Programacion
Publicado por: Suky en 04 de Febrero de 2013, 18:54:15
Si va por el lado de aplicaciones para PC y móviles cursaría algo respecto a java. Java lo utilizas en la PC y android para dispositivos móviles, que tiene como base java.
Otra opción es C++ y utilizaría como framework Qt.


Saludos!
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 04 de Febrero de 2013, 18:55:29
Otro lenguaje que se está poniendo de moda últimamente (desconozco el porqué), es el Python, que me tiene martir porque la mayoría de aplicaciones para Raspberry Pi se están haciendo en ese lenguaje, y al final no me quedará más remedio que claudicar y aprenderlo.

Python es un lenguaje interpretado (se interpreta en tiempo de ejecución, sin compilarle)

Es muy sencillo, intuitivo, potente y de fácil lectura (no como el C). A mí personalmente me gusta mucho.

Es muy utilizado en su ámbito de aplicación, al igual que el Perl (mucho más confuso y complejo, pero más utilizado que Python), Ruby y otros semejantes.

Un lenguaje interpretado como los anteriores, especialmente interesante para estar embebido porque es muy ligero es el LUA: http://www.lua.org

El lenguaje interpretado más parecido al C es el bash shell que se utiliza para administración del sistema en Unix (es el intérprete de comandos).

Cualquiera de ellos está disponible en Windows, Linux y Mac. Aprender uno de ellos no te vendría mal. Yo me decanto por Python.


Un saludo.
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 04 de Febrero de 2013, 18:59:51
Adjunto un intérprete de Lua para Windows con documentación en español.
Es sorprendente lo pequeño y potente que es.

Saludos.

Edito:
Web de lua embebido en microcontroladores. http://www.eluaproject.net/
Título: Re: Lenguaje de Programacion
Publicado por: RedPic en 04 de Febrero de 2013, 20:15:08
Yo últimamente estoy usando Python y la verdad es que me está gustando mucho.
Título: Re: Lenguaje de Programacion
Publicado por: planeta9999 en 04 de Febrero de 2013, 20:34:28
Python es un lenguaje interpretado (se interpreta en tiempo de ejecución, sin compilarle)
Es muy sencillo, intuitivo, potente y de fácil lectura (no como el C). A mí personalmente me gusta mucho.


Un lenguaje interpretado, juer, me recuerda los primeros tiempos del BASIC, si no es compilable ya no me gusta nada.
Un lenguaje interpretado tiene por definición que ser muuuucho más lento que uno compilado, y luego está la aplicación comercial, ¿ como vas a comercializar un producto que rueda un programa a partir del código fuente ?, eso no puede tener ningún futuro a menos que terminen sacando un compilador como ya ocurrió en su momento con el BASIC o el lenguaje del Dbase compilable con Clipper, etc...

Creo que no perderé el tiempo aprendiendo Python, prefiero hincarle el diente al Raspberry con el C++. Lo que si que quiero probar es el Java, hace algún tiempo me baje el SDK de Android, pero apenas lo rocé.

El C es un lenguaje relativamente complejo, pero muy potente, en cuanto le coges el truco a las clases y a los punteros, haces lo que quieres. Yo el verano pasado reinstalé VisualStudio después de unos cuantos años sin tocarlo, y me bajé el libro de Ivor Hortons, y aunque fué un trance muy duro, la verdad es que cuando remiras un tema, lo vuelves a leer, lo vuelves a probar, le vas cogiendo el tranquillo, y lo vas hilando todo, no es tan complicado como parece al principio, aunque el carajal que han montado con las clases tiene huevos.

Mi interés a corto y medio plazo en temas de programación, pasa por reasentar mi experiencia en C++, meterle mano al Java y entrar de lleno con el VHDL para programar FPGA y CPLD, la lógica programable, esto si que es potente de verdad, las virguerías que se pueden hacer sobrepasan con creces a cualquier microcontrolador, Raspberry, stick pc, etc....



Título: Re: Lenguaje de Programacion
Publicado por: Suky en 04 de Febrero de 2013, 21:46:17
... y entrar de lleno con el VHDL para programar FPGA y CPLD, la lógica programable, esto si que es potente de verdad, las virguerías que se pueden hacer sobrepasan con creces a cualquier microcontrolador, Raspberry, stick pc, etc....

Son otra rama, pensados para el tratamiento de señales a >100MHz que ningún sistema secuencial lo puede resolver.


Saludos!
Título: Re: Lenguaje de Programacion
Publicado por: willynovi en 04 de Febrero de 2013, 22:51:12
También depende de que tipo de aplicación vas a desarrollar, si es de orden científico, donde harás cálculos matemáticos con mediana complejidad, no hay duda que tienes que ir por el lado de C o C++.

Si es por hacer un curso pago yo haria de C y C++, lo demás lo puedes aprender con algún libro  ;-)
Título: Re: Lenguaje de Programacion
Publicado por: Miquel_S en 05 de Febrero de 2013, 04:03:03
Gracias de nuevo por sus opiniones, voy a ver de las opciones barajadas que es lo que encuentro y donde puedo hacer el curso que sea un sitio fiable.

Saludos!
Título: Re: Lenguaje de Programacion
Publicado por: RedPic en 05 de Febrero de 2013, 06:13:51
Python es un lenguaje interpretado (se interpreta en tiempo de ejecución, sin compilarle)
Es muy sencillo, intuitivo, potente y de fácil lectura (no como el C). A mí personalmente me gusta mucho.
Un lenguaje interpretado, juer, me recuerda los primeros tiempos del BASIC, si no es compilable ya no me gusta nada.
Un lenguaje interpretado tiene por definición que ser muuuucho más lento que uno compilado ...

Python es interpretado y es compilable, exactamente igual que Java por ejemplo.
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 05 de Febrero de 2013, 12:03:36
Un lenguaje interpretado, juer, me recuerda los primeros tiempos del BASIC, si no es compilable ya no me gusta nada.
Un lenguaje interpretado tiene por definición que ser muuuucho más lento que uno compilado, y luego está la aplicación comercial, ¿ como vas a comercializar un producto que rueda un programa a partir del código fuente ?, eso no puede tener ningún futuro a menos que terminen sacando un compilador como ya ocurrió en su momento con el BASIC o el lenguaje del Dbase compilable con Clipper, etc...

Esos son prejuicios muy razonables. Yo también comencé con Basic y no me gusta nada. Sin embargo Python no es Basic ni tiene nada que ver.

El código Python no puede compilarse, pero sí puede crearse un archivo de Bytecode que es la traducción a binario del programa escrito. Ese Bytecode no tiene comentarios y es muy difícil saber a partir de él cómo se programó.
Es una traducción a código intermedio que luego se interpreta, al igual que se hace en Java. De forma que por esa parte no hay problema.
Además puedes hacer librerias programadas en C para extender Python. Las librerias tampoco dejan ver el código.


En cuanto a la rapidez, depende de cómo se mire. Una rutina en C puede ser hasta 10 veces más rápida que Python, pero hay ocasiones en las que no importa

  1.- Muchas veces te da lo mismo que una rutina tarde 10ms o 100ms, ambas son rápidas.
  2.- Si tardas 60 minutos en hacer un programa en C y 10 minutos en hacer lo mismo con Python ¿Cuál es más rápido?

Python hace cosas muy rápido y tu deberías pasar muchos meses programando lo mismo en C para ser igual de rápido. El manejo de tablas hash, manejo de cadenas (strings), programación funcional, manejo de matrices en cálculo o procesamiento de imagen, etc. Todos son ejemplos en los que conseguir más rapidez utilizando C sólo se puede conseguir después de mucho esfuerzo.
Otro ejemplo es la asignación de memoria y su liberación (la recolección de basura) que es automática en Python.

Es como comparar un autobus y un deportivo ¿Cuál es más rápido?
En principio el deportivo, pero prueba a llevar a 50 personas en un deportivo a 10 kilómetros de distancia. Cuando el deportivo va por la tercera persona, el autobús ya ha llegado.
No son comparables. Cada uno tiene un ámbito de aplicación.


Ejemplo:
Prueba a programar esto en C. Es un programa que reemplaza en todos los nombres de archivo del directorio actual el año 2012 por el año 2013
Código: [Seleccionar]
import os, re
for filename in os.listdir('.'):
    newfilename = re.sub('2012', '2013', filename)
    if (filename != newfilename):
       os.rename(filename, newfilename)
A mí me ha llevado menos de un minuto programarlo y funciona muy rápido.


Saludos.
Título: Re: Lenguaje de Programacion
Publicado por: AngelGris en 05 de Febrero de 2013, 12:40:47
  También podríamos agregar que si se quiere hacer aplicaciones gráficas existen ports de qt para python. Yo hice algunas cosas para linux y realmente funcionaron muy bien.
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 05 de Febrero de 2013, 14:08:23
Python es muy bueno manejando textos.

Otro ejemplito.

Lee un archivo de texto con un elemento en cada fila y devuelve en orden alfabético todos los elementos con el número de veces que aparecen en el archivo:

Código: Python
  1. datos = {}
  2.  
  3. for name in open("datos.csv", "rt"):
  4.    if name in datos:
  5.       datos[name] += 1
  6.    else:
  7.       datos[name] = 1
  8.  
  9. for name in sorted(datos.keys()):
  10.    print "Nombre= %-20s" % name[:-1], "   Ocurrencias =", datos[name]

Aplicándolo a este archivo de nombres:
Código: [Seleccionar]
Keira
Laura
Miguel
Carlos
Miguel
Laura
Miguel
Cristina
José
Antonio
Paula
José

da como resultado:
Código: [Seleccionar]
Nombre= Antonio                 Ocurrencias = 1
Nombre= Carlos                  Ocurrencias = 1
Nombre= Cristina                Ocurrencias = 1
Nombre= José                    Ocurrencias = 2
Nombre= Keira                   Ocurrencias = 1
Nombre= Laura                   Ocurrencias = 2
Nombre= Miguel                  Ocurrencias = 3
Nombre= Paula                   Ocurrencias = 1

Saludos.
Título: Re: Lenguaje de Programacion
Publicado por: MGLSOFT en 05 de Febrero de 2013, 14:21:51
Que interesante...
Que dispositivos se programan con ese lenguaje??
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 05 de Febrero de 2013, 18:08:51
Que yo sepa PC (Windows y Linux) y Mac.

También hay algún port para microcontroladores grandes tipo arm (el núcleo de Python ocupa más de un megabyte):

http://www.pymcu.com
http://wiki.python.org/moin/EmbeddedPython

Saludos.
Título: Re: Lenguaje de Programacion
Publicado por: Picuino en 05 de Febrero de 2013, 18:19:13
También hay Python para Android:

http://code.google.com/p/python-for-android/
http://revista.python.org.ar/5/es/html/desarrollo-de-aplicaciones-moviles-para-android-con-python.html

Saludos.
Título: Re: Lenguaje de Programacion
Publicado por: micro_pepe en 05 de Febrero de 2013, 19:58:41
Yo estoy cansado de ver ofertas de trabajo y Java lo piden mucho. Tambien piden C++ y C#, esos lenguajes los desconozco, pero creo que son similares a Java.

Estoy estudiando un módulo de aplicaciones multiplataforma, y damos Java, en segundo se da programacion Android, y dan Java con unas variantes.

Todo esto no quiere decir nada, puede que un futuro no muy lejano se use otro lenguaje, pero hoy por hoy te recomiendo Java.
Título: Re: Lenguaje de Programacion
Publicado por: Suky en 05 de Febrero de 2013, 20:54:33
Que interesante...
Que dispositivos se programan con ese lenguaje??


C++ utilizando Qt podes programar para Win, Mac, Linux, Linux embebido, y ahora con la versión 5 iOS y Android  :)

Muy recomendable de aprender a programar!
Título: Re: Lenguaje de Programacion
Publicado por: Miquel_S en 06 de Febrero de 2013, 07:58:43
Gracias por la cantidad de información, creo que voy a empezar con C++ usando Qt4 y al tenerlo medianamente claro seguiré con el C++ y empezare Java.

Saludos!