El mejor lenguaje de programación para aprender a programar es...

Siempre que alguien pregunta cuál es el mejor lenguaje para empezar a programar no faltan las opiniones desinformadas de muchos programadores y empiezan a recomendar lenguajes como C, C++, python, ruby, node.js (que ni es lenguaje de programación), php, java, entre otros; Sin tener contexto alguno de por qué alguien quiere aprender a programar.

Dado que ésta es una pregunta muy recurrente, y los malos consejos abundan, decidí escribir esta guía para ayudarte a elegir cuál es el mejor lenguaje de programación para empezar a programar basado en tus intereses y motivaciones personales.

Haz click en cualquiera de las siguientes áreas de interés para descubrir el lenguaje con el que debes iniciar:

  • Quiero aprender programar videojuegos web como los de Facebook.

    Lenguaje recomendado: Javascript.

    El futuro de los videojuegos web al estilo de Farmville es sin duda alguna Javascript. Durante el 2015, Javascript arrebató una gran pieza del mercado en el campo de desarrollo de videojuegos web. El dúo dinámico de HTML5 y Javascript cada día toma mas fuerza, y con la rápida aceptación de la plataforma Node.js que permite escribir JavaScript del lado del servidor; las casas desarrolladoras de videojuegos web están empezando a invertir fuertemente en éste lenguaje.

    Dado que el lenguaje tiene una penetración de mercado muy alta y virtualmente todos los dispositivos que se conectan al internet pueden correr javascript, toma mucho sentido desarrollar videojuegos en Javascript.

    Además, el lenguaje en sí mismo se presta para la programación de videojuegos. Verás, los videojuegos son programas muy complejos. Tradicionalmente, los programa se ejecutan secuencialmente, es decir, una instrucción después de la otra. Sin embargo, los videojuegos raramente son programas secuenciales, y los procesos que deben ejecutarse dependen de eventos.

    Javascript es un lenguaje multi-paradigma, y uno de los paradigmas de Javascript es el de programación dirigida por eventos (Event-driven programming). Eso quiere decir que en Javascript, dos bloques de código escritos uno después del otro, pueden ejecutarse independientemente uno del otro, o puede que no se ejecuten en lo absoluto. Todo depende de los eventos que el navegador produzca, y/o que el programa de Javascript sepa como responder ante esos eventos. Este paradigma es muy apropiado para el desarrollo de videojuegos, ya que en lugar de tener un sin fin de "if...else" anidados, simplemente se escriben bloques de código que deban ejecutarse cuando un evento arbitrario se produzca. Los frameworks en javascript para esta labor están alcanzando una madurez impresionante. Incluso existen simulaciones del primero juego de Doom escritas totalmente en Javascript.

    Si la programación de videojuegos para web es lo que te llama la atención, entonces enfoca tu esfuerzo en Javascript.

  • Quiero aprender a programar videojuegos para computadora/consolas.

    Lenguaje recomendado: C#

    C# es un buen lenguaje para que te inicies en la programación de videojuegos, existen librerías y frameworks muy maduros que te facilitarán el aprendizaje demasiado.

    No te dejes llevar por quienes te recomiendan que aprendas C++ A menos de que te especialices en el desarrollo de motores de gráficos o motores de inteligencia artificial, aprender C++ solo será una distracción para adentrarte al mundo de la programación de videojuegos. Antes de que empiecen a querer lincharme por no recomendar C++ recuerden que éste artículo se trata de aprender a programar. Eventualmente tendrás que aprender C++ si te vas a especializar en el desarrollo de videojuegos, pero C# tiene una curva de aprendizaje más amigable, y especialmente si utilizas frameworks como Unity o XNA, adentrarte al mundo de la programación de los videojuegos será sumamente sencillo. A diferencia de C++, C# es un lenguaje mucho más sencillo de aprender, y Visual Studio es un IDE bastante avanzado y potente. La cantidad de recursos online y en español de C# es inmesurable, por lo que no faltará alguien que te saque de dudas cuando ocurra algún problema.

  • Quiero aprender a programar aplicaciones móviles

    Lenguajes recomendados: Java, C# y Objective-C/Swift.

    Java es el lenguaje de programación predilecto para aplicaciones Android. A pesar de que existe soporte para Python, la mayoría de los trabajos que contratan para desarrollo en Android asumen que sabes programar en Java. La razón de porque Java se prefiere sobre Python para desarrollar aplicaciones Android es porque Android sufre un problema muy grande que se conoce como Fragmentación de dispositivos. Eso quiere decir que Android tiene un ecosistema muy grande de versiones en producción. Docenas de marcas de celulares y tables, cientos de diferentes resoluciones, diferente hardware, diferentes dispositivos. Por lo tanto utilizar un lenguaje como Java tiene sentido porque todo lo que necesitas para Java es la maquina virtual de Java y listo, no tienes que preocuparte del resto.

    Si vas a desarrollar apps de Windows, entonces tienes que aprender C#. A decir verdad, en éstos días si quieres desarrollar cualquier cosa que toque algún servicio de Microsoft, lo más seguro es que tengas que aprender C#. Es el lenguaje estándar de Microsoft.

    Si quieres aprender a desarrollar apps para iOS (iPhone/iPad), tienes que aprender Objective-C o Swift. Objective-C es C con clases, cualquier cosa que compile en C, compila en Objective-C. Sin embargo, Apple recientemente introdujo Swift. El nuevo lenguaje de programación para desarrollar en iOS. La sintaxis es mucho más sencilla que la de Objective-C. Swift es un lenguaje más moderno, a diferencia de Objective-C que solamente es un superset de C. No obstante, la gran mayoría de las librerías de Apple aun están escritas en Objective-C, y Apple le seguirá dando el soporte al lenguaje. Pero si eres nuevo en el mundo de las apps, y estás decidido en desarrollar para Apple, primero aprende Swift y después preocúpate de Objective-C. Swift es el futuro.

  • Quiero aprender a programar aplicaciones web.

    Lenguajes recomendados: PHP, Ruby o Javascript.

    Hay muchos detractores de PHP, pero la verdad es que PHP es un lenguaje muy maduro. Y a partir de la version 5.3, PHP es un lenguaje bastante bueno. No se puede ignorar el hecho de que existen 244 millones de sitios en el Internet que utilizan PHP. Y sabes que significa eso? Que no falta trabajo como programador en PHP. El stack de PHP ha sido estudiado y revisado hasta el cansancio. Ha sido optimizado hasta el límite y el desarrollo al core de PHP está mas activo que nunca. PHP tiene frameworks muy maduros y robustos como Zend o Symfony que hacen del desarrollo en PHP un verdadero placer. PHP por fin tiene un administrador de paquetes que vale la pena: Composer y finalmente la comunidad ha creado una convención para escribir código llamada PSR. Si quieres dedicarte profesionalmente al ambiente web, TIENES que aprender PHP.

    Por otro lado, en el ambiente web tenemos dos lenguajes que han ido agarrando mercado. Ruby y Javascript. Ruby se popularizó mucho por basecamp, ya que la empresa 37signals desarrolló el framework "Rails", que hizo que el desarrollo web en Ruby fuera extremadamente fácil. Posteriormente, la primera iteración de Twitter fue creada en Ruby, y fue ahí donde Ruby tomó mucha popularidad. A decir verdad, Ruby es un lenguaje muy fácil de aprender, en mi opinión es el lenguaje de programación más fácil de aprender. Esta muy bien diseñado, y es muy potente. Día con día hay mas posiciones que requieren programadores con experiencia en Ruby, con o sin Rails.

    En el caso de Javascript, si te dedicas al desarrollo web te vas a encontrar pedazos de Javascript en el front-end y en el back-end. Tradicionalmente Javascript había sido considerado un lenguaje que solamente se ejecutaba en el navegador de Internet, es decir un lenguaje del lado del cliente. Sin embargo con la creación de la plataforma Node.js, se introdujo la posibilidad de poder programar del lado del servidor con Javascript. Conforme Node.js fue madurando, fue ganando aceptación al nivel Enterprise, que es donde realmente se define que lenguajes se quedan y cuales se van. Paypal recientemente anunció que toda su plataforma será re-escrita en Node.js lo cual dice mucho acerca de la madurez y seriedad de Node.js Recientemente ha surgido el desarrollo de aplicaciones isomórficas en Javascript, pero ese tema lo trataremos en otro artículo. Al igual que Ruby, la oferta y demanda de programadores que sepan Node.js incrementa día con día.

  • Quiero aprender a "hackear".

    Lenguajes recomendados: Ninguno. Aprende ciencias de la computación primero.

    Es precisamente en ésta area donde leo las peores recomendaciones!

    Generalmente lo primero que un programador desinformado escupe es: C o C++. Incluso he escuchado gente que recomienda "Ensamblador". Para empezar, quiero aclarar que "Ensamblador" no es un lenguaje de programación, es la manera coloquial de referirse a un conjunto de lenguajes de programación de bajo nivel. La ensamblación es un proceso que consiste en traducir instrucciones en codigos operacionales para un determinado procesador. Asi que cualquier tarado que te diga "tienes que aprender Ensamblador" tienes mi permiso de llamarlo ignorante. Dato curioso: Pregúntale a alguien que dice saber Ensamblador para que procesador/arquitectura programa y observa como cambia su semblante de inmediato.

    De regreso a la pregunta, para ser "hacker" necesitas saber mucho más que programar. A decir verdad la programación es de las últimas cosas que un "hacker" necesita saber. Para ser hacker, necesitas tener un fundamento teórico muy sólido ya que los "hackers" generalmente no escriben programas, sino "abusan" programas. Antes de llegar a la programación, para ser "hacker" necesitas un conocimiento muy sólido de como funciona una computadora a un nivel muchísimo más bajo que el del lenguaje de programación. Primero enfócate en aprender como funciona la memoria y el procesador, aprende los diferentes tipos de arquitecturas, que set de instrucciones utilizan, familiarizate con los diferentes ciclos de ejecución. Aprende como funciona un sistema operativo, no solo Linux o Unix, sino cualquier sistema operativo. Hay llamados "hackers" que no entienden la diferencia entre SO, kernel y shell. A un nivel de red, tienes que saber que algoritmos utilizan los ruteadores y los switches, necesitas aprenderte las especificaciones de los diferentes protocolos de red, y no solamente memorizarlas, sino entenderlas.

    Necesitas aprenderte las capas del modelo OSI, y no solamente aprenderte los nombres, sino todo el stack y como va incrementando el payload de un paquete conforma atraviesa el stack. Todo eso es teoría, y observación. Naturalmente necesitarás aprender a utilizar algunas herramientas como debuggers, profilers, sniffers, etc... Aprender a ser "hacker" no es algo que lograrás en 1 o 2 años , es algo que te tomará, si te dedicas diligentemente, alrededor 5 años en aprender bien.

  • Soy biólogo/químico/físico/zapatero y necesito aprender a programar.

    Lenguaje recomendado: Python.

    Python es definitivamente donde necesitas empezar. No porque sea intrínsecamente mejor que los demás sino porque la comunidad científica que se ha construido alrededor de éste lenguaje es bastante grande. La razón es sencilla, Python provee un lenguaje de programación interpretado, que abstrae muchas de las complejidades de lenguajes de nivel mas bajo (como C o C++) y también provee una plataforma que puede integrarse fácilmente con otros programas, escritos en otros lenguajes de programación. Por lo tanto Python soluciona 2 problemas enormes que la comunidad científica tiene (tenía): la necesidad de tener un lenguaje de programación que permitiera manipular y controlar programas existentes, así como un lenguaje que funcionara como "pegamento" para combinar diferentes sistemas.

    Si lo tuyo es la ciencia y la investigación, sin duda alguna te recomiendo ampliamente que inicies con Python.

  • neofreddy
    • Eso me pasa por andar hablando a lo menso. Gracias por el link, actualizaré el post a la brevedad posible.

      • neofreddy

        as3 también soporta json de forma nativa

        • Acabo de darme cuenta que agregaron el soporte para JSON en Adobe Flash Player 11, yo deje de utilizar Flash en la version 10. Gracias nuevamente por actualizarme :)

  • ThunderDAC

    Muy interesante el art. ahora te consulto, justamente dí con tu web buscando info sobre aprender a programar porque ando desorientado ya que en varios lados dicen que que primero debería aprender lógica de programación o algoritmos y hasta me han recomendado pascal antes que python porque dicen que python puede generar malas costumbres difíciles de erradicar con el tiempo. Actualmente trabajo en testing pero nunca toqué un código y como ya me estoy cansando del testing (me resulta bastante aburrido ultimamente), he decidido cambiarme de bando :P Entonces la pregunta es, busco saber programar bien y conocer las tecnologías de moda y que seguramente me van a dar de comer a futuro, al día de hoy no busco programar juegos sino saber programar. Sí tengo claro que todo lo relacionado con la web y con los mobiles seguirá creciendo a full. Entonces, conviene Java y su enorme mundo de spring/struts o hibernate? o conviene Javascript y todos sus frameworks NodeJS, Jquery, Angular etc? y otra duda que tengo es, se puede empezar por el paradigma de objetos sin saber el estructurado? o conviene 1ro el estructurado y no hay otra que caer en C/C++ para eso? Gracias!!

    • Siempre he encontrado risible el argumento de "primero aprende lógica de programación antes de aprender a programar", simplemente así no es como se aprende programación. Es una combinación de ambas, naturalmente necesitas aprender algoritmos para no tener que estar re-inventando el hilo negro cada vez que escribes un programa. Por ejemplo, si necesitas ordenar una lista de resultados, no 9/10 veces no necesitas implementar desde 0 un algoritmo de ordenamiento, ya que no importa que algoritmo utilices, el algoritmo que viene de fábrica con el lenguaje de programación siempre será más rápido que el tuyo.

      Con respecto a aprender Pascal antes que Python genera malas costumbres?? Quien sea que te dijo eso simple y sencillamente no sabe de lo que está hablando. Pascal, Python, C, C++ son herramientas. Estoy de acuerdo que hay mejores herramientas que otras para determinadas tareas. Por ejemplo si te dijeran "Aprende Pascal porque es mas facil que aprende que C" estoy completamente de acuerdo, pero tiene demasiados errores de diseño al grado que Apple dejó de utilizar Pascal en el código de OSX para empezar a utilizar Objective-C y ese movimiento de Apple, fue lo que terminó de matar a Pascal. Pascal es un lenguaje casi obsoleto. Aprenderlo es, en mi opinion, una perdida de tiempo.

      Por el otro lado, simplemente para aprender a Programar te recomendaría Python o Ruby. Todo depende, como escribí en el artículo, de cual es tu motivación para aprender a programar.

      Si aprendes Java, no te va a faltar trabajo y lo mismo va para C#. Esos dos lenguajes son enormes en la enterprise y no van desaparecer pronto. Hay cientos de miles de librerías y compañías que dependen en Java y esas compañías no van a re-escribir todo su código solo para adoptar una nueva moda. Por otra parte el desarrollo en Android es primordialmente hecho en Java, por lo que por ese lado, te será más fácil entrar en nuevos campos si empiezas con Java.

      Con respecto a aprender primero programación estructurada u orientada a objetos, simplemente no importa. La programación orientada a objetos no re-emplaza a la estructurada, y eso es un mito que prevalece mucho entre los programadores. La programación orientada a objetos no reemplaza a la programación estructurada, es simplemente una manera de organizar tu código de tal manera que incrementas la legibilidad y la usabilidad del mismo.

      Quizá ésto no sea aparente para ti en éste momento, ya que problamente vas a empezar a trabajar con proyectos pequeños en los que utilizar programación orientada a objetos no tiene sentido.

      Por ejemplo, si aprendieras C lo más seguro es que conforme tu proyecto vaya creciendo, le irás agregando sub rutinas y llegará el punto en el que una de esas sub-rutinas dependa de una variable global, y tu proyecto seguirá creciendo e irás creando mas variables globales y más sub-rutinas. Y llegará el punto en el que tu proyecto sea tan grande, que agregar una variable nueva, o agregar una sub-rutina nueva, se hace cada vez más difícil, y probablemente te será cada vez mas difícil saber que variables puedes modificar, y cuales no, porque si las modificas otras partes de tu programa puede que no funcionen más. Y te será más difícil recordar en que momento puedes llamar una función y en cual no. Ahora imagina un proyecto como el tuyo, pero 100 veces mas grande y con múltiples programadores trabajando al mismo tiempo sobre él, y es en ése punto dode la programación orientada a objetos toma sentido.

      La programación orientada a objetos viene con conceptos como herencia, polimorfismo y encapsulación que te permiten re-utilizar tu código y extenderlo para que realice tareas especificas, sin necesidad de implementar el mismo código una y otra vez y sin necesidad de saber los detalles de un una subrutina, y simplemente necesitas saber que al utilizarla, esa subrutina hará lo que está destinada a hacer.

      Generalmente, dentro de los objetos se escribe código procedural, orientado a eventos o incluso funcional. No importa. Porque la orientación a objetos existe a un nivel más elevado que los otros tipos de programación. Mi recomendación es que aprendas procedural para que conozcas los conceptos básicos, para que te familiarices con la programación y entrenes a tu cerebro a pensar como programador y rápidamente aprendas programación orientada a objetos y patrones de diseño para que aprendas a organizar tu código de manera legible y reutilizable.

      • ThunderDAC

        Gracias Alan por tu tiempo y dedicación en responderme las inquietudes, creo que es la primera vez que recibo una respuesta tan completa.
        Voy a seguir tu recomendación.

  • Carlos Moreno

    Gracias por compartir tus conocimientos, he encontrado pocos sitios en los que ocurra esto, tu informacion esta mas que completa, y me ha aclarado varias dudas, y sobre todo me aclaro uno que otro mito. Felicidades.

  • Julio

    qué te parece Yii como framework de PHP? tenés una opinión al respecto?.. me lo recomendaron. gracias

    • Sinceramente solamente una vez he utilizado Yii y no lo utilicé lo suficiente para formar una opinión.

      Sin embargo, conozco personas que han abandonado Yii por que tiene un acoplamiento de componentes muy cerrado, lo cual dificulta TDD (Test driven development).

      Durante mi experiencia con Yii me parecio un framework adecuado, pero a pesar de que no he desarrollado mucho en ese Framework, sigo pensando que Symfony2 es el mejor framework de PHP, aunque es mas dificil de aprender ;)

      • Julio

        gracias! pero voy a tener que aprenderlo nomás, porque tengo perspectivas de trabajo y utilizan ese framework.. la necesidad tiene cara de hereje jaja. hasta la próxima, te felicitio por el sitio

        • Gracias! Lamento no poder haberte ayudado mas :) Y te entiendo a la perfección, yo aprendí a utilizar Symfony también por cuestiones de trabajo :P

  • alx21

    Hola, antes que nada agradecerte por compatir esta información que me aclaro muchas dudas. Para serte honesto tengo cierta experiencia en cuanto a programacion se refiere. Manejo con cierta facilidad Java, C++ además de realizar uno que otro pequeño videojuego en C++ usando la libreria SDL.
    Te estaría sumamente agradecido si pudieses facilitarme algun tutorial o pagina web que pueda servirme de guia para programar videojuegos web como los de Facebook. Especialmente desde el punto de vista gráfico, alguna librería que tu recomiendes.
    Sin más que decirte, más que volver a agradecerte por compatir esta información.

    • Eslin F

      codigofacilito.com

  • GABRRIEL SOTO

    Una pregunta, sabes de alguna buena pagina para aprender a programar en JAVA? para hacer aplicaciones moviles

    • Eslin F

      codigofacilito.com , esa

  • alvarodiazcastro

    Gracias Alan, seguiré los consejos sobre desarrollo web.

  • AlejandroOKC

    Excelente articulo , muchas gracias...

  • jose

    "C# es un buen lenguaje para que te inicies en la programación de videojuegos, existen librerías y frameworks muy maduros que te facilitarán el aprendizaje demasiado.
    No te dejes llevar por quienes te recomiendan que aprendas C/C++"

    Lo curioso es que Microsoft recomienda C++ para los juegos xD:

    https://msdn.microsoft.com/library/windows/desktop/dn614993.aspx
    y también por que puedes hacer tu aplicación portable a otras plataformas que no sean .NET

    • Disculpa si se mal entendio lo que escribi :) C++ definitivamente es excelente para desarrollar videojuegos y cualquier otra aplicacion que requiera procesamiento de graficos intensivos.

      Sin embargo, mi recomendacion es para personas que van empezando completamente desde 0 :)

      Programar un juego es dificil, y es muchisimo mas dificil, cuando no se sabe programar con antelacion, y muchisimo mas dificil cuando estas aprendiendo con C++

      No es imposible, miles de personas han seguido ese camino, pero tambien miles han abandonado esta profesion precisamente por que no tomar el camino con menos "espinas".

    • Panameñito

      De hecho todo iba bien hasta que dijo C#, hasta allí dejé de leer el artículo

      • Alejandro Muntz

        C# es una de las mejores soluciones a nivel empresarial, principalmente .NET el cuál ofrece una flexibilidad inigualable aún siendo abandonado durante casi una década por Ballmer, No se puede menospreciar una herramienta tan poderosa solo por ser privativa y desarrollada por una empresa tan controversial como MICROSOFT, Google se porta peor que MS durante los 90's pero nadie está en contra de evitar utilizar Angular, peor aún, ni hablemos lo inconsistente que es cuando pasa de una versión a otra, es muy bonito y se pueden hacer cosas interesantes, pero, ¿se olvidaron del mantenimiento?, esa es la razón por la cuál surgió la Orientación a Objetos, sino estaríamos trabajando en estructurado sin ningún framework, pero nadie piensa en esto.

  • Daniel Hernandez

    Me gusto mucho tu articulo que ¿pienas de python para administracion de servidores y monitoreo se servicios y hardware?

    • Hola Daniel, disculpa la tardanza en contestar.
      Python es excelente para esas tareas. Ansible, por ejemplo, esta escrito completamente en Python si bien lo recuerdo.

      Por si no sabes que es Ansible, en palabras super sencillas Ansible es un software para administrar computadoras, pero en si es IT Automation. Muy util en el area de DevOps

  • YuryHoyos

    No creo que sean "opiniones irresponsables de un montón de programadores"

    Solo citaré lo siguiente y me iré lentamente:

    C es uno de los lenguajes de programación más usados y esta popularidad tiene sus razones. En palabras del programador Joel Spolsky: "C es el equivalente a aprender anatomía básica en medicina"". C es un lenguaje que funciona a nivel de máquina, así que sirve para entender cómo interacciona un programa con la capa de hardware.

    • No digo que C sea inútil de aprender, y si bien entiendo la analogía de Joel Spolsky, hay muchas personas que no quieren ser programadores de profesión, y solo quieren aprender a programar, por aprender. O hay personas que solamente quieren aprender a programar páginas web, y aprender C solamente va a retrasar el aprendizaje.

      Por ejemplo, en ese último caso...

      ¿Se pueden programar páginas web con C?

      Si, si se puede. Sin embargo, C es un lenguaje que no viene con "baterías", y las baterías en éste caso son: Soporte para unicode, XML, JSON, MIME, Conectores para bases de datos, etc...

      ¿Existen esas librerías para C?

      Si, si existen. Pero precisamente porque existen cientos de librerías para cada uno de esos componentes, la mayoría de los programadores terminan en parálisis por análisis, y terminan no aprendiendo nada.

      :)

  • Geralt Rivia

    ¡Ey, quedé muy impresionado leyéndote Alan! Muchísimas gracias, es de las pocas veces que leo algo con sentido. De hecho voy a meter esta página en favoritos, eres genial. Nos leemos.

    • Gracias :) me da gusto que hayas encontrado útil el artículo!

  • jose angel navas leon

    Buenas amigo y para iniciarse en la programación con miras y desarrollar aplicaciones como inventario, facturación etc. Que lenguaje recomiendas?.

  • marcos

    Hola Alan,
    Mis conocimientos de programación son nulos a día de hoy. Mi objetivo es aprender a hacer una IA y no se ni por donde empezar a buscar información sobre las definiciones de cada cosa jaja. ¿Podrías decirme que lenguaje es el mas indicado y completo para hacer las IA? no me importa la dificultad o si encontrare trabajo con ellos. Si pudieras también decirme alguna pagina, libros o fuentes donde aprender a utilizar dicho programa, estaría muy agradecido! (y lo relacionado con las redes neuronales, etc de las que tanto hablan) Muchísimas gracias por iluminarnos con este articulo! :))

    • Le preguntas a la persona equivocada :) Tengo mas experiencia en el campo de Aprendizaje de Máquinas y Minería de datos (que no es necesariamente lo mismo que inteligencia artificial) que en el de IA precisamente. La IA abarca campos de neurociencia computacional, procesamiento de lenguaje natural, etc.

      Dicho eso, haré el mejor intento de recomendarte algo con respecto a lo que sé.

      Tengo amigos que trabajan en robótica y se especializan precisamente en lenguaje artificial, y ellos utilizan C++ Cuando trabajé para el gobierno programando UAVs yo también utilizaba C++, pero la IA de los UAVs que programaba era intermedia, no era para nada super sofisticada ni nada por el estilo.

      Por otro lado, tengo amigos que trabajan en compañías de videojuegos y ellos utilizan Lua para la inteligencia artificial :)

      Lua sería una opción más natural para alguien que va empezando, ya que ofrece una barrera mas baja de entrada, y es relativamente más fácil de aprender que C++

      Dicho eso, mi experiencia con Lua es prácticamente nula, ya que solamente lo utilizo para automatizar algunas tareas en Redis (un almacén de datos key-value).

      Con respecto a páginas y libros, realmente no sé. Tengo algunos libros que a mi me ayudaron bastante hace muchos años cuando hacía videojuegos por hobby:

      Artificial Intelligence a Modern Approach (libro generalista)

      http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref=sr_1_1?s=books&ie=UTF8&qid=1432589943&sr=1-1&keywords=artificial+intelligence+a+modern+approach

      Programming Game AI by Example (videojuegos, escritos en C++)
      http://www.amazon.com/Programming-Example-Wordware-Developers-Library/dp/1556220782/ref=sr_1_1?s=books&ie=UTF8&qid=1432589902&sr=1-1&keywords=programming+game+ai+by+example

      Artificial Intelligence for Games (escrito en C++)
      http://www.amazon.com/Artificial-Intelligence-Games-Ian-Millington/dp/0123747317/ref=pd_sim_14_4?ie=UTF8&refRID=12EGZHYZYEVSF0KT81BG

      • marcos

        Muchisimas gracias Alan!! :D
        Las IA de los videojuegos son similares a las que te puedes encontrar en el ámbito de robotica o lo que los incultos del tema conocemos por IA y sale en las películas o documentales?
        (Mi deseo es hacer una ia que aprenda y pueda mantener conversaciones, etc Ya se que suena MUY pretencioso jaja. Pero que no sea por no intentaro con todas las ganas)
        Con Lua se puede conseguir que la ia aprenda por si misma como he visto que se comentaba en internet?
        Entonces Lua mejor que C++ o que Python o el C# que has comentado para los videojuegos?
        Perdona que te haga tantas preguntas, pero eres el que mejor lo explica de lo que he visto por internet. :)
        Lamento ser pesado o hacer preguntas idiotas.

        • No son preguntas idiotas :) Preguntas muy válidas.
          Con respecto a tu pregunta si la IA de videojuegos es similar a la IA de robots, De cierto modo es similar, al menos lo conceptos, pero la implementación es completamente diferente.

          Por ejemplo a un avión no tripulado (UAV) le puedes programar el algoritmo de la ruta más corta, y en esencia el algoritmo para un videojuego y para el UAV es el mismo, pero los detalles del código son completamente diferentes.

          Ahora que ya veo por que quieres aprender IA, dejame cambiar mi recomendación.

          Por ejemplo, si quieres tener una IA que pueda mantener una conversación estarías viendo temas sobre procesamiento natural de lenguaje, análisis de sentimientos y aprendizaje de máquinas.

          Lua es un lenguaje de scripting y para IA es exclusivamente utilizado en el campo de los videojuegos. Si vas a aprender IA desde 0 para hacer lo que te propones hacer, es más recomendable que utilices un lenguaje más robusto, aunque la curva de aprendizaje sea un poco más pesada.

          C,C++, Java y C# todos son buenas opciones para sistemas de PRODUCCIÓN. Sin embargo, toma en cuenta que el 80-90% del campo de inteligencia artificial aun se encuentra en fase experimental.

          Por lo que es muchísimo más sencillo crear una IA en un lenguaje como Python ya que existing un sin fin de recursos sobre IA, Procesamiento natural de lenguaje y aprendizaje de máquinas en Python.

          Por ejemplo aqui te dejo 2 libros al respecto:

          Procesamiento Natural de Lenguaje con Python:
          http://shop.oreilly.com/product/9780596516499.do

          Aprendizaje de Máquinas con Python:
          http://www.amazon.com/Building-Machine-Learning-Systems-Python/dp/1782161406/ref=sr_1_3?ie=UTF8&qid=1432606377&sr=8-3&keywords=Machine+Learning+Python

          Además Python tiene muchas librerías al respecto, scikit-learning es una de las más robustas:

          http://scikit-learn.org/stable/

          • marcos

            Otra vez, gracias por tu tiempo y dedicación! :))
            Espero no te moleste que en el futuro vuelva a hacerte preguntas relacionadas con esto. :)

          • En lo absoluto :) Me gusta ayudar a las personas.

  • camila rosiello

    Buen articulo ;)

  • Deyvi Javier Saavedra Garcia

    Exelente articulo...

  • Deyvi Javier Saavedra Garcia

    hola Alan ,un gusta te saludo Deyvi Saavedra de peru, te felicito es un exelemte articulo, quiero saber si puedo tomar algunos contexto de tus articulo como (El mejor lenguaje de programación para aprender a programar, Los lenguajes de programación más fáciles de aprender) para publicar mi primer post tengo un blog sobre desaarrollo, y quiero tomar estos temas como referencia a mi primer post de mi blog.

    • Hola Deyvi, gracias por comentar. Siéntete libre de tomar cualquier parte del artículo para enriquecer tu post, lo único que pido es que si lo vas a hacer, pongas un link a ésta entrada.

      No lo hago por SEO, ni nada por el estilo. Solo por si alguien lee tu artículo, también sepan donde pueden encontrar más :D Siéntete libre de ponerle "nofollow" al link para que veas que no es plan con maña :)

  • Deyvi Javier Saavedra Garcia

    a este es mi face: F/deyvipunker derrepende coordinamos para hacer un video hangout , saludos desde peru...

  • Juanant2804

    Buenas, mi nombre es Juan Antonio, soy técnico superior en desarrollo de aplicaciones multiplataforma y he tenido la idea de hacer unos cursillos de programación JAVA online, a modo de videotutoriales en youtube, en castellano y que los puedan entender personas que nunca han visto nada de programación. Vota mi proyecto para que pueda comenzarlo en http://www.lanzanos.com/proyectos/curso-de-programacion-java-online/

  • Marc

    Hola Alan, tengo una duda, para programar paginas webs que lenguaje es el mejor para utilizar? con html y css hay suficiente? el php es mas bien para blogs no? y que lenguaje hay que aprender para hacer aplicaciones para IOS?

    • Hola Marc,
      para páginas web HTML y CSS; solamente te van a permitir hacer páginas web estáticas.

      PHP no es solamente para blogs, es un lenguaje del lado del servidor que te permite hacer un montón de cosas, y entre ese montón de cosas es el de hacer páginas web dinámicas; esas páginas web dinámicas pueden ser blogs, ERPs, CRMs, puntos de venta, E-commerce, etc.

      Para aprender a hacer aplicaciones para iOS tienes que aprender ya sea Objective-C o Swift. Swift es el lenguaje más reciente hecho por Apple para crear aplicaciones iOS; por lo tanto aún sigue evolucionando, mientras que Objective-C ha existido por décadas y existe mucho más soporte

  • GranDT

    Muy buen articulo :).
    El año que viene empiezo a estudiar Ciencias de la computacion y cuando termino la carrera te digo si de verdad logro hackear algo.

    • Jaja :) No te esperes a terminar la carrera (ni me dejes con la duda si lo lograste) empieza a aprender hoy mismo. Una de las piezas clave para aprender a "hackear" es tener una curiosidad casi incontrolable por examinar programar, probar todos los límites del programa, ingresar caracteres que no tienen sentido, cadenas de texto inmensamente largas, o no ingresar nada cuando se está esperando algo, etc. Una cosa lleva a otra.

  • Anker Nkr

    man... excelente redaccion y contenido; te felicito.

  • Paulfer Drey

    Gracias amigo por compartir tus conocimientos me resulto util tu articulo.

  • Alejandro Ordaz Reyes

    realmente no tengo ningun conocimiento en programacion pero he tenido la curiosidad por este campo y en ningun lugar habia encontrado lo que necesitaba hasta que encontre tu sitio muy buen trabajo

  • Ale

    Excelente! Hace mucho tiempo que busco informacion acerca de los lenguajes para saber con cual arrancar... no importa que en un futuro escriba con 10... el dilema es con cual arrancar. Te agradezco, quizas este articulo sea el primer paso de un hermoso camino. Te agradezco!

  • rulo

    En el punto en el que no estoy de acuerdo contigo es que para ser hacker obviamente debes saber programar y no solo en un lenguaje, si vas a explotar algo obviamente debes saber como funciona y me refiero a no únicamente usar herramientas de alguien mas (script kiddie) sino crearlas tu

  • Rubén Ceballos Gil

    Hola Alan, me ha encantado tu artículo. Yo empecé con 14 años a tocar PHP por hobby, aunque mi camino se ha centrado mucho en el sector empresarial, llevo ese programador creativo dentro. Hace unos días que llevo dándole vueltas al tema de los social games y he tenido algunas ideas para integrar mis dos nichos. Estuve a punto de entrar en Flash, ya que es lo que ubico de toda la vida para la creación de estos juegos. Más aun cuando observo que grandes desarrolladores como Ubisoft y Zynga lo utilizan en Facebook, por ejemplo Farmville.

    Pero ahora leo sobre la magnitud de la invulnerabilidades que tiene Flash y esos augurios de su fin. Al igual que Java (siempre hablando de social games claro), por lo que estoy pensando en meterle mano a HTML5 y Javascript. Que aunque no haya visto juegos potentes como el que he mencionado antes, creo que será porque hasta ahora nadie se sentó a desarrollar algo potente en esa plataforma ¿Puede ser? o quizás HTML5 con Javascript no esté tan avanzado para estos usos.

    Un saludo!

    • Rubén Ceballos Gil

      Añado, después de investigar, estoy probando coco2d. Hasta ahora genial!

  • Antonio Pérez

    Hola Alan,

    En primer lugar, gracias por tu artículo, me ha parecido realmente bueno, pero me gustaría tener tu opinión acerca de un tema al que le estoy dando vueltas.

    Voy a acometer un proyecto bastante importante que va a estar centrado sobre raspberry pi casi seguro y me estoy planteando seriamente el lenguaje sobre el que implementarlo, la cuestión es que el proyecto es un controlador hardware con sensores, básicamente, para recogida de información, una serie de variables bastante específicas para su estudio científico, la cuestión es que luego esa información debe estar disponible, por supuesto, via web (crearé una aplicación web) con una base de datos general y accesible mediante smartphones y tablets además de la web, está claro que tengo que utilizar swift y java para las apps moviles, la cuestión es que lenguaje usar para la aplicación de acceso mediante web,

    Yo he programado en php, no soy un gurú ni nada que se acerque en este lenguaje, pero dado que he programado bastante para WordPress conozco el lenguaje, la cuestión es que estoy dudando de si usar php para este proyecto, o bien dejarme tentar por lo que estoy oyendo acerca de Ruby y sobre todo, de python, también tu has dicho que si voy a usar raspberry pi como soporte de hardware el lenguaje es, sin duda, python, así que, dicho todo esto, me gustaría saber tu opinión profesional, me quedo con php o aprendo uno de los otros para realizar el proyecto? Conste que no he hecho nada nunca ni con python ni con Ruby.

    Un saludo y gracias de antemano.

    • Hola Antonio,

      Gracias por comentar! Con respecto a tu pregunta, si yo estuviera en tu lugar lo vería desde 2 diferentes ángulos:

      1) El tiempo que tengo para terminar el proyecto
      2) Si el proyecto es personal, escolar o profesional.

      Por ejemplo, si el tiempo que tengo para terminar el proyecto es corto, invariablemente utilizaria PHP para programarlo porque ese es el lenguaje con el que tengo más experiencia. Si tengo un cuello de botella en la programación del proyecto, 9/10 ocasiones, el cuello de botella no va a ser PHP, sino un problema específico de mi proyecto.

      Por el otro lado, asumiendo que tienes suficiente tiempo para terminar el proyecto y si el proyecto es personal o escolar. Entonces utilizaría el lenguaje que más me llame la atención. Python o Ruby, el que sea, igual hasta lo dejaría a la suerte :)

      Si el proyecto es profesional, nuevamente, optaría por utilizar PHP precisamente por que tengo amplia experiencia en ese lenguaje. Y en cada proyecto profesional en el que trabajo, mi objetivo es entregar trabajo de alta calidad. Es difícil para mi determinar la calidad de un programa, si desconozco el lenguaje en el que se programó.

      Sé que quizá no resolví tu duda, pero al menos esperó que mi proceso para determinar que lenguaje de programación te sirva para tomar una decisión! Saludos

  • Pedro Chavez

    En tierra de indios...¡préndele velas a los dioses!....jajaja...solo falta que pronto digas " decidí iluminar el mundo con mi sabiduría...por que le mundo necesita de mi "..

  • configbug

    Lo mejor que he leído en mi vida. Bien explicado, bien detallado. Gracias por tu tiempo.

  • Charles

    Es interesante el tema, hasta el dia de hoy, he escuchado mucho los que hablaban del "Ensamblador", gracias por el material

  • Luis Jaquez

    ¿Me recomendarían Javascript como primer lenguaje de programación?Soy nuevo en esto y me quiero orientar al desarrollo web.¿Debería aprender primero Java o C ?(Disculpen mi ignorancia pero tengo ganas de aprender)

    • Hola Luis -- Javascript es un lenguaje adecuado para empezar a programar. Si te quieres dedicar al desarrollo web, te recomiendo que aprendas Javascript como lenguaje de backend utilizando Node.js antes de aprender Javascript como lenguaje de front-end.

      De éste modo, solo tienes que aprender un lenguaje de programación para poder desarrollar una aplicación web completa.

      • Lucas Oviedo

        Hola de nuevo Alan. No dejan de sorprenderme tus respuestas. Mientras intento armarme un "plan de carrera" para ser desarrollador web, pensaba si era conveniente aprender PHP (un lenguaje que leí es muy solicitado laboralmente) o Node.Js, ya que al tener que usar JS como lenguaje front-end podrían optimizarse tiempos y ya con más tranquilidad avanzar en PHP.
        Un abrazo desde Argentina.

        • Matias Francia Carramiñana

          Esto te lo respondo yo! Si quieres dedicarte al desarrollo web te recomiendo al 100% aprender PHP, sin embargo también creo que necesitas saber .js para poder manejarte con sliders y darle mas dinamismo a la pagina (también sirve para desarrollar sitios responsive). Aunque todo esto depende de a que tipo de sitios te quieres dedicar, si a webs estáticas, dinámicas, sociales, etc, etc. Si es a webs estáticas te vales con solo HTML5 y CSS3 (ojo! no digo que no sirva aprender otros lenguajes), solo que no son imprescindibles.
          PHP, debido a que es un lenguaje en el que puedes manejar bases de datos y interactuar con ellas puede servirte mucho si quieres crear un foro, red social o una pagina a la que se puedan registrar. Así que resumiendo un poco, dependiendo de lo que quieras hacer es el lenguaje que debes aprender.
          Te deseo la mejor de las suertes!
          Saludos.

      • Miguel Matos

        una duda existencialista: ¿por qué "Node.js antes de aprender Javascript" y no al revés? Considero que es más sencillo si tienes la base lo más pura posible antes de agregarles otros 'aditamentos'

        • No sé a que te refieras como "más pura", especialmente porque a menos de que utilices polyfills, JavaScript en el navegador requiere de muchos "hacks" para que funcione a través de diferentes navegadores, y fue precisamente es la principal razón por la que pienso que es más sencillo aprender JavaScript primero con Node.js, y después con el navegador.

          Porque pienso que si vas a programar en JavaScript moderno (ES6) vas a necesitar por lo menos Webpack, y tener un conocimiento mas holistico de todas las herramientas disponibles.

          Pero naturalmente es solo mi opinión al respecto :) no una verdad absoluta.

  • VMSpain

    El hacker crea y el cracker destruye. Hay una diferencia abismal entre una cosa y la otra, bueno... no tan grande, el hacker suele saber más que el cracker. Un hacker no "abusa" de programas, hacker es un tipo con conocimientos de programación, sistemas, redes y demás, que se dedica a crear y mejorar. Una vez utiliza esos conocimientos para "abusar" se convierte en cracker. Y un cracker no necesariamente necesita saber tantas cosas como un hacker.

  • Jorge

    Hola. Gracias por la orientación. Mi pregunta es: ¿si quiero programar motores paso a paso; o activaciones de bobinas o elementos eléctrónicos, estilo robótica, pero sin ser robótica que lenguaje debiera encarar? Desde ya gracias

    • Jorge, la verdad desconozco :) A pesar de que estudié Mecatrónica, no recuerdo la última vez que tuve que programar un microcontrolador para un motor paso a paso. Creo que si bien recuerdo utilicé C, pero no podría orientarte más al respecto.

  • Matias Francia Carramiñana

    Hola Alan, me encantó tu post, pero a la vez me surgió una pregunta... Tengo ganas de crear apps para móviles, tanto juegos como aplicaciones, y quería saber si sirve el C++, debido a que es una versión "mejorada" del C y es orientada a objetos. Me recomiendas usarlo? o me dedico a aprender otro lenguaje?
    De antemano gracias

    • Hola Matias, muchas gracias por tu comentario! Con respecto a tu pregunta, te la respondo en dos partes.

      La primera: Sirve C++? Si.
      La segunda: Te conviene? A lo mejor no.

      Muchos puristas podrían argumentar que C++ no le mejora nada a C :) Por cierto, Objetive-C también es orientado a objetos y Apple ya dejó de utilizarlo.

      En mi experiencia diría que si vas a desarrollar una app que *REALMENTE* necesite el nivel de desempeño de C++, adelante, utilizalo. No es como que tengas alguna otra alternativa. Por ejemplo reconocimiento de imágenes, procesamiento pesado de datos, etc...

      Si quieres hacer una app comercial y sencilla, mi recomendación sería que utilizaras los lenguajes de facto para cada plataforma, y hacer tu primera app en esos. (Java para Android, C# para Windows Phone, Objective-C/Swift para iOS)

      Por que? Primero que nada porque hay más documentación, en el momento en el que no sepas hacer algo, o tu app esté cayéndose sin razón aparente, existe una comunidad muy fuerte para cada plataforma que te puede ayudar a resolver tus dudas.

      Una vez que domines cualquiera de esos lenguajes, entonces si puedes empezar a investigar como optimizarlos, o como mover componentes críticos de tu app a un lenguaje con mayor rendimiento. Pero así de entrada, para lanzar tu primera app, sin experiencia desarrollando aplicaciones móviles anteriormente, sinceramente no lo recomendaría :)

      • Matias Francia Carramiñana

        Gracias por tu respuesta Alan! La verdad es que aprendí algo de javascript pensando que era lo mismo que java (pensaba que servía tanto para aplicaciones móviles como para plataformas web) y cuando ya dominaba todos los ciclos y funciones me di cuenta que no, por lo que empecé a estudiar C++. Y la verdad es que quiero crear al menos un programa antes de comenzar con otro lenguaje porque sino siento que dejo todo a la mitad. Si no es recomendable usar C++ para crear aplicaciones móviles, C++ para que sirve, cuál es su mejor funcionalidad? Y Con eso que dijiste de que Objetive-C lo habían dejado de utilizar en apple, a que te referías? Saludos y nuevamente gracias por la respuesta!

        • No hay problema! Con respecto a tu opinión al respecto de JavaScript:

          1. JavaScript y Java no se parecen en lo absoluto :) No te dejes engañar por la palabra en común que tienen! Sin embargo, JavaSCript sirve para aplicaciones móviles (ReactNative por ejemplo) así como aplicaciones web (JavaScript Universal/Isomorfico)

          2. Como dije anteriormente, C++ si sirve para desarrollar aplicaciones puedes utilizar herramientas como Marmalade o QT para realizarlas. En mi opinión, a menos de que realmente necesites el desempeño de C++ o necesites desplegar la misma aplicación en múltiples dispositivos con el mismo código (y la misma experiencia de usuario), entonces es posible. Sin embargo toma en cuenta que los lineamientos de UX para iOS son diferentes a los lineamientos de UX para Android, ya que los dispositivos son diferentes. La razón por la que no te recomiendo C++ para que empieces a programar es porque te vas a tardar más, y puedes llegar a frustrarte. Explico más al respecto en éste vídeo:

          3. Apple desarrolló un nuevo lenguaje de programación de código abierto llamado Swift para reemplazar eventualmente a Objective-C. Recientemente, Google anunció que es probable que abandonen Java (tienen problemas legales con Oracle, dueños de Java), y muevan todo el desarrollo a Swift. Así que quizá convenga que aprendas Swift (ya que también lo puedes utilizar del lado del servidor), y en un futuro puedas programar apps para iOS (y watchOS), para Android y para el backend de las mismas.

          • Matias Francia Carramiñana

            Oh! Muchas gracias por ese dato, no tenía idea de lo de Google y Oracle. En realidad por lo de la frustración no me preocupo, ya que tengo el interés suficiente en el tema como para no desanimarme, de hecho, mientras mas difícil sea con mas motivación me lo voy a tomar... El problema que tengo con C++ es que casi no hay librerías en Xcode (gestor de código que utilizo), así que quizás me dedique a aprender Swift. Y nuevamente, muchas gracias Alan, ahora estoy mucho mas aclarado con respecto a lo que debo hacer!

  • Joel Lopez

    Hola Alan buen post amigo Siempre revisando tu pagina. Quisiera una ayuda si podrías.

    Me llama la atención este de programar y aunque me gustaría varias áreas ahorita quisiera aprender a crear aplicaciones androids ya me hize un curso básico de java y no me resulto ta difícil Pero quisiera saber de algún curso de androids he buscado pero sin suerte los que veo no me son tan prometedores.

    Por ello si sabes de alguno o tienes alguna sugerencia te lo agradecería. Ya hasta tengo idea de como quiero y haga mi primera Apps. Saludos.

    • Hola Joel!

      Lamentablemente no conozco ningún curso de Android hasta el día de hoy que valga la pena. Lo que yo aprendí de Android, lo aprendí por mi cuenta con mis conocimientos de Java, y leyendo la pagina de http://developer.android.com/develop/index.html , asistiendo a meetups de desarrolladores de Android y publicando mis propias apps utilizando Android Studio.

      En mi opinión, Android es un ecosistema que cambia tan rápido, que para cuando se produce un curso de BUEN contenido, ya varias cosas han cambiado.

      • Joel Lopez

        Gracias por responder si la verdad los cursos no los veo tan buenos.. buena pagina le echare un ojo solo que no se me da para nada el ingles...!! Saludos.

        Sigue asi.....

        • Muchas gracias! El Inglés técnico es muy diferente al Inglés convencional. Dado a que es mucho más "formal", es más fácil para los traductores traducir del Inglés al Español de una manera que tenga sentido.

        • Joel Lopez

          Si esta muy bueno y pues uso el traductor de pagina para ir viendo. Por ahora creo mejorar en java ya que solo empiezo gracias.

  • Carlos Andres Pisco Garcia

    Muchas gracias por el post!es muy ùtil. Tengo una consulta si me permites: Si lo que quiero es programar para facebook pero no estrictamente juegos debería aprender tambien javascript? Lo que quiero es que diferentes usuarios llenen formularios que puedan luego intercambiar entre ellos. No quiero basarme en una aplicacion de terceros para esto. Gracias!

    • Hola Carlos, de antemano, una enorme disculpa por contestar tu comentario hasta hoy. Con respecto a tu pregunta, todo depende de lo que quieres hacer, por ejemplo hay librerías para integrar dispositivos embebidos con Facebook por lo que en ese caso no hay necesidad de aprender JavaScript.

      Sin embargo, basado en lo que me has comentado me da la impresión que es muy similar a una aplicación web, si ese es el caso; invariablemente tienes que aprender a programar en JavaScript.

  • Manuel Garcia

    El mejor lenguaje para empezar es C++, ¿ Por qué?

    1. Una vez dominado este facilita aprender más lenguajes de programación como Java, C#, e incluso Python. No es lo mismo migrar de C++ a Java, que de Java a C++. El primero toma menos tiempo en lograrse que en la segunda.

    2. Puedes crear potentes malware (no tanto como ensamblador)

    3. Y otras cosas mas

    OJO: Lo del C++ es para adaptarte al mundo de la programación, y de este aprende un lenguaje que se adapte a tus características.

    • bloedwrekernet

      ¿Leíste el artículo?

  • Liam Rosas

    Excelente articulo alan!

    Tengo una duda yo estoy en el front-end y estoy empezando en el mundo wordpress y me ha gustado mucho php y he leido muchos articulos donde te dicen que solo ocupas html css y php para trabajar Wp. Esto es cierto? todas las interacciones del sitio las podemos crear con php? o si es necesario usar javascript?

  • Miguel Matos

    Me toca hacer una aclaratoria, y no sé si tenga los permisos correspondientes: no, los juegos de Facebook NO están hechos en Javascript, todavía siguen usando Flash. Y lo sé porque yo viví esa "época platinada" de los juegos masivos y freemium, y a la fecha todavía hay juegos en flash. Y NO, está muy lejos el día en que sean reemplazados por HTML5 (y desconozco si están experimentando con eso).

  • José Oropeza

    muy interesante tu artículo alan, me llama la atención este mundo de la programación pero no tengo ningún conocimientos sobre esto, quiero aprender un poco sobre esto antes de entrar a la universidad y quisiera que me respondieras unas dudas: 1) Qué consejos me das para empezar en este mundo, 2) Cuánto tiempo crees que me tome aprender a programar y por último: 3) Qué sitios me recomiendas para aprender a programar sin hacer un curso personal o tener que pagar un curso online (mi situación económica no me lo permite)

  • meh

    Me ha llamado la atención esta parte:
    "'Ensamblador' no es un lenguaje de programación, es la manera coloquial de referirse a un conjunto de lenguajes de programación de bajo nivel."

    Tienes alguna fuente donde explica eso que dices?, tengo curiosidad, capaz viví engañado o quizá solo estás confundiendo Assembler con Assembly, donde este último sí sería un lenguaje de bajo nivel. Gracias!

    Saludos

    • Assembly es la familia de lenguajes que son muy similares entre sí, pero tienen diferencia dependiendo de la arquitectura que estás programando. La gran mayoría de tutoriales que existen son para la arquitectura x86. El set de instrucciones para ARM o x64 es diferente al SI de x86. A eso me refiero que no existe un sólo lenguaje ensamblador universal.

      Set de instrucciones para x86:
      https://software.intel.com/en-us/articles/intel-sdm

      Set de instrucciones para AMD64:
      http://developer.amd.com/wordpress/media/2012/10/24592_APM_v11.pdf

      Set de instrucciones para ARM:
      http://simplemachines.it/doc/arm_inst.pdf

      Los tres son "assembly" pero las instrucciones son diferentes. Por eso cuando alguien dice "Yo sé ensamblador" esa pieza de información es inútil sin saber la arquitectura.

      • meh

        Entiendo lo que dices y llevas razón en la diferencia del conjunto de instrucciones.

        Solo me parece demasiado agresiva la manera que tienes en decir esto "Asi que cualquier tarado que te diga 'tienes que aprender Ensamblador' tienes mi permiso de llamarlo ignorante." si bien que alguien diga que sabe ensamblador nada más, no es que esté mal, solo que no especifica en qué arquitectura y estaría bien enseñarles una mejor manera al expresarse en lugar de tratarle de tarado o ignorante sin más. En fin, es solo mi opinión, claro está, el artículo no deja de estar bueno en general.

  • Javier Misat

    Excelente artículo y un buen vídeo, llevo 7 años trabajando con PHP y es cierto eso de que hay muchos detractores que por moda dicen que PHP no sirve, que es un lenguaje obsoleto, pero sólo conocen programación estructurada con PHP, no han visto frameworks cómo Laravel, o manejadores de paquetes cómo composer, ni trabajado con interfaces, traits, namespaces y un montón de etcéteras que PHP incluye ahora, para mi PHP, ha tomado solidez a lo largo de estos años, y lo he visto crecer desde la versión 4 hasta el presente y cada vez más tiende a solidificarse, casi tanto como JAVA, lo cual me parece muy bueno.

    • Alejandro Muntz

      yo no colocaría a Laravel como un ejemplo excepcional, cubre ciertas expectativas para cierto tipo de proyectos. Podríamos hablar más de YII para proyectos más grandes y complejos, sin embargo depende mucho del tipo de solución que se realice, PHP es rápido y más en su versión 7, es ligero y permite múltiples instancias, se utiliza hasta en plataformas de redes sociales, se utiliza incluso de forma conjunta con LUA y REDIS para manejo de información cercana al tiempo real. Por cierto, que yo sepa no existen lenguajes de programación obsoletos como tal, todo depende del propósito al cuál se oriente la solución aplicada a un problema en específico.

A %d blogueros les gusta esto: