Swift

Swift
Swift

Hace ya un par de semanas Apple presentaba en la WWDC (Worldwide Developers Conference, Conferencia Mundial de Desarrolladores) un nuevo lenguaje de programación para iOS y para OS X llamado Swift. Es la primera vez en mucho tiempo que Apple introduce un cambio tan importante en el desarrollo de software desde que adquirió NeXT, compañía que fundó Steve Jobs después de su renuncia forzada de Apple. Apple ha ido sentando las bases para introducir Swift a lo largo de los años, avanzando con su compilador, debugger y frameworks. El manejo de memoria se ha simplificado con Automatic Reference Countig (ARC). Su framework, construida sobre la solida base de Foundation y Cocoa ha ido adaptandose a los nuevos tiempos y creando estándares. Objective-C ha evolucionado para soportar bloques y módulos, permitiendo la adopción de tecnologías y lenguajes de programación modernos. Gracias a toda esta base, ha podido entrar en juego lo que es el futuro del desarrollo de software en Apple, Swift. Swift aporta varias características que hacen más sencilla y flexible la programación. Es casi como un lenguaje de scripting. Algo que muchos desarrolladores llevan buscando desde hace tiempo, ya que muchos se han acostumbrado a lenguajes de programación web o vienen de este mundo. De esta manera la sintaxis limpia y familiar de Swift puede tanto atraer a más desarrolladores a la plataforma, como simplificar el trabajo de los que ya están a bordo. Aporta mejoras en el rendimiento y características interesantes como playground. Una herramienta que nos permite modificar el código al vuelo sin recompilarlo, pudiendo ver lo que estamos haciendo en tiempo real. El lenguaje es completamente nativo, se compila con el mismo compilador que Objective-C llvm y está completamente integrado con este. Es decir en una misma aplicación podemos mezclar C, Objective-C y Swift. Por otro lado se pueden criticar ciertos cambios que Swift trae consigo. En comparación con Objective-C da mucha menos información de lo que realmente está haciendo nuestro código en cada momento. También llevará algún tiempo aprenderlo y adaptarlo en nuevos proyectos. Sin embargo son mas los pros que los contras.

Características de Swift

Algunas peculiaridades del lenguaje son las siguientes:

Constantes y variables

Es posible usar casi cualquier carácter que gustes para nombrar variables y constantes: [caption id="attachment_9654" align="aligncenter" width="1242"]

Fuente: https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_399

Fuente: The Swift Programming Language[/caption] Sin embargo no pueden contener símbolos matemáticos o signos de puntuación. Los numeros no pueden estar al principio del nombre pero si en cualquier otra posición.

Comentarios multilinea anidados

Al contrario que en C, los comentarios multilinea en Swift pueden anidarse dentro de otros comentarios. [caption id="attachment_9656" align="aligncenter" width="1264"]

Fuente: https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_399

Fuente: The Swift Programming Language[/caption] Alguna que otra vez he necesitado esto cuando he querido comentar un gran trozo de código que ya de por sí tiene comentarios multilinea.

Punto y coma

Olvidate del punto y coma. Si usas lenguajes como Python o Ruby esto te va a resultar comodo. El punto y coma al final de sentencia sigue existiendo y si lo añadimos el compilador no lanzará un error. Es más, el mismo compilador es el que se encarga de añadirlo si no está. Así que su uso es opcional y puede sernos útil cuando queremos juntar dos sentencias en una misma linea: [caption id="attachment_9653" align="aligncenter" width="1240"]

Fuente: https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_399

Fuente: The Swift Programming Language[/caption]

Operador básicos

El operador del modulo % puede operar con numeros en coma flotante.

8 % 2.5 // Devuelve 0.5

También encontramos operadores de rango a..b y a...b, útiles a la hora de expresar secuencias:

for index in 1..9 {
    println("\(3) * \(index) = \(index * 5)")
}
// 3 * 1 = 3
// 3 * 2 = 6
// 3 * 3 = 9
// 3 * 4 = 12
// 3 * 5 = 15
// 3 * 6 = 18
// 3 * 7 = 21
// 3 * 8 = 24
// 3 * 9 = 27

y al contrario que en C y muchos otros lenguajes la asignación no devuelve valor alguno. Por lo que no podremos hacer:

if x = y {
    // ...
}

Esto evita que el operador asignación = sea usado por accidente cuando lo que realmente queremos usar es un comparador de igualdad ==. A todos nos ha pasado alguna vez y hemos estado buscando durante un buen rato el error.

Otras características

En Swift no tenemos que crear archivos distintos para la interfaz e implementación de un clase. Simplemente se define una clase o estructura en un archivo y estarán disponibles para ser usadas en el resto del código. Permite modificar el valor de subpropiedades de una estructura directamente, sin tener que reasignar la estructura completa:

struct Resolution {
    var width = 0
    var height = 0
}
class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?
}

// ...
someVideoMode.resolution.width = 1280

Y muchas otras cosas que podréis encontrar en la documentación, The Swift Programming Language Por ahora solo esta disponible para desarrolladores que tengan acceso a la version beta de Yosemite. El resto de aficionados podrán probarlo cuando salga esta versión en otoño de este año. Probablemente en el futuro veamos cada vez más el uso de Swift frente a las tecnologías anteriores. Si eres desarrollador de iOS y/o OS X merece la pena aprender este nuevo lenguaje aunque puedas seguir trabajando íntegramente en Objective-C. Por ultimo os dejo un el video de la presentación en la WWDC: Apple SWIFT programming language demo at WWDC 2014Fuente