Swift 2: características y código abierto [WWDC’15]


Apple presentó el lunes muchas cosas interesantes para los programadores de sus plataformas. Al día siguiente nos enteramos de que además, se unificaban los programas de desarrollo en uno solo, de forma que ahora todos podemos desarrollar para iOS y Mac indistintamente. Es una gran noticia. Pero entre las noticias interesantes estaba también una nueva versión de Swift, que esperemos que sea definitiva (este último año la plataforma ha sufrido muchos cambios que han molestado a muchos programadores) y algo que se llevó el aplauso más grande de toda la gala: se vuelve “open-source”, o código abierto.

swift-2.0-open-source

Publicidad

Swift ya era un lenguaje interesante desde que el año pasado se presentara en la keynote de junio y su adopción ha sido, en palabras de muchos expertos, la más rápida e intensa de la historia reciente de la programación de ordenadores y cacharros en general. Con un lenguaje totalmente modernizado y con las últimas características que se le asumen a un lenguaje actual (con muchos préstamos de lenguajes como C# o Ruby, por decir algunos), Apple pretende ir dejando atrás Objective-C como lenguaje principal de desarrollo de apps tanto para iOS como para Mac. Además de lo que ya conocemos del lenguaje y la plataforma, se han presentado las siguientes mejoras relevantes:

  • Construcciones incrementales, que permiten al compilador no tener que recompilar el proyecto completo cada vez y una ganancia importante en la velocidad de inicio de la ejecución.
  • Ejecutables aún más rápidos: si una de las características de Swift era la velocidad de ejecución, en esta última beta parece que la velocidad se ha acelerado aún más.
  • Diagnósticos mejorados del compilador. Esto ayuda a que el propio compilador (que recordemos se ejecuta en tiempo de edición) detecte más fallos cuando el programador los está provocando en el código.
  • Estabilidad mejorada.
  • Mejoras internas del lenguaje: este ha sido uno de los caballos de batalla en lo que se refiere al primer año del lenguaje, ya que los continuos cambios en algunas estructuras como las matrices y los hash estaban provocando serios problemas a los desarrolladores cada vez que salía una nueva versión. Se han añadido nuevas mejoras en el puente Obj-C / Swift y se han hecho nativas estructuras como Set.

opensource

Aparte de estas mejoras, que son las normales en el desarrollo del lenguaje, la gran noticia de este año ha sido que la plataforma y el lenguaje se han hecho “abiertos”, lo que ha emocionado a muchos programadores. Esto ha provocado las primeras discusiones sobre qué está haciendo Apple exactamente con este movimiento. Se suponía que la idea era que, probablemente, Swift fuera propietario como lo ha sido Objective-C todos estos años, para que en principio sólo se pudiera usar en los sistemas operativos de la manzana. Pero esta vuelta de tuerca ha confundido a mucha gente. Desde el momento en que haces abierto un lenguaje (no se conocen bien aún los detalles de la “apertura”, ya que no está claro qué elementos se declararán abiertos finalmente, aunque en la keynote se dio a entender que tanto el lenguaje como el framework serían “open-source”) dejas la puerta abierta para que se implemente en otras plataformas de forma libre como en el caso de .NET y Mono. Es más, desde que Microsoft declaró que iba a abrir “completamente” .NET para que tanto compilador como framework pudiera usarse en otras plataformas como Linux (recordemos que OS X no deja de ser un Unix y por tanto compatible POSIX con Linux y otros Unix), es posible que Apple se haya visto compelida a realizar los mismos movimientos. Pero también puede ser una respuesta al Java de Oracle, que con modificaciones es el que se usa en Android. Java no es libre ni totalmente open-source. Sólo se le permitió a GNU realizar una versión específica para su sistema y después de mucha batalla, legal en algunos casos. Google aún mantiene serias contiendas con Oracle por este asunto, ya que el gigante de las bases de datos no está dispuesto a soltar prenda. Es posible que el movimiento de Apple pueda estar orientado a empezar a diseminar su “semillita” por el resto de sistemas de la competencia, y que para los desarrolladores Android sea sencillo realizar apps para iOS y Mac sin tener necesidad de un Mac para desarrollar. De ser así, en los próximos meses veremos el surgimiento de proyectos tipo Mono con el nuevo lenguaje.

Yo he vivido el movimiento de software libre y aunque hace mucho que me desvinculé de él, de las pocas certidumbres que tengo una es que ninguna gran empresa está en ese entorno “por amor al arte”. Es más, por desgracia ellos han sido los únicos que han sacado realmente provecho del software libre: IBM, Google, Apple, Microsoft… Y otras muchas grandes empresas han sacado un provecho brutal de esta forma de elaborar software aportando bastante poco en dirección contraria (Apple en ese sentido es poco pródiga pero reconociendo que ha sido muy liberal con el código, como se ha visto con WebKit). Particularmente creo que los beneficios para los desarrolladores van a ir, no tanto por la libertad del código si no por la posibilidad de desarrollar para los productos de Apple sin necesidad de tener un Mac. Y eso es mucho. Veremos en los próximos meses qué movimientos se realizan y cómo se terminan materializando en el ecosistema de Apple.

Anterior 9 aplicaciones gratuitas por tiempo limitado (10-junio-15)
Siguiente 15 aplicaciones gratuitas por tiempo limitado (11-junio-15)

2 Comentarios

  1. Manuel
    11 de junio, 2015
    Responder

    Objective-C propietario? que yo sepa el compilador gcc de linux hace mucho tiempo que tiene el compilador: gbojc. Otro tema son las librerías, pero el lenguaje que yo sepa era opensource también.

    • lainon
      12 de junio, 2015
      Responder

      El Obj-C de Apple tiene extensiones propias que no forman parte de otros compiladores, por eso se dice que es propietario… Más allá de eso, sí es cierto que hay "flavors" del lenguaje en Unix (se ha intentado portar a Windows sin mucho éxito), pero lo que es el lenguaje que se usa para programar en las plataformas de Apple no es abierto, por las extensiones que decía.