The assertion that microkernels are slow makes me think you're out of touch with technology for 1-2 decades? L4 is not that new anymore.
On the other hand, promoting a JVM and garbage collection in hardware means you can't be further back than maybe 4 decades, since this is when they did the exact same thing and called it a Lisp Machine.
Of course, writing in Lisp requires quite literally PhD-level understanding of algorithms and software design, just like a microkernel. So in the end, maybe it always was the better solution to just use a scheme that even a monkey could use, and then make a lot of monkeys all excited about it. Divide and Rule^WConquer.
But yes, I think that AT conclusions are a bit strange..
Posted Nov 18, 2011 3:55 UTC (Fri) by Cyberax (✭ supporter ✭, #52523)
[Link]
L4 is not especially fast. It's just that it's mostly used on a hardware slow enough to make constant context switches tolerable. Some of the ARM chips even have hardware support for fast context switching!
But in general, yes, it's slower than a monolithic kernel
Don't make me laugh
Posted Nov 22, 2011 17:13 UTC (Tue) by nye (guest, #51576)
[Link]
>Of course, writing in Lisp requires quite literally PhD-level understanding of algorithms and software design, just like a microkernel
That statement is absurd. I'd love to see a study on learnability of programming paradigms looking at new programmers with no prior experience.
My first programming course (less than ten years ago) used Scheme, which I found immediately understandable, intuitive, and simple to use. Then we went on to do a lot more work in imperative languages, which were a lot harder to get into, but coming back to functional programming everything now seems harder than when it was new because I can't stop myself from wanting to translate everything into a series of discrete steps to perform in order (simplification, but you get the idea).
I think my brain has been permanently damaged by prolonged exposure to imperative languages, but if I hadn't seen functional programming *first* I would never have known that.
Don't make me laugh
Posted Nov 22, 2011 17:32 UTC (Tue) by mpr22 (subscriber, #60784)
[Link]
It seems likely to me that prior exposure to mathematics, and prior experience of computer use (most user interfaces are effectively imperative), are comparably significant to what language is used for your first experience of computer programming.
Don't make me laugh
Posted Nov 22, 2011 18:07 UTC (Tue) by mathstuf (subscriber, #69389)
[Link]
Hmm. I was a "math whiz" in grade school, but my first languages were BASIC, TI-BASIC, and C. Haskell ranks among my favorite languages today though. Using functional programming idioms in C++ and Python makes things much nicer there too, IMO.
I'd modify your hypothesis from "first experience of" to instead state "favorite languages for".
There are strong corellation...
Posted Nov 22, 2011 21:27 UTC (Tue) by khim (subscriber, #9252)
[Link]
Most people who can understand math easily understand functional programming (they may not love it, but they understand it). But people who don't understand math usually just can not "get it".
Sadly most programmers, not just most people fall in this category. Now, it does not mean you can build something for "monkeys" on top of functional language - you can. Problem with managed code is different.
There are strong corellation...
Posted Nov 24, 2011 5:29 UTC (Thu) by elanthis (guest, #6227)
[Link]
And then there's those of us who don't think that "buy new specialized" hardware is a real solution and develop large, complex, real-time apps for consumers' existing devices, and we are both knowledgable enough and skilled enough to recognize and capitalize on the very imperative nature of actual hardware. We can't stand functional languages, because they model academic nonsense rather than reality. Functional languages work great for little processing scripts or massively scalable data tranformation. They don't work at all for UIs (egads! state changes!) or anything that needs to eck out 60fps on 6 year old consumer-grade hardware.
The trick to being a _real_ programmer has nothing to do with being a functional programming guru or an imperative master or an OOP professor. It had to do with recognizing the right tool for the job and being able to implement maintainable, efficient, usable architectures on whatever that tool is.
Functional languages just aren't that tool in many cases.
There are strong corellation...
Posted Nov 25, 2011 17:52 UTC (Fri) by nix (subscriber, #2304)
[Link]
Quite. Writing little bits of procedural programs in functional style remains useful, though, but it's rare that you can write anything substantial in that straitjacket.
There are strong corellation...
Posted Nov 25, 2011 19:13 UTC (Fri) by paulj (subscriber, #341)
[Link]
I like the GCC 'pure' and 'const' function attributes, and to try and get as much of the code as possible filed under such marked functions.
Don't make me laugh
Posted Nov 23, 2011 8:30 UTC (Wed) by ekj (guest, #1524)
[Link]
*some* people under *some* circumstances, find functional programming easy and inituitive. Mostly people with a strong grasp on math.
Meanwhile, just about everyone, mathematically inclined or not, are already accustomed to complex procedures being described as a series of steps to be performed in sequence. If you've ever followed a recipe to bake cake, or indeed followed instructions to do *anything* you're already familiar with this mode of thinking.
I suspect your problems, of adapting to a change from functional to imperative, is untypical, my experience has been that most people who can do Lisp, can also do imperative. (whereas the converse is *not* the case)
I don't think it's an accident that functional programming is fairly marginal whereas imperative programming, together with various proportions of OO, runs most things.
Changing paradigms, especially the first time you do it, is always going to be somewhat painful. (but useful, because there's useful lessons to be had from all the major modes of thinking)
Don't make me laugh
Posted Nov 23, 2011 14:14 UTC (Wed) by nye (guest, #51576)
[Link]
>*some* people under *some* circumstances, find functional programming easy and inituitive. Mostly people with a strong grasp on math.
Now this is very interesting, because it exposes a hidden assumption I hadn't realised I was making - namely that people who are good at programming are also likely to be good at maths. Now that I'm thinking about it, that assumption doesn't seem too sound.
[Digression follows...]
>Meanwhile, just about everyone, mathematically inclined or not, are already accustomed to complex procedures being described as a series of steps to be performed in sequence. If you've ever followed a recipe to bake cake, or indeed followed instructions to do *anything* you're already familiar with this mode of thinking.
I'm not especially convinced about this. I don't think instructions aimed at humans can really be said to resemble imperative programming more than other styles because they generally don't rigourously break things down into sets of steps and routines - they tend to give instructions out of order[0], make lots of assumptions, elide important steps etc. In some cases, I'd actually say recipes can bear resemblance to a more declarative style.
[0]As an experiment, try following a non-trivial cooking recipe strictly in order; you will most-likely find it doesn't work when you get to a step that says 'transfer immediately to a pre-heated oven', or some step which, taken literally, requires you to have four or more arms.
Don't make me laugh
Posted Nov 23, 2011 14:33 UTC (Wed) by nix (subscriber, #2304)
[Link]
people who are good at programming are also likely to be good at maths. Now that I'm thinking about it, that assumption doesn't seem too sound.
It isn't sound. I'm fairly terrible at mathematical reasoning: I can do it but it feels like wading through treacle. Verbal / linguistic reasoning, by contrast, is utterly effortless. So I web my programs together with skeins of words, not with maths, even though the maths might be shorter or less ambiguous at times.
Don't make me laugh
Posted Nov 23, 2011 15:22 UTC (Wed) by mpr22 (subscriber, #60784)
[Link]
I'd liken most recipes to programs in a high-level (hence the abstraction of details), parse-before-execution (you need to read the whole thing before you start doing anything), imperative (it's definitely a sequence of commands, and it's probably written in the imperative) language.