Coders In Wealthy and Developing Countries Lean on Different Programming Languages (vice.com)
Stack Overflow data scientist David Robinson published an interesting observation: There exists a small but meaningful divide between the programming technologies used in wealthy countries and those used in developing countries. From a report: To be sure, programmers everywhere tend to build things with the same tools, which makes sense because software is a global industry. The first is in data science, which tends to employ the programming languages Python and R. "Python is visited about twice as often in high-income countries as in the rest of the world, and R about three times as much," Robinson writes. "We might also notice that among the smaller tags, many of the greatest shifts are in scientific Python and R packages such as pandas, numpy, matplotlib and ggplot2. This suggests that part of the income gap in these two languages may be due to their role in science and academic research. It makes sense these would be more common in wealthier industrialized nations, where scientific research makes up a larger portion of the economy and programmers are more likely to have advanced degrees." C and C++ use is similarly skewed toward wealthy countries. This is likely for a similar reason. These are languages that are pushed in American universities. They also tend to be used in highly specialized/advanced programming fields like embedded software and firmware development where you're more likely to find engineers with advanced degrees.
The ideal language would probably have to find a balance between various requirements.
That is exactly what thousands of researchers have been trying to accomplish, designing literally hundreds (if not thousands) of languages in the past 60 or so years.
But it's not a reasonable goal.
Falling back on the hackneyed but serviceable "transport" analogy, if you want a cheap, simple conveyance that can easily be operated by a single person, a bicycle is good. Want more power and speed, at the cost of greater weight and cost? Try a motorcycle. If you need to fly, you'll need - at least - a microlight, although a helicopter has its advantages. Want to cross water? Submerge? Resist armour-piercing shot? Carry 50 passengers or 20 tons of freight? Look great and attract new friends?
I hope you get my drift. There is no "one size fits all", and there can't be. Languages like C let you get down to the bare metal (or as close as you want to), but you have to do a lot of extra work. High-level languages let you program much faster, but may not run as fast, or may limit what you can do in ways you find unduly restrictive.
From time to time a "local winner" emerges. I don't think anything better than Cobol has ever been created for run-of-the-mill business applications. Come to that, Fortran is still excellent for mathematics, unless you want to give APL a spin. And you'll find, if you look into it, that most avionics nowadays is written in Ada - and I'm very glad of it.
And then there are the pioneers...
"The more I ponder the principles of language design, and the techniques that put them into practice, the more is my amazement at and admiration of ALGOL 60. Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors".
- C.A.R. Hoare, "Hints on Programming Language Design", 1973
I am sure that there are many other solipsists out there.
I once heard "I just tried out this Java thing and I'm going to kill myself!"
#DeleteFacebook
I'd actually guess you're right. It appears that virtually all Rust usage is in some unknown "evolving" country.
I tried to dig into it a bit in the 2017 Stack Overflow Developer Survey results and see that though it is the "most loved" language, it does not appear on the "most wanted" list nor is it in the top 25 "most used" languages.
Worldwide, it has the second highest salary, but it does not even have an entry on the languages by salary lists for the US, UK, Germany, France or India.
The average experience level of people using it is also on the low side.
I can only conclude that it must be very popular amongst new programmers in some country that is at the bleeding edge of evolving and unknown.
Haskell is a language where once you get your program to run at all it usually runs correctly.
That's a dangerous way to even think. Very few bugs are actually programming mistakes- the vast majority, and the harder to fix are design mistakes. Just because it compiles doesn't mean its anywhere close to right.
You haven't used Haskell, I see.
Oh, it's not a panacea by any means. But the nature of the language and its very strict typing really forces you to clarify lots of aspects of your design that you might not think nearly hard enough about in other languages. By the time you get your code to compile it's significantly closer to correct than other languages. Moreover the inherent lack of side effects in functional programming makes writing automated tests of Haskell code a breeze... so if you assume that getting your program to run also includes getting a good suite of automated tests to pass (as it should!), then you really can have pretty high confidence that the code does what you think it does.
Of course, what you think it does may not be what it should do. No programming language can do anything to find bugs in the requirements.
The AC who replied to you makes the same claim about Ada, where it is also true. But it's even more true of Haskell than Ada, IMO. I should mention that I've used both languages only on small projects. Ada has proven to scale well, though, and I suspect Haskell would as well, if you could find enough Haskell programmers to staff a large project.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
Indeed - but perhaps not for the reason you think. It's not just number of lines of code - it's number of semantic units the programmer has to digest.
Perl achieves brevity by cramming lots of arcane symbols on one line. That's terse but also very dense, making it harder to comprehend. Each symbol adds another semantic element to unravel: @$%#$%[%#^$#]=$_;
OTOH Python achieves brevity in ways that aid comprehension. Syntactic symbols are kept to a minimum, and expressive names are encouraged and used throughout the standard library.
Lines of code is usually meant as a rough proxy for semantic complexity. More lines = more things to digest. This may be true within one language, but across different languages it breaks down.
The real measure is semantic units (operators, variable names, control flow, etc) to digest. For instance x += y and x = x + y may be functionally equivalent, but the first one is easier to digest. There are 3 semantic units rather than 5. Semantic complexity can be better approximated by looking at the parse tree for any given code. The number of nodes in the tree tells a lot more about complexity than lines of code.
The argument for industry-specific biases has some merit, though.
For instance, C++ is nearly universally used in the game development industry, which is largely centered in the US, Japan, Europe, and various other relatively wealthy countries/regions. C++ is not used only because of historical reasons (although it's partly that, of course). It also has to do with the qualities of the language itself. Game developers require a language with a balance of performance, abstraction / modeling, general ubiquity, and portability. To date, there's *still* no other language that meets all these criteria as well. While there's no denying the influence of legacy's influence on future development, I think it's also inaccurate to depict this as "being stuck with C/C++".
It's always surprising to me how many people seem to fail to appreciate the fact that different languages have fundamentally different qualities beyond just their syntax, or that the qualities *they* happen to value in a language may not be universally important across all domains. This is the reason that all those articles talking about which programming language is "best" or "most popular" are completely worthless. It's only of use when asking "what is the best language for solving this particular problem, given these specific conditions", and even then, there will still be some subjective opinion thrown into the mix.
So, kudos to the article for at least providing us with a bit more depth than a simple popularity list of languages.
Irony: Agile development has too much intertia to be abandoned now.
"assembly code ... binary". You keep using that word. I do not think it means what you think it means.
The real "Libtards" are the Libertarians!
$ perl -e "@$%#$%[%#^$#]=$_;"
syntax error at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
Sorry, try again.
This works, though:
$ perl -e "$%#$%[%#^$#]=$_;"
Or this:
$ perl -e "$@$%#$%[%#^$#]=$_;"
[for some definition of 'works' that I cannot imagine.]
The real "Libtards" are the Libertarians!
> StackOverflow is where mostly new programmers ask for advice in very specific issues, I would never use it as a source for language popularity or development trends.
this sounds entirely untrue, but I can't prove it.
I'm not a "new programmer" and still use it daily to remember how to do something simple, and maybe every few days with a situation-specific question.
Maybe I'm retarded, but I have to use it multiple times a day to remember how to do very rudimentary things like concatenating arrays in different languages. I assure you my stackoverflow browsing history accurately reflects which languages and technologies I use.
"Mediocre" is a matter of perspective. A Java programmer is more likely to be a generalist and do some degree of analysis work, such as gathering and clarifying requirements with customers.
C/C++ is used more often where hardware restraints/performance matter more and the programmers are either habitually or naturally more fastidious about the technical side and machine-level concerns. But they are also less likely to interact with or want to interact with end-users or non-technicians such as marketers.
I general I think there's a general trade-off between a mind that does well at technical issues versus people/business issues. Yes, there are exceptions, but I stand by the general rule. Paul Graham seems to agree as he mentioned that geeks in high school are often poor at social interaction because social interaction does not interest them any more than a football player is typically interested in gizmos or chess.
Table-ized A.I.
> I don't think I've ever seen anyone say, "I just tried out this Java thing and I'm never going back to C again!"
Plenty of people who knew just C++ found Java to be a relief for business programming when Java first came out. Those of us who used other languages outside C/C++ wondered what the fuss was all about. But a lot of C++-only people found Java to be much simpler. That was how it became popular, not because of applets. Of course, a lot of people also thought it was terrible for a variety of reasons. For many years, it was also fashionable to criticize Java and Java in fact deserved a good deal of that criticism in its early days - it simplified some things that needed to be simplified and complicated other things that never needed the complexity.
Actually I see a different pattern in the data- it sounds like the languages being used more in Western countries are languages that are used to solve hard problems.
That does include core game engine development, but it also includes advanced analytics, machine learning and so forth where languages like R and Python are the defacto standards nowadays.
We often hear about how countries such as India can churn out a thousand first class graduates from their universities for every one mediocre graduate in the West and other such nonsense, but the reality is that of the top 500 universities in the world, the vast majority are in the West. So for example, India doesn't have a single university in the top 100, and in fact, it's first entrant in the top 500 is the University of Delhi as the 316th university in the world and only 4 in total in the top 500.
There's a reason why the West is so dominant in the services industries and it's precisely because we have the education systems needed to stay ahead in solving difficult problems - it doesn't matter how many graduates countries like India can churn out in sheer volume alone if their best University is the 316th in the world. Compare and contrast to say, the UK, which has only 0.86% of the world's population but 9% of the top 100 universities. India has 17.6% of the world's population with 0% of the world's top 100 universities.
China is really the only nation that is on the right path to catch the West, but that's because they've spent the last 30 years doing the hard stuff - building infrastructure, skills, and education, but I'd warn that their political system will inevitably become a constraint on ever being able to completely reach parity with the West as the more educated a population becomes, the more liberal they become - that's at complete odds with China's political system.
The fundamental problem therefore is that many "tech hubs" in poorer nations are largely selling snake oil, the idea that they can always produce the same thing is cheaper, they simply don't have the skills, the talent, and the R&D centres to do so for more complicated tasks, and that's why the West shines in these areas, and that's why languages related to difficult problems are more prominent in the West.
But a word of warning, there's been a marked trend in the West in recent years against education, against experts, and against knowledge and science, this puts our advantage in these areas fundamentally at risk if it persists, if we want to continue being world leaders in areas such as this, then we have to fight back this wave of populism, and worship of ignorance, else it will leave all that hard earned talent, knowledge, and that research culture ripe for poaching by others who are willing to nurture it more than we have been. Brexit for example puts Britain's top universities at fundamental risk as they can no longer easily draw in the global talent required to make those universities as successful as they are, and if you lose that R&D edge that universities provide then you're just another India - sure you can do GUIs cheap, but you ain't going to be a serious contender as global tech leader doing cutting edge work which is where the money is (i.e. Silicon Valley for tech, the City of London for finance etc.).