9 ms·
Rarest language? Objective-C has highest job posting to developer activity ratio
- peregrine 15y agoObjective-c is slightly strange compared to other languages but its really just another language anyone can pick up if they put the time and effort into it. Just like you decided to learn clojure or ruby or whatever put some time in, and you can code in any language.
- zalew 15y agoHow are Twitter mentions a reliable source of data about the job market??
- robinwarren 15y agoThe tweets in question were from the #Code2011 hash tag where devs were saying what languages they used in 2011 and from tweets collected by my site http://jobstractor.com http://jobstractor.com which tries to find people hiring devs on Twitter. Hope that sounds a bit more sane :)
- zalew 15y agoI read that. Surveys are fun, but such data shouldn't be taken for measure. Number of job postings vs average number of offers submitted is one of the first factors that come to mind when seeeking a supply/demand number on the job market, not twitter popularity contests.
- whatthefish 15y agoObjective C is painful.
- reidmain 15y agoWhat about it makes it painful? Of all the programming languages I've used (C#, Java, Visual Basic, Python, Javascript, C++, C) is is my favourite. Not that the other languages are bad but I prefer to write in Objective-C for the frameworks that Apple provides and the syntax (which makes it easy to read IMO). Also the fact that it is a superset of C gives me the ability to get my hands dirty if need be.
- whatthefish 15y agoIt is of course just my opinion. I "do" enterprise Java as my day job. I've programmed in C, C#, VB, Ruby, etc..heck even some assembly language in college and for some reason I find objective-C and the iPhone SDK in general the most painful language/platform I've dealt with in years. I have used Web Objects before (after Java was included) and I wasn't crazy about that either. I've resorted to using third party engines to do iPhone development. I've settled on CoronaSDK (Lua), but I could easily see using unity3d or some other engine if it fit my needs. I absolutely won't go back to using Objective C. I've come to the conclusion that what language your programming in relates to your quality of life, and after 10 years professionally in Java, I have no desire to learn another platform where it feels like I'm fighting the language/api at every turn. Lua along with the Corona API's feels like fun, and iPhone development is a part time endeavor for me.
- masklinn 15y ago> What about it makes it painful? 1. Verbose, it's very hard keeping ObjC code in 80 columns (if you linebreak too much it's completely unreadable) 2. Lack of generics make the code not feel as safe as the verbose presence of types everywhere would make you think 3. I hear Xcode 4 improved things (and appCode is an actually good IDE), but Xcode 3-generation tooling really is quite terrible, I miss having errors display as I type. Also the autocompletion is garbage, it's barely as good as dynamically typed languages 4. NO NAMESPACES 5. Many solutions feel old/hackish: separate interface/implementation files, macro-looking code (@property/@synthesize never feels right), objective context ("[" and "]", especially as you're repeating them all the bloody time), the severe dichotomy between objects and values or structs requiring things like content wrappings/unwrappings in NSValue (and then there's bloody `id`, which does not look like a pointer but is still an object) stuff like that. I don't really feel good coding in Obj-C, the frameworks are very complete and often wonderfully thought but I really have a hard time enjoying the language.
- reidmain 15y ago1. I love that about the language. The 80 character limit has never made sense to me. The resolution of our monitors is so high nowadays that if you've got to a point where linebreaks are making your code unreadable you've got the equivalent of a run-on sentence in English. 2. Totally understand. I've used generics in Java/C# and I've definitely run into instances where I would have loved to have them. 3. Xcode 4 is great for code competition and much better at reporting errors. 4. I haven't worked on massive projects where namespacing could potential be a problem. The 2 character namespace for each class has worked great for me. But again I can totally understand how someone could dislike this. 5. id is amazing. The dynamic nature of Objective-C is the thing I like most about it. Having to wrap ints in NSNumber does get old I admit but id combined with protocols removes so much of the need to cast EVERYTHING in Java/C# before you can perform something on it. What do you mean by frameworks are incomplete? Third-party frameworks I can understand because there are a lot of novice Objective-C programmers out there making their code available but Apple's frameworks have been near bulletproof for me. Sometimes they are limited (which is Apple's way of forcing you to do things like they do) but in the end if I you need to heavily customize something you can access CoreFoundation and do whatever you need.
- markrickert 15y agoOnce you get to know it, it's the most beautiful and elegant (while verbose) language you'll ever see. I cringe now when I write PHP.
- pearle 15y agoThat's a strong statement. What languages other than PHP are you comparing it to?
- SomeOtherGuy 15y ago>I cringe now when I write PHP Duh. Every single real language (not deliberately painful languages like brainfuck) makes PHP look terrible in comparison. That says nothing about objective C other than "it is not the worst language ever made".
- prodigal_erik 15y agoI've always seen it as an imitation Smalltalk but with segfaults. Does it have any advantages in expressiveness, rather than merely being native for two platforms some people are interested in?
- SoftwareMaven 15y agoI really like Objective C, but I don't know that I would call it the most elegant. I agree it is an elegant solution to adding objects and messages to C (especially when compared to C++), but it is still an extension of another language, which makes it more pragmatic than elegant.
- dgallagher 15y agoI find Obj-C elegant in the sense that it reads like an explicit english sentence: NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0]; If you've never used an NSMutableURLRequest object before, but know how HttpRequests are made, you can figure out what's going on without having to dig into any documentation. Many languages I've seen (C in particular) hide that explicitness. You call someFunction(arg1, arg2, arg3), but what do arg1, arg2, and arg3 do? Can you pass a 4th or 5th argument too? Unless you've memorized what someFunction() does, you have to dig into the docs, which makes the language harder to read. Obj-C method calls always list "every" available parameter, regardless if its used or not (e.g. nil). ------------------------------ Obj-C takes up a lot of horizontal screen space. It works best on high-resolution widescreen monitors, with a modern editor, and modern mouse, both supporting vertical AND horizontal scrolling. Limiting lines to 80 characters, or anything really, destroys its readability. The most unreadable Obj-C code I've seen is usually formatted this way. Google's Obj-C code is a nightmare to read; they limit it to 80-characters (http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#Line_Length http://google-styleguide.googlecode.com/svn/trunk/objcguide....). Great for a 1980's terminal, not for modern 2560x1440 displays. Frankly line-length should not be the job of the programmer writing the code, but of the IDE/Editor displaying it properly on-screen. When you say "all code must be 80 lines long", you've forced that upon every programmer regardless if it's a good decision or not. It's like decoupling the Model and View. The Model is the actual code written, where the View is how it's displayed. Programmers should be able to customize how their View looks using their IDE/Editor. When you hard-code the View into the Model, you break decoupling, and force everyone to use the same View. Most Editors/IDEs let you customize the view somewhat, like color-schemes and "wrap text". But I haven't seen a "complete" decoupling of the model (code) and view (how it's presented) yet, in any IDE/Editor. Someone please correct me if one exists. This is a feature I'd "LOVE" to see in all IDE/Editors and programming languages, as it will make verbose languages like Obj-C much easier to read based on the programmers preference.
- zyb09 15y agoYeah at first, but once you get used to the syntax and long method names, it's your standard static OOP language. Has some cool feature actually, like Blocks etc. Like it more then Java now. Also what's really cool is, that you can seamlessly mix in C if you feel like low-level programming, I like that.
- kstenerud 15y ago"you can seamlessly mix in C if you feel like low-level programming" This is a huge plus. I've dropped to the C level on a number of occasions already in my projects. I also makes it MUCH easier to drop in existing C libraries for extra functionality since you don't have to write language bindings for it.
- masklinn 15y ago> Has some cool feature actually, like Blocks etc. The blocks are kinda crummy though, and the verbosity is definitely verbose. `enumerateObjectsUsingBlock:` is a far cry from Smalltalk's `do:` (and its signature is awful too, even more so due to ObjC's lack of generics)
- zbowling 15y ago... so create a category called "do:" and change the signature (clang won't bark at you like GCC). blocks are closures and they have some semantics like function pointers.
- pjmlp 15y ago- No namespaces. Two letter prefix hack from the old C days - Still makes use of a preprocessor - Slow compilation times - The way properties are declared just feels like an hack - Automatic memory management extensions (GC & ARC) feel like an hack - You need a Mac to properly learn it. gcc+GNUStep don't really count.
- randomdata 15y ago> You need a Mac to properly learn it. gcc+GNUStep don't really count. Out of curiosity, why not? You don't get the Cocoa/Cocoa Touch APIs, but those frameworks are independent of the language itself. Relying on them is akin to saying you can't properly learn C++ without Qt, or Ruby without Ruby on Rails.
- masklinn 15y agoCocoa and Cocoa Touch are integral to being paid for Obj-C, and they're by far the hardest part of it. Learning objective-c, especially if you already know C, is pretty easy. The syntax is a bit weird but not hard, then you've got a few quirks and stuff, but fundamentally you can build a working model of the language in half a day tops if you're already a developer. Understanding Apple's conventions (libraries, memory management, etc...) and merely knowing where to find the stuff you need in the doc, that's what take time. Cocoa is huge and is a complex beast, even if you don't dive into the C "Core*" stuff and remain at the NS/UI levels.
- kstenerud 15y agoNamespaces would be nice, however I wouldn't drop the preprocessor; it's just too damn useful for code generation. I haven't noticed slow compilation times. A 20MB codebase (big by iPhone standards) takes 40 seconds to clean compile on my mbp. (Xcode's indexing behaviors, on the other hand, leave MUCH to be desired). Properties don't feel hacky to me; The @ syntax is a good compromise for preserving C compatibility while introducing more powerful constructs. Same goes for GC and ARC.
- dextorious 15y agoExcept for the last part, all the others are really really minor gripes...
- commanda 15y agoThis sentiment is probably why there is such a proportionately low number of devs who take the time to learn Objective-C, which in turn makes those who do learn it even more valuable.
- joezydeco 15y agoOkay, so everyone wants to hire an iPhone developer for whatever awesome app idea they have. Most experienced iPhone developers are already pretty busy. Does that pretty much explain it?
- jbooth 15y agoYeah. A further explanation would include the fact that a lot of those people who have a great idea and just need a developer to code it up for them have no idea how the software process works, and the gig will likely involve them stiffing you on the last month's pay and feeling like you ripped them off unless you're pretty experienced at contracting and managing upwards.
- markrickert 15y ago> a lot of those people who have a great idea and just need a developer to code it up for them have no idea how the software process works They also don't realize how insanely expensive it is. "I want a mobile app. That's like $500 bucks, right?" - Client
- padobson 15y agoJava's Ratio: Slightly less than 2 Obj-C's Ratio: Slightly more than 3 Let's see, I can learn Java and get a job building Android apps or a job building web apps or a job writing mainframe software or writing desktop software or writing server software or building web services or making video games... ...or... I can learn Objective-C and get a job building iOS apps. If you need a job and you're deciding between the two, Java should be a no-brainer. Objective-C is a nice tool to have in your toolbox, but it shouldn't be the one you take out the most.
- derefr 15y ago> I can learn Objective-C and get a job building iOS apps. Mac desktop apps too! ;)
- teej 15y ago"I can learn Objective-C and get a job building iOS apps." ...And make $250/hr contract rates. There is ludicrous demand for iOS work. I know several enterprising devs who got into Obj-C over Java purely because the pay is insanely good. And give me a break. What serious companies are doing web apps or video games in Java in 2012? Sure, Facebook and Twitter are using Java internally, but only for really specific technical challenges forced on to them by scaling. Objective-C is way more fun from a product perspective because you're close to the user. That is desirable for many.
- iheartmemcache 15y agoMy firm "only" manages to bill at 175/hr on the East Coast (two offices: Boston and NYC) on iOS work, and we've seen a somewhat steady decline in demand. Things might be different in SV. We're pretty content with the amount of work we've already drawn from iOS development, though, so if the cash cow is dead we won't be too upset.
- beatle 15y agoiOS is just getting started. Android lost 13% US market share in Oct. and Nov. to the iPhone (cnn.com) http://news.ycombinator.com/item?id=3445664 http://news.ycombinator.com/item?id=3445664
- tehjones 15y agoThe issue with learning objective c is the lack of portability. Yes the language runs on everything via the use of gnustep, but on first appearances its is nextstep ported to modern hardware. As a disclaimer objective c is my language of choice, my plan this year is to make the code portable.
- kstenerud 15y agoIf you want to make your code portable to Android, consider helping the effort to port Objective-C to it (specifically, enough to get cocos2d running). Some info here: http://www.cocos2d-iphone.org/forum/topic/25414 http://www.cocos2d-iphone.org/forum/topic/25414
- zbowling 15y agoDon't port objective-C to android for Cocoas 2D. Cocoas2D is a fluster-cuck enough on iOS.
- kstenerud 15y agoWorks well enough that many successful games use it. I'd welcome cocos2d on android.
- stuaxo 15y agoThats insane, why not just port cocos2d itself (I think there might have been an effort before) - after all the original cocos2d was python, so it's been ported across languages before.
- zefhous 15y agoThe solution? MacRuby! Take the surplus of enthusiasm for Ruby, combine it with the high demand for iOS developers, and there you have it! Now if only Apple would make MacRuby a first-class language for developing iOS apps...
- chc 15y agoIs MacRuby even a second-class language for developing iOS apps yet? Last I checked they hadn't got anything more than a proof-of-concept going. I thought it was mainly a Mac-focused technology.
- zefhous 15y agoNo. You can't build iOS apps with it, but you can build OS X apps — even for the App Store. The main problem in my understanding is the lack of garbage collection on iOS. Someone mentioned that iOS 5 enabled GC, but I think maybe they are referring to ARC (Automatic Reference Counting), which isn't GC even though it solves the same problem.
- chc 15y agoYeah, I remember way back when, lrz proposed implementing something very similar to ARC for MacRuby to make it work on the iPhone, and I'm pretty sure somebody actually implemented a proof-of-concept, but I didn't think it went anywhere. I would have been pleased to find out I'd just missed it, though.
- laconian 15y agoIt'd be second class in terms of performance. Native code execution speed is one of iOS device's strongest selling points vs. Android, which has a few GC hiccups here and there. Apple is probably more inclined to push the tool that yields the best performance for its users, perhaps even at the expense of developers' productivity.
- chc 15y agoI think you should look into what MacRuby is. It includes an AOT native code compiler. It's still slower than Objective-C for various reasons — for example, it can't use unboxed primitives and it often needs to do extra work to bridge the gap between Ruby's dynamically typed world and the static C types of framework functions — but it is native code produced by LLVM just like a normal application.
- deleted 15y ago[deleted]
- Zarathust 15y agoI do C++ for a living, do I get a pretty red line too?
- baltcode 15y agoBut is the pre-eminence of IPhone apps going to last? Number of android phones is catching up, but it seems the iphone app market has much larger revenues. Source: http://finance.yahoo.com/news/android-vs-iphone-economics-apps-160608285.html http://finance.yahoo.com/news/android-vs-iphone-economics-ap... What do devs at HN think? Does it make sense to think the market for Obj C talent is going to last?
- zbowling 15y agoAndroid is full of hello world, copy cap apps, and junk that doesn't get filtered as well as in the Apple app store. So quantity doesn't really amount to much there.
- cantankerous 15y agoObjective-C's outlook will be about as strong as the Apple platform will continue to be for better or for worse. Yes, it does exist outside of the Apple ecosystem, but only really in nominal form. What's more, Objective-C work pretty much implies that you'll be doing Apple development...which people may or may not want to get into for hangups. I'm not sure if the app dev craze is a trend that can continue over the long term or not. Should be interesting to see!
- droithomme 15y agoAh, that is a horrible analysis. They are wanting to estimate the number of people with these skills by searching on hashtags, but they search only on the term "objective-c" when what they really should be searching on is Cocoa, iPhone, iPad, iOS and other terms that require one to be working in Objective-C. There's not so much to Objective-C itself that there's a lot of discussion about the language itself compared to what it is used in. Also, in general I don't buy into these methodologies where someone spends a few hours doing searches on internet boards for certain keywords as a way to estimate the number of people with various skills. It's not been shown to be a valid way of getting accurate data.