tag:blogger.com,1999:blog-6522986046288736604.post3210557430579741460..comments2024-03-19T03:39:24.263-07:00Comments on Everything in Context: Learning typed functional programming: obstacles & inroadsChrishttp://www.blogger.com/profile/11607281981163980702noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-6522986046288736604.post-78621475839681036032013-12-20T19:46:23.172-08:002013-12-20T19:46:23.172-08:00Rank speculation: A lot of people have traumatic e...Rank speculation: A lot of people have traumatic experiences associated with math, because math is frequently taught in elementary school (computer science rarely is). In particular, math teachers at that level are usually poorly trained (due to the structural disincentives for people with math education to enter K-12 teaching) and/or lack enthusiasm for the subject.<br /><br />Moreover, at that time in a person's schooling, it's common for a student to be shamed (publicly or privately) and told they're "not good at math". Because socially, math isn't considered a necessary skill (unlike reading), it's easy for a student to deal with this kind of treatment through avoidance rather than mastery. This is completely understandable for a child who has never been told why math is worth doing and has only been taught that it's a tool that will be used to humiliate them and demonstrate their inadequacy, by the way.<br /><br />So when many adults -- even adults who have enough analytical reasoning ability to be programmers -- hear the word "math", they think back to those experiences, to the time when they were told "you're no good at this", and they freeze up, or else feel the need to prove why math is some useless ivory-tower theory garbage, because of their own feelings of insecurity to do with the disservice that their school system did them.<br /><br />This is rank speculation because I didn't go to school until college, but I did tutor high school dropouts for a brief period of time, and over and over I'd run into a student who kept saying "I'm not good at math" even though I was there to help them be better at it.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6522986046288736604.post-72145060412821048072013-12-20T14:12:39.533-08:002013-12-20T14:12:39.533-08:00This brings up a topic that may be relevant: modul...This brings up a topic that may be relevant: module systems, and interface vs. implementation. Languages such as Standard ML, OCaml have for decades promoted "programming in the large" by means of abstract data types through signatures, so that you can actually code against the signatures before you've implemented the types at all. Did you use ML languages, and if so, how did you incorporate this into your work flow?Franklin Chenhttps://www.blogger.com/profile/14762341306710286314noreply@blogger.comtag:blogger.com,1999:blog-6522986046288736604.post-62430317687536781062013-12-20T14:00:37.354-08:002013-12-20T14:00:37.354-08:00this may come as a restatement of replies you have...this may come as a restatement of replies you have already received, but: when I program by using types and signatures to define the "DSL" of my codebase, it takes extra effort, and can't happen as a simple two-stage process of "first define the boundaries/interfaces, then write your program logic, with the second stage much easier thanks to the first". rather, I often don't know exactly what datatypes I'll need until much of my program logic is already written. so, taking advantage of the type system as a design tool requires jumping back and forth between hacking on expressions and polishing types. I am willing to do that extra overhead because I know in advance that it will help my code quality in the long run; that is, because I am already practiced at using the type system for this. plus, this was a skill that I slowly got better at (by doing two compilers courses in functional PLs) once I already learned functional programming. so I can see how people who aren't familiar get the perspective that "types get in the way because you have to get them completely right before you can get any real programming done".Benhttps://www.blogger.com/profile/00057900193141052120noreply@blogger.comtag:blogger.com,1999:blog-6522986046288736604.post-6670763785986673942013-12-20T09:57:12.033-08:002013-12-20T09:57:12.033-08:00I am very curious what people mean when they talk ...I am very curious what people mean when they talk about "math" or not being "good" at it, because this is sounding like an important barrier to overcome, opening up a lot of questions about the nature of early educational experiences outside of computing that have an impact on whether people even enter the field or what they choose to gravitate to once in it.Franklin Chenhttps://www.blogger.com/profile/14762341306710286314noreply@blogger.comtag:blogger.com,1999:blog-6522986046288736604.post-59322939014828139042013-12-19T14:08:40.686-08:002013-12-19T14:08:40.686-08:00The comment of "I have a logic brain but not ...The comment of "I have a logic brain but not maths" troubled me for the same reason as it did you, Chris.Lindsey Kuperhttps://www.blogger.com/profile/16008212366231583780noreply@blogger.comtag:blogger.com,1999:blog-6522986046288736604.post-91313341794757543272013-12-19T10:36:47.749-08:002013-12-19T10:36:47.749-08:00I feel I have not done a good job at all in effect...I feel I have not done a good job at all in effectively promoting typed functional programming, which I myself find tremendously fun, joyful, liberating, and practical. I used to think "it's not my job to market", but I don't have that view of the world any more. I would definitely like to collaborate with others who also want to spread the word in a friendly, effective way! Franklin Chenhttps://www.blogger.com/profile/14762341306710286314noreply@blogger.com