I lost interest in the article after this sentence.
360 karma · joined June 25, 2012
I lost interest in the article after this sentence.
I believe there is some relevance to a deep understanding of algorithms, that relevance being a function of the job. But in situations where the relevance is CLEARLY low for the job, they serve as nothing more than projections of the egos of CS grads, and reduce the value of their company.
Also, the actor-based style of programming tends to model real-world interactions more cleanly than OO code, leading to potentially clearer and more maintainable code.
1) Thou shalt not steal, cheat, murder, etc... 2) Notions of karma -- i.e. everything you do unto others will come back to you.
1) Every process in Erlang manages its own memory and has its own GC. This means that GC'ing one process will not stop the world.
2) Erlang has multicore compatibility baked in, through its process-based model.
3) Erlang enforces pure message-passing at a language level, so there is no shared state. This allows concurrent programs to be written much more easily than in languages where one has to manage shared state.
4) Referential transparency - to the programmer, one can use virtually the same code to pass a message on a remote Erlang process and an Erlang process on the same machine.
5) Fault-tolerant and self-healing mechanisms built in.
This is not an exhaustive list -- it just gives you an idea.
The anonymity of the internet will always bring out the worst in some, and that is a much more powerful factor than being a gamer.
Step 1: Cherry-pick most extreme comments possible and imply that they represent the average opinion.
Step 2: Make numerous anecdotal assertions without any effort to back them in statistics.
Step 3: Instigate mudslinging by displaying cherry-pickings to other side.
Step 4: Feedback into Step 1.
"Since we don't understand the macroeconomic system that is causing these issues, let's just blame a random group of people who are doing well in said system."
1) People are encouraged to locally optimize -- i.e. optimize their own happiness. But as any psychologist would point out, lots of people have no idea how to do that. Kind of a problem.
2) Local optimization rarely achieves the global optimum.
As Warren Buffet has said, the courses he took at Wharton barely differed in quality from the ones he took at Nebraska. Our culture is so obsessed with shallow accolades that it is slow to recognize a humongous opportunity right underneath its very nose.
There is absolutely no reason that MOOC's cannot teach many college-level courses as good as or better than their real life counterparts. Unfortunately, the motivation of students largely stems from the aforementioned shallow accolades.
As a filtering mechanism for professional skills, I think the current academic system has some flaws which MOOC addresses nicely, perhaps not as a complete replacement, but a powerful complement. But the reality is, academia should be used to filter academics, and in many industries, a degree represents nothing more than 4 years that could have been spent learning the actual profession and adding value to the economy.
1) Productivity - The speed at which you can create a respectable prototype. This is not just a matter of your team having mastered the language -- some languages are more specialized than others. For example, it will be orders of a magnitude easier (i.e. will require less dev time) to build a distributed system in a language with built-in actor support (i.e. Go, Scala, Erlang, etc.) than it would be to do so in say, PHP.
2) Maintainability (in terms of dev time) - The languages and its predominant frameworks will dictate how difficult it is to maintain a codebase. For example, many programmers will attest that statically typed codebases are easier to grok and maintain than dynamically typed. Dynamically typed code requires more edge case testing, and statically typed code allows an entire class of bugs to be compiled at runtime.
3) Hardware - Languages have different performance characteristics. Some languages will require $x / unit of web traffic. Others will require $y / unit. This translates into the # of servers required to support your app, which may diverge at a polynomial rate or worse over time. This is unlikely to be a big factor in the early goings, but it can matter a lot when / if you achieve success, so can be a worthy tiebreaker -- because it is highly unlikely you will be switching languages entirely once your company is in the groove, so the choice you make early on will stay with your company for a lifetime.
And that's not to mention broader macroeconomic issues which are more worthy of essays than HN comments.
I would guess that there is actually significant overlap between these two groups.
But we are not the jury here, as fun as it may be. We should not try to ruin someone's life in such a fickle forum.