{"id":1531,"date":"2014-12-30T01:13:05","date_gmt":"2014-12-30T07:13:05","guid":{"rendered":"http:\/\/jamesonquave.com\/blog\/?p=1531"},"modified":"2014-12-30T02:04:49","modified_gmt":"2014-12-30T08:04:49","slug":"should-i-learn-objective-c-or-swift-first","status":"publish","type":"post","link":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/","title":{"rendered":"Should I learn Objective-C or Swift first?"},"content":{"rendered":"<p><strong>\u201cShould I learn Objective-C or Swift first?&#8221;<\/strong><\/p>\n<p>I get asked this question a lot. Sometime&#8217;s people will also ask about learning C or C++ first. So, I want to take a moment and give you the low-down on how I feel as a professional iOS &#038; Mac developer, six months after Swift\u2019s introduction. If this is your first time here, here&#8217;s a little background on me:<\/p>\n<p><i><strong>About me&#8230;<\/strong><\/p>\n<p>I\u2019ve been developing software for as long as I can remember, at least 20 years now. I never was really the Mac guy, but I liked Linux and was always looking at new technologies. So, when the iPhone came out in 2008, I got myself a Mac and entered that ecosystem. Around that time I learned Objective-C, and that became my primary development language. It has been since then, and I\u2019ve seen the language and Mac\/iOS APIs twist and turn this way and that for the past 6+ years. In June I picked up Swift for the first time like everyone else, and although I still won\u2019t call myself an expert, I will say I\u2019ve done extensive study on the language. I\u2019ve developed (and released) 3 apps using Swift since the announcement. Learning Swift is something I think is really important to iOS developers now, in fact it&#8217;s critical. To help people out I decided to write my <a href=\"http:\/\/jamesonquave.com\/swiftebook\">Swift Book<\/a>. This also serves as a way to help me learn the language, but I have already seen what a valuable resource it is for others; it&#8217;s exciting to be a part of&#8230; Additionally I\u2019ve worked on an SDK that uses Swift, which will be used as part of a major platform worldwide in 2015. It&#8217;s very exciting to ship something like this that so many other developers will be using.<\/i><\/p>\n<p>So, that\u2019s my Swift-related experience in a nutshell. Now, here\u2019s how I want to answer your question&#8230;<\/p>\n<p><strong>So&#8230; Swift or Objective-C?<\/strong><\/p>\n<p>Part of me wants to say, \u201cYes, go learn C first and then Objective-C. That\u2019s what I did, so that\u2019s what you should do.\u201d<\/p>\n<p>But here\u2019s the thing: Just because that\u2019s the path I took, doesn\u2019t mean it\u2019s the best path today. When I was first learning C, people told me I needed to learn Assembly to really get what was going on. They told me that without an underlying understanding of Assembly, I was going to be forever writing code and not understanding it. I ended up ignoring this advice and was very happy and successful as a developer without Assembly knowledge. In my college years, I finally picked up Assembly as part of my Electrical Engineering degree program. It helped enlighten some things, but for the most part I don\u2019t feel knowing Assembly had much of an effect on my day-to-day programming. It had no effect on how I separate objects, how I decide what gets encapsulated, where to inherit, or where to compose. Most importantly, it didn\u2019t help me to build better software. It was basically just academic, and as interesting as it was and is, the only place it\u2019s even remotely relevant day-to-day is in debugging or reverse engineering; and only in limited capacities.<\/p>\n<p>There\u2019s certainly some sort of fear in me, like if we don\u2019t all learn Assembly it will become a lost art. But, I don\u2019t think that\u2019s a realistic concern, honestly. The more I think about the idea of Assembly becoming a lost art the more I realize it will never happen. A single preserved book on the topic can get anyone where they need to be to be productive in Assembly, you just probably don&#8217;t want to.<\/p>\n<p>Computer Science is an industry where we need to let go of the past, and we need to do it as quickly as we can. This industry is not going to wait for you to learn all the languages leading up to the latest and greatest. The marketplace certainly won\u2019t reward that. What it will reward though, is knowing how to write code to make working software. That&#8217;s sort of the general thesis of this site, and it&#8217;s why I produce it. I don&#8217;t want to teach you to write code; I want to teach you to make software.<\/p>\n<p>So here&#8217;s my answer to your question:<\/p>\n<p><strong>Swift<\/strong><\/p>\n<p>You should learn Swift first. You should learn it first because it&#8217;s the future of development on Apple platforms, and frankly it&#8217;s just easier to understand than Obj-C or C. What you may find as you learn it is that the Cocoa framework is getting a little stale. It&#8217;s starting to look very much like an Objective-C API in a Swift world. But that&#8217;s probably going to change. This wouldn&#8217;t be the first time Apple made a major change to their underlying APIs. Back in the days before Cocoa developers used Carbon, a C-based API that had some interoperability with Objective-C.<\/p>\n<p>Apple is well-known for making swift (get it?) changes to their development stack. The move from Mac OS 9 to Mac OS X is a great example of their commitment to innovation. As a developer on Apple platforms, it&#8217;s important to understand this fact. Apple is about building the future of technology products, and they are not afraid to forego backwards-compatibility in order to achieve that. If you are still writing Objective-C day-to-day, you&#8217;re writing legacy code at this point. If you are writing Swift, then welcome to our world, you are the future.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u201cShould I learn Objective-C or Swift first?&#8221; I get asked this question a lot. Sometime&#8217;s people will also ask about learning C or C++ first. So, I want to take a moment and give you the low-down on how I feel as a professional iOS &#038; Mac developer, six months after Swift\u2019s introduction. If this&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_links_to":"","_links_to_target":""},"categories":[11,21,24,10,5,32],"tags":[17,34,33],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Should I learn Objective-C or Swift first? - Jameson Quave<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Should I learn Objective-C or Swift first? - Jameson Quave\" \/>\n<meta property=\"og:description\" content=\"\u201cShould I learn Objective-C or Swift first?&#8221; I get asked this question a lot. Sometime&#8217;s people will also ask about learning C or C++ first. So, I want to take a moment and give you the low-down on how I feel as a professional iOS &#038; Mac developer, six months after Swift\u2019s introduction. If this...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/\" \/>\n<meta property=\"og:site_name\" content=\"Jameson Quave\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-30T07:13:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-12-30T08:04:49+00:00\" \/>\n<meta name=\"author\" content=\"Jameson Quave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jameson Quave\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/\",\"url\":\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/\",\"name\":\"Should I learn Objective-C or Swift first? - Jameson Quave\",\"isPartOf\":{\"@id\":\"https:\/\/jamesonquave.com\/blog\/#website\"},\"datePublished\":\"2014-12-30T07:13:05+00:00\",\"dateModified\":\"2014-12-30T08:04:49+00:00\",\"author\":{\"@id\":\"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/db6184f355c7f4e3b876d0f228c2fcfc\"},\"breadcrumb\":{\"@id\":\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jamesonquave.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Should I learn Objective-C or Swift first?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jamesonquave.com\/blog\/#website\",\"url\":\"https:\/\/jamesonquave.com\/blog\/\",\"name\":\"Jameson Quave\",\"description\":\"Using computer technology to educate, and improve lives.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jamesonquave.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/db6184f355c7f4e3b876d0f228c2fcfc\",\"name\":\"Jameson Quave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d9786c83345117d560bbeab0e1f26814?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d9786c83345117d560bbeab0e1f26814?s=96&d=retro&r=pg\",\"caption\":\"Jameson Quave\"},\"sameAs\":[\"http:\/\/jamesonquave.com\"],\"url\":\"https:\/\/jamesonquave.com\/blog\/author\/jquave\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Should I learn Objective-C or Swift first? - Jameson Quave","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/","og_locale":"en_US","og_type":"article","og_title":"Should I learn Objective-C or Swift first? - Jameson Quave","og_description":"\u201cShould I learn Objective-C or Swift first?&#8221; I get asked this question a lot. Sometime&#8217;s people will also ask about learning C or C++ first. So, I want to take a moment and give you the low-down on how I feel as a professional iOS &#038; Mac developer, six months after Swift\u2019s introduction. If this...","og_url":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/","og_site_name":"Jameson Quave","article_published_time":"2014-12-30T07:13:05+00:00","article_modified_time":"2014-12-30T08:04:49+00:00","author":"Jameson Quave","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jameson Quave","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/","url":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/","name":"Should I learn Objective-C or Swift first? - Jameson Quave","isPartOf":{"@id":"https:\/\/jamesonquave.com\/blog\/#website"},"datePublished":"2014-12-30T07:13:05+00:00","dateModified":"2014-12-30T08:04:49+00:00","author":{"@id":"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/db6184f355c7f4e3b876d0f228c2fcfc"},"breadcrumb":{"@id":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jamesonquave.com\/blog\/should-i-learn-objective-c-or-swift-first\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jamesonquave.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Should I learn Objective-C or Swift first?"}]},{"@type":"WebSite","@id":"https:\/\/jamesonquave.com\/blog\/#website","url":"https:\/\/jamesonquave.com\/blog\/","name":"Jameson Quave","description":"Using computer technology to educate, and improve lives.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jamesonquave.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/db6184f355c7f4e3b876d0f228c2fcfc","name":"Jameson Quave","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jamesonquave.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d9786c83345117d560bbeab0e1f26814?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d9786c83345117d560bbeab0e1f26814?s=96&d=retro&r=pg","caption":"Jameson Quave"},"sameAs":["http:\/\/jamesonquave.com"],"url":"https:\/\/jamesonquave.com\/blog\/author\/jquave\/"}]}},"_links":{"self":[{"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/posts\/1531"}],"collection":[{"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/comments?post=1531"}],"version-history":[{"count":15,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/posts\/1531\/revisions"}],"predecessor-version":[{"id":1548,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/posts\/1531\/revisions\/1548"}],"wp:attachment":[{"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/media?parent=1531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/categories?post=1531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jamesonquave.com\/blog\/wp-json\/wp\/v2\/tags?post=1531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}