Is the Go Programming Language Surging in Popularity? (infoworld.com) 90
The Tiobe index tries to gauge the popularity of programming languages based on search results for courses, programmers, and third-party vendors, according to InfoWorld.
And by that criteria, "Google's Go language, or golang, has reached its highest position ever..." The language, now in the eighth ranked position for language popularity, has been on the rise for several years.... In 2015, Go hit position #122 in the TIOBE index and all seemed lost," said Paul Jansen, CEO of Tiobe. "One year later, Go adopted a very strict 'half-a-year' release cycle — backed up by Google. Every new release, Go improved... Nowadays, Go is used in many software fields such as back-end programming, web services and APIs," added Jansen...
Elsewhere in the February release of Tiobe's index, Google's Carbon language, positioned as a successor to C++, reached the top 100 for the first time. Python is #1 on both TIOBE's index and the alternative Pypl Popularity of Programming Language index, which InfoWorld says "assesses language popularity based on how often language tutorials are searched on in Google." But the two lists differ on whether Java and JavaScript are more popular than C-derived languages — and which languages should then come after them. (Go ranks #12 on the Pypl index...)
TIOBE's calculation of the 10 most-popular programming languages:
And by that criteria, "Google's Go language, or golang, has reached its highest position ever..." The language, now in the eighth ranked position for language popularity, has been on the rise for several years.... In 2015, Go hit position #122 in the TIOBE index and all seemed lost," said Paul Jansen, CEO of Tiobe. "One year later, Go adopted a very strict 'half-a-year' release cycle — backed up by Google. Every new release, Go improved... Nowadays, Go is used in many software fields such as back-end programming, web services and APIs," added Jansen...
Elsewhere in the February release of Tiobe's index, Google's Carbon language, positioned as a successor to C++, reached the top 100 for the first time. Python is #1 on both TIOBE's index and the alternative Pypl Popularity of Programming Language index, which InfoWorld says "assesses language popularity based on how often language tutorials are searched on in Google." But the two lists differ on whether Java and JavaScript are more popular than C-derived languages — and which languages should then come after them. (Go ranks #12 on the Pypl index...)
TIOBE's calculation of the 10 most-popular programming languages:
- Python
- C
- C++
- Java
- C#
- JavaScript
- SQL
- Go
- Visual Basic
- PHP
Pypl's calculation of the 10 most-popular programming languages:
- Python
- Java
- JavaScript
- C/C++
- C#
- R
- PHP
- TypeScript
- Swift
- Objective-C
Of course it is (Score:3)
Re: (Score:3)
Fast or not, I wish the garbage collection wasn't there because it causes frequent non-deterministic dips in performance, a real problem in game development, especially if you're writing a network stack.
Re: Of course it is (Score:3, Insightful)
Why on earth would you do game development in golang?
Re: (Score:2)
Why on earth would you do game development in golang?
Because, aside from the GC, it doesn't suck for games.
GC also puts Golang off the table for embedded work.
Rust has shown we can have robust memory management without GC.
Re: Of course it is (Score:2)
How does it not suck for games? At least with C# there's first class support for things like controllers, gui, graphics, and sound. Golang's developers didn't have any of this in mind. The language as a whole tends to assume that you're writing some back-end server code meant to run on a headless unix OS.
Re: (Score:2)
There are libraries and engines available for creating 2D and 3D games in Go.
A top 10 from a quick search:
https://www.golang.company/blo... [www.golang.company]
Re: Of course it is (Score:2)
It pretty much comes down to the language not lending itself well to modeling even remotely complex problems. Golang just doesn't. It's designed to be a really simple language for solving really simple problems. Sure, it can be done, but you're trying to use a socketed screwdriver to remove lug nuts. It's just not the right tool.
Re: (Score:2)
Can you speak less in metaphor and give an example?
Re: (Score:3)
Being totally honest there's no one example anybody can give that will say "see, this is why", because for any one thing you always have viable workarounds. Rather, it's the sum total of it. You can really write games in basically any language, but with some it's a lot easier to do than others, and this doesn't even take performance into consideration at all. To illustrate what I mean, here's a subreddit of golang enthusiasts, in a thread with posts made by them who are also game developers:
https://www.redd [reddit.com]
Re: (Score:2)
OK, the ECS comment has convinced me to finally learn Rust. Thanks.
Re: (Score:1)
FYI: most of Eve Online is written in Python, frontend and backend.
Re: (Score:2)
For games, I really think someone needs to make a language that's data oriented and better at avoiding cache misses, something really geared toward performance. That would be much more declarative, I think, but I haven't thought much about it.
And no danged GC.
Re: (Score:2)
Its the wrong choice. Go is a great little language, but its laser focused on one thing, and one thing alone;- Writing servers. (The fact it has channel linked coroutines as its core gimmick feature should be a give away here).
Its the language you choose for server writing when you've graduated from JS and want to use a performant big-boy language whilst evading the java nonsense stack.
But for games? Hell No, not when C++ and its almost endless sea of engines and libraries for game dev is right there.
Re: (Score:2)
Well, Unity uses C#, which is very similar, but slower.
Go is compiled, faster, and just as easy to pick up. The GC is not great, but it seems at least as good an option as C#.
Re: Of course it is (Score:2)
That's great and all, but the language just isn't built for it. Unless you're doing text or tui based games or something, even the more simple games need to be modeled in such a way that go doesn't really lend itself well to.
Re: (Score:2)
How isn't it "built for it?" It's a general purpose language that can call any C API, right?
Re: (Score:1)
I doubt it is slower. The CLR VM hit compiles the code, and even cashes it, so next start of the game it is already compiled.
Re: (Score:2)
JIT compilation doesn't generate very optimized code IMO.
Re: (Score:1)
The opposite is true, as it jit compiles for the actual processor the VM is running on.
Re: (Score:2)
That doesn't make it optimized.
Re: (Score:1)
Of course it does.
Or why does Java and close second C# beat nearly every other language and C++ and Fortran only win in nieche regions?
Re: (Score:2)
Citation needed.
Re: (Score:1)
Google? Sorry, I'm not paid to tell you about the difference of Jit compiling for an OLD x86 processor, or a NEW one or an AMD.
You are uninformed, so study the topic if it interests you.
Re: (Score:2)
Ah, the "google it" defense. LOL
Re: (Score:1)
No defence: a hint.
Either you are interested in something, or not.
Up to you.
Re: (Score:2)
I'm only asking you to explain because I've seen the opposite benchmarks, countless times. I googled it and found nothing suggesting C# compiles to faster code than C++. So you're either incompetent or full of shit.
Re: (Score:1)
What is there to explain?
A static compiler compiles to a common base, regardless of IBM/AMD/INTEL.
A Jit compiler compiles to the actual architecture during executing the code and: does HOTSPOT optimizations.
If you were interested in that topic you would be googling since a week and read ....
Re: (Score:1)
Show me the benchmarks that show C# is faster than C++.
Re: (Score:2)
Godot [godotengine.org] is increasingly popular, especially as people look for something other than Unity. I would imagine that would encourage Golang use for supporting services, too.
Re: (Score:1)
That depends heavily on the algorithm used for garbage collection.
I doubt Go lang uses a so called "stop the world" garbage collector.
Re: Of course it is (Score:2)
That Von Kaiser has well established that by now. See the link in my signature. The second I read his post I had a "wtf is this guy on?" moment, but then I realized who it was.
Re: (Score:2)
Yeah.
I don't know all inner the details of the newer GC implementations, but I've read C# is one of them. It used to pause all threads and now it doesn't, and it runs on its own processor.
Still, the world slows down a lot at GC intervals if you look at any perf monitor.
Re: (Score:1)
The question is: is Golang doing that or not?
There are plenty not garbage collection strategies that are completely deterministic.
And embedded has nothing to with it anyway.
Embedded means a hardware device comes with software deployed on it and usually has no human interface, that is all.
Who cares if your washing machine is operated by an 8kb mini JavaScript interpreter, which can do GC, but never does, as all the state is hold in a single object with less than ten variables?
Re: (Score:2)
I agree for embedded, you just preallocate what you need. You could even pause the GC. C# allows that.
I don't see how Go's GC or any GC could possibly run deterministically or avoid those bumps, otherwise the .Net guys would have been doing it many years ago. But I'd love to be proved wrong.
Re: (Score:1)
Deterministic GC is probably not interesting for Java/C#/ Go etc.
And it has some fundamental differences to "stop the world" and "concurrent GC" implementations.
The typical approach is to do a brief GC, 1 to 5 ms for example, when ever you allocate memory. That works good in embedded environments, as memory allocations (and objects going out of scope) are usually rare. Would work probably in most games, too. As they hardly run more than a handful of threads.
But imagine you have a considerable large array (i
Re: (Score:2)
You could even pause the GC. C# allows that.
I've tried to explain exactly this to him before, but he insists that it's impossible because, according to him, it's the same as Java.
Re: Of course it is (Score:2)
It's a decent language for simple stuff, but as soon as you need to build even mildly complex data structures, you end up with a LOT of repetitive code.
Oh, and if you could somehow do without the if err != nil pattern, you'd probably shrink the number of lines in every golang project by half.
Re: (Score:2)
Oh, and if you could somehow do without the if err != nil pattern, you'd probably shrink the number of lines in every golang project by half.
Maybe they should add "catch (...) { }" to the language.
But seriously, they proposed a rather straightforward streamlined syntax for errors a couple of years ago, but it was rejected by the community. Back to the drawing board.
I personally don't mind the very explicit error handling too much. It kind of makes it clear that you've though through at least some of the corner cases.
Re: (Score:2)
The issue with the explicit error handling is it becomes the boy who cried wolf. When you just reflexively and tediously do a 'if err != nil { return nil, err }' every five seconds it just becomes a tedious ritual without thinking. No one is *really* thinking about "wait, do I need to unwind something here instead of just propogating the error?" any more than they would in an exception driven language.
Of course, within your project, you could decide to go Java/Javascipt/Python style and lean on panic with
Re: Of course it is (Score:2)
I don't personally like try/catch either. I vastly prefer rust's method of simply using a question mark to bubble up errors. Rust style enums, which that pattern is based around, are also dead simple to understand while being extremely powerful, and would greatly simplify so many things in golang if they adopted something similar.
Alas, golang considers enums of any type to be too hard, so the closest they let you have is iota.
Re: (Score:2)
Of course, that's only half of 99% of the error handling pattern. In go, after every function call the full statement will be:
if err != nil { return nil, err }
It would have been significiantly nice to have a quick shorthand to say "my function wants all errors auto-propogatred unless explictily assigned for handling'.
Yes, but (Score:5, Interesting)
Yes, Go is becoming more popular, but why are we still using the TIOBE index?
That index is absolute junk and can be gamed.
Re: Yes, but (Score:2)
Re: Yes, but (Score:2)
I wouldn't be surprised if it is, but the code quality I've seen in a lot of golang projects on GitHub tends to skew towards being pretty bad, so it would make sense if there's a lot of junk suddenly appearing that's pushing its popularity indicators up.
Don’t play the game. (Score:2)
Yes, Go is becoming more popular, but why are we still using the TIOBE index?
That index is absolute junk and can be gamed.
Why are we even raising the question as to what language is “winning” the Viral Clickbait Games every 90-180 days? Choosing the right software, shouldn’t come down to who has the best cheerleaders in marketing. That’s how you end up with shit code.
Re: (Score:2)
Well, the *specific* rankings are flawed and not really useful, but ecosystem matters, so knowing what languages have a broader community (whether because you are hoping for a certain library to already exist for your use case or becuase you want to have good chances to hire if you need).
I suppose you can make the argument that the popular languages are pretty self evident. However potentially more interesting is if you see that your codebase is in one language and only by the periodic nagging about these
Re: (Score:2)
As you’ve stated, C and variants is more than just a safe bet at this point. I’m not a coder by trade, but I’d question if any coder is watching this list to see if their years-long established code in a Production system, is facing a nose dive in popularity.
Speaking of premature unexpected deaths, has that even ever actually happened for a language? What was the impact? Not even 1950s COBOL has died yet in sectors that have invested heavily in it, which cost is usually the driving facto
Re: (Score:2)
For COBOL, sure the existing code would still run, and given the scope of the day you are unlikely to have the sort of software that would care, but if your codebase suddenly had to talk to a new product, you might not have options with COBOL. However for those that are in need of maintaining business critical COBOL, they famously struggle to find developers willing to give it a go.
I know Perl5 based projects that hurt pretty bad from various vendors dropping their Perl efforts for interop with new versions
Re:Yes, but (Score:4, Funny)
why are we still using the TIOBE index?
Because language popularity is interesting and we don't have a better index.
The TIOBE index shows you can fill a vacuum and still suck.
Popularity Contests. (Score:2)
why are we still using the TIOBE index?
Because language popularity is interesting and we don't have a better index.
The TIOBE index shows you can fill a vacuum and still suck.
True. Today, I’d question if any index isn’t more buried in the business of selling rather than informing. As long as the consumers are aware of that motivator that can make rankings corrupt and perhaps worthless or even harmful, then dive in and enjoy the popularity contest.
Wait, we haven’t matured from popularity contests? Huh. Kinda tells me they must still sell a lot of product..
Re: (Score:2)
Wait, we haven’t matured from popularity contests?
For programming languages, popularity matters. A popular language will be updated. It will have a mature ecosystem. There will be plenty of answers on StackOverflow. It will be easy to hire programmers.
Unpopular languages are usually unpopular for good reasons. Have you ever had to work in Ada?
TIOBE as junk (Score:3)
Both indices agree that apart from Python, the top-ranked languages, irrespective of order in the top ranking, are C, C++, Java, JavaScript and C#.
When you think of it there is C as the most widely available and used imperative language, C++ the most used imperative language with object oriented and a kind of generic programming as extensions, Java the most adopted object-oriented language with garbage-collected memory management and JavaScript is what people have migrated to for graphical content and ap
Re: (Score:3)
I was thinking about this a couple of years ago -- if I were starting a completely greenfield project that was expected to be fairly large and complex, say 100k to 1M lines of code (yes LOC sucks, but this is a rough order of size), what language is the best to use? I couldn't really come up with a good answer for a "best" language.
Python is good for small projects, especially those that glue things together. But once you grow past a certain size, the duck typing can be problematic, as it can easily becom
Re: (Score:2)
In 90% of the cases it will be Java (or a derivative) on the backend and some JS/TS lib on the frontend (is there anything else really ?!).
I've used both Java and Go quite a bit. I prefer Go. With that said, if I have to start a huge project with a team of devs, the language we choose will be based on the skills of the team. Most projects have time constraints and you rarely can afford the time to train team members in a new language.
Re: (Score:1)
Java on Android is Java. Only the bytecode and the VMs are different.
However, most developers use Kotlin. And google has its own language: Dart, with the cross platform flutter framework.
Is Kotlin Java in reality? (Score:2)
This raises some deep philosophical questions, like the arguments the ancient Greeks had about the artifact in Athens known to be Theseus' Boat? Some Greeks argued that all of the maintenance and upgrades so they could sail it every year in a commerative celebration meant that it was no longer the boat used by Theseus to rescue the young Athenians from being sacrificed by the Minoan tyrant.
OK, Android Java uses both a different bytecode and a different VM? I guess "real" Java is based on a common bytec
Re: (Score:1)
Java on Android supports nearly everything from the standard library, that is not Swing/JavaFX (the GUI libraries) and JaveEE (enterprise edition).
E.g. to open a File or a Socket, you use the standard libraries.
If you program in Kotlin: you also use the Java standard libraries.
The first Java VMs under Android were called Dalvik, completely different idea about byte code. Not compatible to Java byte code. As far as I recall: the Android compiler DID generate standard bytecode, and a "dec tool" cross compiled
Re: (Score:2)
but why are we still using the TIOBE index?
Because it's free publicity for them once a month. Somehow their little Google-search-query list is news on slashdot every month, for how many years now?
That's an interesting metric, there (Score:3)
Python is #1 on both TIOBE's index and the alternative Pypl Popularity of Programming Language index, which InfoWorld says "assesses language popularity based on how often language tutorials are searched on in Google."
That sounds like a great way to gauge how many people are learning those languages. It doesn't tell us much about how much code is being generated by users of those languages though, as people who are especially familiar with a given language are less likely to search for tutorials.
Re: (Score:3)
Re:That's an interesting metric, there (Score:5, Informative)
It doesn't tell us much about how much code is being generate
For that you can check Github language stats https://madnight.github.io/git... [github.io]
The negatives:
* Ruby, Objective-C flatlining
* Javascript starting to collapse
* PHP, Java on slow decline
* Erlang, Clojure, Haskell were always small and getting smaller
The positives:
* Python picking up as most popular
* Go smaller but following Python's trend
* Typescript doing well at its level
* C, C++, C# on steady increase
* Rust made a small bump
Re: (Score:2)
By mistake I checked "Stars" instead of "Pull requests" but results are relatively similar.
Metric Fluffers (Score:2)
This sounds like a great way to gauge how many people might be getting paid to pad the source file that creates rankings based on said source file.
Ain’t much of a “secret’ in the sauce here.
Methodology is everything (Score:3)
I would expect the languages at the bottom rung of popularity to have differing ranks between indexes. But the only rank the two indexes agree on is #1, Python. That divergence is an indication that the rankings contain a lot of statistical noise, and shouldn't be taken too literally.
Re: (Score:1)
As long as we do not know what is going on inside of companies, we have no idea what languages are mostly used.
We could look for job offers. But then we have similar problems in judging.
Someone interested could sent an "open letter" at companies and ask for: "what languages are you using, how many developers in each language and how big are the projects?"
But it is unlikely that the answers are coherent.
Well, for my next project.... (Score:2)
I'm planning on using go for my next project. I'm not certain, because I *don't* want to put it on github, and the documents all seem to say that's the way to use multiple files in the same project. So maybe not.
OTOH, go has virtual threads that are like a threadpool+scheduler, and that seems a bit difficult to do well. The C++ examples I've seen don't really address a lot of the issues. (Which is *why* I'm planning on trying go. If I can figure out the development environment. [I bounced off of that
Re: (Score:2)
Re: (Score:2)
This is a greatly overly ambitious hobby project. Putting it out on the web would just be silly. I could set up a local server, but that's excessively complicated...it would be easier to just use C++ and write my own damn threadpool and scheduler. (I don't want to as that would mean all the tasks would need the same arguments, I'd probably just have to use a byte vector, and parse the arguments when the task started. Also go context variables are a bit smaller than C++ ones. And it would be nice to pic
Re: Well, for my next project.... (Score:2)
You don't need to host a go project anywhere if you don't want to share it. I'm guessing you are dealing with material letting you know how to make it so others can reference and use your code, but it's hardly necessary.
You may need access to GitHub abd such, since that's how go gets dependencies, but your code itself doesn't have to be there. Maybe some things need it to be a git repo, but a local got init should suffice, in which case it's a easy as rcs back in the day
Maybe
Re: (Score:2)
If none of the documentation tells me how to use locally hosted code... well, I don't like to fight city hall. I'd rather go somewhere else.
Actually, after putting in a week on go, I've decided (as of last night) to put in this next week on rust. That's much less hostile to locally hosted code. I think the last time I bounced off rust was because it didn't have the libraries that I needed, but that was a couple or three years ago.
Carbon? (Score:2)
Reading about that [techtarget.com]:
Yea, C/C++ and Rust started out with relatively simple syntax. C++ has become a bouillabaisse of unreadable random punctuation sequences. Rust, unfortunatel
Re:Carbon? (Score:4, Interesting)
Indeed. C does it by still being simple and easy to write a compiler for and being close enough to assembler in performance. Perl and Python do it by making small stuff easy. C++ is nothing but a complex abomination at this time. Without a large code-base, nobody would use that failure of language design. If Rust is heading down the same path, then the same bright-eyed nil wits are at work there. Even worse is Java. Without tool-support, Java is in many instances unreadable these days.
Making things more complex and adding stuff is easy. Any amateur can do it. The real trick is to only add stuff that is really needed. Most people are incapable of that as it requires real experience and insight.
Re: (Score:1)
Probably not (Score:2)
It is just a curiosity at this time, like other languages that get artificially hyped.
All these "new" languages suck (Score:2)
Rust is like "write 10x the amount of code so I don't have to do garbage collection" - me: wtf, I am not writing reams of code just to protected myself from myself, and what's all this borrowing crap.
Go is like "nah nah you've an unused variable "ERROR ERROR ERROR" me: ffs, I don't need a nanny, ever heard of writing a bit of code for use in the future (i.e. in 10 fucking minutes time!!!)
Python - don't make me laugh.
C, C++ and proper languages - write what you want, if you know what your doing it'll be fast
Re: (Score:2)
On rust, granted I haven't used it much, but it seems from my limited experience it's less tedium than C, but roughly equivalent performance. Endeavors to be a "modern" memory safe strategy without sacrificing perfromance relative to C Also, seems to be supremely careful to be able to call C and also to be able to be a library for a C application, so that's cool. It may be more tedium than other "mdern" languages, but it's the highest performing of the crop.
Golang you seem to be very concerned with what i
Tiobe is more About lack ofQuality than popularity (Score:1)
Brainfuck (Score:2)
The readability, the raw performance, why isn't it more popular?
Re: (Score:2)
My wishlist (Score:1)
Convenient error handling. None of this if err != nil nonsense everywhere. As is I abuse panic a lot because the majority of errors handling is fail-and-log.
Goroutine local storage. I hate passing a context variable around everywhere, especially when doing diagnostic code like logging the current execution thread with other information.
Strands. Take a lesson from NodeJS where the majority of your program can be single threaded. Avoid a lot of headache and cost if you don't have to worry about multithreaded