Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?

Go Version 1 Released 186

New submitter smwny writes "Google's system programming language, Go, has just reached the 1.0 milestone. From the announcement: 'Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows. ... Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net. A complete list of changes is documented in the Go 1 release notes. That document is an essential reference for programmers migrating code from earlier versions of Go. ... A similar process of revision and stabilization has been applied to the App Engine libraries, providing a base for developers to build programs for App Engine that will run for years.'"
This discussion has been archived. No new comments can be posted.

Go Version 1 Released

Comments Filter:
  • by cgt ( 1976654 ) on Wednesday March 28, 2012 @03:32PM (#39499787)
    It is supposed to be a systems language like C, but better. It's sort of like Pythonic C (very expressive, but still C like).
  • by PCM2 ( 4486 ) on Wednesday March 28, 2012 @03:51PM (#39500027) Homepage

    Maybe I'm too old-school, but when I think "systems language", I think about something that would be good for embedded devices or kernel device drivers, stuff that's pretty close to the metal. I wouldn't use Go for that, garbage-collection and concurrency mean there's heap traffic and IPC signaling under the hood that I probably want to control.

    Java is used in a lot of embedded systems, and it has garbage collection and concurrency.

    Unlike Java, though, Go compiles to native binaries, rather than running on a VM (though maybe the real difference is debatable with modern JITs).

  • by Cenuij ( 526885 ) on Wednesday March 28, 2012 @04:16PM (#39500339)

    I don't think you fully grok what they have achieved. Google employs only a handful of people who work on Go, and probably not all them work full time on it (though maybe that's not true lately in the last release cycle).Let me give you a quote from an accomplished (hint, you use his code every day) C & C++ hacker on using Go:

    "In my experience Go is probably 5-10x faster than C or C++. I estimate that programs that take me half an hour to write in Go would take me about 2½ hours in C and 5 hours in C++."

    Then when you only have to wait about 10 seconds or so for the whole Go std library *and* all your own libs and binaries to build, you can see it's value over waiting for large C++ projects (of which Google has many) to build.

  • by Raenex ( 947668 ) on Wednesday March 28, 2012 @04:39PM (#39500707) []

    What is the purpose of the project?

    No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:

    • Computers are enormously quicker but software development is not faster.
    • Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
    • There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
    • Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
    • The emergence of multicore computers has generated worry and confusion.

    We believe it's worth trying again with a new language, a concurrent, garbage-collected language with fast compilation. Regarding the points above:

    • It is possible to compile a large Go program in a few seconds on a single computer.
    • Go provides a model for software construction that makes dependency analysis easy and avoids much of the overhead of C-style include files and libraries.
    • Go's type system has no hierarchy, so no time is spent defining the relationships between types. Also, although Go has static types the language attempts to make types feel lighter weight than in typical OO languages.
    • Go is fully garbage-collected and provides fundamental support for concurrent execution and communication.
    • By its design, Go proposes an approach for the construction of system software on multicore machines.
  • by Zoinky ( 915530 ) on Wednesday March 28, 2012 @07:55PM (#39503023)

    As it mentions in the code, it's an approximation of pi using concurrency. The number of "goroutine" calls used determines the accuracy. In the code comments, they refer you to [] if you want more information on the algorithm they are using. Increasing the accuracy is just a matter of increasing n in their example.

  • by jrumney ( 197329 ) on Wednesday March 28, 2012 @08:59PM (#39503717)
    A "character" data type has no meaning beyond representing codepoints. There are languages, such as Hindi (and other South Asian languages) and Arabic, where any attempt to output a single character at a time will result in an unreadable mess due to the fact that characters change their shape depending on what comes before or after. So a better rule is not to use strings to represent a character, but to always output whole strings, never individual characters.

Genius is ten percent inspiration and fifty percent capital gains.