40 karma · joined April 20, 2009
Over and over again I see commercial OS vendors implicitly credited for writing drivers that were actually supplied by the hardware manufacturers themselves.
The vast majority of the general population find that their Windows and OS X machines 'Just Work' because they come preconfigured with all of the manufacturer's drivers already installed.
Linux can't 'Just Work' in the Desktop space because:
1. It doesn't have majority market share (like Microsoft), so not all hardware manufacturers will make it a priority for their hardware to have good Linux drivers.
2. It doesn't control the hardware platform (like Apple), so it is likely that a significant proportion of users will have machines that have unsupported / badly supported hardware.
Haskell was historically pure and had side effects added as a way to interact with the world. The language enforces (discounting unsafePerformIO) the separation of pure and impure code. That is sufficient to label any practical language pure.
There are a lot of design patterns for object oriented programming that were created specifically to overcome structural flaws in C++ and Java. These simply don't apply to some languages.
Dependency Injection is not one of these and actually has widespread applicability. Although the name always sounds wrong to me since it makes me think of dependency creep, one of the problems that it is intended to alleviate.
Design patterns have gained an "enterprisey" reputation because much of the time they are represented as if each one is a universal, language agnostic solution. They reek of cargo cult management.
Every language and/or ecosystem will have its own set of effective design patterns that will partially overlap with those of other ecosystems. Some communities care more about making names for the patterns, which could in itself be considered enterprisey.
Interestingly enough, the person that first told me about design patterns was a Python hacker.
It sounds a lot like the internet in general, to the extent that App stores could be considered a transient analogue to a gated internet. Thousands of apps/sites all struggling to attract the attention of users.
To compare the performance of the mature, optimized Perl 5 core to the freshly baked, feature rich Perl 6 is shortsighted in the extreme.
The Perl 5 runtime is hard to extend, meaning that using the modern additions to the language (notably Moose), comes with a significant start up penalty. This can not be easily overcome.
Perl 6 has a Grammar, Perl 5 only has an implementation (only perl5 can parse Perl5). There is a lot of opportunity for making Perl 6 nice and fast, certainly fast enough for the larger complex applications it is designed to support.
Perl 6 is not trying to compete with Perl 5 on one line throw away scripts. Not yet anyway.
So yes, take care when choosing your dreams.