Live data from Hacker News

My Opinionated Guide To Go

blog.hackingthought.com

51–60 of 73 posts

Re: My Opinionated Guide To Go

#51

"Go: Code -> Operating System -> Hardware" Is there any reason to use RVM, PVM on production while Go does not required one? I believe should be install one and only one Ruby/Python version on production. Why Ruby/Python does not required application server like unicorn/wcgi, etc? The article clearly try to make other deployment more complicated .

There's no reason to do it, but people do.

Re: My Opinionated Guide To Go

#52

Have noted this 'opinionated' trend going for quite a while, so this comment isn't about this article in particular, but can someone break down why an opinionated guide to something technical would be preferable to an impartial one? The only thing it seems to imply is that bias adds value in its own right.

I see value in educated opinions. For instance a while back I was trying to figure out how to make a web app in Python (keep in mind that, while I can program, I have zero knowledge about web things). This is what I saw: https://wiki.python.org/moin/WebFrameworks Which framework is the best? Why are there so many? Which is the easiest for my specific goals? An opinionated guide that said something like "Use Flask bec…

Beginners guides are a special case, the main focus is in getting something working with the minimum of fuss that you can understand. I do understand that expert opinions can help build confidence, but perhaps it's even better to explain matters clearly so you can make your own opinions.

Re: My Opinionated Guide To Go

#53

Docker -> Operating System This makes no sense. The runtime of Docker is the Operating System. There's no extra layer, as it's being implied. And there's no difference between Go and the other languages that makes Docker more or less useful. You can have separate Python processes without Docker, just like you'd have separate Go processes. I like Go, but this article just sets up strawmen to bring down.

The question he's addressing isn't what you can do, but what is commonly being done. You don't need RVM, you don't need Docker. Hell, you don't need Rails. But those are the idiomatic layers of the stack, for a non-trivial part of the Ruby development community.

Re: My Opinionated Guide To Go

#54

"Go: Code -> Operating System -> Hardware" Is there any reason to use RVM, PVM on production while Go does not required one? I believe should be install one and only one Ruby/Python version on production. Why Ruby/Python does not required application server like unicorn/wcgi, etc? The article clearly try to make other deployment more complicated .

It's a nonsense comparison anyway. E.g. with Java I don't have to care much about the hardware an operating system (e.g. we develop on Mac and deploy on Linux). And sure, you can use an application container. But you can also embed a webserver. E.g., we Jetty embedded and use a strict SecurityManager policy[1]. So it's more like: Code -> JVM (with security manager) [1] http://docs.oracle.com/javase/tutorial/essential…

Not sure I follow? With Go we develop on Mac and deploy on Linux. Just change the environment variable. Linux has some great built in tools for "security management".

Re: My Opinionated Guide To Go

#55

Docker -> Operating System This makes no sense. The runtime of Docker is the Operating System. There's no extra layer, as it's being implied. And there's no difference between Go and the other languages that makes Docker more or less useful. You can have separate Python processes without Docker, just like you'd have separate Go processes. I like Go, but this article just sets up strawmen to bring down.

The question he's addressing isn't what you can do, but what is commonly being done. You don't need RVM, you don't need Docker. Hell, you don't need Rails. But those are the idiomatic layers of the stack, for a non-trivial part of the Ruby development community.

Sorry for the confusion JVM = Java Virtual Machine, RVM = Ruby Virtual Machine, PVM = Python Virtual Machine. What I was trying to point out the layers of vitalization just to run an application. Docker is yet another layer on top of the operating system (a virtual machine running inside an operating system inside an operating system possible ect).

Re: My Opinionated Guide To Go

#56
post #49
post #37

Earlier quoted context omitted.

If you read any posts or listen to any talks by Google's Go team, they are a fairly modest about Go. They know it isn't as fast as it could be (since they don't have decades of compiler optimizations yet that GCC or other compilers would give). As well, it's just a newer language. One thing a lot of people don't always realize is Golang started with the Plan9 C compiler[0]. So they actually generate all the way from…

It's actually a really great fit for C# and Java developers too... C# guys like it because it's cross platform and they get to stop the madness of worrying about what version of the .Net platform is installed. It's also nice to have a single executable and not 100 dlls to deploy... no more need for an installer to do everything for you, just drop an executable. I would imagine it's similar for the java guys, especial…

Specially when we know our eco-system well enough to beat Go on feature by feature.

Re: My Opinionated Guide To Go

#57
post #5

Why does this article only compare Go with interpreted languages at the top? Go is a compiled language; wouldn't it be more fair to compare it with other languages that can be compiled, like C++, Rust, Haskell, or Lisp/Scheme? I mention this because the article acts as if getting rid of abstraction layers between the OS and the code is a new idea. No, that's how all compiled languages are... that's the point of compi…

Author here. I was comparing things that I have developed software in. It would seem unfair to compare things that I have not actively contributed production code and deploy. I mainly write web applications (services) of which C++, Rust, Haskell or Lisp/Scheme are not languages I find compelling to write web applications with. Would love to hear if you find this otherwise.

Re: My Opinionated Guide To Go

#58
post #35
post #5

Why does this article only compare Go with interpreted languages at the top? Go is a compiled language; wouldn't it be more fair to compare it with other languages that can be compiled, like C++, Rust, Haskell, or Lisp/Scheme? I mention this because the article acts as if getting rid of abstraction layers between the OS and the code is a new idea. No, that's how all compiled languages are... that's the point of compi…

> that's how all compiled languages are You mean, like Java and C# ?!

No I mean languages compiled to machine code. I guess that happens sometimes with JIT or with some implementations of these languages? In general Java and C# are run on top of portable virtual machine layers, right?

Re: My Opinionated Guide To Go

#59

Docker -> Operating System This makes no sense. The runtime of Docker is the Operating System. There's no extra layer, as it's being implied. And there's no difference between Go and the other languages that makes Docker more or less useful. You can have separate Python processes without Docker, just like you'd have separate Go processes. I like Go, but this article just sets up strawmen to bring down.

The question he's addressing isn't what you can do, but what is commonly being done. You don't need RVM, you don't need Docker. Hell, you don't need Rails. But those are the idiomatic layers of the stack, for a non-trivial part of the Ruby development community.

Docker is used by a non-trivial part of the Ruby community? I find that hard to believe.

Re: My Opinionated Guide To Go

#60
post #35

Earlier quoted context omitted.

> that's how all compiled languages are You mean, like Java and C# ?!

No I mean languages compiled to machine code. I guess that happens sometimes with JIT or with some implementations of these languages? In general Java and C# are run on top of portable virtual machine layers, right?

This is a very nuanced issue. The reference implementation of the JVM for instance will most assuredly compile some code to machine code, but it does so JIT. The developer/build server compiles to byte code that is run on a VM layer (though the distinction between the VM and a Run Time like Go's seems blurry as well).

That even leaves out Java compilers that skip the JVM step.

Post reply on HN