Assembly, el lenguaje de programación que llevó al hombre a la Luna, en el top 10 de los más usados

Escrito por Alberto García
Ciencia

El ordenador que llevó al hombre a la Luna, llamado Apollo Guidance System, tenía un procesador de 1 Mhz de frecuencia, 4 KB de RAM y 32 KB de memoria ROM. Pesaba unos 22 kg, y era un cubo de 30 centímetros de lado. Su coste fue de 150.000 dólares (del año 1969). Un portátil actual es 4.000 veces más rápido, siendo unas 230 veces más barato.

Este ordenador, por tanto, debía de usar un código muy liviano y sencillo. El lenguaje de programación para generar ese código se llamaba Assembly. El código Assembly utilizado en el AGC es público desde 2003, desde que el MIT puso en Internet copias del código que fue utilizado en la misión Apollo 11. Un investigador llamado Ron Burkey copió a mano, de papel a ordenador, todo el código que puso en Internet el MIT. Algunas partes incompletas las rellenó él correctamente, como luego pudo comprobar.

apollo 11 dsky

Un ex-trabajador de la NASA llamado Chris Garry subió a GitHub la semana pasada el lenguaje completo en el que fueron escritos todos los comandos para gestionar el viaje del hombre a la Luna. Todo el programa, a disponibilidad de los usuarios, lo cual ayudará a futuros desarrollos utilizando este lenguaje.

Según la lista que elabora TIOBE, Assembly está en el top 10 de lenguajes de programación más utilizados en la actualidad. Desde 2012 ha sufrido un aumento paulatino, y en el último año ha aumentado del 0.5% al 2.6%.

apollo 11

¿Qué ha causado este aumento? El Internet de las Cosas. Assembly es un lenguaje de programación muy liviano. Los lenguajes de programación más modernos son muy complejos y pesados, y no pueden funcionar correctamente en dispositivos que requieren un código lo más sencillo posible. Es esto lo que ha hecho que esté ganando tanta popularidad, y parece que en los próximos años ira a más. Assembly es un lenguaje complicado de entender para los humanos, pero fácil para los ordenadores.

El índice de TIOBE ordena los lenguajes de programación en función de su popularidad, utilizando como variables las búsquedas de Internet, ofertas de trabajo que demandan programadores que conozcan ese lenguaje, número de cursos de enseñanza y el número de trabajadores que conocen el lenguaje en concreto a nivel mundial.

top 10 lenguaje programacion

El top 10 queda de la siguiente manera:

1. Java.
2. C.
3. C++.
4. Python.
5. C#.
6. PHP.
7. JavaScript.
8. Visual Basic .NET.
9. Perl.
10. Assembly.

Java y C son indiscutiblemente los más utilizados, y llevan una década intercambiándose el puesto entre el más y menos usado. Actualmente, Java se mantiene con un cómodo 20%, mientras que C ha caído hasta un 12%. A este ranking entra también Perl, después de que Perl 6 fuera lanzado al mercado después de llevar años siendo desarrollado, y volviendo a despertar el interés de los desarrolladores.

Quizá te interese…

Lenguajes de programación más usados, más demandados y con más futuro

Ya hay fecha para la muerte del plugin de Java

El Snapdragon 821 es oficial: la bestia para móviles renovada

Fuente > ADSLZone

Vía > Softpedia

Continúa leyendo
Comentarios
23 comentarios
  1. Akenateb
    Usuario no registrado
    11 Jul, 16 8:11 pm

    Se llama “Ensamblador” o “Codigo Maquina” tiene su nombre en español, y no es “Assembly” unless we were talking in English.

    1. Alpha
      Usuario no registrado
      11 Jul, 16 9:55 pm

      En cuyo caso, sería “assembler”.
      Salu2

    2. Usuario indignado
      Usuario no registrado
      12 Jul, 16 8:57 am

      Siendo estrictos … ensamblador es el lenguaje, código máquina es el bytecode en el que se transforma y que es lo que realmente entiende el procesador.

    3. Nombre
      Usuario no registrado
      13 Jul, 16 6:36 pm

      Solo un detalle, “assembly” es el binario obtenido después de compilar un código fuente en lenguage “assembler”

  2. Anónimo
    Usuario no registrado
    11 Jul, 16 8:36 pm

    Tremenda estupidez de razonamiento. El lenguaje ensamblador no es único, no es ningún lenguaje universal, y su uso no tiene nada que ver con necesitar código “liviano” ( ya que los compiladores frecuentemente generan código mucho más “liviano” que el generado por medios humanos) sino con el mero hecho de que el resto de los lenguajes no son específicos a las arquitecturas y por tanto no están capacitados para definir una gran mayoría de operaciones a bajo nivel para poder controlarlos.

    1. Anónimo
      Usuario no registrado
      12 Jul, 16 1:01 pm

      Menuda chorrada mas gorda estas diciendo…

      1. Anónimo
        Usuario no registrado
        12 Jul, 16 8:14 pm

        Gran aporte a la ciencia la tuya

      2. Anónimo
        Usuario no registrado
        12 Jul, 16 8:27 pm
  3. Anónimo
    Usuario no registrado
    11 Jul, 16 10:25 pm

    osea que con un arduino actualmente se puede ir a la luna.

    bueno la verdad es que el programa es “sencillo” ya que tiene que interactuar con pocos elementos.

    lo que complica los programas modernos son las interfaces graficas, multihilos, multiprocesos, eventos y demas

    siemper un computador que hace una tarea muy especifica y muy efeciente sera mucho mejor que un computador de proposito general.

    y para los “redactores” el emsamblador se usa en cualquier sistema donde lo imortante es el rendimiento, y en cualquier carrera de informatica se ve ensamblador.

    1. Anónimo
      Usuario no registrado
      11 Jul, 16 11:35 pm

      De acuerdo en casi todo menos tu última afirmación.

      Aunque antaño el código desarrollado en ensamblador fuese habitualmente más eficiente que desarrollar código en C por ejemplo, hoy en día en la gran mayoría de los casos no es así.

      Las arquitecturas de cpu y combinaciones de secuencias de código son tan extremadamente complejas, que de no ser por operaciones tan sencillas como a+b, por lo general el código generado por los compiladores (desarrollados por expertos en cada arquitectura y bien cotizados) es mucho más eficiente tanto en tamaño como en tiempo de ejecución. Y en aquellas tareas tan sencillas, por lo general se igualan.

      Piensa en arquitecturas tan sencillas como un DSP monocore con múltiples unidades aritmético lógicas, y ya con ello las opciones de desarrollo son innumerables.

      Aquellos que son capaces de desarrollar mejor código en ensamblador que los compiladores se pueden contar con los dedos de la mano, y quien diga lo contrario no ha tratado de comparar sus habilidades contra un compilador de C reciente.

      Eso no quiere decir que el ensamblador no se use. Hay ciertas tareas que los lenguajes de programación de alto nivel no pueden realizar, por carecer de definiciones suficientes, y por ser en general independientes de arquitectura. Pero el usar ensamblador para cualquier función de alto nivel medianamente complejo y realizable con lenguajes de alto nivel dista de ser eficiente.

      1. MINIXERO
        Usuario no registrado
        12 Jul, 16 11:10 am

        El código escrito por un buen programador de ensamblador supera en 1:3 al del mejor compilador (fuente: Andrew S. Tanenbaum: Organización de computadoras). Por eso el ensamblador se utiliza aún en partes críticas del S.O. y en aplicaciones donde la eficiencia es primordial.

        1. Anónimo
          Usuario no registrado
          12 Jul, 16 1:06 pm

          Cada vez que alguien destroza el argumento de otro comentarista como lo has hecho tu en algún lugar muere un gatito. 😛

          1. Anónimo
            Usuario no registrado
            12 Jul, 16 8:06 pm

            Para destrozar argumentos han de aportarse pruebas, no palabras desfasadas y sin contexto ni referencia. Hay buenas razones por las que los drivers de tu PC y móvil están en su gran mayoría escritos en C. Optimizados, pero en C.

            Con esto no digo que no haya que programar en ensamblador. Yo mismo lo hago a diario, pero hay que saber cuándo hacerlo, y cuándo no.

        2. Anónimo
          Usuario no registrado
          12 Jul, 16 7:30 pm

          Minixero, de cuándo es esa cita? porque Tanenbaum actualmente tiene 72 tacos, y las cpus de hoy en día nada tiene que ver con uno de 8 bits.

          Por otro lado, sabes cuántos “buenos programadores” de ensamblador existen según su definición, y cuál es el “mejor compilador” de hoy en día? No mezcles churras con merinas, cita las frases al completo con su contexto, y siempre usa fechas de la cita.

        3. Anónimo
          Usuario no registrado
          12 Jul, 16 8:22 pm

          Se usa en partes críticas del sistema porque no por eficiencia sino principalmente porque no hay forma de hacerlo en lenguajes como C. Por ejemplo es imposible controlar la forma en que se hace un cambio de contexto escribiendo código puramente en C.

          Muchas (muuuuuchas) de las partes de tu SO se escriben en C no sólo porque por lo general el tiempo de desarrollo en esamblador sería invialbe, sino también porque al final el código resultante tampoco sería tan eficaz como el de C.

  4. YOFLIPO
    Usuario no registrado
    11 Jul, 16 10:51 pm

    El título me sorprendió, el desarrollo me dejó sin palabras. A la Luna os pueden mandar, a ver si la información se perdió por ahí. ¿Desde cuando Java es más complejo que Ensamblador?

    1. Viejuno
      Usuario no registrado
      12 Jul, 16 1:42 am

      El ensamblador es lo más fácil que hay por ser lo más básico y sin diarreas mentales “sobreingenieradas” por encima. Java es una diarrea mental con paradigmas absurdos que nada tienen que ver con el funcionamiento del ordenador. ASM es hermoso, aún recuerdo los tiempos del MSDOS en que lo podías usar para acceder directamente a la máquina sin el entrometimietno del sistema operativo, qué tiempos aquellos…

      1. Anónimo
        Usuario no registrado
        12 Jul, 16 10:33 pm

        Lo era, lo era. Pero hoy en día el lenguaje ensamblador es algo tan precioso como

        MCR p15,0,r0,c13,c0,1

        Y mucho me temo que la mayoría de los que en este foro abogan por usar el ensamblador, no están muy capacitados para interpretar una línea tan sencilla como esa. No digamos un driver completo o una pequeña parte de linux escrita en ensamblador.

  5. 010000101001011100
    Usuario no registrado
    12 Jul, 16 8:44 am

    ¿De dónde habeis sacado eso de “Assembly”¿ Será “Assembler” (ensamblador o código máquina).

    1. MINIXERO
      Usuario no registrado
      12 Jul, 16 11:25 am

      Es el becario, que no tiene ni puta idea de programación.

      1. Anónimo
        Usuario no registrado
        12 Jul, 16 7:36 pm

        Por lo visto, tú tampoco. El lenguaje en sí se suele denominar “assembly language”, se suele denominar “assembly code” al código generado, y “assembler” es por lo general el programa que traduce código ensamblador a código binario de máquina.

        Citas mucho a Tanenbaum pero no muestras estar muy puesto en el tema. Periodista quizás? 😉

        1. Anónimo
          Usuario no registrado
          13 Jul, 16 9:29 am

          Periolisto mas bien