3 ms·
I have to disagree a bit. The point is that rust already feels like being thrown into the deep end of the pool, and all the lambda calc is as deep if not deeper
by kjeetgill 8y ago
I have to disagree a bit. The point is that rust already feels like being thrown into the deep end of the pool, and all the lambda calc is as deep if not deeper.
My 2 cents: start shallow. The hard part of learning the right stuff from a language is picking a project that let's you run into those aha moments. I like to cut my teeth on a basic Sudoku solver and maybe a small web service for the younger languages. I picked two languages that are relatively simple to pick up, let you get to the meat quickly, and are popular and familiar.
If you don't get pointers yet, learn C. Something with arrays of arrays can be good here.
If you want a taste of some functional idioms without feeling drowned by them, learn Python. Use list comprehensions and filter and reduce a lot to warm up with them.
You can get exposed to a lot of paradigms in Python without committing to anything. Classes/oop, first class functions etc.
C++ is harder than those two because the learning resources are less consistent. Too many idioms have changed over and the last decade.
I think jumping straight into rust after that won't be quite so intimidating. Rust itself has a lot of new things to think about but some are unique enough that there's no good warmup language.
- agentultra 8y ago> The point is that rust already feels like being thrown into the deep end of the pool, and all the lambda calc is as deep if not deeper. I don't think you need an undergraduate degree to understand the un-typed lambda calculus. You can build an intuition for it with syntactic substitution at first. For such a big idea it's really quite simple in practice. That makes it quite beautiful. Moving to the typed lambda calculus is the next step and builds upon the prior knowledge. The reason I think it's useful is that it allows you to reason about abstractions -- even complicated ones -- in a manner that reduces the cognitive burden on us. It's also not tied to any single programming language: they can all be modeled with mathematics. Proofs are programs and programs are proofs. I do agree that a hefty does of practical application helps to solidify theoretical understanding. I see them as informing one another.