I’m not a programmer but have witnessed – and mediated - a lot of these arguments. Some are very esoteric while others are pretty practical. But some programmers forget that when you’re trying to implement a “large” project (relatively large user base and relatively long expected life), the programming language is just a tool. You can tinker forever with a technologically superior language – and enjoy the intellectua…
Or you could implement the project in the superior language in a reasonable amount of time.
Don't Be Distracted by Superior Technology
41–50 of 68 posts
Re: Don't Be Distracted by Superior Technology
#42Can someone point us to a reference explaining Modula-2's module system and what made it a superior module system to other module systems?
Modules can be implemented in any programming language, if the programmer is disciplined enough[1]. However, Modula-2 originated modules as language constructs, not only for grouping & namespacing, but also as compilation units. Very important to repeat that namespacing bit; Modula-2 modules allowed for a way to group & scope names. Other block structured languages allowed for name shadowing within a block, but with…
Also, how does Modula-2 (or Standard ML's) module system enforce contracts beyond what a C/C++ header file offers us? Why does C/C++'s primitive system offer us nothing intellectually?
Lastly, if you were to try adding a more robust module system to a language like JavaScript, how would you go about doing it? (assuming such a thing is possible).
Re: Don't Be Distracted by Superior Technology
#43Meh, this is unfortunate advice because everyone tends to act this way too much . Almost everybody errs towards stable technologies; the exceptions are people with a genuine interest in the novel. They are disproportionately vocal so judging from the internet there's a lot of them, but in reality they're a minority. This makes sense psychologically. The cost of spending an extra day setting up a build system? It's ob…
http://www.infoq.com/presentations/Running-a-Startup-on-Hask...
Re: Don't Be Distracted by Superior Technology
#44Can someone point us to a reference explaining Modula-2's module system and what made it a superior module system to other module systems?
It was one of the first languages (although not the first) that had a proper module system with separate compilation, implementation hiding, module nesting, and qualified exports / imports. It stops short of adding features like parameterized modules that confer significant problems for both theory and implementation. In typical Wirth fashion it was also quite minimal; you could write a complete Modula-2 compiler as…
Re: Don't Be Distracted by Superior Technology
#45Earlier quoted context omitted.
Interesting, but how many are good enough that they make up for the handicaps of poor library support and whatever other issues people have when they use Haskell for 'real' work. And how many are willing to stay at your company when it becomes bigger and more boring? Many Haskell programmers come from academia, how many are willing to do boring business logic? Not saying it's always the wrong choice, but I think ther…
Actually, I've found that Haskell libraries are absolutely fantastic- For me, its ecosystem is superior to other languages I've used, and I find libraries tend to be better designed and easier to pick up and use. > And how many are willing to stay at your company when it becomes bigger and more boring? I feel like this is an argument that could apply to any set of programmers- I'm not sure I see how it's relevant to…
Theirs very few haskell programmers that are interested in doing boring work. At some point though, boring work is necessary for a business, and at that time you want to be able to hire someone to do it, which will be very difficult if the codebase is in haskell.
Re: Don't Be Distracted by Superior Technology
#46Earlier quoted context omitted.
Actually, I've found that Haskell libraries are absolutely fantastic- For me, its ecosystem is superior to other languages I've used, and I find libraries tend to be better designed and easier to pick up and use. > And how many are willing to stay at your company when it becomes bigger and more boring? I feel like this is an argument that could apply to any set of programmers- I'm not sure I see how it's relevant to…
Maybe the haskell libraries that exist are fantastic, but a non esoteric language like java will also have really solid libraries and tool chains(likely more solid) plus have lots more available libraries so you spend less time reinventing the wheel. Theirs very few haskell programmers that are interested in doing boring work. At some point though, boring work is necessary for a business, and at that time you want to…
I've found this to be totally the opposite: my time in Java is much less productive. There are many libraries in Haskell which aren't even possible to write in Java (automatic differentiation, parser combinators, lenses, etc.)
> very few haskell programmers that are interested in doing boring work
Nobody is interested in doing boring work, or it would be interesting work. Nothing to do with Haskell programmers.
Hiring (good) Haskellers is easy because there's a demand for jobs. It's as simple as that.
Re: Don't Be Distracted by Superior Technology
#47Earlier quoted context omitted.
Maybe the haskell libraries that exist are fantastic, but a non esoteric language like java will also have really solid libraries and tool chains(likely more solid) plus have lots more available libraries so you spend less time reinventing the wheel. Theirs very few haskell programmers that are interested in doing boring work. At some point though, boring work is necessary for a business, and at that time you want to…
> you spend less time reinventing the wheel I've found this to be totally the opposite: my time in Java is much less productive. There are many libraries in Haskell which aren't even possible to write in Java (automatic differentiation, parser combinators, lenses, etc.) > very few haskell programmers that are interested in doing boring work Nobody is interested in doing boring work, or it would be interesting work. N…
So you're saying Alan Turing was wrong? Publish your finding, win a Nobel Prize.
You didn't say it would be difficult, you said it wasn't possible.
Here's the breakdown:
1. Haskell is compiled into machine code.
2. Machine code doesn't care or reveal where it came from.
3. Points (1) and (2) demonstrate that any algorithm that can be written in Haskell, can also be written in machine code.
4. Therefore the claim that Haskell's libraries cannot be written in Java is false.
Re: Don't Be Distracted by Superior Technology
#48Earlier quoted context omitted.
> you spend less time reinventing the wheel I've found this to be totally the opposite: my time in Java is much less productive. There are many libraries in Haskell which aren't even possible to write in Java (automatic differentiation, parser combinators, lenses, etc.) > very few haskell programmers that are interested in doing boring work Nobody is interested in doing boring work, or it would be interesting work. N…
> There are many libraries in Haskell which aren't even possible to write in Java (automatic differentiation, parser combinators, lenses, etc.) So you're saying Alan Turing was wrong? Publish your finding, win a Nobel Prize. You didn't say it would be difficult, you said it wasn't possible. Here's the breakdown: 1. Haskell is compiled into machine code. 2. Machine code doesn't care or reveal where it came from. 3. Po…
Nope! The Turing-completeness of Haskell and Java means they can both compute the same functions. However, there are certain things which are just not possible to express directly in some languages. Possible to compute, but not express directly.
Instead of Java, consider Brainfuck. It's a turing-complete language and certainly has no notion of what a function is. There's simply no way in Brainfuck to directly express that idea.
Another example, this time with Java and Haskell. In Haskell, I can write a function to add any two numbers (regardless of their type) like this:
add' :: Num a => a -> a -> a
add' x y = x + y
As far as I'm aware in Java, there's no way to write a function with a signature that says "Take two numeric arguments of any type". Certainly pre-generics, this is impossible.
Edits: markup
Re: Don't Be Distracted by Superior Technology
#49Earlier quoted context omitted.
Or you could implement the project in the superior language in a reasonable amount of time.
Of course, this the preferred option. But when the arguments ensue, it's usually because the developers are saying I can't give you the project in the superior language in a reasonable amount of time. So if a choice must be made between superior language and reasonable amount of time, project managers usually choose reasonable amount of time.
Re: Don't Be Distracted by Superior Technology
#50Earlier quoted context omitted.
> There are many libraries in Haskell which aren't even possible to write in Java (automatic differentiation, parser combinators, lenses, etc.) So you're saying Alan Turing was wrong? Publish your finding, win a Nobel Prize. You didn't say it would be difficult, you said it wasn't possible. Here's the breakdown: 1. Haskell is compiled into machine code. 2. Machine code doesn't care or reveal where it came from. 3. Po…
> So you're saying Alan Turing was wrong? Nope! The Turing-completeness of Haskell and Java means they can both compute the same functions. However, there are certain things which are just not possible to express directly in some languages. Possible to compute, but not express directly. Instead of Java, consider Brainfuck. It's a turing-complete language and certainly has no notion of what a function is. There's simp…
This is not to suggest that someone would want to use Java for anything sufficiently sophisticated, unless one is a masochist, but then, that wasn't your claim.
> As far as I'm aware in Java, there's no way to write a function with a signature that says "Take two numeric arguments of any type". Certainly pre-generics, this is impossible.
A separate claim with no meaningful relation to the original one. This claim is that it would be inconvenient, not impossible.