

Go At Conformal - luriel
https://www.cyphertite.com/blog.php?/archives/7-Go-at-Conformal.html

======
lukeholder
I am getting interested in Go, and this is a very silly complaint, but I think
the name of the language is very bad for easier google searches. I don't know
about most others, but google can sometimes be my first point of contact to
lookup a function or class in a launguage.

For example: try searching for "ruby map" vs "go map". Google just doesn't
parse the keyword 'go' too well. "go lang map" works far better but who wants
to refer to a language as "go lang"

This DOES have an effect on adoption and the feeling the documentation is bad
as the author comments on.

/rant

~~~
heretohelp
golang is the standard way to find things, Google understands how to search
for programming related stuff too.

~~~
lukeholder
what is the name of the language golang or go? erlang or er? Seems like a
minor confusion but can be frustrating for the uninitiated.

~~~
heretohelp
Erlang is Erlang.

Go is Go, but golang is handy nickname.

------
cageface
Great to see Go getting more attention. I think it has some real potential to
take off. There's a big hole between Java and Python that it could fill with
the right kind of community support.

~~~
mseepgood
Derek Collison (@derekcollison, Apcera founder & CEO, former CTO and Chief
Architect Cloud Application Platforms at VMware) ‏tweeted yesterday:

"Prediction: Go will become the dominant language for systems work in IaaS,
Orchestration, and PaaS in 24 months. #golang"

<https://twitter.com/derekcollison/status/245522124666716160>

~~~
pjmlp
And replace all the neat stuff we're doing in JVM/.NET systems?

It remains to be seen.

~~~
genwin
I don't know about JVM, but the concurrency features of Go are amazing, far
better than multi-threading in .NET IMO. If an app can benefit from
concurrency (and major apps usually can), Go may be a better choice than .NET.

~~~
pjmlp
Better than asynchronous APIs, low level threading, thread pools, tasks, TPL,
async/await in .NET?

Or better than Akka, java.util.concorrent?

I am not convinced, even after doing some small applications in Go.

~~~
genwin
YMMV. With a relatively small bit of concurrency code, for example, I can poll
100 RSS feeds virtually simultaneously; e.g. if the maximum return time of the
remote sites is 5 seconds the whole thing finishes in < 6 seconds. If I wanted
to bump that up to 1K or 10K feeds I could do that by changing only a
constant, because the goroutine for each feed takes only 4K of memory (versus
1MB per thread in C# by default). There may be a way to achieve the same
functionality in .NET but having done some multi-threading C# code I doubt it
would be as straightforward.

~~~
pjmlp
Have you ever used tasks or the TPL?

~~~
genwin
No, that's the first I heard of it; I looked it up. Thanks, I'll keep this
mind if I work on C# again.

------
djhworld
I really like Go, but it just doesn't quite reach the point where I want to
use it for everything I do - mainly because it lacks generics.

The philosophy of Go is to keep things simple I know, and generics would
inevitably add some degree of complexity to the language, but I feel that
addition of complexity would be worth it.

Without generics it just feels like you're writing in Java <= 1.4 again

~~~
mseepgood
Go has some selected generic data types: array, slice (think of ArrayList<T>),
map, channel, func. I found these to be sufficient for 90% of my problems. In
9% of the cases I craft non-generic data structures based on interfaces, which
are specific to my problem domain. For the rest I can live with interface{}.

~~~
CJefferson
I really dislike languages which decide to bless some special data-structures,
but then won't let me add my own generic data structures.

Of course, I really love data structures, so I can understand other people who
just want to get on with things, and are happy to slightly abuse some built-in
data structures to get most of the way there.

~~~
luriel
Go doesn't stop you from building datastructures, actually is really nice for
building datastructures.

It simply doesn't provide a simple way to build some kinds of _generic_
datastructures, but when the ones provided by the language are not enough it
usually means your problem is specialized enough that a custom datastructure
is best anyway, and Go makes that pleasant and easy.

And then there are interfaces, which are a kind of "generics" of their own.

------
ctp
Interesting to note the organizational and social aspects of the language
being discussed over the "feature set" - does the philosophy of a language
(such as encouraging clarity and simplicity) matter more for creating good
software?

"if you give clever people clever tools they will use them in clever ways"

~~~
chipsy
It almost certainly does matter more. Alan Kay's admonition that perspective
matters more than smarts comes to mind.

------
nuttendorfer
>For example, I really would like to have some sort of standard widget library
in order to develop GUI applications

So, what's the best candidate for GUI applications? I think we also need an
IDE or at least a form builder akin to Visual Studio and WinForms, it's so
easy to work on GUI applications and write prototypes it's ridiculous how
other projects aren't copying this.

~~~
genwin
I agree with mseepgood. For a GUI app I likely would always choose the web
(HTML, CSS).

------
gbog
From a pythoner point of view, many if not most parts of the OP's praise of
golang would apply equally well to Python. I guess it is because the author
seem to have a C/C++ point of view.

I would like to have a pythoner's point of view on golang, so the differences
with Python would be highlighted.

~~~
dcosson
I've done primarily python for a while and just started a project in Go. Still
very new to Go, so take this all with a grain of salt, but my initial
reactions are that:

\- it is expressive. I find myself cursing and pull my hair out far less than
when I'm writing, say, Java.

\- That said it does still feel less expressive than python, but between me
just knowing python much better and stack overflow being much more full of
python answers, I can't evaluate this objectively.

\- Writing (more accurately, updating and maintaining) large applications in
python is at times very unpleasant. Pyflakes is pretty good, but bugs like a
method name from a different class being spelled incorrectly or having the
wrong number and/or types of arguments will inevitably slip into production.
I've also found that people use _private naming far too sparingly in python
(maybe just because it looks ugly?) which leads to modules that expose dozens
or even hundreds of methods to the rest of your app, a huge number of which
are unnecessary and end up being used redundantly. The fact that go is a
statically typed language built by people who have spent decades working on
huge codebases was probably the biggest draw to me.

\- Haven't used goroutines or concurrency much yet, but I sleep better at
night knowing they're at my fingertips :)

\- I feel like I've just scratched the surface of them, but Interfaces in Go
are amazing. From what I've seen so far, they seem almost as cool as the
Haskell Typeclass system.

\- One downside is it has no built-in REPL. But since it compiles so fast I'm
sure the third-party ones will get pretty good in a matter of time.

------
vorador
Does anyone know a good tutorial for go ? I tried a couple (including the
official one) and I always stopped midway because the way the concepts were
introduced seemed unnatural.

~~~
genwin
My best reference is the book "Programming in Go". The first chapter is like a
tutorial.

