<story><title>Fun with Swift</title><url>http://joearms.github.io/2016/01/04/fun-with-swift.html</url></story><parent_chain></parent_chain><comment><author>hellofunk</author><text>&amp;gt; Swift is widely marketed as a functional language&lt;p&gt;If that&amp;#x27;s true, those sources reporting that are wrong. Apple itself refers to it instead as a &amp;quot;protocol-oriented language&amp;quot; when it&amp;#x27;s not just saying &amp;quot;object-oriented&amp;quot;.&lt;p&gt;Swift is definitely not a functional language in the way that it usually means, and Apple knows this, and any legit survey of languages wouldn&amp;#x27;t clump it together with much more functional languages. For example, this guy[0] knows what he is talking about.&lt;p&gt;&amp;gt; Where Swift shines it is in the integratiion with the underlying Objective C frameworks on the Mac.&lt;p&gt;&amp;gt;Swift is a good replacement for contexts in which Objective-C would be used.&lt;p&gt;Except when you try to do anything with OpenGL or a C-based API, like Core Audio. Swift is really lagging for &amp;quot;power programming&amp;quot; with these low-level APIs. It&amp;#x27;s great for beginners who use all the high-level frameworks (though &amp;quot;great&amp;quot; is a subjective term I don&amp;#x27;t really agree with for Swift), but a lot of people who really need to get stuff done on Apple&amp;#x27;s platform are not going whole-hog Swift.&lt;p&gt;&amp;gt;If you’re coming form Erlang&amp;#x2F;Haskell world you’ll think Swift is verbose and a bit of a mess but if you’re coming from Objective-C you’ll think “Swift is concise and elegant”&lt;p&gt;I got to be honest, I still find I prefer Objective-C, because, it&amp;#x27;s essentially C. I can use my C structs and interfaces with zero problem. But in Swift, all C primitives are translated into Swift-only stuff, even integers!&lt;p&gt;And don&amp;#x27;t get me started with trying to use a C++ library with Swift, something that&amp;#x27;s smooth with Objective-C. Which is ironic since Swift itself is written in C++.&lt;p&gt;[0] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;robnapier.net&amp;#x2F;swift-is-not-functional&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;robnapier.net&amp;#x2F;swift-is-not-functional&lt;/a&gt;</text></comment>
<story><title>Fun with Swift</title><url>http://joearms.github.io/2016/01/04/fun-with-swift.html</url></story><parent_chain></parent_chain><comment><author>MCRed</author><text>FWIW - This is Joe Armstrong, one of the creators of Erlang.  Definitely an old-school REPL&amp;#x2F;functional guy, and I love seeing him playing around with swift.&lt;p&gt;Regarding GUIs and IDEs:  I think interface builder is the best ever way to build UIs, far more fun and comprehensible than web development.   I totally understand why Joe wants to control every line of code and do nothing in Xcode-- when things go wrong in the IDE they can be a pain to deal with.&lt;p&gt;For me, I think there&amp;#x27;s several common stages of Mac&amp;#x2F;iOS developer:
1. Newbie- needs Interface builder because GUIs are all so confusing and he doesn&amp;#x27;t yet know the API.
2. Control Freak -- knows enough (and spent enough time struggling with Interface Builder, because IB isn&amp;#x27;t a magic box and you do have to know how things are working under the hood, and the Newbie often struggles because of this).. and so he wants to avoid IB and do everything in code so he has absolute control.
3. Starting to see the light-- tired of tiresome pointless repetitive GUI code, back to Interface builder, but this time understanding the underlying parts of it, and having a lot more fun with IB
4. Enlightened-- uses Interface builder for most stuff, but knows when and where to drop down to GUI code and generally only does that in a highly leveraged way.&lt;p&gt;One of the things I find frustrating about web development is there is no interface builder (though some people have attempted to create them in the past, they always seem to abandon them, unfortunately.)  So you&amp;#x27;re always stuck wit the frustration of constantly defining everything by hand-- when the reality is there&amp;#x27;s nothing that should stop web browsers from being able to handle auto-layout the way that iOS does.&lt;p&gt;Anyway, if you&amp;#x27;ve rejected IB and are finding GUI code a PITA, try using IB in balance.</text></comment>