The RedMonk Programming Language Rankings: January 2014
redmonk.com
redmonk.com
See with C you know what your getting, fast code, manage your own memory, standard conventions for method calls and returns.
Same with Java and C#, except memory is managed for you, and code is slower, but importantly, standard conventions are still there. The standard libraries are also very solid(and often better than obj-c).
C++ sucks and has similar hybridization problems that obj-C has, but at-least it's fast and it's standard libraries are fast, and it has lots of 3rd party library support.
Then there is objective-C. With it's ugly hybrid memory management model, awfully slow standard libraries. Numerous competing conventions for library design(partially due to the hybrid memory management model), not to mention there is also the vanilla C standard libraries which are often easier or required to be used. Poor 3rd party library support(seriously, a handful of people write objective c libraries, and most of it sucks because it's based off the apple obj-c libraries which suck). Which means... that it's super common to use C++ libraries anyway. So now your program is gobbledy gook mess of C/Obj-C/C++/Objective-C++ instead of one unified C or C++ codebase.
Basically I'm pretty sure nobody would use objective-C if apple didn't strongly push it on iOS and OSx developers. And i'm pretty sure they wouldn't have done that if they didn't want to lock developers onto iOS/OSx and make it more difficult for them to port.
tl;dr Apple is evil, obj-c sucks. if you program for iOS or OSx, save yourself the trouble and use as much portable C++ as you can.
Yes. And yet, Objective-C, for application development, pisses all over most of the "old relatives". Saner than C++, can drop into C for close to the metal performance or be high level with a GC and all, and is more dynamic than Java (which admittedly is not hard).
But even you personally don't like its hybrid syntax, to even state that "Apple's standard library sucks" make your comment loose all credibility. Cocoa and Foundation are among the nicest and more feature complete libraries and framework collections there exist.
From the way you describe it, it sounds like you wanted something like the VB6 or .NET ecosystem of third party libraries...
>Basically I'm pretty sure nobody would use objective-C if apple didn't strongly push it on iOS and OSx developers.
You pretty sure, but also pretty wrong. Adoption might be quite smaller if there wasn't a huge potential market in the form of iOS users, but Objective-C was (and is) quite well regarded as a programming language and has always had hardcore fans. People who program in it (not just because they had a couple of assignments for iOS apps in 201x) tend to love it.
Heck, even back in the day, the first browser was developed in it, as well as the first true first-person-shooter. And nowadays, one of the most advanced GUI userlands, and the more cohesive mobile app platform.
Objective-C has a nice appeal given its Smalltalk semantics for OOP.
However I don't like:
- lack of modules, using prefixes is so 70's!
- @ in all keywords and Objective-C literals
- manages to have method names even longer than Java enterprise frameworks do
- the way properties are declared
> Heck, even back in the day, the first browser was developed in it, as well as the first true first-person-shooter.
Historical accident, as these were the systems those developers had available to them.
No disagreement there. Though those are historical baggage, like C has. I see Apple fixing the module issue at some point though.
>manages to have method names even longer than Java enterprise frameworks do
Not true, most method names are short. Except if you also count the parameter names -- but then that's another story, and it has other benefits (knowing what every parameters does and self-documenting your code for example).
>Historical accident, as these were the systems those developers had available to them.
Not true, in fact they had to get out of their way to have these machines compared to the standard unix workstations of the day or PCs. Carmack has access tons of other machines at the time. And both TBL and Carmack waxed about the NeXT / objective-c environment afterwards.
Parameter names are part of the method name.
> Not true, in fact they had to get out of their way to have these machines compared to the standard unix workstations of the day or PCs.
CERN had quite a few NeXT stations available to them. When I worked there, there were workstations collecting dust.
Carmack used C, not Objective-C, the NeXT advantages were mainly due to tooling
Even if a platform can technically support other languages reasonably well, whatever the platform vendor favours tends to be the most popular and best supported choice.
I don't see any connection between how popular a language is and how well-designed it is.
Why do people keep repeating this urban legend?!
I was already doing C++ in MS-DOS (Borland), UNIX (vendor's compiler) and Windows 3.x (Borland), long before Microsoft compilers were any good.
ALL C vendors were pushing for C++.
(Yeah COM was supported for VB too, but C-hostile)
UNIX enterprise programming was all about CORBA, not C related stuff.
That is how we eventually got into J2EE.
While it is possible to do so, it doesn't mean it is sane to do it.
But GNOME guys always hated C++ with passion anyway, from what I remember in my GTKmm days.
Wasn't aware of anyone pushing C++ outside the Windows world, but I don't think it weakens my point.
Borland had Turbo Vision for C++ in MS-DOS, Object Windows Library for Borland C++ and Visual Component Library for C++ Builder.
During MS-DOS days, Microsoft didn't had any C++ framework.
On the UNIX world, some people were using OpenInventor for 3D visualization, CORBA for enterprise communication, portable frameworks like Rogue Wave Tools.h++, or GUI related XVT-Power++, DiaViews++.
UNIX also has the birth place of C++ persistent databases like POET.
There was also the Taligent project from IBM and Apple going on.
IBM had SOM on OS/2.
Psion Epoch used C++ alongside OPL.
I can provide many more examples.
Microsoft was hardly the only responsible company for C++'s adoption.
I see what you did there.
There are a lot of people who like Objective C including myself. If people didn't the majority of iOS apps would be developed in straight C, C++, Ruby, C#, Delphi, or Actionscript.
http://www.embarcadero.com/products/cbuilder/ios-development
http://www.embarcadero.com/products/delphi/ios-development
http://www.adobe.com/devnet/air/air_for_ios.html
If no one liked Objective C you wouldn't have people like Mattt Thompson taking time to write his excellent NSHipster columns.
You not liking a language is not a benchmark of language popularity. If it were, my own biases would dictate that Javascript is a language no one likes, propped up by Mozilla and ECMA.
Factors which this survey doesn't account for include what languages new programmers are being taught in, how much code is actually running in production, what type of developers companies are wanting to hire, and what those companies are writing in behind closed doors.
this is roughly a measure of how active the visible community is
So it is neither a measure of community nor job market.
Overall, things that rank high on SO and low on GH are more "corporate-y". Things that rank high on GH but lower than the line are "startup-y".
We have some ask HN questions like which tool I should pick-up, employable skillset, etc. Purely based on this graph, I would say pick the top-right points that lie close to the line. That should strike a decent balance.
I suspect that has a lot to do with the MS-centric seed audience that grew up around Stackoverflow (because of the backgrounds of the founders).
Yep, we're doomed.