I've never liked Redmonk's choice of Github only. It's just one OSS host, albeit an important one. Why not use Ohloh's numbers (which they do reference), which cover a larger swath of the OSS community? By choosing to use GitHub only, projects that have been around a long time are not included--such as many of the active projects on SourceForge, Google Code, etc. Not to mention other currently popular hosts like BitBucket.
I think they just need more than two sources since there's more to program language popularity than they can two sources can show. Stack overflow naturally biases towards languages with worse documentation and those which cater to newer programmers. For example, it favors Visual Basic and disfavors Golang, resulting in VB having a rank of 19, with Golang ranking at 22 despite golang being far more popular on github.
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.
It's interesting to see the meteoric rise of objective-c due to apple forcing it down developer throats. As someone who had to learn it to do iPhone dev, I find it objectively terrible compared to all the old favorites(C,C++,Java,C#). Partially because the language syntax sucks, but also because apples standard library sucks.
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.
Cool story bro. Not really sure how critiquing Objective-C is relevant to this article. Objective-C has been a top 10 language for years on most programming language popularity lists. It's not news in this article that it's up there. I think you just wanted to take any chance to lambast Obj-C... It's not like I'm pimping Dart and how it slightly beat out TypeScript on this list... oh wait, there I go.
>It's interesting to see the meteoric rise of objective-c due to apple forcing it down developer throats. As someone who had to learn it to do iPhone dev, I find it objectively terrible compared to all the old favorites(C,C++,Java,C#). Partially because the language syntax sucks, but also because apples standard library sucks.
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.
My first contact with the language was in 1998, when I had to port a particle simulation engine done with Objective-C/Renderman to C++/OpenGL. From a dying NeXT Cube to then raising Windows 95 mainstream systems.
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.
>However I don't like:
- lack of modules, using prefixes is so 70's!
- @ in all keywords and Objective-C literals
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.
Languages are being forced down developer's throats all the time, I don't see how Objective-C is an exception. Microsoft did it with C++ and later C#. Google does it with Java on Android. Netscape did it with JavaScript. I could continue.
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.
It's quite evident that Microsoft was pushing C++, their tooling from that time was certainly focused on it, most prominently MFC I think. Plus they never bothered to support C99 in MSVC, literally forcing people towards C++.
Wasn't aware of anyone pushing C++ outside the Windows world, but I don't think it weakens my point.
Apple switched from Object Pascal to C++ with the Power Plant framework.
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.
Yes, just like how no one would use C# if it weren't for Microsoft or Go if it wasn't for Google.
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.
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.
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 think the "corporate-y things rank high on SO" is actually "Microsoft-platform things rank high on SO" (note the high rankings for C#, VB.NET and Delphi).
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).
It wouldn't make sense to do that for Python unless also doing it for other languages. That would a) be difficult with the methodology used and b) make it harder to determine a language's popularity in relation to other languages.