6 ms·
So the fact that Go provides no solid dependency management solution is "personal opinion"? If everyone followed this approach, we would never have ended up wi
by Cyph0n 9y ago
So the fact that Go provides no solid dependency management solution is "personal opinion"?
If everyone followed this approach, we would never have ended up with amazing languages like Rust. Why try to improve C++ if you can build cool stuff with it, right?
- czbond 9y agoWhat do you mean by "no solid dependency management"? Do you mean out of the box? This used to be true, but with glide and dep (https://github.com/golang/dep https://github.com/golang/dep) it seems to. It is not npm or bundler - but progressing.
- chisleu 9y agoYes, go decided to wait to let the various competing systems duke it out in much the same way that node.js left it out for a while. I use git as my dependency management. I pull a specific version of a golang dependency and put it into my private git repository. Then i don't have to worry about someone's github getting hacked, repositories getting deleted, etc... Those problems have all happened with npm and github in the node ecosystem. Go solves these problems by allowing you to decide on how to manage your dependencies.
- iends 9y agoThis is no longer true. The core team proposed vgo a few weeks ago, after the majority of the community solidified around godep.
- Keats 9y agoDo you also fork all their dependencies and subdependencies and fix the path in all of them? Otherwise you are still at the mercy of account/repo renames or deletions
- andreygrehov 9y agoThey are going to be deprecated. See https://research.swtch.com/vgo https://research.swtch.com/vgo
- jerf 9y agoBut in a nominally reverse compatible way, and nobody can really force you to stop using dep if that's what you do.
- kbenson 9y ago> It is not npm or bundler - but progressing. I assume NPM has gotten a lot better in the last few years if it's being used as example of something to strive towards. Every time I have to mess with the Node ecosystem, it really makes me question the direction I'm heading with the research or project I'm working on, just by the haphazard way modules seem to be used and dealt with on both the dependency level and at the repository/packager level. The last time was a couple months back with Reasonml. Reason seemed (and still seems) really cool, but ultimately I wasn't willing to put up with the umpteen layers of indirection just to compile to JS.[1] 1: I know there's an Ocaml compiler as well, but it didn't easily support some of the use cases I was looking at.
- bbatha 9y ago> I assume NPM has gotten a lot better in the last few years if it's being used as example of something to strive towards. Make sure that you are evaluating the tool not how the community uses the tool or npmjs.com runs the registry.
- tonyarkles 9y agoThey're pretty inseparable. If npm is great, and the community and default registry are terrible, I'm still not going to want to use the tool if I don't absolutely have to.
- Cyph0n 9y agoI was using one of the points raised in the linked article to refute OP's point about "personal opinions" in the context of critiquing programming languages in general.
- czbond 9y agoYou did. My mistake, I guess the point you were making didn't register.
- dcu 9y agoI've been using `glide` for a few years now, no issues at all. It's the same as cargo(rust), bundler(ruby), npm(js). Thanks to Go it's probably better since deploying dependencies in those languages is really painful. And not mentioning the security issues associated with having a central repository for packages.
- reificator 9y ago> It's the same as cargo(rust) > deploying dependencies in those languages is really painful. Can you please elaborate here? What's painful about Rust dependencies?
- sakuronto 9y agoRuby and Rust both let you have your own repository for packages, so that doesn't make much sense, and AFAICT Rust literally needs two lines of code to pull in a new package, so I can't exactly agree that it's painful. I don't know much about Glide but if it uses Git for packages then that's pretty much centralized thanks to GitHub, too. At least the properly centralized solutions help assure you that, unless you're running a server yourself, the package is guaranteed to exist online, and even the developer can't remove it. On GitHub there's far too many things that could go wrong, and I have much less confidence that repos will continue to exist.
- mswift42 9y ago> If everyone followed this approach, we would never have ended up with amazing languages like Rust. What approach would that be? > Why try to improve C++ if you can build cool stuff with it, right? Go improves on C++ in at least one regard, compile time. And there they succeeded spectacularly. While I like Rust, imagine how great it would be with Go's compile speed..
- Cyph0n 9y ago> What approach would that be? Disregarding all critique of a language as "personal opinion" as long as you can "build cool stuff" with it. > Go improves on C++ in at least one regard Go is a GCed language, so you can't really compare it to C++.
- mswift42 9y ago> Disregarding all critique of a language as "personal opinion" as long as you can "build cool stuff" with it. GP said it's more valuable to evaluate a programming language by the projects people make with it, than by reading the 417th piece of perceived strengths and weaknesses of it. I think GP has a point. > Go is a GCed language, so you can't really compare it to C++. That's a very strange thing to say.
- Cyph0n 9y ago> GP said it's more valuable to evaluate a programming language by the projects people make with it, than by reading the 417th piece of perceived strengths and weaknesses of it. I think GP has a point. And I don't, so let's just agree to disagree on that. > That's a very strange thing to say. Does this (or any other) advantage of Go help people who are writing software that cannot have a GC in the loop? No, it does not, so it's really not a valid comparison imo. Could Rust and C++ have better compile times? Maybe. I'll defer judgement to the actual compiler experts though.
- mswift42 9y agoit is my understanding that the bad C++ compilation speed is one of the reasons behind Go's inception. Go has a GC because its creators thought they needed one to support concurrency.
- laumars 9y ago> So the fact that Go provides no solid dependency management solution is "personal opinion"? The fact this is argued as a bad thing is personal opinion. He might have a valid point on that specific arguement but it's still an opinion piece as there have been others who have voiced how they like vendoring in Go. > If everyone followed this approach, we would never have ended up with amazing languages like Rust. Why try to improve C++ if you can build cool stuff with it, right? The guy isn't designing a new language or trying to improve upon an existing language. He's just airing his opinion. I see language bashing really as more of a tribal ritrial rather than a productive contribution. Like the KDE Vs GNOME wars or the vi Vs emacs debates before that. For what it's worth, when I haven't liked a particular language which I've depended on, I've written my own parsers to add features. I'm not suggesting everyone should do this but it's a great deal more useful than starting flamewars.
- Cyph0n 9y ago> The guy isn't designing a new language or trying to improve upon an existing language. He's just airing his opinion. So how do you think new language development starts? Why do we have languages like Rust, D, Nim, and Crystal?
- laumars 9y ago> So how do you think new language development starts? By people writing code rather than pontificating > Why do we have languages like Rust, D, Nim, and Crystal? Because people wrote them rather than wasted hours on end arging why other popular solutions are garbage. As I said in my previous post: "For what it's worth, when I haven't liked a particular language which I've depended on, I've written my own parsers to add features. I'm not suggesting everyone should do this but it's a great deal more useful than starting flamewars." Or to put things another way, you don't see the developer of Nim endlessly slagging off other languages. He just quietly gets on and creates something awesome.
- wuliwong 9y ago>By people writing code rather than pontificating Or maybe a both things are important?
- strkek 9y agoWell, one thing that Cargo got wrong is forcing you to clone a full git repository when only the latest commit is relevant. IMHO it should allow me to either use a shallow clone or use crates.io's API directly.
- tomjakubowski 9y agoThere's a Cargo bug tracking this. https://github.com/rust-lang/cargo/issues/1171 https://github.com/rust-lang/cargo/issues/1171
- __sr__ 9y agoIt’s not a design flaw that can’t be fixed down the line with coming up with a backwards incompatible v2.0 of the langauage.
- AnIdiotOnTheNet 9y agoI might argue that it's a bad thing, because it encourages dependency bloat if nothing else.
- saturn_vk 9y agoThere are at least two solid, though not as mature as maven, dependency managers for go, so it seems even yours is a personal opinion.
- endorphone 9y agoSome of us have some fatigue about this topic as it has been retrodden literally hundreds of times on here, an army of people stomping their feet and screaming "OMG WHY ARE PEOPLE STILL USING GO!?" If everyone followed this approach, we would never have ended up with amazing languages like Rust. This comment reminds me of the top comment in a prior anti-Go spiel (which of course did well on here). https://news.ycombinator.com/item?id=7660924 https://news.ycombinator.com/item?id=7660924 Is it interesting how little of consequence is written in Rust, or in that example Haskell, and how much is written in Go, C, and even derelict dregs like PHP. The formal perfection of a language does seem to have a great deviance from the likelihood that it serves as a basis for important work.
- weberc2 9y ago> Is it interesting how little of consequence is written in Rust, or in that example Haskell, and how much is written in Go, C, and even derelict dregs like PHP. Exactly this. It always amazes me when people respond with "You can't judge a language by the things that are built with it because you can build anything in any Turing complete language". They're pretty much arguing that haskell/rust etc are better than go because all languages are equal.
- __sr__ 9y ago> Is it interesting how little of consequence is written in Rust, or in that example Haskell, and how much is written in Go, C, and even derelict dregs like PHP. The formal perfection of a language does seem to have a great deviance from the likelihood that it serves as a basis for important work. That is pretty simple to explain. Well designed languages have a learning curve. They require an initial investment in terms of learning — something that a lot of self styled hackers are not willing to put in. I am sure a ton of stuff is written as shell scripts. And there is also the matter of how long the language has existed.
- Cyph0n 9y agoI agree with your point, but I'm not sure how it ties in to the comment I was replying to. Edit: You seem to be overlooking the less tangible contributions languages like Rust or Haskell have made to PLs in general. One example that comes to mind is how Scala has affected the development of Java, even though, in the real world, Scala use is relatively non-existent.