3 ms·
Better yet, teach them a language which doesn't even have the "extra layer of [OO] nonsense". Teach them something simple, clean, and logical. Teach them Haskel
by pelotom 16y ago
Better yet, teach them a language which doesn't even have the "extra layer of [OO] nonsense". Teach them something simple, clean, and logical. Teach them Haskell.
- warrenwilkinson 16y agoYou need monads to do any IO, that's not an easy first lesson. And you are a great distance from hardware.
- anghyflawn 16y agoThe first point is not too much of a downer, actually: it's not much harder to learn the IO monad as pure syntactic sugar than to learn printf and its ilk.
- brehaut 16y agomain = print "Hello, World!" Not a monad in sight. Yes, print is an IO Action, but you don't have to use monads to do IO. Add in 'interact' and a you can be writing trivial stdin / stdout programs very quickly.
- pnathan 16y agoYick, then you've got an extra layer of type nonsense.
- dons 16y agoWithout types, how do you know you're not writing nonsense?
- IvarTJ 16y agoAs someone who gave Haskell a shot, I was very quickly put off by having to learn functions to convert from integers to floats, while such things were automatically taken care of by more low-level programming languages such as C. Also, I was confused by the package management with Cabal, and now I appear to have broken it with an error message whenever I start ghci. When choosing a first language for students, you have to think of idiots such as me.
- wnoise 16y agoI love Haskell. I hate Cabal. It's a bunch of semi-opaque goo on top of a compilation process that wasn't terribly hard to start with.
- sid0 16y agoWhere exactly were you mixing integers and floats? In my experience it doesn't come up too often, and if it does (e.g. writing area = 2 * pi * r) you'd be better served changing the 2 to 2.0.
- IvarTJ 16y agoI sometimes want to avoid using floats because of the inaccuracy that sometimes arise with their use. If I recall correctly, in Haskell division requires the numerator and denominator to be of the class fractional. So how I did integer division was something like this round (fromIntegral x / fromIntegral y) round is one of several functions that transform numbers to integers.
- sid0 16y agoPrelude> 5 `div` 2 2 Haskell's doing the right thing here by having a separate function for integer division. It makes no sense to overload / to mean both regular and integer division.
- pnathan 16y agoWith that reasoning, assembly shouldn't be possible to write correctly. In other words, because I'm not dumb?
- dons 16y agoI'm not saying you will write nonsense, I'm asking what evidence you have. The evidence in this case is "I know what I'm doing".
- nickik 16y agoScheme should be used not Haskell! Haskell can be used in a Algorithems class or something but in the beginning use Scheme.