Explain Swift to us Like We're 5 Years Old

Discussion in 'Mac Programming' started by joejoejoe, Jun 5, 2014.

  1. joejoejoe macrumors 65816

    Sep 13, 2006
    I've read all there is to read on Apple's website, but being that I'm not a developer, I still don't concretely understand the real world benefit here.

    Are there a few people from the developer community out there who can explain the change to us as if they're talking to a 5 year old?

    I'd love to grasp the impact in a more concrete way.

    Apple developing a new programming language that's "simpler, faster, easier" etc sounds great and sets off fireworks on the blogs.. but I'm trying to really gauge exactly what the jump is.

  2. C DM macrumors Westmere

    Oct 17, 2011
    Are you talking about the specifics of the language and the benefit to developers or more about just what the overall benefit of it all to the consumers might be?
  3. Armen macrumors 604


    Apr 30, 2013
    They demoed this at WWDC. Showed how what would have taken 5 lines of code before could now just be done with 1 line of code and the tools also allow a developer to preview the changes he made to his app on the spot in a preview window.

    So basically it would be easier and less time consuming for a developer to create/change an app.
  4. madsci954 macrumors 68030

    Oct 14, 2011
    "Simpler, faster, easier." That's how I would explain it to a 5 year old lol.
  5. screensaver400 macrumors 6502a

    Jan 28, 2005
    You're not actually 5, so I'll give you a little bit more. Not all necessarily 100% accurate, but it should help you get the gist of it:

    When you "compile" code (convert it from raw code understandable to humans to code understandable to computer processors), there are ways to optimize compilers to produce faster executable programs.

    Objective-C has its foundations in C, which is a fairly old language. Because of how C is designed, a lot of optimizations can't be used.

    By creating a new language that doesn't have that C baggage, you can use more compiler optimizations, which produces faster programs on the same hardware.

    (This is in addition to the benefits described by others, like the ability to accomplish the same task with fewer lines of code.)
  6. FatPuppy macrumors 68000


    Jul 14, 2012
    If feature apps will use Swift, does this mean that old idevices like iphone 4 will perform better in 3rd party apps?
  7. MinEderPlayz macrumors 6502a


    Aug 3, 2013
    Hamburg, Germany
    No, because iPhone 4 will not get iOS 8.
  8. FatPuppy macrumors 68000


    Jul 14, 2012

    Yeah but apps will be updated to Swift and they will require ios 7, right?
  9. CutterSlade, Jun 5, 2014
    Last edited: Jun 5, 2014

    CutterSlade macrumors regular


    Mar 13, 2014
    Istanbul, Turkey
    Not really. At least not in most apps. Probably the ones that are computation-intensive will if the charts Apple showed are correct. It still depends how efficient the developers write code.

    As a developer myself, I don't see the point of introducing another language. When they said "we've added great things for developers" at WWDC, I expected a huge update to XCode and the other dev tools but instead all we got is just another language which we're gonna have to learn.

    I've gone through most of the Swift language guide and yet to find something that can make me say "now that's a great feature, I should use that!". It has some nice features that's for sure but I don't think that they're worth spending the time to learn another language with an alien syntax. Personally, I'll continue to use Obj-C since its C based syntax seems much more natural to me and I can already do whatever I want to do with it easily.

    The problem here is that they're now gonna divide the community. Some people will continue to use Objective-C, and some others will immediately start to use the "new hot thing". And since Apple is gonna push people to use this new language I expect their documentation will suffer from this fragmentation as well.


    No one's gonna waste any time converting their codebase to Swift, but some devs might develop their new apps using Swift.

    And yes, even though there is no definitive information about that, the apps written with Swift will probably require iOS 7+ even though they could have made it support even iOS 5.0 if they wanted. One of the developers working on Swift has posted a tweet about it
  10. FatPuppy macrumors 68000


    Jul 14, 2012

    Yeah well... bad idea, people should move one, use new things, you can't use that language forever.
  11. CutterSlade macrumors regular


    Mar 13, 2014
    Istanbul, Turkey
    That's not like buying a new device. I don't see any point in moving to something what won't help me do anything faster or better just because it is new. I might switch in the future if the majority of devs in the community starts to use it, but not now.

    Btw, you CAN use that language forever if you want. Most of the APIs in iOS are developed using either C or Objective-C, so none of them will go anywhere in the future. Again, this is different than updating to a new version of the OS. People have invested in Objective-C and have years of experience with it. It's not feasible to throw that away immediately.
  12. Stuntman06 macrumors 6502a


    Sep 19, 2011
    Metro Vancouver, B.C, Canada
    I'm about decades out of date with programming language ever since I finished university. I learned C in university and have read up on C++ a little later. I understand that there are other languages that are based on C like Objective-C or C#.

    Is Swift something totally new and different from C like how C is different from Fortran or BASIC?
  13. wolsoncpa macrumors member


    Jul 19, 2013
    This is probably a stupid question but is iOS8 written in Swift? I know next to nothing about programming but I assume it would be.
  14. WestonHarvey1 macrumors 68020

    Jan 9, 2007
    Objective-C is now 30 years old.

    If you're coming in from a C or C++ background, it's a boon. It's much nicer to work with than those two languages. If you're coming from a more modern language background, it's a big step back in ease of use and safety.

    Objective-C 2.0 made a lot of progress making it a more modern language - but because Objective-C needs to maintain full backwards compatibility with C, a lot of the modernizations have really awkward implementations.

    Swift is a very modern language that takes inspiration from a variety of languages - Python, Rust, C#, Haskell etc. It's going to attract a lot more developers to the OS X and iOS platforms.

    As long as you're going force your platform developers into a language, you might as well make it a good one.
  15. stuffradio, Jun 5, 2014
    Last edited: Jun 5, 2014

    stuffradio macrumors 65816

    Mar 17, 2009
    iOS 8 is probably still written with C or Objective-C or a combination. xCode 6 was written to support compiling Swift applications.


    You're lucky, in my University they made us learn Java.
  16. WestonHarvey1 macrumors 68020

    Jan 9, 2007
    It won't matter if an app is written in Swift or Obj-C. They compile to the same binary. It will matter if an app uses iOS 8-only APIs.
  17. CutterSlade, Jun 5, 2014
    Last edited: Jun 5, 2014

    CutterSlade macrumors regular


    Mar 13, 2014
    Istanbul, Turkey
    Unfortunately, that's not the case here. See my message above.


    No, it's being developed with C and Objective-C. No one can know whether they're gonna switch to another language or not in the near future.
  18. dejo Moderator


    Staff Member

    Sep 2, 2004
    The Centennial State
    How do you know that for sure? Perhaps some of the new parts of iOS 8 are written using Swift. If it's been in development for four years now, I wonder if they would start to incorporate some of it in order to start "cutting their teeth" with it.
  19. WestonHarvey1 macrumors 68020

    Jan 9, 2007

    *shrug* so far it's been the case for me with OS X binaries at least. I can execute my Swift apps on my other dev tools untainted Mavericks machines.
  20. CutterSlade, Jun 5, 2014
    Last edited: Jun 5, 2014

    CutterSlade macrumors regular


    Mar 13, 2014
    Istanbul, Turkey
    Even the new APIs in iOS8 are written in Objective-C, so that's one reason.


    I tried the same thing with a very simple app in iOS 6 and it worked, but I don't think that it would have worked if I had used some additional libraries written with Obj-C.

    I guess we'll find out a definitive answer soon enough.
  21. PBG4 Dude macrumors 68020

    PBG4 Dude

    Jul 6, 2007
    So you skipped over tuples and multiple return types then? Case statements that allow if statements as part of validation? While not show stoppers in Obj-C, I've certainly coded around shortcomings that won't exist thanks to these new features.

    Besides, the real time investment is learning all the APIs involved with iOS and OS X, as well as the MVCS design pattern, delegation, target-action, and notifications. Swift or Objective-C is just different string used to tie API objects together.
  22. mamcx, Jun 5, 2014
    Last edited: Jun 5, 2014

    mamcx macrumors regular

    Mar 13, 2008
    A programming language is similar to any other kind of software, in the sense that it have users, uses cases, pro/cons. From the language POW, we are the end-users. But not necesarily, the *targetted* end-users.

    INSTEAD of regular software, it have very strong lock-in. Not only are constrained by platforms (ie: You can't use java in iOS, not cleanly), but also, by their syntax (how write & read it, and this is a very problematic issue: The syntax is a huge deal because it constrain how you can use the language) by style (functional, procedural, object-oriented, declarative, concatenative, etc: All of them different, and some are the opposite of the other), by their performance, and a lot of little & big details.

    The lock-in show up in that is expensive to write, document, understand, debug, maintain source code, run the actual software (ie: Some languages create software that demand more memory, so in a web server, you could need a more costly hosting) and other stuff.

    A lot of software is build on top of languages with very bad "end-user interfaces" (like C, C++, JavaScript) that cause HUGE amount of problems, and waste of millons $$ and time. Unfortunally, "fix" a language is serious bussines, because, as I explain, the lock-in is damm hard: Nobody wanna to re-write the code to solve anything. Is like write a novel, then 2 years later better "words" and "prose" is discovered then go back and rewrite it...

    A lot of the stories about software security problems, software hacked, software crashing, etc is directly tied to the issues that C, C++, JS and others have. They demand not only *skills* but a lot of discipline.

    Programming is VERY frustrating.

    Unfortunally, the mayority of the developers are resistant to change (and the worse? Hardly aknowledge that change is necesary in first place. Denial in everything you can think of, is the norm baby!), and worse, the jobs available are largelly about continue to use what is in use rigth now, than to move to something better. Is like a company that use Win 3.11, and deny as much as possible to move to something better. But worse: Probably can't move even if want to!

    Not help at all, that learn new languages is hard (some naive people think that you can do it in a week. Very naive...) and because the past software is done in X is easier to use what the past software use than try to convert to Y.

    Like trying to use Pages when before you use Word. Not only you need to learn a new software, but also the data (the document) not traslate well (sometimes, not at all, or WORSE: corrupted) and what have pages is not exactly what have word. Or you depend in that task X was fast before, but now is slow -except if ALL THE OTHERS things are fast, you don't care because your use case is doomed!-

    So even if some language is better than another, it will not necesarily allow to translate the same concepts (ie: Not even can you do the same thing) cleanly, neither the same data (the source code or even the actual binary interface), neither have the availability of resource, libraries, documentation or man-power.

    So, all of this to finally answer:

    To make a example. A language is like a serie of magic spells. So you say:

    myAge 20
    And your probably expect that it mean: "Something called myAge is a number exactly 20."

    So, you wanna to check if you can buy beer:


    ?(age (is a number)):
    age 20
    return NO PROBLEM

    ShowOnScreen"Can I buy beer with the age I put in myAge ?" canBuyBeer?(myAge)
    And your probably could think: canBuyBeer decide that if the age is more than 20 then yes, instead no. This also mean that for this to work, age must be a number. And you probably imagine that the language is not stupid and it validate that age MUST be a valid number, like when registering to a website and checking your age, you can't say you born in 20 B.C

    Unfortunally, a lot of languages have the Billon dolar mistake, that say that age, even if I instruc to the language that it must be a number, can be also a NULL, just because. And a NULL could crash the software, and cause death, loss of property, and other real issues. And really, I'm not exagerating (much).

    Is like a web form where it say "Give me your email" and you can put a photo there, or upload all the game of trones season.

    Here swift solve it because it guarantte: 1) All objects are initialized before it first use 2)If something could be NULL, then is because the programmer, not the stupid compiler, say so. And it need to be handle the case where if something expected to be something instead is NULL.

    This sound a lot stupid? And this design mistake was introduced in 1965 That is how hard is to solve things in programming. And the worst? This problem WAS solved long time ago (similar to how swift do things now) but unfortunally, C, C++, JS and similar are more popular than better, saner, more productive alternatives invented decades ago.

    So the signficance of swift is:

    1- It solve a lot of stupid litte things that are stupid, mind you, and already solved years ago by the way
    2- It have a lower barried to interface with the "old" objective-c/coccoa software, not only in meaning (can do almost the same) but also in binary interface (can use the same old software, cleanly) almost perfectly
    3- It reduce the necesity to write a lot of boilerplate code that add noise
    4- It introduce several real neat things that are unknow to a lot of developers that have never used all that better, sanner, still fast, languages, without being to alien and hard to understand. Things like more mutable/inmutable control, functional coding, pattern matching and other stuff that probably will be unapreciated at first for some people, but, that are just better.
    5- At whole, would produce better code, without sacriface too much.

    A lot of people think that this kind of language is only to attract the stupid or total noob developer. But really, it let good developers to not waste time and not-so-good developers to not do too bad

    Eventually, this must lead to better quality of the apps. Unfortunally, this will take a long time (remember, people are dealing with bad stuff introduced decades ago, unfixable in old languages) and brave (or naive!) developers that embrace better tools and ideas.

    And is very important that:

    6- Is possible to still use the "old" obj-c, because honestly: Swift is too young, too beta rigth now, so is a very hard sell to do a full move in one step.
  23. stuffradio macrumors 65816

    Mar 17, 2009
    I would have to assume the only parts of iOS 8 that are developed with Swift would be an App or two at the most.
  24. D.T. macrumors G3


    Sep 15, 2011
    Vilano Beach, FL
    I’ll take a swing, without getting into technical details :)

    (quick background: developer/architect for ~22 years, enterprise, mobile, dozen or so languages/frameworks)

    Some languages allow the introduction of “unsafe” code easier than others, which can result in errors that the end user sees as a bug (a crash, the app locks up, etc). Swift is [should be] better at preventing bad code during development, which means less issues in production (when you’re running the app on your iPhone).

    There’s also complexity from the actual language syntax. Less code to perform the same function, can improve readability (to a point ... looking at you Perl ... :D ). If the language is easier to read and [apps] easier to maintain, the developer can spend more time improving and polishing the end result.

    An easier to use language will likely attract new developers, who might have great ideas, but were deterred from learning a C derived language (that is notorious for being difficult).

    Swift should have better optimizations - meaning, better performing applications with less effort (vs. Obj-C), so the developer can focus on features and functionality.

    One of the big technical upsides: the language is compatible with existing Obj-C code, so developers can start using it for new development and capitalizing on the benefits, without having to go through the effort to recode existing work.

    WestonHarvey1 had some great points about adding language features to a language that wasn’t designed for them, making the implementation +ugly+ for developers. Swift allows these features to be implemented elegantly, since they were considered up front.

    Kind of a side discussion, that I don’t think will be too brain melting:

    So much of a language is about understanding the frameworks/APIs for the platform (i.e., an iPhone). For example, if you create a button in an iPhone app, there’s a bunch of existing code (supplied by Apple) that you invoke. You say in your code, “Apple library that draws buttons in the UI [UIKit], give me a button that’s this height, width, color, location on the display”. The programming language is really just the connecting logic between lots of pre-existing frameworks (that are still written in Obj-C, but compatible with Swift).

    Quite a few languages are general purpose, and they simply provide all the common language components like control flow, variables, logic statements, constructs like arrays, some simple output methods to write to the console. It’s the frameworks that provide the platform, or domain specificity - so for developing iOS (or OSX) applications, you use a general purpose language like Obj-C or Swift, combined with the platform specific frameworks (Cocoa/Cocoa Touch).

    Anyway, don’t know if that was helpful or just more confusing :D
  25. Cassady macrumors 6502a


    Jul 7, 2012

    Sincere question: to a real-world user, what does "faster programs" mean? Would an app that is written in newer code, perform its functions "quicker" than if it were written in an older language - or are you simply saying that the front-end, designing/programming part is quicker?

Share This Page