Go to github and see the rank of project written in Go, you will see clearly what is the niche market(not that niche I would say) I'm talking about.
830 karma · joined February 12, 2013
Go to github and see the rank of project written in Go, you will see clearly what is the niche market(not that niche I would say) I'm talking about.
Sure, functional language can be used in almost all the programming related projects. But are they really a good fit or not is not decided by FP advocacy, but the people who actually tackle these problems.
Go for now shines in a pretty niche market, it is extremely good fit for this niche market, and this fact is not advocated by Go fans or Go team, but by large amount of open source projects and emerging usage in quite a few serious companies/startups.
You can certainly go ahead and ask them "Why not use OCaml, F#, Haskell or Scala", or you can use FP to make a better project in this field to show people FP is indeed much better fit.
To some of us, programming language is merely a tool to solve a problem, not to show off the shining design concept. For us, Go hits a incredibly sweet point on the balance of coding efficiency and running efficiency. Note that, coding efficiency has nothing to do with "how beautiful and elegant this code snippet is", it has everything to do with "if this project is easy to read, easy to maintain and easy to expand"
Don't be deceived by your hate towards any specific company, otherwise you will miss a lot of beautiful, useful, adorable things in this world.
But this is a very classy and admirable way to answer all the critics. He didn't take them offensively at all. Instead he puts more thoughts on the design objectively and sincerely, and come up with what might be a better architecture in the end.
Hats off to codegangsta and good luck on Negroni.
Hopefully they will release Android version app soon.
Moreover, the benchmark you listed here are still mostly scientific computation related. Just from the benchmark, I'm not convinced enough that Julia beat Go from the perspective of a backend system, which is what I primarily use Go for.
Go and Julia really serves totally different purpose. Go want to replace Python in backend and the Python ecosystem matters little here. Julia want to replace Python in scientific computing and Python ecosystem matters a LOT here.
1 Is it joyful to write without too much cognitive load? 2 Is it getting things done?
Go fits both for them.
That's my point. I didn't say it clearly before. I understand why shared state is bad in general. I don't understand if channel takes care of most scenarios why it's still one of biggest problem for Go listed by author.
> Erlang's reduction-based scheduling does not have this problem and can be very fair.
What's the key difference between Erlang's reduction based scheduling and cooperative scheduling?
For example, he said
"But when it comes to complex backends that need to be fault-tolerant Go is as broken as any other language with shared state."
Why? Why shared state is so bad in Go? Isn't it taken care by Go's channel anyway?
Also, why Pre-emptive Scheduling is bad? Isn't Error Handling still pretty much just a matter of personal preference?
Why Introspection makes Erlang so much better? What's the practical key problem for Go that can not be tackled without instrospection?
And I completely failed to understand the point of "Static Linking".
I'm not trolling. I don't have Erlang experience, and most of the problem the author pointed out was not bothering me, so I honestly want to see WHY they are problematic in Go
There are already a couple of Machine Learning libraries[1][2] written in Go and some of them are actually more mature than GoLearn.
Also just curious, I always thought Go is not really a good language for DM/ML stuff due to lack of good matrix library and generics. If someone here actually tried to write any ML library in Go, what's your genuine feeling about it?
[1] https://github.com/huichen/mlf [2] https://github.com/xlvector/hector
This one looks really interesting and promising. Being open source project is another major bonus.
Go can live peacefully with any other project.
Marco was blaming Google/Twitter/Facebook locking down devs/users in their own eco-system and your point is you get the interoperability within Apple's own garden? Come on.
BTW, you give a perfect example of what being hypocrite looks like. Sure, you can enjoy your time by hosting a closed service on top of open source infrastructure, that's hypocrite. You can also enjoy your time in a closed eco-system ever since from day 1 with absolutely no interoperate and still manage to find way to fuck those closed web based eco-system. That's also hypocrite.
Interoperate means what? Choice and competition. I see no spirit of either in Apple's eco-system. And somehow Marco always find a way to blame other companies for that.
Ever since the adoption of "Lean startup" methodology, "failure" suddenly becomes a no big deal to entrepreneur. Making decision is like throwing a Hail Mary that you don't really care too much about the outcome. Yeah I failed. So what? Let's try it again. Let's try 100 more times and we may hit a home run.
If you can put a A-class work in front of people, why do you even want to settle on B/C/D-class stuff? The world doesn't, and shouldn't, work in this way. Failure is bad for your reputation, at anytime, anywhere, in front of anyone. There is a reason why nowadays, acq-hire is more and more popular, because it give others impression that, hey, I didn't fail, I sold my business because it's a good deal. Sure, 1 out of 10 cases is like this. But for the other 9? it just helps to cover your ass and avoid putting the tag "failure" on you in your future career.
Is failure end of world? Of course not. Does it mean you shouldn't set a high bar, think carefully, plan comprehensively, put as much effort as possible to maximize the outcome? Hell no. Remember, you can only control what you can control. So, whenever you do something you can control, you better do it right.
Sometimes you just don't get second chance.