Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming

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:
  1. Python
  2. C
  3. C++
  4. Java
  5. C#
  6. JavaScript
  7. SQL
  8. Go
  9. Visual Basic
  10. PHP

Pypl's calculation of the 10 most-popular programming languages:

  1. Python
  2. Java
  3. JavaScript
  4. C/C++
  5. C#
  6. R
  7. PHP
  8. TypeScript
  9. Swift
  10. Objective-C

This discussion has been archived. No new comments can be posted.

Is the Go Programming Language Surging in Popularity?

Comments Filter:
  • by cyberthanasis12 ( 926691 ) on Saturday February 17, 2024 @06:56PM (#64248296)
    It is compiled language. It has some data structures builtin similar to Python. It has (very fast) garbage collection. And it has very good parallel support built in.
    • 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.

      • Why on earth would you do game development in golang?

        • 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.

          • 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.

            • 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]

              • 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.

                • Can you speak less in metaphor and give an example?

                  • 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]

          • 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.

          • 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.

        • 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#.

          • 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.

          • 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.

        • 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.

      • That depends heavily on the algorithm used for garbage collection.
        I doubt Go lang uses a so called "stop the world" garbage collector.

    • 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.

      • 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.

        • by Junta ( 36770 )

          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

        • 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.

      • by Junta ( 36770 )

        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)

    by stephanruby ( 542433 ) on Saturday February 17, 2024 @07:02PM (#64248304)

    Yes, Go is becoming more popular, but why are we still using the TIOBE index?

    That index is absolute junk and can be gamed.

    • The word you are looking for is cherry-picking. Because that is the only one showing Go is âoesurgingâ
      • 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.

    • 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.

      • by Junta ( 36770 )

        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

        • 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

          • by Junta ( 36770 )

            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)

      by ShanghaiBill ( 739463 ) on Saturday February 17, 2024 @09:06PM (#64248454)

      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.

      • 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..

        • 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?

    • 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

      • by theCoder ( 23772 )

        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

        • There is only one deciding factor - what programmers can you get.
          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.
      • 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.

        • 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

          • 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

    • 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?

  • 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.

    • by keltor ( 99721 ) *
      It's not attempting to be an index of the "most code generated" anyways. TIOBE is an index of how popular it in "discussions" and things like that. PYPL is an index of how popular people looking for the tutorials of a language are. There have been in the past some projects that attempted to measure code generated with multipliers for LoC (since some languages are inherently wordy and some language are much more compact.) At least as of a few years ago, C and C++ were the overwhelming winners, but this i
    • by test321 ( 8891681 ) on Saturday February 17, 2024 @08:38PM (#64248428)

      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

    • 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.

  • by Tony Isaac ( 1301187 ) on Saturday February 17, 2024 @08:08PM (#64248390) Homepage

    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.

    • 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.

  • 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

    • by bn-7bc ( 909819 )
      well If you don't like github you can always use gitlab, it can even be hosted on prem and the community edition is free and probably covers whet you need (other on prem git repository managers are available)
      • by HiThere ( 15173 )

        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

        • 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

          • by HiThere ( 15173 )

            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.

  • This is the first I've heard of Carbon: Google's Carbon language, positioned as a successor to C++
    Reading about that [techtarget.com]:

    Carbon's creators also designed the language to help developers write code that is easier to both maintain and scale over time. Part of this involves providing a simple syntax that improves the code's readability and expressiveness

    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)

      by gweihir ( 88907 ) on Sunday February 18, 2024 @04:05AM (#64248746)

      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.

      • by cen1 ( 2915315 )
        Agree with most of this, I really want to love C++ but the syntax is a nightmare and the fact that I need to rely on my mental sharpness to program "modern C++" instead of just telling a linter or compiler to "block me from using bad practices from C" does not help. As for Java, I don't think much has changed since Java 8 in the readability department and the high cadence of new releases with small improvements and features with an occasional LTS seems to be working so far.
  • It is just a curiosity at this time, like other languages that get artificially hyped.

  • 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

    • by Junta ( 36770 )

      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

  • The TIOBE index is an index that measures how much a programming language is mentioned. This may indicate the popularity of a programming language, as a language is used more, more people are discussing about it. I'd like to stress that it does not mention what people say about the language. - Are they complaining that they cannot accomplish things with their language ? - Are they showcasing the amazing things that can be done with their language ? People that have nothing to complain will probably
  • The readability, the raw performance, why isn't it more popular?

  • 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

Trap full -- please empty.

Working...