4 ms·
Interesting. You could be right! My experience with Go is very limited, but I tend to see interesting abstractions built with other languages. Ruby, Haskell, S
by danpalmer 8y ago
Interesting. You could be right!
My experience with Go is very limited, but I tend to see interesting abstractions built with other languages. Ruby, Haskell, Swift, JS, even some Python – I see engineers building DSLs and architectures that strongly fit particular use-cases. In Go, everything just tends to be functions and structs, and the lack of expressiveness make it difficult to do anything with nicer ergonomics.
I would agree that it is C with superpowers in some respects though.
> A whole bunch of complex software is written and in production using go
This is true, but my point isn't that you can't write the software, just that it might have been better code in another language (easier to understand, reason about, more reliable, more maintainable?). The biggest benefit along these lines that Go seems to have is that lots of other software is written in it, which comes back to a similar argument as Java.
- vertline3 8y agoIt's a replacement for c plus plus. Python, Ruby all those things are higher level. Haskell is different paradigm. It's apples and oranges
- danpalmer 8y ago>It's a replacement for c plus plus. Python, Ruby all those things are higher level. Ok then, Rust or Swift. These are both replacements for C/C++ and the same applies. > Haskell is different paradigm I don't think this is a reason to reject it. That paradigm might allow for better solutions to the problems.
- vertline3 8y agoUgh. Not going to wrestle with a pig, I'll get dirty and he'll enjoy it
- danpalmer 8y agoI'm sorry, did I misunderstand your point? I'm not saying these things to troll, this is my honest opinion. I'll admit, Haskell is probably a poor choice for other reasons, but in many ways I think Rust and Swift are better languages than Go for the things Go is commonly used for.
- vertline3 8y agoYoure okay it's 5 am I've been up all night. I agree with the thoughts that Rob Pike can be opinionated, and that can be good and bad. There was a website cat-v I used to go to and cat-v harmful stuff software.the site really likes plan9 and go and Rob Pike. I feel it gives some insight, but I think it's bad to be too opinionated as this cat-v site can be
- skohan 8y agoI would argue that Swift, a compiled, strongly typed language, is more a C++ replacement than it is comparable to Python or Ruby. The only "higher level" aspect would be largely hands-off memory management, but go is in the same boat there.
- vertline3 8y agoRight, Swift is an apple thing though. I generally like Apple's choices, but stay away from walled gardens, so can t go too deep into its merits.
- skohan 8y agoIt was an apple thing. It's now an open-source, community driven language. It's very usable on Linux for server-side applications, and with Swift for Tensorflow it's going to become increasingly relevant in data science and machine learning. edit: Swift is no more an "apple thing" than go is a "google thing"
- vertline3 8y agoGreat to hear, sounds like they were both designed to solve similar issues with cpp
- kjeetgill 8y agoHuh, I was under this mistaken impression too. I know many, many, companies and projects using go as a foundation, but I don't think I've heard of any using swift. Any I should read up on?
- ncmncm 8y agoI.e. Swift is an apple thing, go is a google thing... and c# is a microsoft thing, and java is an oracle thing. I am happy to have never been obliged to use any of them, and I expect my odds of needing to use any of them in the future are strictly decreasing. Rust might not really be a mozilla thing anymore. But is it entirely a coincidence that Firefox had become a lot crashier since they started shoehorning rust code into it?
- skywhopper 8y agoDifferent problem domains have different cost/benefit analyses. I write in several languages daily depending on the problem I’m trying to solve. Go may not be right for most problems. But it works really well in the right situations. If you need something performant, efficient, easy to deploy, and easy and fast to build, Go checks those boxes. Deploying complex software written in Ruby, Python, Node, or Java can be a major pain, with thousands of files and dependency hell, or build-in-place which has its own set of risks. Versus deploying a single binary file, that runs faster, in less memory, more stably, and takes orders of magnitude less time to build? The other languages will need to be a lot better than they currently are to win that fight.
- kjeetgill 8y ago> Ruby, Haskell, Swift, JS, even some Python – I see engineers building DSLs and architectures that strongly fit particular use-cases > easier to understand, reason about, more reliable, more maintainable I find DSLs obfuscating, buggy, and unmaintainable. I know we're going to agree to disagree here, as I'm a fan of the Java, Go, C, or even Python side of things, I find most DSLs are a nightmare. Maybe we work on vastly different software. Most DSLs, imho, are usually better off removed. It's part of a class of code smells I like to call: Sound concepts applied too liberally and out of context. It's the same sin as the "Architect Astronauts" of Java Enterprise FizzBuzz Design Pattern overload. Python and monkey patching abuse. JavaScript and framework explosion. C++ had operater overload abuse. Every language seems to go through it's awkward teen years and finds a good balance eventually, so I don't mean to rag on DSLs. The problem is: DSLs usually work well when the problems are well defined, common, and relatively static. SQL comes to mind. BLAS/numpy like programs. If the DSL models business or application ideas, those will grow and shift. If I find myself fixing bugs in the compilers, I need a different language. That's what DSLs end up as: half-designed specs I need to fix.
- nwmcsween 8y agoDSLs are just embedded languages, if they suck it's due to the DSL or the expressiveness of the language used to create it.
- divan 8y ago> everything just tends to be functions and structs Out of curiosity, what else do you need that can’t be done with “functions and structs”?