Slashdot Mirror


Ask Slashdot: Objective C Vs. Swift For a New iOS Developer?

RegularDave writes: I'm a recent grad from a master's program in a potentially worthless social science field, and I've considered getting into iOS development. Several of my friends who were in similar situations after grad school have done so and are making a healthy living getting contract work. Although they had CS and Physics degrees going into iOS, neither had worked in objective C and both essentially went through a crash courses (either self-taught or through intensive classes) in order to get their first gigs. I have two questions. First, am I an idiot for thinking I can teach myself either objective C or Swift on my own without any academic CS background (I've tinkered in HTML, CSS, and C classes online with some success)? Second, if I'm not an idiot for attempting to learn either language, which should I concentrate on?

211 comments

  1. Objective-C by Anonymous Coward · · Score: 0

    Objective-C.

    1. Re:Objective-C by savuporo · · Score: 0

      I would recommend JavaScript. Hybrid apps are completely viable

      --
      http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
    2. Re:Objective-C by Anonymous Coward · · Score: 0

      Your tongue.

    3. Re:Objective-C by gweihir · · Score: 1

      And on top of that you get nice insanity and ultra-low coding skills in the bargain!

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Objective-C by gweihir · · Score: 1

      I second that. As an added benefit, you will not be locked into an environment and will get to know the smalltalk-OO model really well.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    5. Re:Objective-C by ShanghaiBill · · Score: 1, Informative

      Or Swift. But definitely one of the two.

      Not necessarily. You can write some C++/Objective-C wrappers for Apple's APIs, and then write the other 95% of your app in pure C++. Objective-C is a preprocessor, not a real language, and can be mixed with either C or C++.

      Anyway, good luck making money as an iOS developer. It isn't as easy as it used to be.

    6. Re:Objective-C by Noah+Haders · · Score: 3, Insightful

      The noob has a problem with obj c: everybody in the world is already good at it. At least with swift, everybody is a noob and w six months of work you already know more that most. Also I highly recommend classes as a supplement to independent learning.

    7. Re:Objective-C by timelorde · · Score: 1

      Depends on your form factor

    8. Re:Objective-C by MouseR · · Score: 2, Informative

      Definitely Objective-C, unless your intent are for small home projects no one else will ever have to deal with.

      Here is a bunch of random notes I took when evaluating Swift...

      - No header files confuscate passed-on intended usage by exposing ALL class details rather than the intended consumable APIs.

      Q: Is there any private/public scoping in the language?
      A: None! It's wide open. Apple promised at the WWDC to fix that. But it will probably take the form of private/protected keywords much like C++ in the class definition. They seem hard-bent on not having public header files.

      - Access Control

      In Xcode 6 beta 4, Swift adds support for access control. This gives you complete control over what part of the code is accessible within a single file, available across your project, or made public as API for anyone that imports your framework. The three access levels included in this release are:
      private entities are available only from within the source file where they are defined.

      Internal entities are available to the entire module that includes the definition (e.g. an app or framework target).
      public entities are intended for use as API, and can be accessed by any file that imports the module, e.g. as a framework used in several of your projects.

      Ie: public class ListItem { // Public properties. public var text: String public var isComplete: Bool
      }

      Problem with that is regardless of access control, you are still exposing your entire class code and layout to users of it, preventing any restriction on class access for "consumable non-internal" implementations.

      - optional means object can be nil. But they're just a wrapper.

      Real-world test code being written showed you end up peppering your code with ? and ! symbols.
      Using ! unwraps a var to it's value. CHECK FOR NIL or use if let

      Ig target.foo?() unwraps to if [target respondsToSelector(foo)] target.foo()

      -weak reference need to be optional

      -Swift "module" import uses the project group name; change a file from group and suddenly is out of the module

      -AnyObject = id or Class type

      Can't upcast AnyObject to a static type
      wrong: var view: NSView = anyObject
      need to upcast using as
      var view: NSView = anyObject as NSView
      or tested
      var view: NSView = anyObject as? NSView

      - Arrays upcast arrays: for item in myItems as NSButton[]

      Your code end up having full of "as othertype" in it. So much for inferred type.

      Random bridging nastiness:

      -NSError** gets magically translated as NSErrorPointer
      and you still need to pass by reference: &error
      and then receiver must unroll pointer using !

      - useless notations like optionals:

      foo?.prop?.prop?.prop.ToInt()
      vs foo.prop.prop.prop.intValue;

      Saved nothing. Obj-C can already handling nil object dereferencing

      - Integration with existing code: Obj-C require Swift mangled name

      SWIFT_CLASS("_TC5MyApp10MyDocument")

      -STL-style templates

      @objc func myGeneric(x:T)-> (String,String) {} ensures
      func can be expressed in Obj-C at compile type

      Need I say more?

      - Specify obj-c accessor:

      var enabled : bool
      {
      @objc(isEnabled) get {...}
      }

      further obfuscate the .swift file (remember: NO HEADERS!)

      - Swift does not fix the CF bridging issue

      Unmanaged for manual memory management. ie

      let color = CGColorGetRandomColor().takeUnretainedValue()

      Force the memory convention by annotating the header

      CF_IMPLICIT_BRIDGING_ENABLED() //header content
      CF_IMPLICIT_BRIDGING_DISABLED()

      - String-types enums are a major fubar

      Given

      enum Method : String
      {
      case GET = "GET"
      case POST = "POST"
      case DELETE = "DELETE"
      case PUT = "PUT"
      case PATCH

    9. Re:Objective-C by MouseR · · Score: 1

      You can work out the syntax in under a week. It's an academic exercise at worst.

      The real problem lies in the language itself.

      The playground is a cool nifty feature but it's not something that could not be done with clang/obj-c. There was a time we could fix-and-continue code at runtime. They removed the feature instead of fixing it (at a time it was based on GCC).

      Even today, using framework for custom views in Obj-C, you can code changes in your view code and see live changes in your layout files (xibs/storyboards) as you work in the code (I love this new features).

      Speaking of IB_DESIGNABLEs, while they are awesome for special view coding for drawing custom content, they still lack the ability of interacting with their subviews in IB (the code is being called to render the view, without it's content), making its use for layout views not possible (such as a content-sorting or layout view).

    10. Re:Objective-C by bondsbw · · Score: 1

      Depends on if it's a generic floor or a dynamic floor.

      --
      All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    11. Re:Objective-C by __aaclcg7560 · · Score: 3, Insightful

      HR will still demand five years of experience in Swift.

    12. Re:Objective-C by mlts · · Score: 1

      Swift must be a really good language. Every so often, I get E-mails from recruiters with positions demanding five years of Swift programming skills as part of the core position.

    13. Re:Objective-C by drkstr1 · · Score: 1

      Interesting read, thanks. Wish I had something more insightful to add, but I haven't had the pleasure of giving Swift a try. From what you describe though, it sounds like it would drive me bonkers!

      --
      Fanboy Status: Apache Flex, C#, Eclipse, KDE, Pirate Party, Ron Paul, Slackware, Windows 7
    14. Re:Objective-C by Anonymous Coward · · Score: 0

      I get calls about "Swift" software programming because I did software work at a company called "Swift". Takes me a few minutes of laughing to explain about fads in "enhancing C", written by people who never actually learned to use C properly.

    15. Re:Objective-C by mlts · · Score: 3, Interesting

      There are some good things about the iOS ecosystem. For starters, if you require the latest iOS version, the piracy rate for apps will be at 0%. If you allow multiple iOS versions, just do a write or read outside your app's sandbox to check for a JB or not. Android has a non-zero piracy rate, but LVL and device-based APK encryption do reduce it to a dull roar.

      You can still earn money as a developer. However, you can't follow the herd. If everyone is making fart apps, don't waste the time in making one.

      Find a market segment and go with that. For example, Torque is an app that makes a lot of money. It isn't mainstream, but for the task at hand, it is extremely useful, and people will pay for it.

      Some ideas/suggestions of what to do:

      1: Make a GOOD PGP/gpg program. One that not just does the usual signing/encrypting/validating/decrypting, but uses the operating system's encryption (KeyChain) to stash the private keys. Coupled with an optional passphrase, this provides good protection.

      2: Make a utility that can store files on multiple cloud providers at once. That way, if I stash documents and some sync error trashes one provider, I still have the documents saved somewhere else. If there are sync mismatches, give the user the option of using the document with the latest timestamp with saving the old one in an archive directory to be safe.

      3: Create an app that is based on option #2, but also encrypts and presents itself as a WebDAV option. This way, one can use their phone as a drag and drop cloud storage device, with the app doing the backend encryption and distributed storage work.

      4: A statistical analyzer similar to Minitab or SAS, but scaled down to a device.

      5: A device that does TKIP/SKIP authentication like Google's Authenticator, but can use TouchID on iOS, a PIN/passphrase on iOS/Android, and can back the seeds up securely. This way, if I re-ROM my phone, I don't have to redo all my 2FA stuff... just re-import an encrypted backup and be back and running. With the option of a PIN, even if the device is stolen, one's 2FA IDs are still protected.

    16. Re:Objective-C by TheRaven64 · · Score: 2

      Learning Objective-C takes a couple of days - a week at most. Leaning the frameworks takes a lot longer. Swift has a new core library, but most of the other frameworks are the same, so the experienced programmers still has an edge.

      --
      I am TheRaven on Soylent News
    17. Re:Objective-C by TheRaven64 · · Score: 1

      Objective-C is a preprocessor, not a real language

      Objective-C is as much a preprocessor as C++. As in, an early implementation of the language that is very different from the modern version was implemented as a translator that emitted C (StepStone's Objective-C compiler, the 4Front C++ compiler).

      --
      I am TheRaven on Soylent News
    18. Re: Objective-C by Anonymous Coward · · Score: 0

      Authy already does pretty much all of that.

    19. Re:Objective-C by gweihir · · Score: 2

      Most people do not have a clue how to use Objective C right. What "world" is that you are talking of?

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    20. Re:Objective-C by Anonymous Coward · · Score: 0

      Objective-C compiler is as much a pre-processor as C++ is.
      C++ used to be a pre-processor, nowadays it is compiled as-is, just like modern Objective-C.

    21. Re:Objective-C by Noah+Haders · · Score: 1

      A world in which a man is judged by the bullets on his resume, not by the knowledge in his head.

    22. Re:Objective-C by Maury+Markowitz · · Score: 1

      > world in which a man is judged by the bullets on his resume, not by the knowledge in his head

      This world, then.

    23. Re:Objective-C by Maury+Markowitz · · Score: 1

      > presents itself as a WebDAV option

      Lolz. And you get to it using a QR code!

    24. Re:Objective-C by Maury+Markowitz · · Score: 1

      > No header files confuscate

      Ugh. More inside-the-box thinking. You don't need header files to do this right, which is your implication, and ideally you want more than one API for another. Dylan, yes, *Dylan*, did this way better than any language I've seen since. You could have a private API, a public API, a beta API and a release API all from the exact same code.

      While it's true that using headers makes certain aspects simpler for the compiler author, it's also true that it pushes that work onto the end user - you - by forcing you to keep your headers up to date with manual edits. One could semi-automate this, but that's precisely the purpose of public/private. I have yet to see a real-world use-case where public/private didn't work.

      > you are still exposing your entire class code and layout to users of it

      How is that?

    25. Re:Objective-C by gweihir · · Score: 1

      Not always, but unfortunately in the majority of cases. So advice to the OP would be to put both languages on his CV and learn none.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    26. Re:Objective-C by jeremyp · · Score: 1

      Objective-C is a preprocessor, not a real language,

      From which we can deduce you know very little about Objective-C.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
  2. How many times by msobkow · · Score: 1, Interesting

    How many times are the slashbots going to post this same stupid question?

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:How many times by Chaunte · · Score: 1

      The answer will change... so lets hope often.

  3. Learn both by ZeroPly · · Score: 4, Interesting

    You don't need a professor to teach you how to program. Most of us who started using computers in the 70's and 80's were hobbyists, and we were self taught before going to college for CS. I don't use either one, so I'm not an expert, but in the immortal words of Yogi Berra - "when you come to a fork in the road, take it".

    It will only take you 20-30 hours each to learn the basics of the language, so try both, and at some point you'll gravitate towards one.

    --
    Support microSD: in a post 9/11 world, it is unwise to carry your data on media that you cannot comfortably swallow.
    1. Re:Learn both by Anonymous Coward · · Score: 0

      A guy named something like Hillgass or Hillegass used to put out really good books on Objective-C. I learned from that and was writing code in less than that 20-30 hours (I knew some C++ and javascript already, which helped), but I think the 20-30 hours you cite is probably a good rule of thumb.

      You definitely do not need a class or formal training in Objective-C. Just pick up a book or guide. Search Amazon or your favorite bookstore. Plan to spend an hour or so every day after dinner reading and working through examples for a few weeks. That will give you the basics. XCode has great documentation that will give you the nitty gritty of particular topics.

      Also, consider spending some time reading general theory books that aren't language-specific. I'd recommend "Design Patterns" (Gamma, Helm, Johnson, Vlissides) and "Refactoring" (Fowler). They'll teach you patterns to follow; it becomes much easier to code when you don't see lines but blocks and patterns.

    2. Re:Learn both by Darinbob · · Score: 0

      Basically the overlap between CS and iOS programming of apps, is near zero.

    3. Re:Learn both by Anonymous Coward · · Score: 0

      As an iOs developer I would recommend you learn both. First Objective-C then Swift. Also some CS knowledge couldn't hurt I recommend the book Code:The secret language of computers... Even if it's some what dated that book does a very good job explaining the basics of how computers work to an audience without any other knowledge of computers. After you get the basics of the languages I highly recommend getting a developer account (99$/year) and downloading all Apple development videos, they try their best to explain the proper way to use the multitude of frameworks that you would use as a developer.

      Good luck!

    4. Re:Learn both by Anonymous Coward · · Score: 1

      A guy named something like Hillgass or Hillegass used to put out really good books on Objective-C.

      That's this guy.

      He's pretty awesome, so is his training outfit.

      I read his first iOS book, then attended the advanced iOS class at BNR.

      Definitely a good start.

      However, as is always the case, most of the education comes after the classes end.

      As far as Swift/ObjC?

      As was mentioned earlier, the API/SDK is the big learning part. That can take a couple of years. I feel as if I am just up to speed in the last year on this stuff, and I took my last class (in ObjC) about two years ago.

      I learned Swift pretty quickly. Luckily, I already have a good handle on the API.

      There's a pretty good chance that any iOS programming that you learn from now on will be in Swift. The API is almost identical between Swift and Objective-C.

      The big difference is that you can be more casual in Swift. For example, Core Foundation memory management is handled transparently in Swift, but not in ObjC.

      I would say that you are probably better off learning ObjC first, but don't put off learning Swift. It's quite possible to learn both at the same time.

      However, this post is an empirical one, based on fact, reason, and personal experience. I fully expect it to get buried amongst the "Fanboi/Apple SUX" arguments that always permeate these Dice clickbait posts.

    5. Re:Learn both by TsuruchiBrian · · Score: 1

      I'm sure that there are plenty of construction workers who know how to "build buildings" that don't think you need an archictecture/structural engineering professor to teach you how to build a building.

      So it depends if you think "building a building" means physically building it, or properly designing a building.

  4. How many times by MarcNicholas · · Score: 1

    100,00,000!!!! *bwahahahaha*

  5. Further reading by pushing-robot · · Score: 4, Informative

    There's a site you may not know about which had a long discussion on this very subject not so very long ago. A lot of people weighed in and you may find it enlightening:

    http://ask.slashdot.org/story/...

    --
    How can I believe you when you tell me what I don't want to hear?
    1. Re:Further reading by RegularDave · · Score: 1

      As I always, I appreciate sarcasm. But in my defense, I felt like posting my question for two reasons. One, I'm not "new to iOS with a heavy background in C". Two, I've been reading that Xcode 6 has some serious shortcomings, which is I'd be doing a majority of my Swift learning. When the previous post happened not much time had been spent in 6, and I wondered if anyone had input on changes for the better. I don't want to learn a new language in a buggy environment.

    2. Re:Further reading by aslashdotaccount · · Score: 1

      That thread was started by an 'experienced C' developer. RegularDave is a regular guy without any real coding skills.

      Since xcode is a sandboxed (meaning, you don't have to know anything else outside of xcode, except how to publish apps, in order to develop them) software development environment, all you need to know is how the xcode environment works and the ins and outs of Objective C. Once you learn the Interface Builder, basics of programming in Objective C (variables/data structures, flow control, math/logic, and selections) and the essential classes that get things done in an iOS environment you can start coding apps.

      Fact is, it won't be an overnight affair. Learning the basics of coding in Objective C will take you a few days. Try Hillegass & Fenoglio's Objective C Programming book.

      One question though. Since you're starting from a clean slate, why aren't you considering developing for Android? It's a much bigger marketplace, which means you'll have a bigger audience for whatever you develop.

    3. Re: Further reading by aslashdotaccount · · Score: 1

      Forgot to mention why Objective C and not Swift. Swift is Apple's attempt at forcing future generations to move away from any other platforms by introducing a 'syntactically' different language to C. Both Java (Android's primary language) and Objective C have basic syntactic (and to some extent, lexical) similarities, which allows a developer of one platform to easily transition to another. Yes, Swift provides all sorts of functionalities that make it easier to develop software, but Apple could have chosen to build that into Objective C.

      So, will you go with a language that will empower Apple and cripple your options (IMO), or one that will give you the widest array of options?

    4. Re: Further reading by aslashdotaccount · · Score: 1

      Meant, "Swift is Apple's attempt at preventing future generations of iOS developers from moving away to any other platforms by introducing a 'syntactically' different language to C."

    5. Re:Further reading by VTBlue · · Score: 2

      To be honest, I would rather focus on .NET / Xamarin / Mono especially in light of the new open source announcement and the fact that it can be used to target multiple OS and form factors. The choice is also based on the assumption just you won't be doing anything really cutting edge in terms of programming. I have yet to run into a capability request that I couldn't make do in c#

    6. Re: Further reading by Karlt1 · · Score: 1

      iOS has a much larger paying audience...

      http://bgr.com/2014/06/26/ios-vs-android-developer-revenue/

    7. Re: Further reading by Anonymous Coward · · Score: 0

      Paid vs. ad-supported will always be an interesting debate. Since there are more people about and below the middle class, it would not be incorrect to deduce that more people use ad-supported apps/games than paid ones - and even those who go for the latter would go for more of the cheaper ones. Playing for the bigger markets is usually a safer route than going for the more lucrative market, particularly since that market is monopolised by big, organised software development ventures. I would venture that it is tougher to break into the Apple app market and make a killing than the Android market. Of course, I have no numbers to prove my proposition.

    8. Re:Further reading by angel'o'sphere · · Score: 0

      The question was about iOS, wasn't it?
      But I thank you for pointing out programming environments a sane programmer never would use drunk and with pincers!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:Further reading by Anonymous Coward · · Score: 0

      The question was about iOS, wasn't it?
      But I thank you for pointing out programming environments a sane programmer never would use drunk and with pincers!

      ast i checked, Using C# wasn't that unreasonable of an idea. C# on iOS has been a quite reasonable choice for the last few releases of iOS.

    10. Re:Further reading by pushing-robot · · Score: 1

      Sorry if I came off as abrasive; I aim for humour, not insult. Any teasing is meant in good fun ^_^

      First off, probably the majority of successful coders are largely or fully self-taught. This comes to mind. Don't worry about not having professors to hold your hand, but do make sure you take time to study the 'boring' parts like theory, testing and optimization.

      If you're getting into iOS development today, you'd be wrong to pass up Swift. It may not be perfect yet but every language has flaws, and Swift will at least be actively improved.

      On the other hand, any developer needs to know C reasonably well. C is a window on your computer; when you learn to write in C, you learn how your computer works and how to think like it does. Since most software design mistakes come from *not* thinking like a computer, it's a very valuable skill. Once you've learned C you'll know 95% of Obj-C, so you might as well learn it too.

      So I guess my answer to your original question: 'Objective-C vs. Swift?' is... 'yes'. Sorry. To be perfectly honest, the more languages you can learn the better a programmer you'll be. Virtually every language will give you "aha!" moments and new concepts and patterns to put into your toolkit. But since no one has unlimited time, there are a few obvious choices:

      C, of course, since it teaches you good practices and most languages inherit from it. Learn C and you'll be halfway to anywhere.
      Javascript, too; it's a flawed but unique and interesting language and, more importantly, ubiquitous especially where the Internet is involved. Don't leave home without it.
      Swift, Java or C#: Pick one. Your OO heavy hitter for general application development on iOS/OSX, Android, and Windows, respectively. They have a fair amount in common so porting between them usually isn't that difficult, though cross-platform products like Xamarin also exist.
      Ruby or Python: Good combinations of classic and modern concepts, clean and organized. Great for 'agile' development, these are the 3D printers of the programming world: You can rapidly prototype your designs, and the results are good enough for many applications.
      If you can fit it in, Clojure. Functional programming is incredibly powerful but too easy to ignore in most languages. Dive in with a Lisp dialect and expand your mind; your code will thank me.

      You don't have to master all of them before you start coding on your own, of course. Like an instrument, play and learn and play and learn and play.

      --
      How can I believe you when you tell me what I don't want to hear?
    11. Re: Further reading by Redmancometh · · Score: 1

      .net catches a lot of gried it doesnt deserve. Mono w/ xamarin is a great high level environment.

      Concurrency is even easier than java.

    12. Re:Further reading by SuperKendall · · Score: 1

      An interesting summary, but you should really group Swift with Python/Ruby in terms of what you get from learning it from a pure language standpoint.

      I totally agree with the sentiment it's better to know a number of languages...

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    13. Re:Further reading by bloodhawk · · Score: 3, Interesting

      .NET with Xamarin is one of the better development/cross platform options for mobile development, the fact you dismiss it so quickly shows a great deal of ignorance on your part.

    14. Re: Further reading by Anonymous Coward · · Score: 0

      Swift provides all sorts of functionalities that make it easier to develop software, but Apple could have chosen to build that into Objective C.

      It is rather evident that you've never manipulated the likes of @2 or @[@"foo"], and that you've very little clue of what you're talking about.

    15. Re:Further reading by Anonymous Coward · · Score: 0

      C, of course, since it teaches you good practices

      Ha ha!

    16. Re:Further reading by Anonymous Coward · · Score: 0

      There are some serious shortcomings to xcode, but it is still miles ahead of any other IDE out there. If you are a beginner programer you will never know what these shortcomings are.

    17. Re: Further reading by Anonymous Coward · · Score: 0

      How about Scala?

    18. Re:Further reading by angel'o'sphere · · Score: 0

      Nevertheless: the question still is about iOS ... who in his sane mind would use C# or .Net if he can avoid it?

      Xamarin is only useful if you want a cross platform app (on a single code base) ... and for that you have plenty of other options.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    19. Re:Further reading by Anonymous Coward · · Score: 0

      people that actually want to make money out of development. Using C# means you can easily port to Android/IOS. Hell even if you never compile it for a windows phone it is still one of the best options for iOS.

    20. Re:Further reading by Anonymous Coward · · Score: 0

      As someone who has spent the last twenty years or so writing cross- and dual-platform apps, I can say that the siren call of "Write Once, Deploy Many" is pretty much BS. You can get it with some server apps that render through browsers, but for true natively-executed apps; forget it.

      You get anemic, least-common-denominator results.

      Qt is the best framework I've seen so far, and you can still smell the sadness on Qt apps.

      Currently, you really do need to deploy at least the Controller and View layers in the native app framework to develop truly user-friendly apps.

      However, this crowd tends to have the kinds of folks that insist that X11 is just as good as native Windows 7 or MacOS X, so they are the ones that will think that XWindows or Qt will give you "just as good" as native.

      Then, they will whine about why no one wants to buy their apps, and all the downvotes.

      That's one reason that it's pretty important to work with true UX designers, and don't leave the UX up to geeks.

      The other avenue (that I have seen fairly frequently), is to write your own UX API, using stuff like OpenGL.

      There's a name for that kind of app:

      Bug Farm.

    21. Re:Further reading by Anonymous Coward · · Score: 0

      Why not pure C/C++ with the Qt framework ?

    22. Re: Further reading by RegularDave · · Score: 1

      iOS has a much larger paying audience...

      http://bgr.com/2014/06/26/ios-vs-android-developer-revenue/

      What he said. My friends happen to be iOS developers and they make good money. They also frequently mention the ease at which they get and retain jobs because of the relative scarcity of iOS developers when compared to Android. They're all fairly young and relatively inexperienced, but they're still in very high demand. Thanks for your comments

  6. Objective-C by MarcNicholas · · Score: 1

    Or Swift. But definitely one of the two.

  7. Oh, God... by Anonymous Coward · · Score: 0

    I'm a recent grad from a master's program in a potentially worthless social science field, and I've considered getting into iOS development.

    1. Re:Oh, God... by BarbaraHudson · · Score: 1

      potentially worthless social science field

      So it's not worthless yet. Just potentially worthless. Maybe you've written it off because your idea of jobs that fit your training is too narrow? It would be nice if you could post what degree you have (not just so that we can give a better answer, but also to warn others if necessary).

      Also, what sort of slack time can you allow yourself to get up to speed? Are you working either part or full-time to pay the bills, so you can do it at your own pace, or are you under the gun to get up to speed and make an income quickly? (if it's the latter, as we say, "good luck with that.")

      These "ask slashdots" always degenerate because the questioner never gives enough relevant info.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    2. Re:Oh, God... by RegularDave · · Score: 1

      Thanks for the comment. My degree is in public policy. I haven't given up hope on that either and am currently applying and interviewing. I've got enough money to give myself three to six months to get up to speed.

    3. Re:Oh, God... by BarbaraHudson · · Score: 1
      Thanks for the info. As you can see from most of the posters, they're either:

      1. looking at the "nuts and bolts" issues - pros and cons of each language. The problem with that is that you don't have enough experience to properly evaluate the answers. I know, it's a catch-22 - if you had that experience, you wouldn't be asking, right? Which brings us to:

      2. stepping back and looking at methodologies - the hows of developing maintainable code, refactoring, etc. The problem with this is that, until you have some language experience, all this is theoretical and won't mean much to you except as abstract ideas. Which brings us to:

      3. arguing for different platforms -- iThingies vs AndroidThingies - and one of the advantages of Android that I haven't seen anyone mention is that you don't need to know C or C++ or ObjectiveC/ObjectionableC. Just a subset of Java (language syntax, some boilerplate for how to make a class, the manifest files, resources, and a few other things). As a bonus, you can develop for free on any laptop, put any android phone into dev mode, and load/run your app on your phone quicker than you can launch it in the emulator. And no license fees. (cue everyone who says the average iPhone app earns more than the average Android app. The fact is that most earn either nothing or less than $100/month - see my post here with links to citations). Which brings us to:

      4. taking a step back and asking "Do I really want to do this?" "What else can I do?" "What really floats my boat?" Maybe you'll decide that, until you get that sorted out, you want to take a (probably low-paying, but with your degree, who knows where that will lead) job at some humanitarian organization that will give you a different perspective on life while you brush up on your code skills in your spare time.

      Before you do decide to get into it, I'd suggest taking a few weeks to learn Java first (plain Java, not Android), even if you decide to go into iThing apps - not only is there still a demand for Java developers, but it will give you the basics of OOP, which you'll need anyway, the syntax is pretty much the same as the C family of languages, you don't have to worry too much about this, and there are plenty of free tools out there. You should be able to get started with a simple "Hello, world!" command-line Java program your first hour.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    4. Re:Oh, God... by Noah+Haders · · Score: 2

      an offtopic thought on this... you describe your degree as "potentially worthless". I can see in your posts the frustration and the urgency in landing a job. But before giving up on your degree, I urge you to take a longer view. First off, the science of public policy is basically the study of governance, what has worked well and what has gone horribly wrong. This knowledge is urgently needed today more than ever. Further, without public policy experts, the govt would be run by plutocrats and warmongers (even more-so than today), and the ranks of govt agencies would be be filled with patronage toadies and syncophants. You must have chosen the grad program because you had a passion for the topic; please don't give up now when your knowledge can have a great impact.

      second, jobs suck and job searches suck. I was in a similar boat, coming out of a graduate program with a somewhat specialized degree. Some suggestions based on my own learnings and failings:
      * general HR job posting are not a big win. This is a hard way for somebody with a specialized degree to find something that's a good fit.
      * lean on your classmates and alumni. Your classmate cohort, where did they end up? Recent graduates of your program, where did they end up and how did they get their jobs?
      * informational interviews. These are awesome. its where you schedule a call with somebody not to get a job or talk about a potential opening, but just to talk with them about what they do, and how they got there. Often these can lead to other networking connections.
      * be prepared to move. when you're specialized, you may need to move to where is the epicenter for your specialty. I don't know anything about public policy, but presumably DC, state capitals, etc?

      Anyway, some unsolicited advice. I hate it when people give me unsolicited advice. Nosy fuckers. Best of luck.

  8. You're Never an Idiot by under_score · · Score: 4, Insightful

    For wanting to learn something.

    1. Re:You're Never an Idiot by pushing-robot · · Score: 5, Funny

      Except homeopathy.

      --
      How can I believe you when you tell me what I don't want to hear?
    2. Re:You're Never an Idiot by NEDHead · · Score: 3, Funny

      Homeopathy is not something, it is nothing.

    3. Re:You're Never an Idiot by under_score · · Score: 1

      LOL!!! Although I have to say, that even learning _about_ homeopathy would probably be a good idea... just to avoid it.

    4. Re:You're Never an Idiot by ameline · · Score: 4, Funny

      Yes, nothing, but with the "memory" of something. :-)

      --
      Ian Ameline
    5. Re:You're Never an Idiot by Lumpy · · Score: 1

      Or astrology, or scientology, or anything that has OOGY BOOGY aspects.

      Basically Stay away from anything with oogy boogy aspects with one exception, Quantum Entanglement feels very much oogy boogy. but it has been demonstrated as real with real scientific process. It's simply something we do not understand but HAVE PROVEN does exist.

      So if it has oogy boogy and no proof of it's existance, run away.

      --
      Do not look at laser with remaining good eye.
    6. Re:You're Never an Idiot by umghhh · · Score: 1

      Well there can be an argument for homeopathy and it can go as follows. For most of the patients coming to practitioners the best option is actually wait and see and treat only if body does not cope with common cold on its own going into complications. prescribing antibiotics makes no health sense if you have common cold but it does make financial sense for a doctor - the legal costs from malpractice charges fall away. If so one can argue it would be better to prescribe homeopathic stuff instead of antibiotics. Granted it is annoying being forced to listen to blabbering of people about how good homeopathic stuff is but it is sometimes good to have something that 'helps' /- being a parent is not always easy....

    7. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      There's no need to learn more than a very tiny bit about it. It's more effective that way.

    8. Re:You're Never an Idiot by Livius · · Score: 1

      The problem with homeopathy is people not learning enough about it.

      Aside from the people who just lie, of course.

    9. Re:You're Never an Idiot by Anonymous Coward · · Score: 1

      It isn't nothing - it's just diluted to the point where it seems like nothing.

    10. Re:You're Never an Idiot by thegarbz · · Score: 0

      Except homeopathy.

      Really? I would love to learn how to make money by giving someone virtually nothing to solve all their problems. Financial problems excepted of course.

    11. Re:You're Never an Idiot by Darinbob · · Score: 1

      The less you learn about it the more you know.

    12. Re:You're Never an Idiot by gstoddart · · Score: 0

      Really? I would love to learn how to make money by giving someone virtually nothing to solve all their problems.

      Well, the mechanics of running a scam don't actually require you to learn anything about the pretend science.

      Find gullible people. Sell them something which costs you nothing at a huge profit. Run like hell before the law shows up.

      Snake oil selling 101.

      Double extra bonus points if you can find something like homeopathy which is apparently legal.

      Since all the pretend "medicines" are diluted beyond the point of having any trace of anything, you just fill a bunch of different jars with tap water and practice your mumbo-jumbo speeches, and your sales pitch -- Why yes, Mr. Smith, we should move you to a dosage which has even less in it, because it will be stronger .. unfortunately, it is also far more costly to produce.

      I guess you could find another charlatan willing to train you and accredit you in the preparation of fake medicine, but I'm not sure I see the point. Though, I guess the plaque on the wall and the ability to remember that you're supposed to be using tincture of monkey butt to treat a specific ailment might help you in case your marks have read up a little on the topic.

      And you can probably have a pretty good side business selling healing crystals, patchouli, and new age books.

      Of course, that might be a lot of work and paperwork, so setting up a Ponzi scheme could work too. :-P

      --
      Lost at C:>. Found at C.
    13. Re:You're Never an Idiot by zippthorne · · Score: 1

      Surely the less you learn about it, the more effective your knowledge will be...

      --
      Can you be Even More Awesome?!
    14. Re:You're Never an Idiot by angel'o'sphere · · Score: 0

      Since all the pretend "medicines" are 1) diluted beyond the point of having any trace of anything, you just fill a bunch of different jars with 2) tap water and practice your mumbo-jumbo speeches
      1) That is wrong. Most of the homeopathic medicines are not diluted at all, the majority of the rest is diluted quite sanely and there is plenty of the original stuff in it. Furthermore, it is not a medicine. Perhaps you should read up the basics about how homeopathy is 'supposed to work'.
      2) That would be fraud ... good luck with that.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re:You're Never an Idiot by Antique+Geekmeister · · Score: 1

      The original "homeopath", Samuel Hahnemann, actually had useful things to say and was careful to document and test his claims. The modern followers of homeopathy seem to have completely lost touch with his original claims. He believed in _testing_ medical claims, and did his educated best to verify his work and older medical cleaims. Given that he was working in the lat 1700's, he deserves credit as an enlightened medical scientist.

      What happened to his work after his death would clearly have shocked and horrified him.

    16. Re:You're Never an Idiot by thegarbz · · Score: 1

      1) That is wrong. Most of the homeopathic medicines are not diluted at all

      Would the outcome to the patient be any different if it were?

    17. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      it's just diluted to the point where nothing remains but solvent.

      Ftfy

    18. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      Like an idea.

    19. Re:You're Never an Idiot by angel'o'sphere · · Score: 1

      No idea, depends on the medicine I assume. E.g. chamomile or arnica based medicines are well known to work very well.

      No idea what point you want to make.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    20. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      So, what's this "goatse" thing, then?

    21. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      1) That is wrong. Most of the homeopathic medicines are not diluted at all

      Then you're doing it wrong.

    22. Re:You're Never an Idiot by Anonymous Coward · · Score: 0

      > The original "homeopath", Samuel Hahnemann, actually had useful things to say and was careful to document and test his claims.

      He couldn't have been that careful, because he still promoted the principles that 1) like cures like, and 2) potency increases with smaller doses, neither of which has ANY evidence to support it in medicine.

      It's like with the chiropractors who point to "subluxations" as the cause of all disease, without any evidence to support the idea, or even a good definition of what a subluxation is. Because of confirmation bias, it's not sufficient to come up with a hypothesis and "test" it through trial and error. You have to try to disprove it with double-blind studies etc. No chiropractor or homeopath will ever do this, because it's bad for their business.

  9. No idiot.Go with ObjC by Henriok · · Score: 5, Informative

    You are not an idiot for going for this. There's a vibrant market out there for products based on these languages, with a great community and it serves at least two plattforms which by all accounts won't be going away anytime soon. I would go for Objective C, since it's a more mature language, with lots of good documentation, learning materials, and all the frameworks in iOS and OSX is using this. Swift is still finding it's way.. so while you are learning ObjC, Swift will mature, and you will be established when the time comes for Swift. Let the bleeding edge developers work out the kinks first.

    --

    - Henrik

    - when the Shadows descend -
  10. Always do C first by Anonymous Coward · · Score: 1

    No matter what, -ALWAYS- learn C first.

    Every language out there has it's origins in C. If you can't understand C, you will have a hard time understanding any program language.

    The main thing that C is confusing for, is the concept of pointers. In higher level languages, you tend to stop using pointers and instead just keep copying data between objects, which is incredibly wasteful, but safer.

    1. Re:Always do C first by beelsebob · · Score: 2

      For reference, no, they don't actually do a bunch of copying between objects, they just abstract pointers behind pass-by-reference semantics. Swift even takes this one step further, and for structs/enums (which, like C, are pass-by-value), it implements pass-by-value using copy on write, so it in fact does even fewer copies than a C program would (without the programmer jumping through hoops to implement copy on write himself).

      There usually *are* more inefficiencies in high level languages (usually due to the fact that they do more small heap allocations), but the one you identified is not accurate.

    2. Re:Always do C first by Anonymous Coward · · Score: 0

      Nope, there's plenty of languages out there which have nothing to do with C. Perhaps you're distracted by bright shiny things.

    3. Re:Always do C first by Anonymous Coward · · Score: 1

      Every language out there has it's origins in C.

      Obviously not. However Objective C and Switft clearly do.

      The main thing that C is confusing for, is the concept of pointers.

      The concept of pointers is not confusing. What is confusing in C is overloading the *symbol with (at least) three distinct meanings, two of which (confusingly) pertain to pointers. The confusion arises from thinking * used in declaring pointers has a clear logical relation to * when pointers are used.

    4. Re:Always do C first by aslashdotaccount · · Score: 1

      Technically copy on write improves efficiency in space management and not speed - because there has to be an indexing (or some other) mechanism to determine when an instance of a referenced (perhaps I'm not using the right vernacular) variable changes.

    5. Re:Always do C first by aslashdotaccount · · Score: 1

      Plenty of successful languages? (Even Microsoft adopted a flavour of C in the end, with their C#)

    6. Re:Always do C first by Hognoxious · · Score: 1

      You need to extend your frame of reference before the last decade.

      P.S. Does your mom know you're using her slashdot account?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    7. Re:Always do C first by aslashdotaccount · · Score: 1

      In the latest Tiobe index (of course you'll tell me that it's not an accurate representation of demographics), only one of the top 10 languages is not a derivative of C, and that too is at 10th spot. According to that index, about 60% of all developers use a language derived from C. A lot of the others have lexical similarities, if not syntactic ones, simply because the creators wanted C developers to feel at home.

      Not saying C was the original, or would remain the most relevant root forever. But, at present, it is the dominant syntactic contributor to the most popular languages, which is a fact that newcomers to coding must be made aware of in order for them to decide what language to adopt. Sure, they could learn Haskell and start developing some of the most optimal software, but the likelihood of getting employed in a presently relevant software firm could be remote.

      Speaking of parents, if you have a child, what programming language would you teach him/her? C or something else?

    8. Re:Always do C first by jaklode · · Score: 1

      Here's a list: Fortran, Cobol, Ada, Erlang, BASIC, Pascal, Haskell, Smalltalk, Lisp (especially Common Lisp and Scheme) Fortran is still used for high-performance computing, it is faster than C due to not having to deal with pointer aliasing. Cobol still runs tons of business applications. Ada is used for astronautic and aeronautic applications, and generally other systems where high reliablity is required. Erlang is used for telephony networks and in general distributed networks. BASIC was really popular with Windows people I heard. Pascal was popular for teaching but got into the real world as well. The Delphi dialect was quite popular in the Windows camp I heard. Do you need more examples?

    9. Re:Always do C first by jaklode · · Score: 1

      In the latest Tiobe index (of course you'll tell me that it's not an accurate representation of demographics)

      It's not. There are ton more languages who still have heavy use in business, military or academics. Specifically Fortran, Cobol, Ada, Erlang, Fortran is still used for high-performance computing, it is faster than C due to not having to deal with pointer aliasing. Cobol still runs tons of business applications. Ada is used for astronautic and aeronautic applications, and generally other systems where high reliablity is required. Erlang is used for telephony networks and in general distributed networks.

  11. What you should do? by lippydude · · Score: 1

    Degrees are next to useless, by now unless you've written your own pet project, then you're wasting your time, else you should go and be a project manager ...

  12. perhaps ... by Anonymous Coward · · Score: 0

    The idiotic mistake was the degree choice?

  13. At this point... Swift by Anonymous Coward · · Score: 1

    At this point, Swift is actually reasonably stable in terms of the compiler not crashing all the damn time.

    In general, I would learn Swift first - it is significantly higher level than Obj-C, and teaches you to think about good solid programming practices. Its type system is a lot more sane, and gives you extremely useful proofs (like that you're not going to dereference a null pointer).

    That said, beware, there are a couple of headaches to look out for:
    1) The language is not completely final. You can fully expect that with future Xcode versions, the language will change, and you will end up changing a few bits of your code.
    2) When using very low level APIs like OpenGL, things can end up kinda clunky - basically anywhere where you need to pass around pointers to buffers that can't be abstracted away more, you're in trouble.

    Finally, you will want to learn both (and C as well) in the end anyway, so in reality, a lot of this question is somewhat irrelevant.

  14. 1 vote for objective-C by mwvdlee · · Score: 5, Interesting

    It's better to try and fail than never try at all.

    But since you have very little experience programming in any language, you're going to have to do a lot of learning and you're going to have to get a lot of help.
    Objective-C has been around a lot longer; there will be more people available to help and there will be more books, tutorials and example code.
    Considering there is a large and valuable legacy code base, it's going to be around for quite some time to come.

    Languages aren't that difficult to switch, assuming you're familiar with the paradigm (procedural, object-oriented, functional).
    API's are the hard part, but they'll be pretty similar between Objective-C and Swift.
    By the time you're proficient with Objective-C, switching to Swift (if necessary) should take just a couple of months at the very worst.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    1. Re:1 vote for objective-C by angel'o'sphere · · Score: 1

      That is the biggest nonsense about programming languages I ever heared.
      Objective C is unreadable bitch just like Perl or IBM/JCL.
      To learn Objective C if you can do the same thing either with C or C++ or, that was the parents question: with Swift, is pure masochism!
      Sorry, but who in his sane mind would learn Objective C? Did you even ever try to read a page of code written in that language?

      Bottom line I don't get that fear about APIs repeated here on /. all the time. WTF, there are modern IDEs out there. The last time I 'learned' an API is 20 - 30 years ago. In our times you use a class and the IDE tells you all about it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:1 vote for objective-C by Anonymous Coward · · Score: 0

      > Objective C is unreadable bitch just like Perl or IBM/JCL

      Lol! You should at least try to learn it before you criticize it. If you're a C programmer and can't figure out 90% of how Objective-C works in a day... well, there's not much hope for you. Stick with piping CLI tools together.

    3. Re:1 vote for objective-C by Anonymous Coward · · Score: 0

      No, trust me, I'm a failure. It is better to try and succeed every time.

  15. Learn both by Anonymous Coward · · Score: 4, Insightful

    I agree, as long as you pick up some guides or literature focusing on best practices, rather than just the semantics of the code. There are just toooo many "self-taught" programmers who cannot write professional quality code in a team environment because they were never really exposed to doing it properly. It's perfectly fine to teach yourself - just try to be flexible and adaptable and not get stuck in horrible bad habits - and for god sakes, if someone says you're doing it wrong, at least consider what they have to say.

  16. Do what you love by Anders · · Score: 1

    You could probably pull it off and due to the Dunning-Kruger effect you might even enjoy it.

    But you would suck at it.

  17. I'd say you are gong to have to do both. by NMBob · · Score: 1

    When full-on apps can be written in Swift (like when the language is up to it) iOS and all of the API stuff and most of the books and documentation and example code will still be in Objective-C, so you'll have to understand it. Once all of that starts getting converted to Swift then you will have to know Swift. It can be done on your own, but it is an uphill battle. Understand C and that will be half the battle.

  18. Go with Swift by pubwvj · · Score: 2

    I would suggest going with Swift.

    The problem is not so much learning the language. You need to learn how to solve certain types of problems and there is a lot of background knowledge you will need. You also need a way of thinking, the Tao of the Programmer.

    My biggest suggestion is that you do not sit around or even shop around looking for 'gigs' but rather start creating stuff.

    Good luck.

  19. Think Different by SarfarazJamal · · Score: 1

    You should do the xCode anyway that your heart desires. It's all just 0s and 1s anyway. Think Binary. Think Apple. Think Different.

  20. You should learn both of them by caseih · · Score: 3, Informative

    As far as I can tell, Swift is just a new front-end to the Objective-C object system. So knowing how Objective-C works will be beneficial to working in Swift.

    Also most of the libraries and frameworks you will be working with are Objective-C and most of the current tutorials and online resources probably use Objective-C in their examples. That's not to say you need to start with ObjC, but be prepared as you use Swift to learn a bit about it, at least enough to read and translate example snippets you see.

    If my understanding of Swift is accurate, one can intermingle Swing and ObjC libraries and modules. They should have the exact same calling convention and object semantics. Perhaps Swift is easier to remember without some of the more unusual aspects of ObjC's syntax.

    1. Re:You should learn both of them by angel'o'sphere · · Score: 0

      Well, Perl is just another frontend to C, so knowing C makes you a better Perl programmer!
      Sorry, why do people write nonsense like this?
      Since when is programming language A a frontend to another language B?

      The rest of your post implies you have no clue about the difference of a language bersus the object code produced with it ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:You should learn both of them by Anonymous Coward · · Score: 0

      Not exactly a front-end...Swift compiles to significantly more efficient native code, the dynamic calling conventions are only used when they can't be resolved at compile-time (in which case it does indeed use ObjC conventions).

      It also has many useful constructs that are not present in Objective C.

      Swift is clearly the better language; the only reason not to use it is if one considers it too much of a moving target, which it was when the first betas came out (the actual language implementation didn't match the documentation). With the release of Yosemite and Xcode 6.1, this should no longer be a problem.

    3. Re:You should learn both of them by Bogtha · · Score: 1

      As far as I can tell, Swift is just a new front-end to the Objective-C object system.

      No, that's not true. Swift interoperates with Objective-C, but it's not any kind of front-end to it, it works perfectly fine by itself.

      most of the libraries and frameworks you will be working with are Objective-C

      Most of the libraries and frameworks you will be working with are system components where you don't see the source code. Whether they are implemented in Objective-C or Swift is an implementation detail you don't need to care about.

      --
      Bogtha Bogtha Bogtha
    4. Re:You should learn both of them by Anonymous Coward · · Score: 0

      Well, Perl is just another frontend to C, so knowing C makes you a better Perl programmer!

      Never heard it that way. However several languages really are or initially where front ends for other languages, C++ for example started out as a set of additions on top of C, the gnome developers also created their own language to hide the monster that is GObject.

      From the description on wikipedia Swift not only uses the same runtime as Objective-C, it also seems to be fully compatible with its Object system in both directions (in comparison C++ is only compatible in one direction since it adds a lot of abstractions that C does not have). In fact this is required since one of the features is the ability to use apples existing Objective-C frameworks with it. So in that sense Swift is indeed a frontend for Objective-C.

    5. Re:You should learn both of them by jareth-0205 · · Score: 1

      You guys are reminding me of my manager that thinks 2 things can both be 'number one' priority. He's asking *which* to concentrate on, and for someone new to the field I think it's reasonable to only start with only one language.

    6. Re:You should learn both of them by caseih · · Score: 1

      Sorry but saying Perl is a frontend to C is just silly. Not at all what I mean and you know it. Why do you write nonsense like this?

      I'm speaking more akin to various languages that use LLVM to access the same object and name mangling system. The language is the frontend, LLVM is the backend. Swift could have been implemented as a translator that emits ObjC code (let's be honest it's all syntactic sugar). I see Swift as a prettier version of ObjC plus a few other pieces of syntactic sugar.

      The real question is, can you program in swift without knowing any objc? At present I think you could, but understanding Objc enough to read it would be highly useful.

    7. Re:You should learn both of them by angel'o'sphere · · Score: 1

      The real question is, can you program in swift without knowing any objc? At present I think you could, but understanding Objc enough to read it would be highly useful.
      I doubt that. And several posters fully rejected that idea. However I did not yet write an App in swift, I only know the language, not the documentation for the libraries, somI'm not sure.
      On the other hand I have lots of experience in many programming languages. Learning a different language helps if it is conceptual (paradigm wise) different from your current language. E.g. knowing something about functional languages helps you to work with closures. I doubt ObjC has much or anything to offer to help you to be better in Swift. Pytjon or Groovy make much more sense as such an example.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  21. how to learn by Chaunte · · Score: 2

    I would learn objective-c first because you can get more help with it. People all over the internet have been doing it for a long time. It won't be obsolete for at least a decade, so don't stress about swift being the new way to do the same things. Find tutorials online or get torrents of books/buy them. Dream up your own micro-projects, when you get stuck http://stackoverflow.com/ is your friend. This site has saved me MANY times, usually within minutes. take a look at other peoples micro-projects and full fledged ones on https://github.com/ but above all, right some code EVERYDAY.

  22. But what about Fortran, Pascal, or PL/I, or Algol? by Anonymous Coward · · Score: 0

    C is useful, at some level, if you want to program microcontrollers where you need that "closeness to the metal", and it is true that an entire generation of CS folk grew up with C, because Bell Labs gave it away *free* to academic institutions along with Unix. That led to it being used in microcomputers.

    I don't know that "every language out there" has origins in C. There's a whole crop of languages from the late 50s and the 60s that all have similar constructs: procedural languages, structured data declarations (COBOL even has this), pointers, etc. Most with much "safer" implementations that didn't let you corrupt memory accidentally. C is, after all, basically a high level structured assembler.

    It's true that C syntax is somewhat pervasive, too.
    And if you want to work in certain areas, you'll need to use C, C++, or a dialect (ObjectiveC, e.g.).
    There's an enormous amount of code being written in Java (for instance, the popular Android platform has Java as its native language)

  23. Depends... by dagamer34 · · Score: 4, Informative

    Depends on your goals, really. I think a big pitfall most people think is that the goal is to learn a language, when you really should be aiming to learn confidently learn as many as possible. You'll soon start to see how similar they are, and it becomes a lot easier to pick up.

    The hard part actually isn't learning a language, but a framework. Frameworks are very platform specific, concepts are less reusable. And because Cocoa Touch is so intimately designed around Objective-C, even if you chose to learn Swift first, you'll need to know Objective-C anyway because of a) the amount of code/books/resources that exists on the internet in Obj-C vs Swift and b) a solution to your problem may only be written in Objective-C in a StackOverflow search result.

    As for skipping academic CS, at some point you need to learn the stuff that almost every CS grad is expected to know at some level (data structures/algorithms, operating systems I & II, algorithm complexity (aka Big O notation), software design, etc...) not so much because they'll be explicitly required of you, but as you build larger and more complex apps, without them, code readability, maintainability, and performance are going to go to total shit. Granted, there are some, heck many, CS grads who somehow evade actually knowing this stuff, and things don't turn out so great for the code they write in the end.

    My advice, tackle building an iOS app with a goal in mind, written in Objective-C due to the sheer number of resources out there, then expand from there.

  24. Swift by Schnapple · · Score: 5, Insightful

    I've been doing Obj-C for a few years now and I'm using Swift in a new project.

    Swift all the way, mainly because Swift is just a much nicer language. Obj-C has a bizarre late 80's syntax which is not found anywhere else so it's very strange. Except for random places where it's not. There was a half-assed "Objective-C 2.0" which introduced dot notation but not everywhere or consistently. There's tons of things you can do with it that are unsafe and shouldn't work (found out a lot in translating some Obj-C code to Swift)

    There's still going to be a bunch of Cocoa stuff to mess with (i.e., there's no intrinsic date concept so you have to mess with NSDate) but at this point learning Objective-C is a waste of time. At best you will have a few more online resources to consult with versus Swift but Swift is the biggest new language in a long time - a language designed by the biggest company on earth for one of the most popular platforms on the planet. The uptake is more or less unprecedented.

    Anyone who prefers Obj-C just doesn't want to learn something new. Apple didn't invent a new language because of hipness reasons, they did it because their platforms are saddled with this shitty language which is missing modern conventions and is difficult to learn and use.

    Just use Swift.

    1. Re:Swift by dgatwood · · Score: 1

      There's going to be tons of Cocoa stuff to mess with. You're basically using all the Cocoa classes, just with a bunch of extra wrapper code, in a language that's slower than Objective-C, for little real benefit beyond syntactic sugar.

      Worse, as things stand right now, if you start out using Swift, you're going to quickly start running into walls where the introductory documentation you need just doesn't exist yet. And when you get into trouble, you're going to go searching for code snippets on Stack Overflow and using Google, and approximately 100% of those snippets are going to be in Objective-C, not Swift, which means you'll have to know enough Objective-C to translate those snippets into Swift. In other words, if you don't already know Objective-C, learning Swift requires a fair degree of masochism right now.

      So no, new developers to the platform should definitely start by learning Objective-C, and should reevaluate that decision after they have gotten comfortable with Objective-C. In two or three years, assuming Apple doesn't drop Swift like they did their last three or four scripting language bridges, there should be enough Swift documentation and code snippets to support developers who are just starting out, and companies will be just starting to hire a non-negligible number of Swift developers for serious work. Learn Swift then.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    2. Re:Swift by linuxrocks123 · · Score: 1

      The uptake is unprecedented? Really? I imagine it will be approximately the same, or less, as the uptake for Obj-C when iPhones became a thing, which is "not terribly impressive". You're essentially forced to program in Obj-C for the iPhone, and it's still a niche language. People who write Mac-specific applications and iPhone apps use it, and essentially no one else.

      And the thing is: Objective C could theoretically be used other places. The bindings are there for people to write an OSS GNUStep-based application that could run on any platform. But no one does.

      And now you're telling me that Swift -- which is essentially a tweaked Obj-C -- is "the biggest new language in a long time"? You can't even USE the language to program on anything other than OS X and iOS! That limits its potential to exactly the same places Obj-C is used now. In its current form, it can never be more popular than Obj-C is now. And Obj-C just isn't that popular.

      The only way Swift could become a language anyone not writing OS X or iOS-specific applications cares about is if it gets taken up by the OSS community and bindings are made so it can be used for normal cross-platform application development. Do you see that happening?

      It could. Essentially GNUStep would be the key to that. But GNUStep has been around for well over a decade and has gotten essentially zero uptake.

      I'm not seeing it, man. If a single popular smartphone and 10% desktop OS market share were enough for a language to piggyback off of to mainstream adoption, Objective C would be mainstream for cross-platform development. And it's not. It's "the language you use to write iPhone apps", and that's all it is. Swift borrows heavily from Obj C, and borrows the libraries wholesale. It will go the same way.

      One last thing? Apple's only the "world's biggest company" because it overcharges for all its shit products, and stupid people don't see what a bad deal they're getting. In importance to the programming community, they're well below Google and Microsoft. Don't believe me? Take a look at C#'s popularity versus Obj-C.

      If I wanted to learn a niche statically compiled programming language, I'd look at Rust or Go over Swift. My advice to the questioner would be to go learn Objective-C. At least you theoretically could use it for non-Apple-platform development if you really wanted to as the bindings to a few big-name C-family libraries like GTK are there. It's a tier-3 language in library support, for sure, but that's better than no support at all. Which is what Swift has right now and likely will for the foreseeable future.

      --
      vi ~/.emacs # I'm probably going to Hell for this.
    3. Re:Swift by iluvcapra · · Score: 1

      Anyone who prefers Obj-C just doesn't want to learn something new. Apple didn't invent a new language because of hipness reasons, they did it because their platforms are saddled with this shitty language which is missing modern conventions and is difficult to learn and use.

      I'm mostly with this. My biggest problem with swift is there are still some holes in the compatibility with C code -- I was doing a project that called into CoreAudio to do some conversions, and the CoreAudio API required me to give it a function pointer for a callback, and Swift (shock!) cannot pass a function as a C function pointer, you have to write it in C. Little things like this are a irritating PITA, particularly when you can bang out 3 dozen classes in CoreData and Foundation and otherwise not have any problems, and suddenly you hit a dead end.

      --
      Don't blame me, I voted for Baltar.
    4. Re:Swift by Schnapple · · Score: 1

      I imagine it will be approximately the same, or less, as the uptake for Obj-C when iPhones became a thing, which is "not terribly impressive".

      Suddenly becoming one of the fastest growing programming languages in use and making several top ten lists isn't terribly impressive? Ok...

      And now you're telling me that Swift -- which is essentially a tweaked Obj-C -- is "the biggest new language in a long time"? You can't even USE the language to program on anything other than OS X and iOS!

      So, one of the most popular platforms on the planet (Apple is going to sell 71 million iPhones this quarter alone) isn't significant? Also when you say that it's a "tweaked Obj-C" that shows you have no idea what you're talking about.

      I'm not seeing it, man. If a single popular smartphone and 10% desktop OS market share were enough for a language to piggyback off of to mainstream adoption, Objective C would be mainstream for cross-platform development. And it's not.

      I like how you cite a number for OS X but not for iOS.

      One last thing? Apple's only the "world's biggest company" because it overcharges for all its shit products, and stupid people don't see what a bad deal they're getting. In importance to the programming community, they're well below Google and Microsoft. Don't believe me? Take a look at C#'s popularity versus Obj-C.

      Wow, where to begin. First you try and poison the well by saying that yes, Apple is the world's biggest company but only because they charge money. For their "shit products" no less. However, iOS is sitting at 44% market share which is #2 only to Android at 47%. But Android is only at 47% because it's on everything from high end Samsung devices to the crappy devices you can get at the checkout line at your local grocery store. Your disdain is for a company whose OS is only #2 to an OS that literally built its empire on "shit products".

      But that's not the best part. The best part is that your example of a well done programming language is C#. I love C#. I've made my living in C# for close to a decade. It's a fantastic language. It is also, like Swift, a proprietary language designed by one company for their own proprietary OS. That's your yardstick. Yes, there is an always-behind implementation by the open source community but it's also a language that's over ten years old, as opposed to Swift which is literally six months old come Monday.

      Again, this is a new, modern programming language introduced by the biggest company on earth for one of the biggest platforms on the planet and the uptake on it is unprecedented. C# didn't experience uptake this quickly because Microsoft had to explain what .NET was. Java didn't grow this fast because people thought it was used to make flashing thingies on websites. Swift has the advantage of a mature Internet age (the official guide is an eBook, not even a printed book, which Apple can patch as need be) and it's being unleashed onto a developer community starving for a better language.

    5. Re:Swift by Anonymous Coward · · Score: 0

      Swift is going take over Obj-C much like Java and C++ in the long run.

      Considering Apple (much like Sun back in the day) invented it due to need in enhancing their platforms to the next level. Android really got a free gift since Java was already mature... and considering Apple's implementation of Java was poor for years, swift made a lot of sense.

    6. Re:Swift by linuxrocks123 · · Score: 1

      Suddenly becoming one of the fastest growing programming languages in use and making several top ten lists isn't terribly impressive? Ok...

      It grew quickly for a while because people actually cared about programming for Mac platforms after the iPhone became popular. It's stagnated now.

      So, one of the most popular platforms on the planet (Apple is going to sell 71 million iPhones this quarter alone) isn't significant? Also when you say that it's a "tweaked Obj-C" that shows you have no idea what you're talking about.

      Strawman. I didn't say Swift was insignificant, just that it wasn't "THE BIGGEST NEW LANGUAGE IN A LONG TIME". It's not.

      It's moderately significant if you want to program for fruity platforms, although you should probably use Obj-C. It is insignificant otherwise.

      And it is a tweaked Obj-C. It takes Obj-C, cuts out pointers, and adds type inference. Yawn. The biggest thing it has going for it is library compatibility with Obj-C so fruity programmers can use Cocoa/Carbon.

      Wow, where to begin. First you try and poison the well by saying that yes, Apple is the world's biggest company but only because they charge money. For their "shit products" no less. However, iOS is sitting at 44% market share which is #2 only to Android at 47%. But Android is only at 47% because it's on everything from high end Samsung devices to the crappy devices you can get at the checkout line at your local grocery store.

      Nice try. Not everyone uses their smartphone for web browsing: http://www.idc.com/prodserv/sm...

      Your disdain is for a company whose OS is only #2 to an OS that literally built its empire on "shit products".

      I don't know why you think a phone has to be "shitty" just because it costs less than a used car. Inexpensive!=shitty.

      But that's not the best part. The best part is that your example of a well done programming language is C#. I love C#. I've made my living in C# for close to a decade. It's a fantastic language. It is also, like Swift, a proprietary language designed by one company for their own proprietary OS. That's your yardstick. Yes, there is an always-behind implementation by the open source community but it's also a language that's over ten years old, as opposed to Swift which is literally six months old come Monday.

      I never said C# was a well-done language, just that it was more significant than Swift. To me it looks like a slightly better done clone of Java. I generally prefer C++ for non-script programming.

      And dismissing Mono because it lags behind the MS implementation isn't correct. That's not the point; Mono doesn't have to have 1-for-1 feature parity to be useful. Without Mono, C# would be isolated to Windows desktop/server development. Which is still a more significant area than writing 2D cartoon games for iOS, but still.

      Again, this is a new, modern programming language introduced by the biggest company on earth for one of the biggest platforms on the planet and the uptake on it is unprecedented. C# didn't experience uptake this quickly because Microsoft had to explain what .NET was. Java didn't grow this fast because people thought it was used to make flashing thingies on websites. Swift has the advantage of a mature Internet age (the official guide is an eBook, not even a printed book, which Apple can patch as need be) and it's being unleashed onto a developer community starving for a better language.

      lol "THE BIGGEST COMPANY ON EARTH". I already told you that was a silly thing to say. Once again, market cap doesn't equal relevance for programmers. Or relevance for anyone or anything else except potential investors, really. Do you think the Apache web server is irrelevant because it's developed by a nonprofit foundation?

      It doesn't

      --
      vi ~/.emacs # I'm probably going to Hell for this.
  25. Professionalism Re:Learn both by under_score · · Score: 2

    Practical professional stuff to learn about: design patterns, refactoring and test-driven development. Start learning this stuff as soon as possible otherwise you'll make all kinds of awful mistakes when your doing your first professional gigs (assuming you get to that point).

  26. It's less about language and more about practice. by Hussman32 · · Score: 2

    It won't take you too long to learn how to write crappy code in either language. What you really need is a place to work that has focused goals, a clear set of programming guidelines that are built around writing code that others can read later, and the sitzfleisch to do the work.

    Find a job with a boss who is passionate about his/her work and are demanding enough to make you want to do a good job. There is no quick rich scheme in the next couple of months, programming quality apps is about art as well as science, and both take a lot of effort.

    But I promise you, your education isn't worthless, there may be unrealized benefits awaiting your team if you are willing to work at their level.

    --
    "Who are you?" "No one of consequence." "I must know." "Get used to disappointment."
  27. 8 years and now you want to code to make money by Anonymous Coward · · Score: 1

    I would like to say this post is not intended to offend you, but I would be partially lying. I was an Economics major in college that send my free time fascinated by computing. The reason I was not in computer science is that I did not know there were jobs in the field and I thought I would live in my small town forever. You can read a few things and hack up some programs at a level similar to code shops in second world countries. With your education level it is likely you will understand the needs of a customer more than an off shore team. In the end you will hit a wall at some point. That wall may be good enough to pay more than your bills and you should then consider being a project manager, being good or bad at it barely matters. If you get enough tech knowledge then you could be a Technical Project Manager at a top 5 company. All of this will be harder as a contractor as you will not get as much exposure to new ideas.

    Keep in mind that any skill that is easy to learn with no barrier to entry will eventually be worth very little. Computer Science has value because the same skills that make a great engineer make great lawyers and high finance analysts. Meaning, you have to keep paying them or they will do something different.

    The good news for you is that at the bottom of the profession is enough money to feed a family and pay off what you fear is a worthless degree.

    Good luck and if you want to be legit, go back and take the intro courses people are mentioning in theses threads.

    1. Re:8 years and now you want to code to make money by BarbaraHudson · · Score: 1

      The good news for you is that at the bottom of the profession is enough money to feed a family and pay off what you fear is a worthless degree.

      The problem is that the poster isn't even at the bottom of the ladder. He hasn't stepped on even the first rung. And pay at the bottom won't pay your bills. Not when you're competing with everyone else who finds themselves in the same situation - new to the field, no practical experience, etc. And even when he gets to the point where he can make an app, the numbers are awful:

      Accounting for 47% of app developers, the “have nothings” include the 24% of app developers – who are interested in making money, it should be noted – who make nothing at all.

      Meanwhile, 23% make something, but it’s under $100 per month

      and this

      How Do You Make Money When Less Than 1% Of Apps Are 'Financially Successful'

      and this

      There is no shortage of stories about lone developers who made an app for the iPhone or iPad and had runaway success. But in the real world, the majority of app makers struggle to break even, according to a recent survey by marketing firm App Promo. Though the survey's methodology is a bit on the light side, numerous developers that we spoke to agree that the results -- 59 percent of apps don't break even, and 80 percent of developers can't sustain a business on their apps alone -- are close to accurate.

      I'd be shouting "It's a trap!" but I think with these numbers, I don't have to. And the numbers are only going to get worse over time.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    2. Re:8 years and now you want to code to make money by Hognoxious · · Score: 1

      I was an Economics major in college that send my free time fascinated by computing. The reason I was not in computer science is that I did not know there were jobs in the field and I thought I would live in my small town forever.

      Right. Because every time I visit a small town I can't walk out the door without bumping into an economist.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  28. Oh fuck, another nerd thinks he can teach himself by __aaltlg1547 · · Score: 0

    Yes, you can teach yourself to program. You'll join the vast herd of semi-skilled programmers with spotty understanding and no knowledge of what has been done before and better by more skilled programmers. People who followed a more disciplined path will pass by you, because someone clued them in about the dead ends you'll be exploring.

  29. Assembly by CanadianMacFan · · Score: 2

    Best course I took at university was assembly on a simulated CPU which showed me exactly what was going on when I issuing commands. Made me realize what was happening down in lower levels. While I don't touch assembly at all anymore (and never did after that course) the way it made me think about how the computer works definitely turned me into a better developer today. For a very basic example, because I had the experience with the simulator and saw what happened with function calls it's easy to explain why a factorial implementation that uses recursion will be slower than one that just uses a loop.

    1. Re:Assembly by Anonymous Coward · · Score: 0

      The performance of recursion relative to iteration depends on the programming language, compiler and runtime. There are more things than assembly.

  30. yes and no by Anonymous Coward · · Score: 0

    you aren't an idiot to think you could teach yourself either of those programming languages and the ios application development environment...

    however, you ARE an idiot if you think you can make a decent living (by 'western' standards) doing that work

  31. Too little too late by Anonymous Coward · · Score: 0

    If you haven't done 'meaningful' software development in any programming language/IDE outside your limited academic setting then you'll have a long row to hoe if you expect to be competitive in a job hunting environment - unless you've got connections. If you think a random college graduate could read a few books and publish articles in whatever "worthless social science field" journal then you might give it a go.

  32. You'll get through Swift faster. by jpellino · · Score: 1

    Recent EDU Apple Tech Update led a bunch of us educators with mostly ancient programming skills through a simple app build in remarkably little time. Then see if you want to continue on to Obj-C.

    --
    "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
  33. you're not totally an idiot by sribe · · Score: 1

    1) There are plenty of books, and plenty of sources online. You can teach yourself. However, to become really good is probably more work than you can imagine, simply because you can have no idea the complexity of it all until you're well into it. But if you're willing to work hard and be patient, then go for it.

    2) In this case, the first thing you need to learn is this: Fuck Slashdot. Go to www.lists.apple.com, sign up for the cocoa-dev mailing list, and ask your questions there. That is absolutely, positively THE first place for you to be looking for help. See you there ;-)

    1. Re:you're not totally an idiot by BarbaraHudson · · Score: 2

      2) In this case, the first thing you need to learn is this: Fuck Slashdot.

      I thought Slashdot BETA already took care of that :-)

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  34. definitely c ironically the most object-orientatd by happyjack27 · · Score: 1

    definitely c ironically the most modern programming language of the bunch.

    maybe some day apple will finally get with the times and use an existing popular modern object orientated programming language like c++ or java.

    you know, shortcut the whole process f making a feature-incomplete idiosyncratic and verbose programming programing language with inconsistent syntax and skip ahead to what everyone else had half a century ago.

    why oh why don't they just use c++ or java?

    sigh.

  35. Re:Oh fuck, another nerd thinks he can teach himse by Anonymous Coward · · Score: 0

    The average CS degree doesn't focus so much on practical aspects of CS as the theoretical. What dead ends are they going to learn that can't be learned with something like open courseware or other resources? How is a 4 year degree more efficient timewise? I'm really interested in why you think self-guided learning can't be as effective for programing. It's not math or quantum physics.

  36. Neither by greggman · · Score: 1

    You should concentrate a learning some other language like C or C++ and using as little Swift / Objective C as possible to interface with the OS. That way your code is portable to other platforms. Either that's Windows, Android, XBox, Wii, PS4, Linux, whatever.

  37. API all has Swift translation by SuperKendall · · Score: 1

    iOS and all of the API stuff and most of the books and documentation and example code will still be in Objective-C

    This is not really correct.

    The entire Objective-C based iOS SDK now presents a swift-translated version of the API.

    Also ALL of Apple's documents currently present side by side the ObjC and Swift API.

    There are also a LOT of books and online courses now that are swift specific, with the side benefit that you won't be confused about which ones are two years old (or older)...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:API all has Swift translation by dgatwood · · Score: 1

      Also ALL of Apple's documents currently present side by side the ObjC and Swift API.

      Only the API reference documentation, not the conceptual docs, the sample code, etc.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    2. Re:API all has Swift translation by SuperKendall · · Score: 1

      Only the API reference documentation, not the conceptual docs, the sample code, etc.

      All new sample code (since WWDC) has swift examples.

      Also any example code you may need for any framework (CoreData, MapKit, etc). is easily found online now.

      The conceptual docs, being conceptual, hardly matter as to language mentioned... the concepts are easily used.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  38. Don't forget C++ is an option by EmperorOfCanada · · Score: 1

    Using tools like Openframworks and especially cocos2d-x you can make things for iOS in C++ that are extremely easy to port to Android, or Windows, Mac desktop, linux, and the Windows mobile OS.

    You don't have to do things the way apple tells you to do things.

  39. From an experienced iOS developer - Learn Swift by SuperKendall · · Score: 1, Troll

    I've been doing iOS development full time since before the release of the Apple App Store.

    At this point, anyone trying to get into iOS development should, no question, learn Swift.

    Apple has indicated as clearly as they can Swift is the primary language moving forward. All of the most experienced iOS developers I know are rapidly learning swift, much new work is being done in Swift.

    There's also no shortage of Swift books either available or soon to be released, and lots and lots of online courses covering swift specific stuff for people new to iOS development.

    One other benefit of going with Swift is you get to use Playgrounds to dynamically play with Swift code and see what things do. There's a ton of benefit to that interactivity when learning a new system...

    I would recommend starting with the 6.2 beta version of XCode (the one that was released with WatchKit support) since the current XCode in the app store can get a little crashy with some Swift code. By the time you have anything written you might want to release, 6.2 will be out of beta (sometime in January I'd guess).

    ObjC is still useful to know as some philosophy behind it is embedded in the SDK - but what is useful to know will easily be learned in snippets as you go along learning iOS development, Swift is a better choice for primary language for new projects.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  40. No Other Option - Go Swift by Snap+E+Tom · · Score: 2

    Objective C will be dropped in the future. Once Apple says "This is the way to go," it *will* drop the old one sooner rather than later. Carbon, Rosetta, and WebObjects are examples of previous technologies that Apple has killed off.

    1. Re:No Other Option - Go Swift by Anonymous Coward · · Score: 0

      Like if NeXT and Apple didn't try to ditch ObjC twice already.

    2. Re:No Other Option - Go Swift by boutell9736 · · Score: 1

      Carbon and Rosetta were obviously transitional technologies - they were specifically invented to help you *not* drop things right away. WebObjects is still in use in-house at Apple - it powers iTunes Connect - you know, that little site where the Swift developers get paid? True, they gave up on it for third party developers, but only because nobody liked it. Objective C will go away if Swift covers the same territory completely and developers like it better. If not, it won't.

  41. Learn what you need, as you go by wvmarle · · Score: 1

    The above has been my strategy. Admittedly I've never done coding for pay, however I've been coding my web site, I've written some Android apps, etc.

    When I first learned to program, it was BASIC. Later in college Turbo Pascal - which was dead easy to me as I knew BASIC, meaning I knew about the key paradigms of programming. Another decade or so later I had the need to write some small software, and in a few days I got myself going in Python - to this day my language of choice. HTML was added when the need came to design a web page, and the moment it needed more complexity the python module for Apache appeared together with MySQL. I wanted to write an app for my phone, so got myself going on Android and learned the Java that goes with it.

    I've taken the same approach with my current business as tour operator. I know my way around my area well, I know many interesting hidden spots, and decided to just start doing tours. The learning how to do it, came as I went. I started by getting some general advice on the Internet, followed by just doing some tours, and see how it went. I learned a lot, really fast. I found out I miss parts of knowledge, and dove into those specific subjects.

    Anyway, long story short: my general advice is to learn what you need, as you go.

    Your disadvantage is that you don't know any language yet; Python is considered one of the easiest ones to learn these days, and can give you the basics of object oriented and procedural. I can't say "if you know one, you know them all", but that's not too far from the truth. All languages use, at their core, the same paradigms, and those paradigms are the hard part of programming. Understand them, and the language is just a way of expressing it. Also the more languages you know, the easier it gets to learn yet another one.

    In this case, based on the comments, maybe you should start learning Swift first. Or try both, spend an afternoon browsing some tutorials in both langauges, and see which you find easiest to grasp. The moment you need the other language it'll come easy. Maybe you'll get a request to add an Android version to an existing iOS app - I'd say just take it, grab the dev kit, learn Java as you go - by then at least you already have a basic understanding of the pitfalls of mobile development, you just have to learn a new language. You may risk pissing off your first employer for Android apps because you're too slow (learning takes time) but the next such job will go a lot easier already.

  42. Learn both! by johnthuss · · Score: 2

    You can't realistically do iOS development without knowing Objective-C; its just no feasible since all Apples frameworks are written in it, all the open source libraries use it, and all of the stackflow answers are for it. And fortunately, it is not a bad language. Swift is a much better language, at least potentially. It is still a bit rough to use. But it is sure to replace Objective-C over the next few years, so you would be a fool to ignore it. To address the larger question - you should get some formal computer science instruction if you ever expect to land a job. You have to have something on your résumé.

    1. Re:Learn both! by Bogtha · · Score: 1

      You can't realistically do iOS development without knowing Objective-C; its just no feasible since all Apples frameworks are written in it, all the open source libraries use it, and all of the stackflow answers are for it.

      This isn't the case. It doesn't matter whether a framework is written in Objective-C or Swift, you can use it from either language regardless. You can write an application from start to finish in Swift without needing to know anything about Objective-C. Sure, if you do know it, then it may be easier, but not so much easier that it will outweigh trying to learn two languages at once.

      you should get some formal computer science instruction if you ever expect to land a job. You have to have something on your rÃf©sumÃf©.

      No, when people hire iOS developers, the first question they ask is if you have any applications in the App Store, then they want to know where you've worked, then they want to see your code, and if you haven't got anything else, then a degree is the last resort you have. Spending your time building applications and putting them on the App Store is far more effective for getting a job than spending that time getting formal education in computer science. Even when you come across the rare organisation that demands a degree, they usually don't care about what subject it was in.

      --
      Bogtha Bogtha Bogtha
  43. Swift or object C by Anonymous Coward · · Score: 0

    Programming has 3 coponents - Problem solving, coding and memory management. Problem solving is to undersand how to create an algorithm and veify it works and exceptions are shown as error messages. Coding is to learn the syntax of the language and use it to form correct statements or sentences in the given language. The steps are in general, are called procedure. Memory management is the way to store the data and make memory available for ohter operations. Unfortunately, people will start wiht syntax without showing how to first identify the components of the problems – what is given and what is to be assumed which will produce correct or wrong code resulting in useful or useless code. Memory management is known as data structures – efficient way to store and retrieve data when a program needs it. These components are what is normally taught or learned in procedure oriented languages like C, FORTRAN, BASIC etc. However most people will skip learning these fundamentals and do not realize that inside any programming language the procedure parts are almost identical except the way they are expressed. So, without skipping start with BASIC not very difficult to learn with free compilers on the internet. People will ridicule you, but once you understand how the procedure part works, you can easily learn C which is rigorous in enforcing the memory management or data structure.
    Now, you move on to C++ or any Objective C as a language with two sets of components – the object part and the procedure declaration for each object how to take care of their operations speecified for them.. Find some retired teacher with enthusiasm to teach you and make him or her as your mentor. So chores for him or her as a pay back. Once you have confidence, slowly develop small applications to test your ability to create objects, their methods (procedures), communication links and so on.
    Your abilities are different from the rest who write here. Findout your style and abilities and move on.
    There is no short cut here.

  44. That is as far from the truth as you can get by SuperKendall · · Score: 1

    Basically the overlap between CS and iOS programming of apps, is near zero.

    Wow, is that ever wrong.

    Programming a mobile device, where many aspects are constrained (memory, CPU), means CS knowledge matters WAY more than it has for some time in desktop or even server programming.

    All of the various frameworks in iOS can be used badly, or they can be used intelligently, a knowledge of CS being the difference between an annoying lag app and a responsive one that doesn't take a week to handle a realistic amount of data from a user.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:That is as far from the truth as you can get by Anonymous Coward · · Score: 0

      Rubbish. No one's going to run a high availability web server, database or number-cruncher on a mobile. I never felt like I was programming for an embedded space back when I had a 486 / 8MB / 200MB hdd - I certainly don't feel like I'm in a highly constrained environment on modern mobile platforms, which are far more powerful. Lag due to an algorithmic choice would be an even more unlikely occurrence today for the sort of 'toys' facilitated by iOS.

      A programmer will always be better with a solid grounding in CS, obviously; but your argument is misdirected.

  45. Either And by Anonymous Coward · · Score: 0

    It's not going to be too difficult to get through. The only demotivational thing is most computer books are written, it seems, on a cost per page payment scheme. So you'll have to contend with these issues.

    In any case, all languages are structured the following way.

    1. variables and instantiation
    2. Types and equivalency
    3. Control structures
    4. references or lack thereof
    5. logical units - either OO or functional programming or procedural. They gravitate towards one or the other.

    In the meta sense
    1. preprocessor directives. This is a little nonsensical and always about trying to tack on additional functionality to the language without first holding a committee meeting.
    2. Libraries. This is pretty important stuff, since you don't want to reinvent the wheel for everything. Hello to writing your own OS. ( ps. required skill in some CS courses). Oh dear what is network endianess again?
    3. Container based approaches. Hello windows. And to the dreaded java http servlets.
    4. Algorithms - Unless you're on the whipping end of a research thing, you can blame the library. Heap sort or bubble sort ? Optimising memory management. Implementing your very own nurbs because noone wants to pay for a library? Corroborating research results? No need to worry unless you're in that role.

    Did someone mention robots taking over everyone's job?

  46. Not current, or accurate by SuperKendall · · Score: 2

    You're basically using all the Cocoa classes, just with a bunch of extra wrapper code

    You are using the frameworks directly. There is no "wrapper code". How the API's look to swift has been refined, but there on no layers over said API's...

    in a language that's slower than Objective-C

    An explicit goal of Swift is performance, and it's already faster than Objective-C when optimized.

    for little real benefit beyond syntactic sugar

    I'm sorry, how are Tuples mere syntactic sugar over ObjC? Or operator overloading?

    That's either a hell of a lot of sugar, or a new dish.

    The fact is that Swift is a truly new language that brings a lot of functional programming concepts into play for iOS development.

    Worse, as things stand right now, if you start out using Swift, you're going to quickly start running into walls where the introductory documentation you need just doesn't exist yet.

    What intro documents are those exactly? Apple has two free books on Swift, there are countless "getting started with Swift" resources online, there are also many books either out or just about to be published.

    Point at one aspect of iOS development that has no Swift documentation. Just one.

    learning Swift requires a fair degree of masochism right now

    That was true a month or two after Swift launched, but is not at all true now.

    You simply have no concept of the speed of uptake Swift has had in the realm of the most serious iOS developers, who have already suffered the slings and arrows of misfortune and have draw everyone else a nice map of where to go based on experience...

    So no, new developers to the platform should definitely start by learning Objective-C

    I've been programming only for iOS since before the App Store was launched, and worked on scores of real world applications. Have you?

    My advice is 100% the opposite of yours, because Swift offers so many benefits to someone new to either ObjC or Swift and Apple has clearly moved to make Swift the primary development language going forward.

    In two or three years, assuming Apple doesn't drop Swift like they did their last three or four scripting language bridges

    And I'll leave you with that dangling statement for the ages... *facepalm*

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Not current, or accurate by dgatwood · · Score: 1

      There is no "wrapper code".

      For most Objective-C classes, that's true, but I was under the impression that Swift's array and dictionary support consists of wrapper code around NSArray/NSDictionary; I'm not certain of that, though.

      I'm sorry, how are Tuples mere syntactic sugar over ObjC? Or operator overloading?

      Operator overloading is, IMO, almost inherently a mistake. And tuples are pure syntactic sugar. Anything you can do with tuples can typically be done without tuples in just a couple more lines of code.

      Point at one aspect of iOS development that has no Swift documentation. Just one.

      The entire networking stack has no Swift documentation except for a very trivial NSURLSession example. And last I checked, large chunks of WebKit (which may or may not be available on iOS) and Accelerate were still undocumented, forcing developers to learn about them by reading the C/Objective-C headers. So if you don't know C or Objective-C....

      What intro documents are those exactly?

      The conceptual docs for pretty much every technology area, for starters. You can say all you want to that the language doesn't matter in conceptual docs, but IMO, that's not the case if you truly don't know any Objective-C, particularly for technology areas that are particularly complex (networking, security, etc.).

      In two or three years, assuming Apple doesn't drop Swift like they did their last three or four scripting language bridges

      And I'll leave you with that dangling statement for the ages... *facepalm*

      I'm not saying I expect Apple to drop Swift, but you have to admit that Apple has a long history of coming up with what seems like revolutionary improvements in technology, and then dropping them a couple of years later—Objective-C Garbage Collection, for example. For that reason, I'm being very cautious when it comes to Swift adoption. I'll play with it, but I won't be using it for any nontrivial code until I'm sure it is going to stick.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    2. Re:Not current, or accurate by SuperKendall · · Score: 1

      Operator overloading is, IMO, almost inherently a mistake. And tuples are pure syntactic sugar.

        don't like operator overloading either but you can't just hand wave t away as syntax sugar because you don't like it.

      Also tuples are way beyond what I consider syntax sugaring as they replace quite a lot of parameter nonsense and lots of extra method definitions because of elements being optional.

      The entire networking stack has no Swift documentation except for a very trivial NSURLSession example.

      NSURLConnection seems to have full Swift documentation (though it doesn't show up by default under all for some reason).

      Or you could just use one of the countless online examples of networking with Swift, even the AlamoFire library written by the same guy that did AFNetworking...

      The conceptual docs for pretty much every technology area, for starters. You can say all you want to that the language doesn't matter in conceptual docs, but IMO, that's not the case if you truly don't know any Objective-C

      I still disagree with that but even if it were so you can find any conceptual based thing you want online now from other sources that is very Swift specific. In particular Ray Wenderlich and company have been really prolific in churning out Swift guides for all kinds of topics.

      you have to admit that Apple has a long history of coming up with what seems like revolutionary improvements in technology, and then dropping them a couple of years laterâ"Objective-C Garbage Collection, for example.

      GC on ObjC was never revolutionary, it was added on because everyone else had it - ARC was a much better idea, and they aren't dropping that. I don't see a history of Apple dropping much of anything as all other frameworks and technologies they've developed have pretty much stayed and evolved. Can you provide any other example, because I con't think of any that I was using that ever got dropped... hell, even iCloud document support which has historically had a ton of issues is still there, evolving and iterating...

      I won't be using it for any nontrivial code until I'm sure it is going to stick..

      The canaries on that one are already deep inside and chirping loudly still. Anyone who is not switching to Swift now as rapidly as they can is going to be behind the curve in terms of modern iOS development.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:Not current, or accurate by dgatwood · · Score: 1

      The entire networking stack has no Swift documentation except for a very trivial NSURLSession example.

      NSURLConnection [apple.com] seems to have full Swift documentation (though it doesn't show up by default under all for some reason).

      It has reference documentation. It has no sample code, and no conceptual docs.

      Or you could just use one of the countless online examples [google.com] of networking with Swift, even the AlamoFire library written by the same guy that did AFNetworking...

      99% of which still fall into the "trivial examples" category. The AlamoFire is a little bit more complex, but still doesn't come close to demonstrating all of its capabilities.

      GC on ObjC was never revolutionary, it was added on because everyone else had it - ARC was a much better idea, and they aren't dropping that.

      Fair enough. I thought GC was a mistake from the very beginning, personally. Either way, IIRC, lots of people initially touted it as the solution to the complexity of retain-release schemes.

      I don't see a history of Apple dropping much of anything as all other frameworks and technologies they've developed have pretty much stayed and evolved. Can you provide any other example, because I con't think of any that I was using that ever got dropped... hell, even iCloud document support which has historically had a ton of issues is still there, evolving and iterating...

      Apple's Java implementation and WebObjects both come to mind, though both predate iOS. And Apple developed and dropped bridges for Ruby, Python and Java. And the Message framework (NSMailDelivery), Instant Message framework, and QTKit framework were also fairly short-lived, IIRC, or at least they seemed that way.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  47. Corrections and Refinements by SuperKendall · · Score: 4, Insightful

    No header files confuscate passed-on intended usage by exposing ALL class details rather than the intended consumable APIs.

    Which is OK within the same app, especially since you can mark methods as private now.

    Visibility is limited to what you can use when using a framework written in swift, you get what is essentially an automatic header view.

    The idea is to write more small frameworks for more modularity.

    Real-world test code being written showed you end up peppering your code with ? and ! symbols.

    Not as true since the iOS frameworks were re-worked to indicate properly to Swift when something is an optional or not. The choice to use an optional should be a thoughtful one in your own code.

    var view: NSView = anyObject as NSView

    What's wrong with being explicit in casting? You had to do that a lot in ObjC also ( NSView view = (NSView *)myObject ) only now without the pointer syntax... as the tested casting is a much nicer concept since it fails gracefully if wrong, instead of just proceeding and crashing.

    Your code end up having full of "as othertype" in it.

    No, it really hasn't, not in real use.

    Integration with existing code: Obj-C require Swift mangled name

    Don't know where you got that, but just no. I've worked with mixed Swift/ObjC code, there is no need to use the mangled name - that has not come up in any way for real use.

    String-types enums are a major fubar

    Oh no, you have to call toRaw()? Never mind that in ObjC enums can ONLY be integers, not strings at all, which means you have to write a whole method somewhere to translate those ints into strings if you want an enum of strings, and also figure out where that method belongs... enums in Swift are a HUGE advancement.

    The localized strings would thus expose the structure layout

    Now that's just plain silly given that format strings in ObjC are simply passed the various objects in the call to format, and structure discerned from those pass parameters every bit as easily.

    In fact what is REALLY silly is that ObjC is way more hackable, since it's all message passing... Swift takes that aspect away unless you re-enable it with things you mentioned like explicitly enabling KVC for methods.

    I created a REST/JSON multi-threaded transaction framework with full JSON object parsing through an object factory that returned fully instantiated objects

    That's interesting but sounds dubious since all of the JSON parsing Swift code I've seen is really compact, and I've been dealign with a lot of REST/JSON code in a production app myself, using swift. It's smaller. I've not measured speed but it's not much slower, if any.

    Of course is real life you are just using NSJSONSerializer, right? Right?

    That test framework was built with a multi-programmer, globally-spread coding team such as what I have to deal with at the office

    I have to deal with the same stuff all the time, I'm a full time iOS consultant who has worked with a number of very large teams. I like the idea of a more modular app with more internal frameworks myself, it will REALLY help in a case like that.

    I really think you are greatly mistaken about swift, you should use it in real development and not just a test case. Swift has already seen a lot of advancement and uptake...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Corrections and Refinements by MouseR · · Score: 1

      The code was written for production consideration. In the end, the Obj-C version was retained. Yup. NSJsonSerializer. The was a level of abstraction around it to allow using a different (and faster) engine but not during those tests.

      The wrapper includes facilities to map the resulting NSDicts to corresponding classes if they existed, or use custom class maps for customizing recipient objects based on calls. This conversion of dictionaries to class instance is recursive. Meaningful keys are also trapped on a per class basis so a -toJson round trip can be achieve, including optional retaining of unknown values (should the server object model not match the compiled classes. That was the part that Swift had shortcomings.

      About them enums, I'm saying that havng to use a specific toRaw() to access the value is effin idiotic. For an inferred type language, you sure have to write an effin lot of garbage.

      Wether your code is small and modular doesn't change the fact that you are still sending out entire source code out rather than simple headers that outline intended usage. When dev group x sends code your way, if the interface is full of symbols you should not directly access, wether they are marked privates still doesn't make the published code easier to deal with.

      The Obj-C mangled names was in the documentation and WWDC presentation at Time of This comparative exercise.

      And yes, code size was bigger in swift. Despite having 2/3 the number of files that the Obj-C version had (due to the header+mplementation duets). The exact numbers on my laptop but off the top of my head it was 234kb for Swift and 182 for Obj-c. If I could upload pics in /. Comments, I have a screenshot of both folders inspectors opened.

    2. Re:Corrections and Refinements by SuperKendall · · Score: 1

      That was the part that Swift had shortcomings.

      So a bit like RestKit (which I hate BTW, though not because of what you are trying to do), it doesn't seem like that should have been more code in Swift.

      RestKit itself is a massive bloated thing, which would be way easier to have a lean version of written in Swift..

      About them enums, I'm saying that havng to use a specific toRaw() to access the value is effin idiotic

      It's not because mostly you are using the symbolic values from the enums - it's handy to also be able to attach a "real" value to them as well, and not as used.

      Wether your code is small and modular doesn't change the fact that you are still sending out entire source code out

      You aren't though if that module is it it's own framework. Then all that is visible is the headers - just like you can see Swift headers for all the iOS frameworks, not the internals.

      The Obj-C mangled names was in the documentation and WWDC presentation

      That is REALLY out of date, but even immediately after WWDC I was using mixed Swift/ObjC and never had to use mangled class names for anything. That's the point of the generated Swift bridging header, which was there from the start...

      And yes, code size was bigger in swift. Despite having 2/3 the number of files that the Obj-C version had

      I really think that had more to being new with the language and not knowing how to use it efficiently, along with of course improvements made to the language in the intervening months...

      Given the syntax is inherently shorter for Swift even if all you did was port Objective-C code into swift it should be shorter though. I'd be curious to know what aspects exactly caused the code to blow up beyond the natural compression.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:Corrections and Refinements by MouseR · · Score: 2

      Actually, it was the other way around.

      I started with a blank project to write a Swift framework in order to learn the language and reach a usability goal of signing into a production server, make a couple of REST calls and yield out Switch class instances in a hierarchy, through unit tests. No UI.

      Then I proceeded to replicate the same thing in Obj-c using the same class hierarchy, same object model. There was a near 1:1 correspondance in the whole thing. Where things differed were where Switft could not directly handle things like NSClassFromName where an Obj-C factory was embedded in the Swift code.

      The exact numbers (now that you got me out of bed) was 84,341 bytes (file system rounded to 184k) for 29 items for the Obj-C version and 249,282 bytes (324k) for 23 items for Swift.

      Size comparaison is no longer possible because the Swift was frozen on ice since jully-ish while the Obj-C version given considerable more smarts, expanded object model, additional services (REST calls handlers) and additional auth method (Basic, SSO, Form with redirection support while Swift only had Basic auth).

      And yes, I know Swift is a moving target (we all cringed when they promised not to promise source compatibility between releases...). I can only hope it keeps on getting better. I just dont think its mature enough for a corporate environment such as ours.

      Wish I could show side-to-side comparaison of where the major differences where and why swift ended up taking more code but sharing code is not the kind of thing my employer is very keen about (they own java and we all know how that went).

      I can tell you where is a lot of "as String" or "as NSString" going on, and things like foo!.dynamicType(). One line I'll replicate is this one:

                                              var version : NSString = bundle?.infoDictionary["CFBundleShortVersionString"] as NSString

      Isn't it completely useless and mind boggling that I have to use "as NSString" at the end of this line if I took the express care of typing the "version" variable as NSString? Damnit, the compiler should be smart enough to do it for me. Things like that really need refinements. This ain't Hypertalk (remember that?).

      Noteworthy is that I used the same coding style in both language in terms of line spacing, variables/types alignments using tabs and K&R style braces. As long as style did not contravene the convention of the language.

      And I thought I was pretty nice (in Swift's favour) to not have mentioned "SourceKit crashes". But that's an XCode issue, not a language one.

    4. Re:Corrections and Refinements by wues · · Score: 2
      The compiler is smart enough, it just works differently than you think. Instead of your line, say

      var version = bundle?.infoDictionary["CFBundleShortVersionString"] as NSString

      and the type of 'version' will be inferred all right. This misunderstanding of the language shows that your code maybe that long because of you, not because of Swift.

    5. Re:Corrections and Refinements by Maury+Markowitz · · Score: 1

      > What's wrong with being explicit in casting?

      Nothing, but why do we need more syntax for it? That's my real complaint with Swift - lots and lots of one-off syntax in places where it didn't seem to be needed. What's wrong with:

      var view: NSView = (NSView)anyObject

      It's just as explicit, yet this uses familiar syntax that everyone already knows and uses. For that matter, why did they decide to use this syntax:

      var view: NSView = (NSView)anyObject

      When:

      NSView view = (NSView)anyObject

      It exactly the same in terms of expressiveness, yet is using a syntax that we're already familiar with? Does adding var really make the code more clear? I certainly don't think so. And the colon? Really? I know the answer already, it's because they picked language X as their model rather than language Y, which is *precisely my point*. Generally if you're going to introduce a new language you have exactly one chance to get it right, and I can't say I'm at all pleased with v1.0.

    6. Re:Corrections and Refinements by wues · · Score: 1

      They used the syntax with var so one can use let as well. Actually in Swift you should be using let by default, not var as in your example.

  48. Best advice you will never take... by Anonymous Coward · · Score: 0

    I own a publisher, with 12 developers working for me. Half started their careers in iOS and Unix, the other half in C#.

    After years of experience and painful lessons learned, we are now entirely a Unity shop, with all code in C#.

    With the open-sourcing of .NET, and the incredible power and flexibility of the Unity engine, you are making a critical mistake limiting yourself to arcane iOS-centric languages. Mobile development studios are desperate for Unity experience. We wouldn't even interview with someone now that is just a ObjC or Swift coder.

    If you want to be highly employable in the coming years, learn C#. It's a good language, and dominant in mobile.

  49. Re:Oh fuck, another nerd thinks he can teach himse by Anonymous Coward · · Score: 1

    I would argue that learning how to teach yourself new skills and seeking out best practices, while being aware of what you don't know, is absolutely the key to becoming a skilled programmer.

  50. You asked if you are an idiot by Anonymous Coward · · Score: 0

    Yes and no.

    "First, am I an idiot for thinking I can teach myself either objective C or Swift on my own without any academic CS background (I've tinkered in HTML, CSS, and C classes online with some success)? "

    No you are not an idiot for thinking you can teach yourself any programming language. You don't need a CS background to learn to program....that's not what CS is about anyways.

    But, yes you are an idiot for pursuing a Master's in a useless field. What an amazing waste of time and money.

  51. iOS is free to play with also by SuperKendall · · Score: 4, Informative

    one of the advantages of Android that I haven't seen anyone mention is that you don't need to know C or C++ or ObjectiveC/ObjectionableC. Just a subset of Java

    I was a Java developer for around a decade. Now I've been doing iOS development full time for several years, most with ObjC and recently in Swift.

    The thing is, from a language standpoint all of those are comparable in terms of effort to learn - so if he doesn't know Java it's no harder to pick up ObjC over Java, or Swift over Java (and Swift has the advantage of being a lot lees verbose than the Java or ObjC, while still maintaining the good descriptive aspects of ObjC [named arguments]).

    The real effort is in learning the frameworks for whatever system you are developing for, Java was actually the first platform I know of where that mattered more than the language because the frameworks were extensive - but so are the iOS frameworks.

    As a bonus, you can develop for free on any laptop.

    You can with iOS/Swift also, the simulator is very good and you could realistically write an entire app ready to ship to the store then pay for a dev license only when you felt you had something worth using.

    What you gloss over is that with Android development you often NEED to have a device to develop, because the Android simulators are so poor/slow. If he doesn't already have an Android device where is that $100 advantage? Gone, and more than gone because to buy a reasonable test device (or several test devices which is more realistic) is going to cost way more than $100... I have an Android device I bought when abroad for around 70 EU, that is utterly worthless for development or even running apps.

    Maybe you'll decide that, until you get that sorted out, you want to take a (probably low-paying, but with your degree, who knows where that will lead) job at some humanitarian organization

    Which will have even worse politics going on than in a normal company, and probably be very draining for the soul... those are the kinds of places you want to volunteer for, not work for. They will eat you up rather than giving you the uplifting you speak of. Have you really worked for one or does it just seem like a good idea?

    you don't have to worry too much about this

    iOS developers have not had to worry about THAT because we have THIS.

    Which is Infinitely better than having to research the dreaded other thing because your app just locks up at times...

    Seriously, have not had to look for leaks in years.

    it will give you the basics of OOP

    Swift will give you the basics of OOP *and* functional programming, which is far more valuable going forward. And it's much more interactive since you can use Playgrounds to explore.

    The demand for Java developers is either for people who know the Android frameworks really well, or incredibly seasoned IT developers with years of service experience. A few weeks of learning Java will be of little use in finding a job anywhere.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:iOS is free to play with also by Anonymous Coward · · Score: 0

      As a bonus, you can develop for free on any laptop.

      You can with iOS/Swift also, the simulator is very good and you could realistically write an entire app ready to ship to the store then pay for a dev license only when you felt you had something worth using.

      Sure, as long as you have a Mac or MacBook. Hardly what I would call free since Windows laptops are as common as dirt and can be had for peanuts these days.

    2. Re:iOS is free to play with also by BarbaraHudson · · Score: 1

      Where do I start?

      In case you haven't heard, decent android tablets are going dirt cheap. Quad core name brand tablets are now ~$140.00 (I've seen a few good ones as low as $125.00). That's what happens when you have an open market instead of a monopoly - competition makes prices drop.

      He doesn't want to "find a job anywhere" so your remarks about "A few weeks of learning Java will be of little use in finding a job anywhere" are irrelevant. He wants to do this:

      Several of my friends who were in similar situations after grad school have done so and are making a healthy living getting contract work.

      The advantage to this is that even if it takes him 3x as long as an experienced dev to get that first project done, he doesn't care - he's getting paid to get some practical experience and nobody's standing over his shoulder every day criticizing how much longer he's taking than the other devs.

      He also doesn't need to learn the extensive class libraries in Java - just a small subset in android and a small subset in Java.

      Which will have even worse politics going on than in a normal company, and probably be very draining for the soul...

      I only offered it as an option. However, IT has its own craziness - just look at the ongoing misogamy (no, I'm not talking about gamergate), politics is just as toxic, programmers frequently hoard information and engage in juvenile pissing contests, management too often "governs by fiat" with changing demands and not enough time, and then wonders why projects fail, working extreme hours is expected and often not compensated, doing tasks that require long periods of concentration while working in cubicle-land - or worse, open offices without even cubicle walls - is counterproductive, etc.

      The poster asked for specific advice. Elsewhere in the discussion he's provided his time frame, which, with help, might be doable. However, as others have pointed out, iOS is just iOS. There's a big world out there, and even games like Minecraft and Runescape are written in Java. And I'm saying this from my perspective as a die-hard c/c++ fan, because (1) c simply has too long a learning curve in comparison to become "good enough", and (2) hardware has now gotten to the point that java is "good enough".

      And since he already has 2 friends who are into iOS development, maybe they won't mind if he makes Android (and maybe even java-enabled browser and java on the desktop) versions of their apps as a starting point?

      If he had a couple of years, my answer might be different - but that's neither here nor there. Swift isn't finalized yet, and both Swift and Objective-C are platform lock-ins. He simply doesn't have the time to become "good enough" in both Swift (a changing target) and Obj-C, and he needs to be flexible enough so that he isn't locked into just mobile development, because at this stage, he doesn't know exactly what will "float his boat" or what opportunities may present themselves.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    3. Re:iOS is free to play with also by SuperKendall · · Score: 1

      In case you haven't heard, decent android tablets are going dirt cheap

      Which, to be clear, is still going to be more than the $100 the dev program costs.

      Cheap is relative... I can claim the dev program is dirt cheap also (which it is), and as I said you don't have to spend ANYTHING until you have an app you want on the store.

      Several of my friends who were in similar situations after grad school have done so and are making a healthy living getting contract work.

      Which means they learned iOS development, not Java generally.

      However, IT has its own craziness - just look at the ongoing misogamy

      Some of my best co-workers have also been women - leave California if you've been subject to mysogny at work. It's not IT, it's specific areas of the country...

      The poster asked for specific advice.

      Yes he did, and your response gave him terrible advice.

      iOS is just iOS. There's a big world out there,

      And most of it is working with iOS first, Android secondarily.

      If you want a job learn iOS. If you are just messing around, Android is fine for hacking.

      And since he already has 2 friends who are into iOS development, maybe they won't mind if he makes Android

      Since he has two resources that can help him learn what he is doing (AND can help him find work), he would have to be an idiot to follow your crazy notion to learn Android. Why, just for the sake of some nobel "platform diversity"? You said it yourself, he wants real work. Obviously in his situation learning iOS is the quickest and most realistic path to that, not some Android fantasyland where he learns the platform because it has "more devices" even though 80% of those devices suck at running apps.

      If he had a couple of years, my answer might be different

      Ask me how I can tell it would not be - you are simply not a realistic person, and frankly I find it unethical to toy with a person's life as you are simply because you are an Android booster.

      If he had said he knew Java, if he had said his friends knew Android, my answer would have been different regardless of timeframe. But it's pretty clear from the question not only does he want to learn iOS development but it's simply the best path for him.

      He simply doesn't have the time to become "good enough" in both Swift (a changing target) and Obj-C

      You only need one and Swift is not changing much past this point (that was the point of the general release, or did you not know that?)

      he needs to be flexible enough so that he isn't locked into just mobile development,

      thought you said he didn't have enough time to learn two things, how your tune changes as you dance...

      He NEEDS to focus on one thing and do it well, if he wants to find a job. Plenty of time after that to branch out. However he doesn't NEED to because mobile development will be quite a good field for many years to come, and is absolutely the best field for a newcomer to start in as it offers way more job mobility and satisfaction than traditional IT development (where I spent over a decade).

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    4. Re:iOS is free to play with also by BarbaraHudson · · Score: 1

      In case you haven't heard, decent android tablets are going dirt cheap

      Which, to be clear, is still going to be more than the $100 the dev program costs

      And after one year, you have to fork out another $100 to Apple, so your cost over 13 months is $200. And the approval process through Apple is ... well, just google for the pitfalls. And if he needs a smartphone anyway ...

      Several of my friends who were in similar situations after grad school have done so and are making a healthy living getting contract work.

      Which means they learned iOS development, not Java generally.

      And as I pointed out elsewhere, one thing he can do to "get his feet wet" is to ask them if they would mind if he converted their apps to android. This way, they don't see him as potential competition, and he has a specific project to follow from the get-go.

      he needs to be flexible enough so that he isn't locked into just mobile development,

      thought you said he didn't have enough time to learn two things, how your tune changes as you dance...

      And that's the beauty of it - Java is Java. He may find that, after trying it for a while, that he doesn't want to do mobile development. Then what? BTW - you don't have to learn the "Android programming language" - just the java classes for Android. One language, instead of Obj-C + Swift.

      However he doesn't NEED to because mobile development will be quite a good field for many years to come

      And that's becoming more and more of a lie as time goes on. The majority of app store devs fail to make a profit, the top half of 1% make 99% of the revenue, the gold rush is now over. Right now the money is in finding suckers who think their idea for an app is "Teh AWESOME11" and are willing to pay someone else to develop their app, and businesses that feel they need an app because the competition has one. I've posted links with stats elsewhere in the discussion.

      ... and then there's marketing ...

      iOS is just iOS. There's a big world out there,

      And most of it is working with iOS first, Android secondarily.

      Not any more. Android sales have totally outstripped iOS sales for a while, the trend shows no sign of slowing down, and there are more apps in Google's store than Apple's. People who own an iPad are buying Android and giving the iPad to their kid, because the value proposition is so much better.

      He NEEDS to focus on one thing and do it well, if he wants to find a job.

      And if you had read either the summary OR my comment, you'd know he's not looking for a job.

      He is not you. He is not me. His needs are different, he has a limited timeline, and he needs to bootstrap himself with the least possible risk and the most options for a good outcome. Once AT&T C++ was out Objective-C became the bastard red-headed step-child of the programming community. Java, on the other hand, is everywhere.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    5. Re:iOS is free to play with also by SuperKendall · · Score: 1

      And after one year, you have to fork out another $100 to Apple

      Even a cheap Android tablet that's realistically useful for dev is $200+, and it's certainly not going to be useful for dev after two years. So that's at best a wash.

      But AGAIN, you don't have to pay $100 until you have a shippable app, not true with the state of Android emulation.

      The majority of app store devs fail to make a profit, the top half of 1% make 99% of the revenue, the gold rush is now over.

      The easy money is over, but what you say is even worse on Android.

      Android sales have totally outstripped iOS sales for a while

      A "fact" which is obtained by counting devices shipped instead of sold, devices that no-one would ever buy apps for... the real figure is far worse which is why iOS-first development is still true for every major mobile app company, and some companies to this day have dropped Android development (Luma).

      You are a hopeless AnFan.

      He is not you. He is not me. His needs are different

      Yes they are, so why mislead him to ruin? That doesn't seem very kind.

      Java, on the other hand, is everywhere.

      Everywhere on legacy development projects. As I said I was a Java developer for over a decade, but there's no way I'd recommend it as a first language now.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    6. Re:iOS is free to play with also by BarbaraHudson · · Score: 1
      Quad core android tablets with decent specs are now in the $150 price range. How much is an iPad going for? More than an android smartphone and android tablet combined.

      Android sales have totally outstripped iOS sales for a while

      A "fact" which is obtained by counting devices shipped instead of sold

      If you'd bother to get the facts, android activations have been running at 1.5 million a day for over a year, and there are over 1 billion active android users.

      Java, on the other hand, is everywhere.

      Everywhere on legacy development projects.

      Minecraft is a legacy project???

      As I said I was a Java developer for over a decade, but there's no way I'd recommend it as a first language now.

      Even more true for C or C++ or Objective-C.

      I'll repeat myself. His needs are different, he has a limited timeline, and he needs to bootstrap himself with the least possible risk and the most options for a good outcome. Schools have switched from teaching c to teaching java as a first language because it's more beginner-programmer-friendly. And that is what he needs right now.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  52. As I said, you are VERY WRONG by SuperKendall · · Score: 3, Insightful

    No one's going to run a high availability web server, database or number-cruncher on a mobile.

    Yes in fact they do. In fact if you stopped to think about it, all aspects of mobile computing correlate strongly to "high availability" concepts because the user wants an application that works fluidly, with as little delay or error as possible, and because it's a small portable device always with them, is less tolerant of said delay/error than with a desktop where we are all used to applications being slow at times.

    Also of course, many mobile apps are simply arms of a larger system that is considered a high availability system, so the applications by default fall under that umbrella.

    I've worked on mobile applications that have very large datasets, or a tremendous amount of processing of data from a server... it's not that uncommon.

    Lag due to an algorithmic choice would be an even more unlikely occurrence

    You are SO naive. That is in fact a HUGE problem for new developers on mobile platforms, something I have helped correct for many times, making a HUGE difference in how an application responds to the user. Any number of times it has been the difference between a feature even being possible on a mobile device.

    A programmer will always be better with a solid grounding in CS, obviously; but your argument is misdirected.

    Sorry if I only speak with several years of real world mobile development behind me, including some J2ME work in the past...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:As I said, you are VERY WRONG by Anonymous Coward · · Score: 0

      Lol. You probably suck less than 95% of mobile devs but you've never written a single line of "high availability" backend code in your life. It's depth vs. breadth.

  53. Re:Think past tomorrow by Hognoxious · · Score: 1

    Given your background, you might be happier looking for work as a scrum master, a project manager or a consultant.

    Given his background, who in their right mind would employ him in any of those roles? Perhaps he has a nice hairstyle or something. http://dilbert.com/strips/comi...

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  54. iOS work is better than asking about french fries. by Anonymous Coward · · Score: 0

    Objective-C is wordy and pain in the butt.
    Swift is less wordy and is the future of iOS development going forward.

    So you get to learn both. Obj-C is still necessary as most houses (not frat, but developer) will have some legacy code or third party libraries and they will not only be in Obj-C but they might have to be maintained by the new guy. That would be you.

    Swift is definitely the plan of record for apple so ignore it at your peril. Which you aren't talking about I realize. Start with which ever one feels usable initially but keep an open mind. You will need them both for the next few years. In three years the vast majority of new iOS and OS X products will be based on Swift I would suspect.

    Good Luck.

  55. BASIC? Wrong choice by far. by Anonymous Coward · · Score: 0

    Absolutely do not start with BASIC. There is nothing to learn in BASIC that will translate to the iOS market, product lines, future development or hopes of making a real living in the iOS market be that games, applications or contract work.

    If the OP was interested in C# and W* with plans to develop W8 apps or Xbone games then BASIC might be a reasonable suggestion. But only then and only if they are having problems with a higher level language. For that matter, C# is a modified version of C that incorporates many features from GWBASIC (W* product now part and parcel of Visual Studio) so if W* was the platform I would recommend it. However, I would never recommend C# or BASIC for iOS developers as it would be a complete waste of resources.

  56. You got it totally wrong by Anonymous Coward · · Score: 0

    Swift and/or Objective C are only tools. Your friends had a CS degree. You should learn how to program first. Design patterns, algorithmen, etc...

    It is not choosing between 2 brands of hammers and learn how to handle them that will make me a carpenter.

  57. Neither by Anonymous Coward · · Score: 0

    Write the core in C++, and only the interface parts using the proprietary Apple parts where absolutely necessary. This will make you program more portable anyway, and goes naturally with the layering of a good design anyway. Objective C is a horrible and dated language with bizarre syntax, and Swift is an Apple only language, so far apparently with some performance issues, and it has no benefits over any of the alternatives. Neither is in any way sensible to use. Anyone who argues for either would have been telling you to use Objective C a few years ago, and now that is effectively dying. Apple has a history of creating then killing Apple only technologies. Stick to something that is standard based, and good for writing large programs.
    I'd also go back to university, and do at least 3 years studying something relevant to software engineering, and get some practical experience designing programs. If you have no track record, and no qualifications that are relevant, there is absolutely zero chance anyone competent will hire you. Learning the mechanics of a language is absolutely trivial, but learning the skills of a software engineer is not, and takes many years. You will not be employable until you achieve the later.

  58. 11% market share by X10 · · Score: 1

    iPhone has a 11% market share, Android has 85%. At the same time, there are more ios developers than Android developers. If you want to plan your career, you learn Android.

    --
    no, I don't have a sig
    1. Re:11% market share by Anonymous Coward · · Score: 0

      That 85% is scattered across so much hardware you'd die of old age testing your app before you could support it all.

      Then when you release it no one will buy it or it'll be pirated.

      The 11% Apple has actually have jobs and aren't neckbeards or hill folk.

      Also no idea if you're numbers are accurate but whatever the actual numbers are you can adjust but my statements are still facts.

      Thanks and good day!

    2. Re:11% market share by Anonymous Coward · · Score: 0

      That 85% is scattered across so much hardware you'd die of old age testing your app before you could support it all.

      Then when you release it no one will buy it or it'll be pirated.

      The 11% Apple has actually have jobs and aren't neckbeards or hill folk.

      Also no idea if you're numbers are accurate but whatever the actual numbers are you can adjust but my statements are still facts.

      Thanks and good day!

      The Android marketshare number is probably close. When Android devices started going for $0 + 2 year contract, they more or less replaced dumb phones and that shot them ahead. But... Apple has a higher % of the middle class, and Android has you know... people who pay more in overdraft fees than apps.

  59. The language is not relevant by tigersha · · Score: 1

    The API is. By faaaaaaaaaar the most work is going to be to learn all the NS_xxx classes and how you write and plug together an IOS app. The language on which this is built is small in comparison. The libraries and APIs and things that you manipulate is where the action is.

    Same goes for Java. the Java APIs are waay more work than Java, the language. If you learn Groovy or Clujure, which both run on the Java platform, you still need to learn the APIs or you won't achieve much.

    And so on for Ruby and any other language.

    That said, I would shoot for Swift if I was a beginnner.

    --
    The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  60. 5 years of experience in Swift by williamyf · · Score: 1

    HR will still demand five years of experience in Swift.

    There are, RIGHT NOW people with 5 years experience in Swift. Most of them work at Apple. If HR is willing to pay REALLY high wages, they may be able to lure them to work elsewhere.

    --
    *** Suerte a todos y Feliz dia!
    1. Re:5 years of experience in Swift by __aaclcg7560 · · Score: 1

      But Swift wasn't released to the public until this year. For everyone else who isn't employed at Apple, HR will write job descriptions that requires five years of experience in a technology that came out six months ago.

  61. if you are learning to make your own apps... by khappucino9148 · · Score: 1

    just learn swift (if you are too lazy to learn both).... if you are trying to be employed as a professional at a company you need to learn both. ideally you should learn both. the funny thing is that the most complicated part about ios is not what language you use... its how cocoa and uikit work. once you understand that then you will find that the language is secondary.

  62. Neither is the best plan to make money by iamacat · · Score: 1

    Businesses that will pay you for a simple iOS app will also want an Android app. So you want to learn a cross platform toolkit like Cordova, where your existing HTML/CSS knowledge will help. Big players like Facebook that can invest in separate codebases for a sophisticated app will not hire you without a C.Sci degree and relevant experience. At this point, also consider that mobile development is difficult and is only a small part of consulting jobs. Good money can be had writing Hadoop jobs that require much less code and no lengthy tweaking needed for good UX.

    Now, if you just want to get your hands dirty and see what mobile development is about, without expectation of immediate payoff, Swift is as good of a place to start as any. Definitely not Objective C for the first language. It's not bad, but it's a conglomerate of C and OO parts, and it takes time to learn each one separately.

  63. it's a trick question because you will learn both by izzo+nizzo · · Score: 1

    Both are incredibly well-designed languages with some tricky parts but a lot of smooth sailing.

    Swift seems to be solid enough that it's ready for most use cases - or perhaps closer to a quarter or a third of what you need to do every world-class app out there.

    If you focus your next few months on Swift you'll be fine. There are lots of good examples, courses, lessons, blogs, and clever people who can answer questions.

    However you will find yourself missing out on a lot of easy wins - particularly in cases where you read some Objective-C code and want to know how to translate it into Swift for your projects.

    Objective-C is easy enough to learn - if you are going to be mostly just reading it. If you are writing it, of course, there are some tough things.

    Either way you absolutely cannot go wrong and you will end up knowing both very well within a year.

  64. l know nothing about computers, but by Anonymous Coward · · Score: 0

    I work for a company that sells $15,000 + instruments with embedded motherboards and labview/linux or labview/windows
    And the niche for this is a tiny, miniscule part of computing, but computing is so big that if you are good at labview, there are jobs

    The point is, if you are good at something that people want, you will get paid
    I would ask, what industry is in the area around your home ? is it aircraft parts ? then they need high reliability code
    Is it FDA regulated diagnostics ? then you need GMP compliant code
    etc

    Truth: someone who shows up for work, works hard, doesn't screw up is already ahead of 80% of the people out there

    Don't be arrogant; if they call you Friday eve and they need a patch for the demo monday, get the patch in if at all possible
    Remember, customers don't know anything about computers, and you don't know anything about their stuff; you have to become good at creating the line, and making sure all the stuff on your side is right; which means you need some idea of how the enduser is gonna screw up, how the enduser is gonna use the data, etc

  65. if u r not smart enough to avoid a bad field by Anonymous Coward · · Score: 0

    why are you smart enough to code ?
    I mean, you wasted 2-4 years on a worthless masters; have you figured out what is wrong with your thinking ?
    cause till you get that right, aint' no codin gonna help

  66. My experience with Swift by Anonymous Coward · · Score: 0

    I was writing a small game a couple of years ago in Objective-C and I abandoned the code because the language and eco system was so poor compared to what I was used to in Java. The strings were awful and there all these remnants of the old manually managed memor model still in the patterns and documentation.

      I stopped everything else and dove into Swift head first the day it was released. I liked the language a lot. Apple made some changes over the summer and fall so that my code would no longer compile, not a big deal just some minor syntax stuff, maybe 30 minutes to patch up my small project.

      I recently upgraded to Yosemite and my project just says "compiling files" for hours on end. I went on the forums and people said that I probably have some expression that is too complex or involved and I need to break it up into smaller pieces.

        So it looks like I'm going back to crappy old javascript and web based technologies. I need to wrap my project up at some point.

  67. Re:Oh fuck, another nerd thinks he can teach himse by __aaltlg1547 · · Score: 1

    Because credentials matter to people that will hire you:
    http://www.networkworld.com/ar...
    Computer Science (CS)Rank: 8; Starting salary: $59,800; Mid-career salary: $102,000

    Median salary for a non-degreed programmer is lower and chances for promotion are poorer and chances of getting hired in the first place as a programmer are lower if you don't have some kind of degree. With no degree, you'd likely have to work your way into that from some lower-ranked position.

    Also because a CS degree really does expose you to different things that just programming does. You wind up knowing things that you're unlikely to discover on your own in a programming job, or likely to take much longer to discover.

    I agree a CS degree may not be the best course. Software engineers start higher and have a higher median salary so that's probably a better use of a college education if you're able to take that path.

    An associate's degree may also be a good compromise because it's a lot cheaper, quicker and has lots of formal training focused on core skills rather than the sprawling educational experience that is any four year degree.

    Also an advantage of the associate's degree is that you can apply that as credit toward a BS if you later decide that you want or need more credentials to get the job you want.

    But the idea that you are going to learn enough to be usefully employable in a couple of months is not realistic. With a background in a social science field, he's got some understanding of basic math and probably a good grounding in statistics and how to do research and maybe formal logic if he's lucky. He won't be able to become a competent-enough-to-hire programmer without years more study, whether or not it's self-study. He should think about leveraging what he knows. A MS in any science field has studied and (if he was a good student) knows a lot of different things that he can apply to jobs in many fields. But unless he has done quite a bit of programming, that's not one of them.

  68. Re:Oh fuck, another nerd thinks he can teach himse by __aaltlg1547 · · Score: 1

    But it's not answering his question. He just spent five or six years getting an MS in a social science field. How can he use that? It won't help him program, but it could help him do a lot of other things.

  69. Objective C for now by gmiller123456 · · Score: 1

    Just in the past month or so I decided to make the jump and learn iOS programming. My experience is not at all similar to yours in that I have a CS degree and have been a full-time programmer since '94, and have been developing Android apps for over a year, and Blackberry apps before that, and PalmOS before that. Had I known Apple was in the middle of a language switch, I would have put it off a lot longer. It should be obvious that the one to learn is whichever one will win out in the end. There is no since in learning a language that will never take off, nor in learning a language that is being phased out.

    So your goal is to predict which one will win. And, statistically speaking, the odds aren't in Swift's favor as almost all new languages fail. Granted, most of those don't have the power of a company like Apple behind it, but VBScript is one example that failed to catch on with an even more powerful company behind it. Microsoft had tried and failed several times to introduce VBScript in different environments. So, just because Apple wants it to succeed, and says it's the "new thing" in their documentation, doesn't mean it's going to. On the contrary, JavaScript is a good example of a language that likely would have failed, but has been immensely successful solely due to Netscape's adoption of it. So, which language is better really won't matter as far as which one wins in the end.

    My current take on Swift is that it's too difficult to find working examples on how to call the framework libraries. That's not to say they don't exist, I just haven't been able to find them. Most of what you find on Google today is from the beta versions of Swift, and they're not syntactically compatible with the current version. It's certainly possible to figure it out yourself, but takes quite a bit of time. So the question boils down to: "If Swift wins, will you waste more time trying to figure out Swift today, or will it be more efficient to learn Objective-C today and switch to Swift after it's won?". IMHO, Objective-C is the answer today, and if you combine it with the fact that Swift will likely fail just by playing the odds, then Objective-C is the clear winner. If Swift wins, you'll likely spend a lot less time learning it later than you will spend learning Objective-C today.

    Reading the comments above, there's obviously no shortage of people who think they absolutely know which language is the future, but I'll be the first to admit that I don't know. You'll have to hedge your bets they best you can. But if I were a betting man, I'd say Swift will fail as it's got several serious strikes against it:
    - Most new languages and platforms fail
    - It's a proprietary language with only one use case.
    - The one use case it has (iOS) is declining in market share.
    - The launch appears to have been botched with few sources of documentation available on how to actually use it for iOS programming.
    - The language has already been polluted by the beta versions, leaving newcomers with no way to discern from the old and the new.
    - Apps in the App Store are no longer the cash cow they once were, reducing the benefit for people to spend time learning it.
    - Since iOS is declining, even if Swift wins the iOS language war, it's possible it won't be relevant.
    - For existing programmers, there is no economic benefit to switching to Swift
    - Swift brings no new functionality to the table, so there's no reason to switch to it other than Apple wants you to.

  70. Don't just stop at Swift and Objective-C by Anonymous Coward · · Score: 0

    I've been doing this whole programming thing for a few decades now. If there's one thing experience has taught me it's to learn as many programming (and database) languages as possible. Learning about what are considered to be a mundane or trivial features in one programming language can be very insightful to getting more utility or performance out of other programming languages.

    On the database side I've also found it worth learning a bit under the covers, too. It's amazing how differently the same piece of T-SQL code can perform when executing on MS-SQL, Oracle, PostgreSQL, etc., just because of the radically different engine implementations and how the query planners try to optimise their index and table accesses (or not).

  71. You can do it. by Anonymous Coward · · Score: 0

    Similar to you, I went through a masters program in a social science. I now know Java, Ruby, JavaScript, and have mastered CSS. All of the skills I've developed in the software industry over the last few years are in high demand and I'm faster and produce higher-quality code than nearly any of my coworkers with their academic CS backgrounds.

    You're not fooling yourself!

  72. Re:definitely c ironically the most object-orienta by Anonymous Coward · · Score: 0

    Having to develop and maintain a JVM is a good enough reason for not going with Java. But, I agree, there's no reason they shouldn't have gone with C++, or even C.