8 ms·
If there is one thing that has always bothered me, is people evaluating student's prowess in "Computer Science" (which is not programming, shame on you) by havi
by Morgawr 12y ago
If there is one thing that has always bothered me, is people evaluating student's prowess in "Computer Science" (which is not programming, shame on you) by having them learn your normal run-of-the-mill programming language/paradigm like Javascript, Python, PHP and whatnot and then claim they are not apt to program because they cannot solve problems or handle variables, mutability, etc etc.
There are A LOT of different programming/automation paradigms in the world, lots of different languages, declarative, functional, OOP, imperative, logic, etc etc, maybe some of these students just can't get the convoluted mutable and unsafe structure of a Python or Java program but they might grok and appreciate the safety and simplicity of ML/Haskell or the flexibility of Lisp, why would you turn them down in such a way or force them through a path they don't really need to go through?
During my first year of Bachelor Computer Science at University we had introduction to programming in Scheme. It was a mind-expanding experience to me, I already knew how to program in C, Java, C++ and C# with a bit of PHP/Javascript back then and I was much ahead most of my peers but still I sat at the computer, trying to earn this alien language to me, and luckily I was humble enough to force myself through it and adapt my mind to a different paradigm. I know for certain that a lot of my friends and colleagues who already knew how to program struggled hard on that exam and some had to re-take it the following year (Which was unfortunately changed to C++ and they managed to pass without troubles) simply because they didn't think Scheme was a "real" programming language or useful at all. It was just too different from their previous experience.
What's even more interesting, I know some people from that class who had never touched a programming language before and weren't particularly strong at math. Those people are the ones I recall enjoying the course the most, they found it the easiest among all the other courses we had and passed it with excellent grades. Simply because their mind was apparently better wired for such paradigm and they had no preconceptions or prejudices that prevented them from learning it properly.
So my bottom line is, what makes you think that some people might not just have a "differently wired" brain that makes them think more easily with a different non-imperative paradigm for programming?
- kefka 12y agoAh, Scheme.. You must be an Indiana University grad. Only school I know that uses Scheme that much.
- Morgawr 12y agoNope, sorry. Wrong side of the ocean.
- AndrewGreen 12y agoUCL?
- tokenadult 12y agoMinnesota used Scheme when my son studied there. MIT did until about that year too.
- throw_away 12y agoLots of top schools use scheme (via SICP). Cal, Stanford and MIT all do (or at least did when I was an undergrad).
- Dewie 12y agoDude you went to MIT? That's rad. EDIT: why downvote someone for complimenting them on their top schooling?
- jacalata 12y agoBecause it is noise (do you really think that either the poster or the rest of HN need to hear that you are impressed by MIT?), and also because it isn't even stated that he did go to MIT.
- Dewie 12y agoOf course they don't need to hear that; it's pretty much a given. Their superiority is well-established at this point.
- hga 12y agoAfter the dot.com bust cratered EECS enrollment (down by more than half after being steady for decades), MIT revised its curriculum and completely purged Scheme from it (or at least the required parts). It's all Python and Java now :-(.
- guard-of-terra 12y agoRecursion is as hard as mutable state to grasp if not harder. We might find a few people who can do one thing sligtly better than the other one, but not complete blanks.
- duaneb 12y agoI disagree. Recursion is simply inductive reasoning, which people are able to grasp at a young age.
- Morgawr 12y agoThe whole point of what I said is that "hard" is a difficult thing to judge. For some tasks and some languages recursion is much easier to understand, teach and use. Just take the good ol' classical example of quicksort in Haskell or fibonacci in Lisp. Some people can grok recursion in a functional programming language much faster and more easily than they would understand the concept of branching, variable assignment (with mutability) and non-pure functions (what we used to call "procedures" back in the day).
- kyllo 12y agoJust take the good ol' classical example of quicksort in Haskell or fibonacci in Lisp. Hell, recursive quicksort and mergesort are easier to teach and remember than the iterative versions even in C and Java. They're divide-and-conquer algorithms, which makes them a natural fit for a recursive solution.
- splinterofchaos 12y agoThe classic C/C++ versions are recursive, and using the STL, c++'s quick sort looks very similar to the functional one. From cppreference.com: http://coliru.stacked-crooked.com/view?id=0b2cec4d8c69ffaf http://coliru.stacked-crooked.com/view?id=0b2cec4d8c69ffaf http://en.cppreference.com/w/cpp/algorithm/partition http://en.cppreference.com/w/cpp/algorithm/partition
- rebootthesystem 12y ago
- rimantas 12y ago"Differently wired" wired brain is the ability to manipulate abstractions. Which is required no matter what kind of programming language you use. And it also required for doing algebra.