{"id":11310,"date":"2015-03-18T13:50:44","date_gmt":"2015-03-18T12:50:44","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=11310"},"modified":"2016-02-03T17:17:00","modified_gmt":"2016-02-03T16:17:00","slug":"impariamo-a-programmare-in-swift","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/impariamo-a-programmare-in-swift\/","title":{"rendered":"Impariamo a programmare in Swift"},"content":{"rendered":"<p>\u00c8 passato poco meno di un anno da quando Apple ha presentato, nel corso del WWDC 2014, il nuovo <strong>linguaggio di programmazione Swift<\/strong>.\u00a0La comunit\u00e0 di sviluppatori ha accolto, come sempre, questa grossa novit\u00e0 con notevole entusiasmo e si sono moltiplicate online le risorse utili per chi vuole iniziare ad usare questo linguaggio.\u00a0Swift ha incuriosito anche molti nuovi utenti che vedono in questo nuovo linguaggio una buona, e pi\u00f9 semplice, occasione per iniziare a <strong>sviluppare applicazioni per\u00a0 iOS<\/strong>.<\/p>\n<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2015\/03\/swift-logo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11317\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2015\/03\/swift-logo.jpg\" alt=\"swift-logo\" width=\"950\" height=\"534\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2015\/03\/swift-logo.jpg 950w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2015\/03\/swift-logo-300x169.jpg 300w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/a><\/p>\n<p>La prima domanda che forse ci siamo sentiti rivolgere \u00e8 pi\u00f9 o meno:<\/p>\n<blockquote><p>Posso iniziare a fare applicazioni per iOS senza conoscere Objective-C?<\/p><\/blockquote>\n<p>Devo ammettere con estrema umilt\u00e0 che non mi \u00e8 facile dare una risposta, nella mia vita da informatico mi \u00e8 capitato soltanto una volta di assistere alla nascita di un nuovo linguaggio di programmazione, quando da VB6 si \u00e8 passati a VB.net e quello era un contesto completamente diverso.<\/p>\n<p>In rete spopolano gli articoli di chi dice che &#8220;no, non \u00e8 possibile conoscere solo Swift e ignorare Objective-c&#8221; adducendo le motivazioni pi\u00f9 ragionevoli, come la necessit\u00e0 di utilizzare librerie &#8220;vecchie&#8221; scritte in objective-c o la necessit\u00e0 di mantenere applicazioni con una code-base Objective-c, ma \u00e8 anche vero che ho visto tante applicazioni fatte da persone che non conoscono neanche l&#8217;Objective-C, segno che esiste una soglia di complessit\u00e0 al di sotto della quale non \u00e8 necessario avere chiss\u00e0 quali skills.<\/p>\n<p>La mia personale opinione \u00e8 che chi fa questa domanda sottovaluta che il problema principale non \u00e8 conoscere questo o quel linguaggio, ma che per realizzare un&#8217;applicazione \u00e8 necessario sapere come funziona la <em>piattaforma<\/em>. \u00c8 molto pi\u00f9 difficile passare dal fare applicazioni con il linear layout (android) ad applicazioni con AutoLayout (iSO) che passare da Java a Obj-c.<\/p>\n<h3>Documetazione ufficiale<\/h3>\n<p>Iniziamo con la documentazione ufficiale: nel giorno del WWDC Apple ha rilasciato anche un paio di eBook su Swift liberamente scaricabili dall&#8217;iBook store, li trovate qui:<\/p>\n<ul>\n<li><a href=\"https:\/\/itunes.apple.com\/it\/book\/swift-programming-language\/id881256329?l=en&amp;mt=11\" target=\"_blank\">The swift Programming Language <\/a><\/li>\n<li><a href=\"https:\/\/itunes.apple.com\/it\/book\/using-swift-cocoa-objective\/id888894773?l=en&amp;mt=11\" target=\"_blank\">Using Swift Cocoa and Objective <\/a><\/li>\n<\/ul>\n<p>Da non perdere, anche se adesso un po&#8217; vecchi visto che il linguaggio si \u00e8 parzialmente evoluto, i video della presentazione del lingaggio<\/p>\n<ul>\n<li>Introduction to Swift<\/li>\n<li>Intermediate Swift<\/li>\n<li>Advanced Swift<\/li>\n<li>Advanced Swift Debugging in LLDB<\/li>\n<\/ul>\n<p>Tutti i video sono disponibili a questo indirizzo\u00a0<a href=\"https:\/\/developer.apple.com\/videos\/wwdc\/2014\/\" target=\"_blank\">link<\/a><\/p>\n<h3>Qualche libro<\/h3>\n<p>Non mancano ovviamente libri di tutte le case editrici. Se come me apprezzate i libri Apress, a <a href=\"http:\/\/www.apress.com\/catalogsearch\/result\/?q=swift&amp;submit=Go\" target=\"_blank\">questo indirizzo<\/a> ci sono gi\u00e0 diversi titoli a catalogo, anche se nessuno veramente avanzato. Si parte da <a href=\"http:\/\/www.amazon.it\/gp\/product\/B00OLET4J4\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=3370&amp;creative=23322&amp;creativeASIN=B00OLET4J4&amp;linkCode=as2&amp;tag=de0d-21\" target=\"_blank\">Swift for Absolute Beginners<\/a> fino a <a href=\"http:\/\/www.amazon.it\/gp\/product\/B00M4FCAOS\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=3370&amp;creative=23322&amp;creativeASIN=B00M4FCAOS&amp;linkCode=as2&amp;tag=de0d-21\" target=\"_blank\">Migrating to Swift from Android<\/a> (cosa avranno poi di cos\u00ec speciale di dev Android da richiedere un testo specifico?)<\/p>\n<p>Nel campo negli editori indipendenti non possiamo non linkare i libri.. anzi i TOMI di raywenderlich.com <a href=\"http:\/\/www.amazon.it\/gp\/product\/0989675181\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=3370&amp;creative=23322&amp;creativeASIN=0989675181&amp;linkCode=as2&amp;tag=de0d-21\" target=\"_blank\">Swift by Tutorial<\/a> e <a href=\"http:\/\/www.amazon.it\/gp\/product\/0989675173\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=3370&amp;creative=23322&amp;creativeASIN=0989675173&amp;linkCode=as2&amp;tag=de0d-21\" target=\"_blank\">iOS 8 by Tutorials<\/a><\/p>\n<p>Il libro <a href=\"http:\/\/www.amazon.it\/gp\/product\/3000480056\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=3370&amp;creative=23322&amp;creativeASIN=3000480056&amp;linkCode=as2&amp;tag=de0d-21\" target=\"_blank\">Functional Programming in Swift<\/a> merita una nota a parte, perch\u00e9 il cui scopo \u00e8 mostrare come, sebbene Swift non sia un linguaggio puramente funzionale, grazie alla semplicit\u00e0 con cui si possono trattare le <em>First Order Functions <\/em>sia possibile utilizzare molti dei costrutti tipici di questo paradigma di programmazione.<\/p>\n<p>Il libro \u00e8 interessante e lo sto leggendo proprio in questi giorni.\u00a0 Uno degli autori, Chris Eidhof \u00e8 un tizio conosciuto nel mondo Haskell ed ha davvero il pallino per la programmazione funzionale, potete trovare una sua presentazione <a href=\"http:\/\/realm.io\/news\/functional-programming-swift-chris-eidhof\/\" target=\"_blank\">qui<\/a> dove tra l&#8217;altro riprende alcuni concetti espressi nei primi capitoli del libro.<\/p>\n<h3>Video tutorial<\/h3>\n<p>Ho gi\u00e0 suggerito altrove i video tutorial realizzati da Ben Scheirman, disponibili sul sito <a href=\"http:\/\/nsscreencast.com\/\" target=\"_blank\">nsscreencast.com.<\/a> La sottoscrizione costa 9 dollari al mese e partendo dal video <a href=\"http:\/\/nsscreencast.com\/episodes\/125-swift-basics\">#125<\/a> l&#8217;autore ha iniziato ad usare Swift per i suoi video.<\/p>\n<p>Un altro sito dove trovare video tutorial \u00e8 <a href=\"http:\/\/code.tutsplus.com\/courses\/the-swift-programming-language\" target=\"_blank\">tuts+<\/a>\u00a0 dove potete acquistare il corso per 15$. Io ho avuto modo di vedere qualche episodio del corso ed \u00e8 molto basilare, inoltre non affronta gli argomenti pi\u00f9\u00a0<em>funzionali<\/em> di questo linguaggio, quindi \u00e8 consigliato soltanto a che \u00e8 proprio alle prime armi.<\/p>\n<p>&nbsp;<\/p>\n<h3>Risorse online<\/h3>\n<p>Ed eccoci alla lista di siti pi\u00f9 o meno utili da aggiungere ai vostri bookmarks, sotto ciascun sito riporto la descrizione ufficiale<\/p>\n<p><a href=\"http:\/\/www.swifttoolbox.io\/%20\" target=\"_blank\">http:\/\/www.swifttoolbox.io\/ <\/a><\/p>\n<p><em>Swift toolbox is a community-supported catalog of iOS and OSX libraries written in the Swift Programming Language.<\/em><\/p>\n<p><a href=\"https:\/\/thatthinginswift.com\/\" target=\"_blank\">https:\/\/thatthinginswift.com\/<\/a><\/p>\n<p><em>How do the Objective-C patterns we already know translate into Swift?<\/em><\/p>\n<p><a href=\"https:\/\/github.com\/matteocrippa\/awesome-swift\" target=\"_blank\">https:\/\/github.com\/matteocrippa\/awesome-swift<\/a><\/p>\n<p>A collaborative list of awesome Swift resources,inspired by awesome-python and listed on awesome-awesomeness.<\/p>\n<p><a href=\"http:\/\/www.objc.io\/snippets\/\" target=\"_blank\">http:\/\/www.objc.io\/snippets\/<\/a><\/p>\n<p><em>A periodical about best practices and advanced techniques for iOS and OS X development.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>E last but not least, <a href=\"https:\/\/github.com\/ignazioc\/SwiftTodoApp\" target=\"_blank\">https:\/\/github.com\/ignazioc\/SwiftTodoApp<\/a> \ud83d\ude09 un piccolissimo esempio di applicazione scritta in swift, si tratta di una todo-app minimalista&#8230;termine comune per dire che non ho avuto tempo e voglia di aggiungere altre funzioni.<\/p>\n<p>&nbsp;<\/p>\n<p>Spero che abbiate trovato in questo articolo qualche spunto interessante per iniziare o continuare il vostro studio di Swift.<\/p>\n<p>Happy coding!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c8 passato poco meno di un anno da quando Apple ha presentato, nel corso del WWDC 2014,&#8230;<\/p>\n","protected":false},"author":53,"featured_media":11317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[8,1368],"tags":[1507,1366,1509,1510,1508],"class_list":["post-11310","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-varie","category-swift","tag-creare-applicazioni-ios-in-swift","tag-programmare-in-swift","tag-programmatori-swift","tag-swift-developers","tag-swift-development"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11310"}],"version-history":[{"count":11,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11310\/revisions"}],"predecessor-version":[{"id":11725,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11310\/revisions\/11725"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/11317"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}