Google's Go Language Surges In Popularity (infoworld.com)
2016 saw a big spike in the popularity of Go, attributed to the rising importance of Docker and Kubernetes. An anonymous Slashdot reader quotes InfoWorld:
Ranked 65th a year ago in the Tiobe Index of language popularity, it has climbed to 16th this month and is on track to become Tiobe's Programming Language of the Year, a designation awarded to the language with the biggest jump in the index...which gauges popularity based on a formula assessing searches on languages in popular search engines...
Elsewhere in the index, Java again came in first place, with an 18.799 rating while C, still in second place, nonetheless continued its precipitous drop, to 9.835% (it had been 16.185% a year ago). In third was C++ (5.797%) followed by C# (4.367%), Python (3.775%), JavaScript (2.751%), PHP (2.741%), Visual Basic .Net (2.66%), and Perl (2.495%).
The article also cites an alternate set of rankings. "In the PyPL index, the top 10 were: Java, with a share of 23.4%, followed by Python (13.6%), PHP (9.9%), C# (8.8%), JavaScript (7.6%), C++ (6.9%), C (6.9%), Objective-C (4.5%), R (3.3%), and Swift (3.1%)."
Elsewhere in the index, Java again came in first place, with an 18.799 rating while C, still in second place, nonetheless continued its precipitous drop, to 9.835% (it had been 16.185% a year ago). In third was C++ (5.797%) followed by C# (4.367%), Python (3.775%), JavaScript (2.751%), PHP (2.741%), Visual Basic .Net (2.66%), and Perl (2.495%).
The article also cites an alternate set of rankings. "In the PyPL index, the top 10 were: Java, with a share of 23.4%, followed by Python (13.6%), PHP (9.9%), C# (8.8%), JavaScript (7.6%), C++ (6.9%), C (6.9%), Objective-C (4.5%), R (3.3%), and Swift (3.1%)."
I looked for use cases a while back and couldn't find anything except crawlers.
I hate how easily programmers jump on a bandwagon.
I wish the standard library came with more goodies (Python can really spoil you in that sense) and that it was a bit more expressive - generic programming f.ex. would be a godsend. But hose will probably happen in the future. It is an otherwise fast, clean and well designed language, which thanks Baby Jesus isn't obsessed with OOP.
I understand that it's a failing of us humans to comprehend multi-dimensional data, but reducing a programming language's "popularity" to a single value really helps no-one. But because we're obsessed with such things, at least choose measures that place the weightings back into the hands of those that wish to match the data to their needs. Try the IEEE Spectrum interactive rankings: http://spectrum.ieee.org/stati... where Go performs even better - except for jobs.
Anyone else find Go's syntax horrible and avoid the language completely because of it?
is there a rule that all future technology hhas to be named by aspergs and homosexuals?
Yes, because those are the only people who contribute anything of value to technology.
Because you are neither LGBTQIA or on the autism spectrum, your role in technology is to consume it, not create it.
PS - you forgot to mention trans people. they've contributed a great deal to software and the gaming industry in particular.
“Common sense is not so common.” — Voltaire
And, speaking of compiling, the executables are large — even if you use somebody else's code, you must still compile it all into your application...
...by default. Try go build -linkshared.
I think there are some interesting design choices made by Rob Pike and others. Few languages are revolutionary, they are more a set of compromises taken to meet some practical need. If you look at Go as a middle ground between C and Java. But I do agree with your comment that Go is, at least in some ways, a "cautious holding pattern". Because something like Go it is also an insurance policy against further corruption of Java by Oracle. If Java starts to leave a sour taste in people's mouths, we might see Google using Go more internally. Right now I think they're letting Rob Pike play with the language to figure out what to change about it before really committing to it in a big way.
There are already some fantastic programming languages that few bother using in production. The ML-family being perhaps the biggest productivity booster and more revolutionary than the usual C, C++, Java stuff that we typically find in the wild.
“Common sense is not so common.” — Voltaire
I bet half the people who said "C" actually meant C++. There's really no reason to use C except in projects that are already in C, since C++ is an almost exact superset of C. So you can write everything in a procedural style, but still use STL and strings, and other minimal conveniences.
Rob Pike is hardly a kid.
Go was never about making a beautiful language. It has been about making different compromises than the ones C had to make 45 years ago. All practical languages are a set of compromises.
The lack of shared libraries are an intentional feature of Go. Generally in a cluster environment they cause more problems than they solve. There isn't anything fundamentally special about Go that would prevent it from having dlopen, it just doesn't have it today because the people who are interested in Go aren't interested in dynamic linking.
The executable size issue is slowly improving. There is an open bug to track it, and while the bug is very old, it still gets regular updates. And only the things that are needed are included in the executable, not "everything". If you make a HelloWorld app, then the big bloat in your app will be the garbage collector. But once you go beyond writing extremely trivial programs the size of your executable doesn't increase at a rapid rate. You should settle on a Go program of any significance being about 2MB to 10MB (where you link almost everything), then slowly going up from there. Another way to put it, is that your executable will be about 0.1% to 0.5% of your system RAM, the kernel will demand page it so if there really are unused parts they won't use precious RAM.
“Common sense is not so common.” — Voltaire
Obviously you aren't a member of the gay mafia, or you would already have access to the group's LDAP and WHOIS service.
“Common sense is not so common.” — Voltaire
LGBTQIA
How many letters are we going to add to this acronym? We only have 26.
Fetishists are left out and they may make it soon. We'll probably have to wait quite a bit for necrophiles, pedophiles and zoophiles to make it.
Go seems like another attempt â" undertaken every few years by a fresh crop of bright-but-not-wise kids â" to start a new programming language.
Rob Pike, one of Go's designers, turned me off from the language a few years ago when he posted with incredulity positing why most C++ developers weren't moving over to Go. He ends his post concluding that displays a remarkable attitude of "I'm right because everyone who disagrees with me is wrong", deciding that C++ users just don't know what's good for them.
What he doesn't understand is... the existing languages work. And they work pretty well, despite what the rabid fans of the new hot languages will tell you. Their language might do some specific thing better, but it's really only a little bit better, certainly not enough to switch to it. Most coders have at least a few different go-to languages to cover a wide breadth of problems, and adding an extra language just doesn't add any value.
There isn't anything fundamentally special about Go that would prevent it from having dlopen, it just doesn't have it today because the people who are interested in Go aren't interested in dynamic linking.
You know, I just find that kind of attitude very off-putting in a language designer, and it makes me wonder what other important functionality is missing because the project people "aren't interested".
When all you have is a hammer, every problem starts to look like a thumb.
How many letters are we going to add to this acronym? We only have 26.
Oh, they'll repeat them. There is no limit. Then holy wars will break out over what the first T stands for. Nukes will fly.
I do find it amusing though that the BDSM crowd has by-and-large rejected the alphabet soup crowd, finding such categories too limiting.
Socialism: a lie told by totalitarians and believed by fools.
https://en.wikipedia.org/wiki/Go_(programming_language)
what popularity means is that you have the most people that don't know wtf they are doing and there isn't a simple answer.
Anons need not reply. Questions end with a question mark.
You may note this massive, unprecedented serge is usage happened at the same time as pokemon go got very popular.
It will drop massively over the next few months because the system wasn't picking up references to the language, rather false positives to pokemon.
Oh gee, he thought that ONE language was artificially low?! What is the ranking method, btw?
"Go" is a common word in English, unlike "Cobol" or "Fortran" or "PHP". "Java" might be a kind of coffee, but specifically on programming pages, even "Java" is probably much more likely to be programming-language-specific where "Go" might not be. So the problem with measuring references to it should be understandable.
Ezekiel 23:20
They're not making the language for you. They're making it for themselves, and as a courtesy, they offered it to you if you find it convenient (it doesn't cost them anything), and it you don't like how things are, you can feel free to implement things that you need but they don't.
Ezekiel 23:20
By searches on popular search engines. Uhm....
Rob Pike is hardly a kid.
No, but he is astonishingly arrogant, see for example:
https://commandcenter.blogspot...
He even admits to not knowing C++ well yet comes to the conclusion that go is not all that popular among C++ programmers because it's too awesome and anyway C++ programmers totally suck amirite etc etc.
And you know what? Rob Pike will sink into obscurity long before Carl Linnaeus.
SJW n. One who posts facts.
They're not making the language for you. They're making it for themselves...
Actually no, they're making it for a captive audience of Google employees who are paid to not complain about it.
When all you have is a hammer, every problem starts to look like a thumb.
What a load of baloney.
Yep, taking Tiobe at face value is foolish. Their methodology is shit. Look at job openings, book sales, how busy the forums are, etc. Look at a bunch of stuff. But do not assume that Tiobe's single, brittle method of ranking languages is accurate, especially when it comes to languages that share a common word like "go".
You could say exactly the same thing about their extant code base of C++ services. Google employees are paid to not complain about those either.
Ezekiel 23:20
There are plenty of bloatware kitchen sink languages already. Why replicate what already exists when you are writing a language to solve specific problems.
Every language doesn't have to be a Swiss Army Knife to be useful.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
There are some fundamental things a language needs to be able to do to be seen as a serious replacement to C or C++ which is what Go is aiming for. And one of those things is being able to dynamically load shared object files. This is not up for debate.
What makes you think the goal is to replace C/C++? They are are trying to replace it for certain uses, not as a generic do-all language.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
It's because Docker is written in Go, and it's one of the most high profile Go projects.
http://www.slideshare.net/jpet...
I know, it is intentional. I just think, it is a flaw, rather than a "feature".
Not true at all. Apache is regularly used with shared modules — though it is possible to compile modules in, nobody really does that in practice, and some functionality is only available from vendors in a form of precompiled shared library.
Java, Perl, Python, TCL, PHP all make use of run-time loadable shared libraries — solving problems, which Go can not solve without fully recompiling one's application every time.
Stop it right there. Simply, there is not anything fundamentally special about Go. Period.
Well, that's a relief...
Why can't that boilerplate, that's included into every Go-built executable, live in some kind of libgo.so, so that multiple Go-apps on the same system can share the bloat?
Why TF should I "settle"? If I have 3 programs, that all need to parse JSON, for example, why must each one of them include the entire JSON-parsing functionality in its own executable, instead of sharing? And then, when whatever 3rd-party that maintains the JSON-parsing code releases a critical update, I have to recompile all of these executables — instead of simply replacing one library... Are you telling me, this is, somehow an advantage?
Yes, modern machines have so much RAM and other resources, a developer and a sysadmin can get away placing their own convenience over performance. Puppet and Sensu, for example, both come with their own version of Ruby bundled — few people are bothered by the fact, that the two always-running daemons, both implemented in Ruby, would not — without some work — share the same Ruby-environment.
Similarly, Java-apps are usually shipping with their own JRE included — and it is not uncommon to find multiple instances of, say, Tomcat on the same machine running under different Java-versions — a waste of tens of megabytes of RAM.
But, at least, a competent DevOps department can take measures to avoid such waste. You can convince a Java and a Ruby app, it is Ok to run under JRE or Ruby of your choice. Go makes that flat out impossible, because everything is thrown into one executable... For your convenience — don't you worry your pretty little head.
Which takes me right back to my usual rant... Per Moore's law, our computers today are 1024-times more powerful than they were 15 years ago. Do you think, your user-experience, however you choose to quantify it, has improved 1000 times? I certainly don't... Today's desktop-environments and browsers are better than they were then, but not by a factor greater than 5. The rest of the stupendous hardware advances were "eaten" by the sloppy developers (and sysadmins/operators) instead of being passed on to users.
In Soviet Washington the swamp drains you.
I saw what you did! You called him an asshole!
There are room for specialists in programming languages in terms of their compromises and what feature combos organizations need and don't need. Sure, there are technical "compiler experts", but the human and staffing side are also key, and under-studied.
Let's face it, programming is mostly a dead-end career (for good or bad), as stats show, meaning programmers have to absorb languages and applications coded in them quickly, and then they move on to project management, QA, sales, outsource contract management, or something else eventually.
If you master something others find esoteric, it can cause staffing headaches for the org. In my experience orgs really hate that. Thus, the language has to more or less cater to the lowest common denominator.
Most of the staff-level problems are dealing with screwy frameworks and API's anyhow; the language itself is kind of a secondary concern.
Table-ized A.I.
I've done a few projects in Go. I'm not a huge fan, but I think it has its place, and would much rather write a microservice in Go than in some travesty like NodeJS. What bugs me about the way they ranked is is search engine queries. Anyone who has tried searching for anything with 'go' in the query will find a lot of useless results returned. Google itself takes extra steps to ensure their language is returned in these queries on google, but in many other engines it's ambiguous as to what you mean when you type 'go to beginning of loop'. Are you looking for a rewind, or are you looking for loops in go? If they limited this to 'GoLang', I'd feel much better, but I can't find out how they ranked it, and am afraid they are including questionable results in their indexing.
Your point is invalid.
Grammar correction: "There is room for specialists..."
Modnays.
Table-ized A.I.
Sorry.
You know, I just find that kind of attitude very off-putting in a language designer, and it makes me wonder what other important functionality is missing because the project people "aren't interested".
There are only so many hours in a day. People are contributing their own things to the language and libraries, but I'd say that the core set of people were in the camp of static linking.
You'll find some level of personal preference in pretty much any new language project. It's inescapable.
“Common sense is not so common.” — Voltaire
I admit to not knowing C++ well either, I've only used it for a decade, that's hardly enough time to become familiar with C++. I generally hand off C++ projects to my coworkers who have invested far more of their time in learning and tracking C++ than I have.
Rob Pike has some experiences with programming languages that I find valuable, so for me I am willing to take a look at what he has to say on the topic in the hope there might be some gems.
“Common sense is not so common.” — Voltaire
Not true at all. Apache is regularly used with shared modules — though it is possible to compile modules in, nobody really does that in practice, and some functionality is only available from vendors in a form of precompiled shared library.
I'm not saying it's not possible, only that it's undesirable. It's undesirable to wrestle with ABI and version hell when you have to distribute your software across 1000 nodes of a cluster. It's certainly not the biggest difficulty in clustering, but why take on something that doesn't offer value and usually reduced performance and reliability in the field?
“Common sense is not so common.” — Voltaire
I think it's mostly all the hype and articles claiming "Go is a C/C++ replacement." We could give them a pass and assume they mean "Go is a C/C++ replacement in some narrow Google-like scenarios" but all too many discussions couch it as ALSO a replacement for Python or Java. We could also try to be nice and state that the project maintainers are not trying to say this "replace C/C++" angle is valid, except Rob Pike says things like "although we expected to C++ programmers to see Go as an alternative..." and such, which isn't a great PR statement if you're trying to say it's not supposed to replace C++.
Yes, I'm aware they're not equivalent. No, social dynamics and public relations don't care, and if we expect them to we're idealists or idiots or both. Thus, to the greater populous, Rob Pike was quite literally trying to replace C++ and if he wants a different perspective to the greater populous he needs to change his tune. (full disclosure, my one quote is from 2012, though others exist that are more recent if one cares to get pedantic about this).
See also: this very article and the commentary about it here.
This forum Sig is licensed under the LGPL.
More specifically, paid not to complain about the Google C++ style guide, which makes sense only for restricting C++ code to be safe for newbies. There's LOTS of languages that are better than Google C++ (including, of course, C++).
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes