Go Programming Language

category: general [glöplog]
I think it has some potential, but it's not like it's plugging any serious hole on the programming language market, and it really depends on where will Google take it from here.

Well they can basically take it to heaven or hell :P. Kidding aside, I think D would have been a better solution instead of Go.
added on the 2009-11-12 11:01:46 by decipher decipher
Go away. Nothing to see there.
added on the 2009-11-12 12:52:36 by raer raer
Meh, Rebol 3.0 is nearing beta!
added on the 2009-11-12 13:34:48 by Intrinsic Intrinsic
I don't know if you've checked out D lately (they're working on 2.0), but it's now almost as complicated as C++. It also inherits the strict class hierarchies from C++, something which Go has managed to eliminate. I think D aims to be "C++ done right", whereas the designers of Go have decided to head in a different direction.

Regarding the lack of exception support, I think the problem is trying to implement exceptions which will work with the 'Goroutines'. Maybe exceptions are a bad idea in modern multi-threaded programming, thoughts?
added on the 2009-11-12 13:37:04 by Deltafire Deltafire
Yes, D2 is almost as complicated as C++. It's not that easy to learn.

Yet anyone can use metaprogramming with D without being superhuman. It's all about having less corner-cases imho and CTFE helps a lot.

The fun fact is that D is removing features from the language to put them in standard library (like Scala do) whereas Go designers have to implement containers into the language because it lacks in the metaprogramming department.

I wonder what happen in Go with automatic interface implentation when you mistype a letter in an overrided function name. You won't fit the interface requirements yet the compiler won't tell anything.
added on the 2009-11-12 13:54:02 by ponce ponce
#ponce > the compiler can complain when you try to use the object which doesn't respond to a given interface. OCaml has been doing that for years, the compiler infers an pseudo-type that the object must implement, and let the type 'open' (you can add stuff to it). At the call site, the compiler check that the argument (any instantiated object) possess the required method and comply with the asked types. If not, you get a type error.

I haven't tested it in Go, but it sure can be done, even more easily than in OCaml because you have to specify what goes into an interface (no inference involved).
added on the 2009-11-12 14:22:21 by Twinside Twinside
Twinsode: right, i was just thinking the compiler wouldn't complain at the call site of the method, but when casting to Interface. It's a neat feature anyway
added on the 2009-11-12 17:27:48 by ponce ponce
Great ! Another redundant language made to force incompatibilities between systems, like objective-C for apple or C# for ms

http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber= 36768

C# isn't MS only, an Mono provides a good port for the .NET libraries
added on the 2009-11-12 20:29:11 by Marq Marq
I like the pedigree go-lang has. And its static-binary / small runtime design look like a good fit for demos.

For small binaries (64k) it looks like the main task is to rewrite the "runtime" pkg

The FFI's main issue right now is that it does not support callbacks, so it's going to be a problem to hook up with some existing c/c++ libraries. It's one of my only gripes about it, I would've expected an even more transparent FFI.
added on the 2009-11-12 21:32:53 by _-_-__ _-_-__
And regarding binary size, the hello world example uses the "fmt" package.

When compiling without fmt, the binary goes down to 73kb

added on the 2009-11-12 21:51:45 by _-_-__ _-_-__
It's interesting. Written by people who were involved in writing C to begin with, and the unix operating system. And has experience with programming and operating system development all the way up till now. (plan9 etc).
If anyone should be making a new languange, these should be good candidates.