So whats the consensus on GO.
My company actually wants me to learn it.
Does the language have a future or is it just a momentary hype?
So whats the consensus on GO.
My company actually wants me to learn it.
Does the language have a future or is it just a momentary hype?
It's backed by Google and seems to have gained some traction for server-side web shit.
There's probably some money in it.
fad. but you can learn it to make money with it lol
There is no consensus.
I personally don't think it's very good. I feel most frameworks written with Go turned out shit, so basically what I'd be working with is shitty frameworks in a language that produces shitty frameworks. Not a good start.
Docker is pretty great though
It's shit. You can probably make some money with it but it's largely a fad. Even Reddit/HN Pajeets are already shitting on it.
But arnt they shutting on everything?
Since a competent programmer can learn it in a short time, I don't see why one wouldn't.
>seems to have gained some traction for server-side web shit.
Barely any. Go is still relatively young for a programming language, but so far what it offers for the web is honestly overall sparse and mostly shit.
Compare to Scala, which runs a surprising number of popular production web stacks and big data things.
It usually takes them at least a year to realize the newest fad is garbage. Go is so shitty that even the lowest Pajeets can tell it's trash within a few months.
Whats the major reason for them shitting on it though?
What it offers sounded pretty good.
> What it offers sounded pretty good.
Namely what did you hear?
>bash programmer
The language is pretty bad/lame. The tooling is quite bad too but getting a bit better every year. The community is just stupid.
But at least it's relatively fast and memory efficient, specially for network applications. So, my advice is to only use it for small projects like micro services.
>competent programmer
Did you mean any idiot?
It's great for aggressively multithreaded network applications, since that's what Google designed it for to replace Python. Syncthing, IPFS, and NNTPchan are all written in it.
The only thing good about it is that it compiles to static binaries. The language, package management and community are all awful and it's not even particularly fast considering how low level it is.
it's not bad, but attracts weird people
>So, my advice is to only use it for small projects like micro services.
Not even for that. Java and the other boring options plus a few more powerful / cool toys like Scala or Dart should all do better and easier so (frameworks that more than a handful of other entities use in production and contribute code to and stuff like that).
>The tooling is quite bad
What you mean?
mostly a meme language so far, also SJW infested so beware of sudden firings.
normies ain't weird, by definition
If I'm just making a trivial micro service I could just use netty/undertow/ulib/tokio directly and get way better performance than Go. Other than tokio, the languages those libraries are written in also have far better debugging and monitoring tools.
> It's great for aggressively multithreaded network applications
Yet in reality, almost no one uses it.
If you look at what's REALLY huge:
Alibaba, eBay, Twitter, GitHub, various banks, Facebook, Fetlife, Amazon and whoever else, or even CERN internally... it's largely a JVM love fest, with the various -predominantly Java and Scala- libs and distributed DBs and the like.
Not EXCLUSIVELY the JVM though, it just shows up extremely often around the performance critical parts.
...
doesn't at least ebay use Node?
>it's bad that you don't have don't learn a huge clusterfuck with a long history like C++ or Java EE
Name any other language that has better out-the-box support for asynchronous IO.
Pro-tip: you literally can't.
chapel
x10
any hpc language
Google uses Java far, far more than Go and there's no Java EE or Spring in sight. If you think generics are complicated maybe you should be doing manual labour.
I'm going to guess they have some node.js stuff.
But last time I head stuff about their infrastruture, the core functionality was stuff like Cassandra, Elasticsearch, Neutrino, parallec, lightning...
The story is the exact same as for Python. It's easy for complete newbies to learn, and it's got a bunch of hype due to google backing. Just like Python, the language itself is boring, unoriginal, and has no tagged unions or generics.
>No generics
>good concurrency model,good network libs.
Can you explain what's wrong with those quotes?
>he thinks baking large, flavour-of-the-week features into the core of the language is a good idea instead making the language's semantics clean and implementing them as libraries
You will immediately cease and not continue to access the site if you are under the age of 18.
Erlang, Elixir and Pony. For most network applications asynchronous IO isn't terribly important either. Quite a few synchronous Java frameworks are still far faster than Go in most cases and the asynchronous frameworks like Netty and Undertow are far faster than Go in basically every case.
>and has no tagged unions or generics.
Neither of these make sense in a dynamically typed language and Python's new optional typing module has generics.
>"They're not capable of learning a brilliant language"
It's patronising as fuck. He's implying Go users are too fucking retarded to learn a proper language. It's like walking into a restaurant and Rob Pike the waiter walks up to your table, hands your C++ programmer friends the main menus then hands you the childs menu and some half-eaten crayons.
Most of the programmers at Google are far smarter than Rob Pike. It's like a drooling retard telling you that you aren't smart enough to read Dr. Seuss.
it exists to keep rob pike busy, it's mediocre at everything and really only competes with python, if java 9's aot stuff pans out it won't even have a niche
It's good but be prepared to deal with the most opinionated language of all time. There's only ONE way to program in Go, and whatever you're doing is wrong. And Go will tell you that. Or not. Just silently format all your files passive-agressively on compile, changing all spaces to tabs.
What's that? A 1,000,000 line Git change? Oh, you mean Go changed all my shit?
Nice.
Its a retarded baby language use Rust instead
Docker is written in go??
it was re-written in go from python, i assume some of it's still python
Unless something has changed since I used it last, Go does not automatically format your code on compile. Instead, it seems like 99% of the editors that actually support Go in some fashion automatically runs go fmt on saved files.
And go fmt is a feature, not a bug. It immediately solves all stupid fucking formatting arguments that programmers have been having for decades, allowing programmers to spend time thinking about more productive things. Fuck your OCD, nerd, run this program that comes with 99.999% of the Go compilers in use (can't speak for GCC Go) on save and get on with your life.
Lmao wtf how can you call it good after this? It doesn't bring anything impressive to the table but takes away all your programming freedom of expression. Disgusting
It hes good and fast net/http library. But language itself is shit.
I think it is hype for now. But google can change it to be much better.
I kinda hope to se Go++
The default formatting enforces same line braces. I stopped using it the instant I got that error message.
Yes, and Kubernetes plus etcd as well.
... but the issue is ultimately that in large parts, they're more CLI admin software that then let the Linux kernel and such do the more complex stuff.
Knowledge and intellect aren't a replacement for wisdom and experience. Making a genius contribution to a Java, C and C++ open source project where quality and extend is limited doesn't make you suitable for enterprise environment. Having a PhD in "buzzword distributed buzzword machine learning buzzword" makes you a researcher, not an employed programmer. And Google is a, hippy though may look, corporation with (like every other corporation) ridiculous amount of code and (I guess) rapid development cycle. They are those use-objects-because-popular Java users that are made fun of. And those they-know-everything C and C++ users that end up fucking shit up. Listening to those that have worked on the field for twice the time as you doesn't make you an idiot.
that's a legit syntax error in go because whitespace is significant
golang.org
Any language that can call functions in the WIN32 API.
>Knowledge and intellect aren't a replacement for wisdom and experience.
In Rob Pike's case they are. He's been making the exact same mistakes for the last forty years. He's been too busy getting fucked in the ass and the tie dye from his hippy shirts has been rotting his brain.
Neat. Docker works pretty well i use it at work for java springboot
Kinda sad that it took the cake because Google supported it.
Some great software has been written in it yes, but imho at the cost of maintainability.
Nim or Kotlin Native should've won this easy to compile to binaries war.
That looks like a bad design, it can't simpify parser that much.
Both do make sense in a dynamic language. Lack of those things is the only real reason why dynamic languages are slow (that and lack of const statement).
Lack of usable builtin parametric polymorphism in particular is the single biggest plague that Python has imho, and it makes numpy far more painful to use than it could be. A language that is used for scientific programming needs a decent type system.
>Lack of those things is the only real reason why dynamic languages are slow
This is one of the dumbest things I've read all week. Shut the fuck up.
>> Kotlin Native
>> Refcounting + cycle collection in a language that has no concept of stack vs heap whatsoever.
No. There is absolutely no reason to use Kotlin native over Kotlin + JVM, unless you are doing something retarded like using Kotlin for scripting.
It's very comfy.
Half of Sup Forums hates it, though, Mostly because they're not programmers who think "simplicity=for brainlets". Competent people with actual, valid opinions against it are pretty rare.
it's just another option, fat jar vs jlink vs native
Their memory management story is incomplete:
blog.jetbrains.com
under the block Memory management.
That being said I get what you mean, but my main point was that from most of the compile to native binaries with GC with fast compile times, Go isn't great(and it doesn't even play well with other languages).
Go did some things really well though(Golang tour and it's http packages) and I hope languages like Nim and D learn from it.
Julia is fast because of multiple dispatch and parametric polymorphism. The type signature acts as a gatekeeper that allows all of the types inside to be inferred.
For this to be useful, you need to be able to take an array input and use the type of the parameter to know if it only contains a single type or if you need to check the type tag at runtime. Otherwise, you can't speed up a simple function like map. It's the reason why tracing JIT's like pypy slow down like crazy as soon as you try to use something like itertools, because there's no constraint on the return type of python iterators.
You have no idea what you're talking about and are using words that you clearly don't understand. Not supporting tagged unions and generics has absolutely nothing to do with why most dynamically typed languages are slow.
Also Swift could've gotten a big chunk of Go devs if they didn't fucking target Apple products only.
swift is as mediocre as go
> having amazing unicode support is bad
> caring about unicode indentifiers
Swift is a very nicely designed language and is far better than Go.
Sure.
But I find it just very hard to come up with reasons as to why these would have been significantly more difficult with most other languages people also did a lot of CLI with and would still do CLI with today.
Things Go did right:
small specs, language becomes predictable and easy to understand
C bootstrap makes the toolchain portable, not just for few tier1 platforms
rich stdlib, and not done bad as python
would say proper modules, no header files and utf-8 strings but that's expectable in year 2009+9
solid speed, but could be better
what did bad:
no generics, the 'generate' tool that could potentially probide macros and templates is worthless. Lack of overloading realy bloats some interfaces
dithced all existing debugging tools by using Plan9 toolchain and other weird choices
took versioning out of dependency management
gcc backend took too much time to get working and native doesn't provide near as much optimizations
Null pointers still exist
...
>when the language you're using doesn't support your paradigm so you have to improvise
Only designated shitting languages
We use it at work for writing little network services for IoT devices. It's on okay language, but I think it'd be a nightmare to write anything big in it.
I personally prefer clojure/core.async.
If all you do is write microservices, then it is pretty good. Nice, clean statically-linked binaries you just drop into docker and run.
For large, monolithic applications with many parts, Java is still the king.
what the fuck
please tell me this guy is trolling
I absolutely love it. Great concurrency, easy to write, easy to read, easy to develop with thanks to the excellent tool suite that gomes with it.
It's like you crossed python with C++ and only the good parts of each came out.
So? Go does not allow you to put braces on their own line anyway, due to the way its parser works. go fmt is doing the only correct thing that Go allows.
No, I don't. I don't think an idiot can program well. If you mean going through Go by Example and writing simple programs, an idiot can do that. An idiot can even get a BS in computer science. An idiot can't maintain a significant server in any language.
It's a shitty language, but less so than Python, JavaScript, and fucking PHP. I just want a compiler and static type system, and even Go's is a massive improvement over these godawful scripting languages and the brainlets who champion them.
I'll take the consistent mediocrity of Go over the over-engineered PHP (and now Node) abominations I'm forced to work with. And this is all entirely on the back end which I think pisses me off the most.
But yeah, in a corporate environment there's no reason to use it over Java or C#, but it's easier to convince webshits to move to Go. I hope it kills nodejs.
Its ok.
Not great. Better than java. Not as nice as some other languages.
Biggest problem I have with it is the way it behaves. Doesn't follow any linux conventions. Has lots of stupid GOPATH shit you have to configure.
It's going to be around awhile, but it will make you brain dead.
> maintain a significant server in any language.
wtf does that mean.
>The tooling is quite bad too but getting a bit better every year.
Patently false, I find the native tooling to be pretty damn good imo (i.e. pprof, testing, benchmarks, & escape analysis are all things I use).
For outputting binaries, crystal is nicer, albeit still rough (fairly bloated binaries right now)
For web applications, elixir is better.
For scripting, take your pick between ruby or python.
Github uses ruby mostly.
Man, Rob Pike went from being based and making the greatest OS the world has ever known to being a Goygle faggot who churns out ugly shit
Elixir
Gofmt is a fucking bandaid. All code formatting is. Fucking pisses me off
Why not just encode shit into ASTs on the fly, and decode them on the fly. Source files would be binary, and however the fuck you actually looked at them is a matter of editor. 2 spaces, 4 spaces, 8 spaces, tabs, emoji-based-indentation, who gives a fuck.
Sounds like google
TypeScript is a far better language than Go. I've converted a few medium size JavaScript projects (~50,000 lines of code) to TypeScript and it's one of the few mainstream languages I enjoy working with.
What are some better languages?
fuck GO. don't support google's botnet
Teach me more about this crystal
Last time I checked, and I haven't checked for a while, concurrency was something in the language. You'd have to do it in a roundabout way.
I usually use spaces for indentation, but using tabs allows you to have your preferred indent width. I don't even notice the command because it just works in the background when I save.
When there's a language that encodes ASTs on the fly, make sure to tell everybody.
Sure, I'll go back to 1958 and tell everyone about LISP.
There isn't a consensus, and any concensus likely to emerge on Sup Forums will resemble Down syndrome but voluntary and far less pleasant, but these are my thoughts as a Rustfag with a bias towards functional languages and systems programming.
> Lack of generics are stupid and not justifiable for a statically typed language designed for building big systems.
> Lack of anything like a decent module is stupid, not justifiable for a statically typed language designed for building big systems.
> Garbage collected, so generally competing with Java (which has far wider support and usage and is faster) and Ocaml (which has a far, far better type and module system and is better designed).
> Only discernible advantages are extremely small feature set, one single primitive for concurrency and muh short compile times.
> Its build system and package manager are a series of Makefiles. Rust's Cargo BTFOs this.
> Rust competes with C++, has a way better type system, and Cargo BTFOs.
If you love writing little web servers and don't need generics, it might be an okay choice. If you want static types and GC, use Java or Scala. If you want to do muh systems programming but in the newfangled way, use Rust.
Lol i haven't seen a brainlet get this btfo in ages
If your employer wants you to learn it then learn it. If you value your job.
I thought out a reply to your bullshit, but it's useless.
Your stupidity isn't curable.
Just fucking die you cocksucker.
I wish I could kill every last Rust user.
Don't reply to me.