Slashdot Mirror


Google Go Capturing Developer Interest

angry tapir writes with news that Google Go seems to be cutting a wide swath through the programming community in just a short time since its early, experimental release. While Google insists that Go is still a work in progress (like so many of their offerings), many developers are so intrigued by the feature set that they are already implementing many noncritical applications with it. What experiences, good or bad, have you had with Google Go, and how likely is it to really take over?

84 of 434 comments (clear)

  1. Oh yeah, that ... by checkitout · · Score: 5, Insightful

    Until this article, I forgot it was ever announced.

    1. Re:Oh yeah, that ... by TheLink · · Score: 5, Insightful

      Me too. I'll wait for those captured developer(s) to develop more libraries for it first.

      A programming language that's "powerful" for the code you write is good for those uber-programmers.

      A programming language that's "powerful" for the code you no longer have to write is for those crappy programmers like me :).

      Many promising programming languages make it to the first category but never make it to the second.

      --
  2. "many developers are so intrigued" by Anonymous Coward · · Score: 5, Insightful

    Translation: Someone is drumming up some marketing astroturf for a single-company controlled proprietary language.

    1. Re:"many developers are so intrigued" by Idiot+with+a+gun · · Score: 2, Funny

      Like Java?

    2. Re:"many developers are so intrigued" by I+confirm+I'm+not+a · · Score: 4, Informative

      "Proprietary"? No, open source

      I'll concede Google is a single company, but the Go developers I've encountered are all outside Google, and speak very warmly of Google's Go team.

      Translation: there is much astro-turfing on them thar intarwebs. This ain't it.

      --
      This is where the serious fun begins.
    3. Re:"many developers are so intrigued" by I+confirm+I'm+not+a · · Score: 3, Funny

      Java. It's quite a big player in IT job market.

      --
      This is where the serious fun begins.
    4. Re:"many developers are so intrigued" by Idiot+with+a+gun · · Score: 2, Interesting

      Google Go is in basically the exact same position Java was. Both are technically OSS, but both are also controlled by a single company. I'm sure this exact same thing happened in Usenet back before Java was popular, and look where it is now.

    5. Re:"many developers are so intrigued" by MrBandersnatch · · Score: 4, Insightful

      "At least Java's main benefit was portability."

      Write once, test everywhere?

    6. Re:"many developers are so intrigued" by Anonymous Coward · · Score: 2, Interesting

      We always laughed at Java's "portability" as being something that Sun's marketing dept. cooked up.

      For a long time, the only supported platforms were Solaris and Windows. Then came Linux support. Some vendors, like IBM and HP, offered support on AIX and HP-UX, but it always trailed the features of the latest releases from Sun. Even Apple didn't have a good implementation of the JVM for Mac OS X for quite some time.

      Perl is portable. Python is portable. Tcl is portable. Ruby is portable. Java is not.

    7. Re:"many developers are so intrigued" by binarylarry · · Score: 3, Insightful

      lol, sounds like someone who's never used any of them in production.

      Prohint: There's a reason why Java is the most popular platform and language for huge, cross platform enterprise software. And it does involve portability.

      --
      Mod me down, my New Earth Global Warmingist friends!
    8. Re:"many developers are so intrigued" by FlyingBishop · · Score: 5, Insightful

      That's inevitable. It's certainly better than write everywhere, test everywhere.

    9. Re:"many developers are so intrigued" by TheLink · · Score: 4, Insightful

      Perl and python are quite portable too, though not as portable as Java.

      But in practice many nontrivial programs end up with so many dependencies that they aren't that portable anymore.

      For example, say you want to write a program to record video from a video camera and audio from a sound device. And you want to cater for the possibility of more than one selectable camera and sound device.

      Even if you write it in java, you're going to have to do different things depending on whether it runs on Windows, OSX or Ubuntu.

      Why? Little things like figuring out which is the user's default recording device, and using it might be different on different platforms.

      Or in theory it's supposed to work, but currently the current Java release for the current OS release is buggy, so the workaround meantime is "...".

      If you want a polished end product you have to take care of stuff like that.

      --
    10. Re:"many developers are so intrigued" by colmore · · Score: 5, Interesting

      Oh whatever, this is news.

      There hasn't been a successful new systems programming language since the introduction of C++ almost thirty years ago. Programming language technology has advanced a great deal since then. A new systems language is a very big deal, and Google is playing very fair and open with it.

      Quit bitching.

      --
      In Capitalist America, bank robs you!
    11. Re:"many developers are so intrigued" by Anonymous Coward · · Score: 3, Interesting

      I'm currently working with a relatively large Python app that we deploy to servers running Linux, Solaris, and (unfortunately) HP-UX. The same codebase works flawlessly on all of those systems. Oh, and most of the developers develop it on Windows, where it runs fine, too.

      At a previous job, we developed a Perl-based web app that ran on our clients' servers. When I left, we supported Linux, FreeBSD, Solaris, Windows, HP-UX, AIX, UnixWare and even IRIX and BSD/OS, all with the same codebase.

      I've run into significantly more portability problems with Java than I ever have with Perl or Python. I've never used Ruby or Tcl, so I can't comment there.

    12. Re:"many developers are so intrigued" by Nursie · · Score: 3, Insightful

      As someone that works on a non-java cross-platform enterprise product and has experience working with some of the big java ones I'd like to add -

      For fsck's sake please stop using java unless you know what you're doing!

      I know, the old "C is just faster" meme makes people angry. I'm sure java can be programmed well and made to be fast and efficient. So why is it every java app of any size I encounter is a slow, bloated memory hog?

      I'll be sticking to C for the foreseeable future methinks.

    13. Re:"many developers are so intrigued" by jo42 · · Score: 3, Insightful

      ...and how many years and versions of Java did it take to get to real portability?

    14. Re:"many developers are so intrigued" by Monkeedude1212 · · Score: 2, Funny

      It's because there is no need for a new systems language. Everyone knows that COBOL does everything you need it to and will last forever.

    15. Re:"many developers are so intrigued" by shutdown+-p+now · · Score: 3, Interesting

      Java was aggressively marketed as a flagship product, and language revisions were rather conservative post-release to create an image of stability. That's why it went so well.

      Go is the exact opposite of that.

    16. Re:"many developers are so intrigued" by Monkeedude1212 · · Score: 4, Funny

      I don't think COBOL was a systems language. It was for business logic.

      No, it wasn't a systems language.

      THATS how amazing COBOL is.

    17. Re:"many developers are so intrigued" by elfprince13 · · Score: 3, Insightful

      because Java programmers are never taught about memory management. It's just "magic" and so they don't think about it. C programmers who happen to be writing code in Java are a very different bunch.

    18. Re:"many developers are so intrigued" by Ragzouken · · Score: 2, Informative

      One of the portability issues that I've encountered is that in Linux Java will repeat both KeyPressed and KeyReleased events when a key is held down, but on Windows it repeats only the KeyPressed, which makes it very difficult to work out when a key has physically been released on Linux.

    19. Re:"many developers are so intrigued" by roman_mir · · Score: 5, Funny

      you don't think Go will go well? :)

      I read the spec, I noticed that Ken Thompson is one of the designers and this:

      This approach makes for clean-looking, semicolon-free code. The one surprise is that it's important to put the opening brace of a construct such as an if statement on the same line as the if; if you don't, there are situations that may not compile or may give the wrong result. The language forces the brace style to some extent.

      - if this is not done on purpose, I'll eat my hat (which by coincidence is currently made of some eatable stuff I think).

      I know why there is this new language now, forget about everything else, Ken just wanted to make a point of the correct style of opening braces and he came up with a language that does not allow you to do any different!

    20. Re:"many developers are so intrigued" by 1729 · · Score: 2, Insightful

      It can't be that large (hello python, no threads, no JIT, etc)

      Are you really claiming there are no large Python apps? A lot of people in high-performance computing (including myself) are running huge massively-parallel (either MPI or some MPI+threads hybrid model) scientific codes that are largely Python, with some computationally expensive modules written in C or C++.

    21. Re:"many developers are so intrigued" by Anonymous Coward · · Score: 3, Interesting

      I hate to sound like a Wikipedia faggot, but citations please?

      We have an internal RoR app that's used by quite a few people at once. We tried using JRuby a few months ago, but it just couldn't handle the load as effectively as Matz's Ruby implementation, which itself isn't all that good. This was on the same Solaris server, so I don't think it was a problem with Java or the server.

      From our experience, JRuby is just too damn slow for anything serious. It takes the slow runtime of Ruby, adds in the bloat of Java, and in the end gives a really unpleasant experience to the users.

    22. Re:"many developers are so intrigued" by cheesybagel · · Score: 2, Interesting

      Ken Thompson also developed Plan 9, and Inferno, and Limbo (what?). Yes, Limbo was a programming language. With concurrency support. While all of these were kinda neat, they never took off.

      I looked at Go when it was released, but was underwhelmed. Seemed like another Java wannabe to me. The news article is just plain wrong. How can Go have the same productivity of Python when it is a statically typed language? I mean, try reading some actual Go code, and Python code, and then tell me which one is easier to read, and write.

    23. Re:"many developers are so intrigued" by sorak · · Score: 2, Interesting

      Nah. It's like Perl; In high demand because nobody knows how to use it. <ducks>

    24. Re:"many developers are so intrigued" by ajs · · Score: 2, Informative

      Can I get some sense of how you determined that Go was proprietary, then?

      I don't think it's reasonable to call any language proprietary whose spec is licensed under CC-A and managed by an open team outside of the company. That's really hard to back up, and I'd need some kind of source for that.

      C# it ain't.

    25. Re:"many developers are so intrigued" by __aagmrb7289 · · Score: 2, Funny

      Do NOT pass GO, do NOT collect $200!

    26. Re:"many developers are so intrigued" by Frankie70 · · Score: 2, Informative

      Oh - I so agree.
      Java is portable on Windows & Solaris (haven't used Java on Linux, so no idea).
      Most other OS's you will get 90% of your stuff working. But chasing down the
      remaining 10% OS specific issues will take 90% of your time.

    27. Re:"many developers are so intrigued" by BitZtream · · Score: 4, Insightful

      I run into more portability issues with Python than I ever have with Java, and thats just between Windows and Linux, the same could be said for Ruby. I haven't dug deep enough into perl to say the same for it. I avoid TCL ever since I stopped using eggdrop, vile creature that it is.

      I've written a little python, a lot of ruby, and a fair amount of java, it beats both those others for cross platform issues in my experience, and I'm ignoring Ruby on DOS as thats a whole new set of issues and isn't really even a fair comparison since the OS is so far different, I don't think there is a DOS JVM, and I have no idea about python and DOS.

      I absolutely HATED Java apps before I was forced to start writing Java code myself. What I learned VERY rapidly is that Java apps suck if you're a shitty programmer. If you don't have any clue how to write code and no clue about the common pitfalls of cross platform dev, it can kill you. 9 times out of 10, its because the programmer did stupid shit that he/she shouldn't have that is clearly OS specific when its a cross platform compatibility issue. Likewise all the slow beasts of Java 'apps' that you come across generally suck because the programmers have no idea what they are doing. Stupid crap like doing string concatenation one character at a time using a string variable rather than class designed for string concatenation and proper allocation for it.

      Java isn't the problem. Much like VB, shitty Java programmers are the problem. Java and to a much larger extent, VB draw in people who aren't programmers because of the marketing, and then we see tons of crappy Java apps because the language is in fact, TOO easy to use.

      Say what you want about Java in the past, it could be true. Today? Muh, there is very little if any truth in your statements at this point in time.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    28. Re:"many developers are so intrigued" by BitZtream · · Score: 2, Interesting

      Because most Java programmers suck.

      I know EXACTLY what you're talking about. Until I was forced to write in Java, I felt the EXACT same way.

      Then I heard about how much of Google is powered by Java, and then finally I was forced to work with it for my day job.

      As someone who prefers C, if you can obtain the performance you want in any higher level language the C/C++, then you can probably do it in Java. I've written an imagine processing library for SVGs that uses Apache Batik to convert my generated SVGs to bitmaps for display. The port of the C code I originally had to Java was actually faster long term than the C code. Mind you, its not real heavy lifting and in reality the C code was doing some retarded things parsing the XML (like reseralizing for no good reason between steps) so I know for a fact the C code would be faster than it was, but considering I can process several thousand of svg files in a second on an old P4, it certainly far exceeds my requirements and took me almost no time to write.

      Java really isn't bad, Java Apps do generally suck, and you should still be weary of Java apps. Treat them just like a VB app. Its probably a pile of shit, but there are good programmers working with Java that can make really nice, fast, well behaving applications.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    29. Re:"many developers are so intrigued" by Eli+Gottlieb · · Score: 2, Insightful

      Go forces the use of garbage collection and makes me use its included batteries for concurrency. It's an applications-programming language, not systems-programming.

    30. Re:"many developers are so intrigued" by mustafap · · Score: 2, Informative

      I agree. Sounds like his python code is responsible for most of the climate issues we have :o)

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    31. Re:"many developers are so intrigued" by RAMMS+EIN · · Score: 3, Insightful

      The other question is what portability really means.

      Many people think that portability means "your code will run on multiple platforms".

      With Java, I feel it is more a case of "your code will run on the Java platform".

      The distinction is that, in the latter case, a lot of the facilities that have been implemented for existing platforms have to be re-implemented for the new platform. I feel a lot of effort has gone into creating things for Java that already existed outside it.

      By contrast, many other programming languages attempt to fit in and play nice with whatever platform they end up being deployed on. Where Java has your programs run inside a virtual machine which is more or less the same across native platforms, other languages have you create programs that are just like the programs your native platform knows how to run. Where Java has people build functionality on the facilities provided by the virtual machine, other languages have you build functionality on the facilities provided by the native platform.

      The approaches are different, and lead to a vastly different feel both during application development and when using an application developed using one approach or the other. Both approaches have their pros and cons.

      Java's approach has the advantage that, absent deficiencies in the specification and bugs in the implementation, the Java platform is the same everywhere, regardless of native platform. The disadvantage is that you lose access to the native platform's facilities that are not also in the virtual platform. It also means that your software is almost certain to not really fit in with the native platform.

      The other approach leaves you with access to the native platform's facilities, which is a double-edged sword. The disadvantage is that many of those will not be available on all platforms, and code that uses them will therefore be non-portable. The advantage is that you can make your software do anything that would normally be expected of an application on the native platform. Software developed using this approach will thus tend to integrate better with the native platform, and feel less foreign to users.

      --
      Please correct me if I got my facts wrong.
    32. Re:"many developers are so intrigued" by Hurricane78 · · Score: 3, Insightful

      Yeah. And all those are *extremely* slow interpreted scripting languages. While java on the server (its actual main base) is actually half as fast as C. Which is really nice for code that does all the type checking for you and is machine code independent.

      The reason that Java WAS not on every platform is... well, have you seen the size of its standard libraries (J2SE, J2EE)?? All those language’s *built-in* languages are a joke to what Java offers out of the box.

      Sorry, but for professional big projects, those languages can’t hold a candle to Java. The only one that can do that, might be .NET. But that one’s by definition not portable. (No, the Linux version of it doesn’t count, for it is way outdated.)

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
  3. Name by Idiot+with+a+gun · · Score: 2, Interesting

    Whatever happened to the previous language named Go? Did the creator settle with Google, or did Google just ignore him?

    1. Re:Name by BhaKi · · Score: 5, Informative

      There has been no settlement because there has been no legal dispute. There has been no legal dispute because the creator didn't trademark the name 'Go'.

      --
      The largest prime factor of my UID is 263267.
    2. Re:Name by perltooc · · Score: 3, Funny

      Maybe they should just call it "Goo". Then they can call the subsequent version "Gooo", and so on.

    3. Re:Name by schon · · Score: 5, Funny

      Except that in order for a non-registered trademark to be valid, it must be well known.

      Sorry, but "hey, I created a language - it was used by both me *and* my ex-girlfriend's dog five years ago" doesn't cut it.

    4. Re:Name by derGoldstein · · Score: 3, Insightful

      Another element that plays a role is Google's "ass-ness". Does anyone think for a second that they didn't bother *Googling* the damn name prior to release? There is and *was* a Wikipedia entry, it'd probably be one of the first results. They simply switched on the "Apple Mode" -- grab the name, and let's see who has the balls to sue.

      --
      Entomologically speaking, the spider is not a bug, it's a feature.
    5. Re:Name by cerberusss · · Score: 2, Funny

      Whatever happened to the previous language named Go? Did the creator settle with Google, or did Google just ignore him?

      The previous version was renamed into in "Go, Next Edition". It's GoNE.

      Oh, and please try the fish.

      --
      8 of 13 people found this answer helpful. Did you?
  4. Bright future to go. by zeromorph · · Score: 4, Insightful

    It is an interesting concept for a low-level language and could be pretty important. And since the gccgo compiler has been accepted by the gcc steering committee (link), I am expecting Go to stay and prosper.

    --
    "Hannibal's plans never work right. They just work." Amy/A-Team
    1. Re:Bright future to go. by pslam · · Score: 2, Interesting
      I liked the look of the language as far as it went but what disappointed me a bit was that it still didn't seem suitable for lower level stuff, e.g. embedded and kernel work. Those guys are still stuck with C, which serves them well but isn't as nice as it could be either. If I wanted a replacement for C in userland without so much complexity as C++ or Obj-C offer, I'd think Go would be a relevant choice, although it probably needs to mature a bit first.

      I like Go, but it's wrong to call it a systems language. I have no idea why they're marketing it as such. I can't think of a single system (as in, low-level, embedded, or even PC system software) where it would be suitable.

      What they should have said is it's a NATIVE compiled language, or maybe just 'static'. There's huge advantages to that, even if it's not suitable for systems programming. Sadly, I think that niche is already pretty much covered by Java and C#.

    2. Re:Bright future to go. by Lemming+Mark · · Score: 2, Informative

      I think when they're saying "systems" they really mean stuff like network servers, etc. I guess that is systems code so it's fair up to that point. But, unlike C, it's not suitable for *all* systems-level code (low level libraries, kernel stuff, embedded stuff), which seems a shame. So they're overreaching the language's scope somewhat there ...

  5. Re:If I google go... by kirill.s · · Score: 2, Interesting

    It's still surprising to see the Go Programming language on the 4th place when searching for "Go".
    How could it be so high based on just incoming links alone? It seems rather unpopular, considering how few of us ./ users know of it.

  6. Bad infomercial by captaindomon · · Score: 5, Insightful

    This summary reads like a bad infomercial. "How likely is it to really take over?" not likely at all, and nobody would ask that question unless they worked for Google Marketing.

    --
    Just because I can hook a shark from a boat, I do no offer to wrestle it in the water.
  7. Re:If I google go... by delinear · · Score: 2, Insightful

    Well we could suspect nefarious link ranking by Google, but it's more likely the fact that anything Google does is instantly linked from every news source on the planet, including the big, respected media websites which generate a lot of page rank and don't want to be seen as missing out on the Next Big Thing.

  8. who's using it? by larry+bagina · · Score: 5, Funny

    "C++ is too hard, I'll use java. java is too hard, I'll use C#. C# is too hard, I'll use python. Python is too hard (boner?), I'll use ruby. ruby is too hard, I'll use Go." -- GoFanBoy (formerly RubyFanBoy, formerly PythonFanBoy, formerly ...)

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

    1. Re:who's using it? by zach_the_lizard · · Score: 2, Interesting

      Or I'll use Haskell instead. I love seeing things like orderWords = unwords. sort. words. Yum.

      --
      SSC
    2. Re:who's using it? by Tumbleweed · · Score: 4, Interesting

      "C++ is too hard, I'll use java. java is too hard, I'll use C#. C# is too hard, I'll use python. Python is too hard (boner?), I'll use ruby. ruby is too hard, I'll use Go." -- GoFanBoy (formerly RubyFanBoy, formerly PythonFanBoy, formerly ...)

      Ruby is considered easier than Python? C# is considered easier than Java?

    3. Re:who's using it? by hans_e · · Score: 3, Insightful
      You forgot the final logical step.

      "Go is too hard. I'm going to write my own language."

    4. Re:who's using it? by Midnight+Thunder · · Score: 2, Insightful

      Ruby is considered easier than Python? C# is considered easier than Java?

      It doesn't really matter when you reason for changing language is more hype based, rather than considering what problem they are really solving.

      --
      Jumpstart the tartan drive.
    5. Re:who's using it? by slim · · Score: 2, Insightful

      Haskell's lovely - but you need to be /clever/ to use it. It's not going to unseat procedural languages.

    6. Re:who's using it? by ClosedSource · · Score: 2, Insightful

      "C# is considered easier than Java?"

      Well, at least by me. You don't have to deal with checked exceptions or use adapters for (some) event handling.

    7. Re:who's using it? by Abcd1234 · · Score: 2, Insightful

      And anyone who's programmed in a functional style understands how nice it is to have proper, lexical closures at one's disposal, as opposed to hacking it with inner classes and hoping for the best.

    8. Re:who's using it? by Lord+Ender · · Score: 2, Informative

      C# was developed as a reaction to Java. They were trying to make a language with Java's features but without its warts. I'm sure it is easier than Java for many things.

      Ruby and Python were both developed as reactions to Perl (again: all the features, sans the warts). Python tried to be easy for beginner programmers (and was successful; it's taught in many intro classes). Ruby tried to be easy to experienced programmers. If you're trying to to real OOP, you will find no easier syntax than Ruby's.

      So, at least in some ways, both those languages are "easier."

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    9. Re:who's using it? by Unoti · · Score: 2, Insightful

      Explicitly declaring thrown exceptions is one key thing I like *better* about Java over C#. It's a good idea, not a bad one.

    10. Re:who's using it? by shutdown+-p+now · · Score: 3, Interesting

      Haskell is lovely because it lets you write extremely elegant and witty code that is also utterly unreadable. It's like it went so far away from Perl that it came back to the same thing from a different direction - the more clever Haskell code has to be extremely carefully deconstructed, operator by operator, to understand what it does, much like you had to do the same with Perl's @#$ magical expletives.

      I absolutely love Haskell, and it's type system is second to none, but it's not a productive language for vast majority of typical software written today. You need to look at languages that are specifically designed to tackle the problems (of working in a team, producing readable code, not breaking code with third-party library updates etc) there.

    11. Re:who's using it? by u38cg · · Score: 2, Funny

      Hah. I found a book in my library the other day called "Real World Haskell". I was laughing so much, I had to be told to be quiet.

      --
      [FUCK BETA]
  9. already invented? by agentultra · · Score: 2, Insightful

    Why pick Go when there's D which already has a pretty stable platform to develop on?

    1. Re:already invented? by ObsessiveMathsFreak · · Score: 3, Informative

      How do you make a concurrent process in D? Perl? Ruby? C? Lisp?

      Go actually provides a usable, platform independent method of concurrent programming that doesn't involve mucking about with pthreads, or constants like &MMDIPS_MULTICORE_AGG. You just call "go func()" and a new process is spawned.

      --
      May the Maths Be with you!
  10. it's an interesting case by fusiongyro · · Score: 5, Interesting

    I wrote a small utility for detecting duplicate files in Go back when it first came out. I haven't really kept it up to date so I'm not sure if it compiles with the current version.

    It's an interesting language. Apart from its lineage, which is interesting and great if you're into Plan 9, it seems to me to be an old-school procedural shot across the bow of the current crop of compiled functional languages (ML, Haskell). It's hard to place the language in any camp, because it does furnish functional programming and object-oriented features without really committing to the dogma of either one. It gives you a ton of interesting features that seem to work really well in concert, but it's also missing some core functionality. I can live without exceptions but I'm not sure I can live without type genericity in this day and age. And a lot of other programmers have their own little nits with it.

    Overall, it seems great. But I seldom need code compiled to the machine, and I'm conversant with and fond of the compiled FP languages so I tend to rely on them for these kinds of utilities. I suspect at Google this will eventually become the de-facto language for implementing protocol buffer servers. If and when that happens, the language will have a guaranteed niche for a long time to come, whether or not it wins over hearts and minds outside the giant.

  11. Alternatives? by Filik · · Score: 4, Interesting

    Could anyone post a list of alternative modern programming languages that equally handles parallelism as well, that are still being actively developed, and their pros and cons compared to Google Go? I'm interested in learning one of these, I just can't find any easy overview anywhere (all mentioned in wikipedia are pretty old so lots must be missing...). Surely Haskell isn't the latest such project, there must be lots of others just around corner?

    1. Re:Alternatives? by binarylarry · · Score: 3, Informative

      Scala.

      Pros:
      Built on a mature, polished platform (Java)
      Nice language syntax
      Functionalish constructs are available
      Great parallel framework (actors) along with the functional aspects

      Cons:
      No native AOT support
      IDE support is still newish

      --
      Mod me down, my New Earth Global Warmingist friends!
    2. Re:Alternatives? by Anonymous Coward · · Score: 2, Informative

      erlang has parallelism much more in the core of the language.

    3. Re:Alternatives? by Coryoth · · Score: 5, Interesting

      I can't give opinions on all of these (and some are still in development at this time anyway), but here's a list of some languages with paralellism designed in:

      • Erlang -- Very popular message passing/actor model based language.
      • Scala -- A functional language with actor model concurrency for the JVM.
      • Oz -- An exceptionally multiparadigm language.
      • Occam-pi -- The modern version of the old occam for transputers; CSP style concurrency (I believe).
      • Chapel -- Cray's parallel programming language for supercompters. Cray's entry into DARPA's HPCS programming language competition.
      • X10
      • Fortress -- Sun's language for serious scientific computing. It was Sun's entry into DARPA's HPCS programming language competition, but lost and is now open sourced.
      • Eiffel SCOOP -- An effort to take a CSP model and make it elegantly compatible with object oriented programming
  12. What innovation? by piranha(jpl) · · Score: 5, Interesting

    So, what has Go brought to the table?

    Go is designed with internal messaging capabilities, intended to simplify the creation of applications running on different nodes, and improve their performance.

    "It's a way to try to address how to write concurrent software that's more robust, as opposed to using the old threading model of Java and others," Voss said.

    ...

    In this regard, Go offers "a new programming paradigm" that makes it easier to solve a wide variety of programming problems by simplifying many types of parallel processing.

    No, Go doesn't bring anything new to the concurrency table. The two things I've seen about Go concurrency that are regarded as special are M:N/"green" threads and CSP-style channels.

    M:N threading is an implementation detail of a language runtime. Whereas the standard library of a language might specify how threads are available to client applications (programs written in the language), it's best left to the implementation (runtime or compiler) to decide how to translate those threads onto the machine. Some implementations might want to focus on scalable, high-performance threading, and so they'd choose M:N. Some others might emphasize simplicity, and map language threads directly to OS threads. What Go has done is standardized this implementation detail into the language specification. (I don't think that's a good idea, but that's a matter of taste.) Other language implementations offer M:N threading, including GHC and (I think) Erlang.

    On channels: they're cool. I love them. But there's a lot of prior art here, and many languages have great CSP-style channel libraries written for them that offer the same great flavor of relatively safe message passing and alternation between sets of channels:

    In summary, I just don't get what the buzz with Go is about, besides that it's Google's very own language.

    1. Re:What innovation? by ajs · · Score: 2, Interesting

      You're making a very old argument. One that was made by C purists when C++ was introduced: that simply adding syntax for something doesn't make your language special. C++ users disagreed and many defected from the C camp. Were they right? Possibly.

      Of course, the smalltalk users were also right: these were not new features. C++ was just applying previously developed tools to the C language.

      None of that mattered in the long term.

      Is Go the new C++? I have no idea, but I don't think you're taking an objective, historical view, here.

  13. Go considered harmful by StripedCow · · Score: 3, Funny
    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
  14. Re:Go fuck yourself by cmiller173 · · Score: 4, Insightful

    30 years ago there were enough programming languages "already". What do you need that can't be handled by COBOL, FORTRAN, Pascal, Ada, ANSI C and assembly language?

  15. This article asks the tough questions by Sloppy · · Score: 2, Funny

    "Mr. Burns, your campaign has the momentum of a runaway freight train. What makes you so popular?"

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  16. Re:No multi-dimensional arrays by siride · · Score: 2, Informative

    And this is most funny because C *does* actually have multi-dimensional arrays (at least statically sized ones).

  17. Re:No multi-dimensional arrays by siride · · Score: 2, Informative

    You can allocate global multi-dim arrays. But anyways, it's not a big deal. Make a macro or a function to do the address translation for you and then forget about the impl. details. That's what FORTRAN effectively has to do. That's for C, where there should be no performance loss. For less low-level C-derived languages -- well, I guess if you need performance, you wouldn't be using them.

  18. Whitespace by CaptnMArk · · Score: 2, Interesting

    Too bad they added significant whitespace. I'd support a semicolon-less syntax, but not at the cost of significant whitespace.
    Perhaps an alternate function call syntax or using {}instead of () in expressions would work.

    1. Re:Whitespace by Abcd1234 · · Score: 2, Insightful

      Quick being an obnoxious, pedantic jackass (though, kudos for once again demonstrating the Greater Internet Fuckwad Theory).

      It's clear the OP meant "significant indentation", and it disappeared back in the days of Fortran until Python popped up on the scene and everyone suddenly decided it was a good idea again.

  19. Eh? by thePowerOfGrayskull · · Score: 5, Insightful

    angry tapir writes with news that Google Go seems to be cutting a wide swath through the programming community

    He may write that, but that's not what the article says:

    While Go is still a work in progress, some developers are so encouraged by its features and design that they have started using it to build noncritical application

    What experiences, good or bad, have you had with Google Go, and how likely is it to really take over?

    Um, take over what? Is this a serious question? The answer here is "never" -- for the same reason that no single language will ever "take over" the software development landscape. There is no one tool fit for every job.

    1. Re:Eh? by Auroch · · Score: 2

      Um, take over what? Is this a serious question? The answer here is "never" -- for the same reason that no single language will ever "take over" the software development landscape. There is no one tool fit for every job.

      I'd be inclined to agree with you, except I once felt the same way about search engines and chinese toys.

      --
      Quartz Extreme and Core Image. Are there any other real reasons to spend all that money on generic hardware?
  20. Re:Go fuck yourself by dskoll · · Score: 5, Funny

    I'll let you know if/when my program halts...

  21. What you're missing is ... by Auroch · · Score: 3, Interesting

    But there's a lot of prior art here, and many languages have great CSP-style channel libraries written for them that offer the same great flavor of relatively safe message passing and alternation between sets of channels:

    What Go has done is standardized this implementation detail into the language specification

    The two things I've seen about Go concurrency that are regarded as special are M:N/"green" threads and CSP-style channels.

    I'll agree with your points, but many vehicles have wheels and motors and there is still a clear preference (or at least avoidance) of certain brands and models. Go brings things together well, and is a 'better' option because it does integrate so much prior art (as you have said) into a great package.

    --
    Quartz Extreme and Core Image. Are there any other real reasons to spend all that money on generic hardware?
  22. Re:No multi-dimensional arrays by shutdown+-p+now · · Score: 2, Informative

    And this is most funny because C *does* actually have multi-dimensional arrays (at least statically sized ones).

    C99 has non-statically-allocated (albeit still non-resizeable) arrays, including multi-dimensional ones.

  23. Go! by jalefkowit · · Score: 2, Funny

    Go? That's the language that Toyota uses to write their firmware, right?

  24. Nirvana Quest by strangeattraction · · Score: 5, Funny

    I was one of those developers chafing at the bid to get my hands on Go. Once I started I never looked backed. I was able to write my own version of HelloWorld in half (that is 1/2) the time it took me to do it in C and it was bug Free with no memory leaks. I think that pretty says it all. If you're looking for a programming language that solves all your coding problems look no further. Now that I have abandoned Java my manually linking programs with xml skills have declined sharply. Similarly after abandoning Lisp my ability to match parenthesis's has almost vanished. No matter, with Go I perceive the universe in my belly button.

  25. Re:Line Numbers? by al.caughey · · Score: 2, Funny

    What's with the line numbers? I thought we buried those in the same unmarked grave as disco and rotary dial phones.

    Those line numbers, they're

    Ah ah ah ah stayin' alive stayin' alive

    (apologies to the Brothers Gibb)

  26. Re:No multi-dimensional arrays by ajs · · Score: 2

    Go looks nice, but it still does not have real multi-dimensional arrays. This is the key issue that keeps me using Fortran.

    Because it's spurious optimization.

    Modern HLLs (and even most of the languages that live in the spaces between machine language/C and HLLs) spend so much time doing bounds protection, reference counting, garbage collection, constructing, destructing, etc, that if you find yourself in need of the extra cycle indicated by a double-indirect lookup, then you need to use a lower level tool for that code section, not a 2D array. In many languages this is commonly found in image processing and large math libraries. PIL for Python, PDL for Perl, etc. are designed to perform these low-level operations in a way that the high level language can manage cleanly.

    You don't need a huge tumor on the side of the language syntax just so that your reference counted, garbage collected, safe accessed arrays are stored without an extra pointer. That would be absurd.