7 ms·
I've come up against this recently and I think a lot of imperative programmers will. For me, the basic pattern, starting from a career based on perl/php/java w
by tunesmith 14y ago
I've come up against this recently and I think a lot of imperative programmers will. For me, the basic pattern, starting from a career based on perl/php/java was this series of realizations:
- EECS circuit design is based on a conceit that gives chips a speed limit
- as a result, chips aren't getting much faster and that multi-cores are happening instead
- parallel programming will become more and more essential to make a buck as a programmer
- imperative languages aren't great for parallel programming due to mutable variables
- functional languages are better for parallel programming due to immutable variables
- functional languages are a lot closer to math concepts than imperative languages
- uh-oh
So for me it's been a fun few months of stumbling through self-directed study in stats, probability, and math. Bayesian probability from some articles by Yudkowsky. Fast, clumsy review of 0th-order, 1st-order, and zfc set theory. Anki decks out the wazoo. Now I'm plodding through Learn You A Haskell.
I would like to work more with actual mathematical proofs but I'm finding that tough to get into myself. It was fun paging through metamath for a few days, though.
- bcoates 14y agoMessage passing is an ancient and well-understood mechanism for producing parallel, scalable, mutable-state imperative programs. Feel free to continue to not learn math :)
- tunesmith 14y agoBut that's not as much fun. :-)
- victorh 14y agoThere's no reason you can't have immutable variables and pure functions in imperative languages, though. Not that I don't support your quest to learn Haskell, Haskell is awesome and I hope you enjoy it :)
- reycharles 14y ago> I would like to work more with actual mathematical proofs but I'm finding that tough to get into myself. A professor at my CS dept. started using the Coq proof assistant[0] to teach some (functional) programming concepts and techniques. It has had a side effect of making the students more in to proofs. Personally I think it's great - it shows that proving things is just programming. I think the Software Foundations book[1] (or tuturial?) is a good place to start. There is also another good tutorial, but I can't remember its name. It's more about "getting work done" so I don't think it's as good as a starter. [0]: http://coq.inria.fr/ http://coq.inria.fr/ [1]: http://www.cis.upenn.edu/~bcpierce/sf/ http://www.cis.upenn.edu/~bcpierce/sf/