RE: Intuitiveness of programming languages/paradigms
The people who don't learn are not motivated and not enthusiastic That is an incredibly complacent attitude, pedagogically. I'm not suprised to hear it, I'm afraid. *sigh* You aren't listening are you? L.
Re: Intuitiveness of programming languages/paradigms
- Original Message - From: R Bartlett ra.bartl...@ntlworld.com To: S.A.Fincher s.a.finc...@kent.ac.uk Sent: Monday, November 30, 2009 4:42 PM Subject: Re: Intuitiveness of programming languages/paradigms You may be interested to see some of the portfolios generated by chalk face academics teaching introductory programming every day. I think they speak eloquently of the quality of care educators pour into their teaching. http://www.cs.kent.ac.uk/people/staff/saf/dc/portfolios.html Thanks for that. Some interesting stuff in the portfolios. There are lecturers and departments that are obviously recognising the difficulties, and trying hard to come up with a good pedagogy. And it's good to see the Schon view of professionalism prevailing over the Illich one! However, despite all those good intentions, there does not seem to be a move away from the presentation of programming in stages to large groups as a predefined curriculum, lumbered with baggage such as pesudo code, log books, and all the accompanying tests and assessment as-you-go, based on more or less elborate marking schemes, and so forth. That's how it seemed to me on a brief inspection of some of those portfolios. I think if you believe in the 'breakthrough' model of learning, all that is not necessary. Perhaps if one believes that a drip-drip exposure somehow works, then the approach is more justified? Richard.
Re: Intuitiveness of programming languages/paradigms
This sounds like an interesting problem around the role of university education. Traditionally / (in olden times?), one of the differentiators between school and university was that at university students were considered to take full responsibility for their own learning. As a student I was told employers valued this -- when they were hiring graduates, they wanted to see that their potential employee did not need constant hand-holding and spoon-feeding, but that if you put him/ her in an environment where help is available on request, suitable resource material and experts to ask are abundant, and say here's your goal; now go for it that potential employee would not flounder but would be able to identify the resources they need, learn what they need, and get it done. Of course that is a very traditional/old- fashioned view of universities that asks very few pedagogical skills of the lecturers. It places all the blame on the students. The more recent consideration is for universities to be seen as education suppliers, and students are their customers. The relationship between the university and the student is a business relationship (the student really is paying for some of it now), and value-for-money is a genuine and reasonable concern. Is the pedagogy of the lecturer good enough? If the customer has paid to learn this material, and they haven't done so, what should the lecturers have done better to give full satisfaction to their customer? I guess the second half of the question is how much hand-holding is best for programmers in the long-run? Is programming a threshold concept whereby once you've got it it all becomes much easier thenceforth, so if we can just hand-hold students til they get over the threshold they will be fine after they graduate? Or is it a continuous incline of learning -- and if you hand-hold the student all the way to graduation, will they feel like they've fallen off a cliff when they go out and get employment only to find that all those careful pedagogical plans stop at the university exit gate? I don't mean any rhetoric by this, but it sounds like an interesting problem. William On 30 Nov 2009, at 10:15, R Bartlett wrote: Let me chime in with an echo of what Lindsay said, and put it to you that CS students who are, quote, not very good at programming, are the kinds of students I expect a competent system to sharpen up, or grind out. I don't expect it to find a way to make them good programmers in spite of themselves, if those very students lack sufficient drive and aptitude to conquer the material at hand under their own steam. Well this discussion all boils down to the role of education. THere are two attitudes 1) We'll take your money, but really you shouldn't be on this course - we would like people who can already program so that we don't have to teach anything. or 2) We'll take your money, and do the best we can with you. - Original Message - From: Frank Wales fr...@limov.com To: Ppig-Discuss-List@open.ac.uk Cc: R Bartlett ra.bartl...@ntlworld.com Sent: Sunday, November 29, 2009 11:31 PM Subject: Re: Intuitiveness of programming languages/paradigms R Bartlett wrote: I think if you ask CS undergraduates who are not very good at programming whether they want to program, the answer will change from yes to no after a couple of months. Let me chime in with an echo of what Lindsay said, and put it to you that CS students who are, quote, not very good at programming, are the kinds of students I expect a competent system to sharpen up, or grind out. I don't expect it to find a way to make them good programmers in spite of themselves, if those very students lack sufficient drive and aptitude to conquer the material at hand under their own steam. How much they have paid for the course, or how high their hopes have been piled, doesn't matter for CS students any more than it matters for music students or medical students or Latin students. And I have no vested interest in defending the current teaching situation; rather I'm a walking, talking data-point from both sides of the student body. I was rightly ground out of medicine, due to lack of interest; I got distinction passes in computing and molecular biology, despite copious non- academic stresses, due to compelling interest. In both cases, the teaching staff helped, but I saw it as my job to fail or succeed. I managed to do both, in different fields, according to my drive and aptitude, and I wouldn't expect higher education to be any other way. -- Frank Wales [fr...@limov.com]
Re: Intuitiveness of programming languages/paradigms
On Tue, Nov 24, 2009 at 12:35 AM, Derek M Jones de...@knosof.co.uk wrote: approach easier, and some of whom find another. From a teaching point of view, would it be possible to offer two introductory streams, one functional and one imperative, and let students choose and/or transfer early? How could students tell the difference between having problems programming and having problems using a particular kind of language? Perhaps this distinction is not important, they could simply try another approach and see if it makes any difference. i believe that this train of thought should really be more widely applied. the way i best learn algebra is perhaps not the same best way the student next to be might learn it. yet our academics do little or nothing to consider how best to engage with a student. sincerely.
Re: Intuitiveness of programming languages/paradigms
On Tue, Nov 24, 2009 at 1:35 PM, Richard O'Keefe o...@cs.otago.ac.nz wrote: I wonder if the question of intuitiveness could be studied at the level of arithmetic rather than programming as a whole. For example, Smalltalk counts as OO-imperative, but has bignum and ratio arithmetic built in and standard: 6/4 gives the answer 3/2, not 1.5. Java _has_ bignum arithmetic, but doesn't let you use ordinary notation with it. And so on. seems like there is a range of essential vs. inessential mental complexities that one has to grok to really grok a given programming language, this whole how close to Real Math does it come being an example. so maybe we can study intuitiveness of a programming language in terms of the things which are general problem-solving issues vs. issues about a particular concrete implementation. (in reality i think as jef raskin used to say that 'intuitive' is b.s. and is more just another word for 'familiar'.) e.g. a particular paradigm (e.g. imperative) makes sense to a given individual, but then they get totally tripped up by the horribly non-standard vs. math details (cf. limits on ranges of values). sincerely.
Re: Intuitiveness of programming languages/paradigms
On Tue, Nov 24, 2009 at 1:58 PM, Lindsay Marshall lindsay.marsh...@newcastle.ac.uk wrote: I think this is a complete red herring. But there again so is the whole idea of intuitiveness. agreed :-) my point (which might have been exactly the same as yours) was just that if we are going to try to understand how an individual might best be able to use a computer, we need to understand that it isn't just the gross terms of e.g. imperative vs. functional. sincerely.
Re: Intuitiveness of programming languages/paradigms
Maybe it is time to rewrite K-12 math books to be in line with computational processing. It would be great. Imagine dad at the dining room table trying to explain to little Johnny... 100 Cheerios are here, and if we add another, we have -100 Cheerios. Sorry, I couldn't help myself. With respect to such problems, I spent the usual amount of time in college studying various complexities in arithmetic on computers. Yet, I have only seen problems crop up three times over 10 years of full-time programming experience. For 'most' programmers, the complexities of computational arithmetic don't impact us on a daily basis. And, when these problems occur, they often result in obviously wrong results (as opposed to believable results). Thus, if one were to study an aspect of this problem, I would think it would be better to focus on a higher-impact issue (not that arithmetic doesn't have worth). On Tue, Nov 24, 2009 at 4:35 PM, Richard O'Keefe o...@cs.otago.ac.nz wrote: On Nov 24, 2009, at 9:35 PM, Derek M Jones wrote: Brad, like i said, i'm not sure intuition exists What's quite certain is that *claims* of intuitiveness exist. But do they only exist as a reason for justifying the use of one particular language? I don't think so. For one thing, in the recent thread that got me started on this, other people were recommending a whole range of programming languages (Java, C#, Python, AWK, even PERL). For another, when people try to justify one particular language, there are lots of other reasons they can and usually do oofer. I believe that when people say things like imperative programming is more intuitive than [whatever] they mean _at least_ the following things: 1 I learned imperative programming with only a modest amount of trouble or no trouble at all. 2 I was able to transfer what I learned to other imperative languages with little or no trouble. 3 I find [whatever] much harder to understand. 4 I know a lot of other people who feel the same. 5 I do NOT know many people (or even any at all) who came from [whatever] to imperative programming and found it hard to understand. 6 The experienced difficulty of [whatever] is not a defect in us or our education but a defect in [whatever]. For the speakers, 1-5 are facts and 6 is felt to be justified by those facts. The possibility of selection bias (people who would have been more comfortable learning Haskell or Miranda first very seldom get the chance, and leave the field, so we never get to hear their opinions about intuition and programming languages) is rarely considered. How could students tell the difference between having problems programming and having problems using a particular kind of language? Perhaps this distinction is not important, they could simply try another approach and see if it makes any difference. That's indeed an operational way of telling the difference. That suggestion of mine was not just a half-baked idea, it was just set out in the sun for a minute or two. It would not be easy to set up or administer. By the way, there's a service paper here for people who want to be surveyors. It covers trigonometry, statistics, a couple of other topics, and some programming. The surveying department insisted that the language taught be Visual Basic (more precisely, Visual Basic for Applications, inside the Excel spreadsheet). I was the only computer science lecturer willing to be involved with it. I only have five one-hour lectures to teach the elements of programming. I *KNOW* the thing is impossible. I spend one lecture explaining that and why computer arithmetic does not behave the way they expect arithmetic to behave, for example that you can find a number X such that X + 1 X and numbers X, Y, Z such that X+(Y+Z) differs from (X+Y)+Z and numbers X Y both different from zero such that X*Y = 0. I spend half of another lecture telling them that they need to write down what their functions are supposed to do and to TEST their functions to make sure that they do. When you stop and think about it, computer arithmetic is *stunningly* unintuitive, IF your intution is based on the laws of whole numbers and fractions learned at school and the laws of the real and complex numbers learned in first year mathematics at university. I wonder if the question of intuitiveness could be studied at the level of arithmetic rather than programming as a whole. For example, Smalltalk counts as OO-imperative, but has bignum and ratio arithmetic built in and standard: 6/4 gives the answer 3/2, not 1.5. Java _has_ bignum arithmetic, but doesn't let you use ordinary notation with it. And so on.
Re: Intuitiveness of programming languages/paradigms
Derek M Jones writes: I'm sure Lindsay could design a language, but it might only be an imagined intuitive-to-him language. apologies if i misunderstand, but if you are saying that the devil is in the details, i fully agree, and that is what i mean by logic being non-intuitive, and similarly programming. in other words, having a DWIMNWIS language is not easy. sincerely.
Re: Intuitiveness of programming languages/paradigms
Raoul, I'm sure Lindsay could design a language, but it might only be an imagined intuitive-to-him language. apologies if i misunderstand, but if you are saying that the devil is in the details, i fully agree, and that is what i mean by logic being non-intuitive, and similarly programming. in other words, having a DWIMNWIS language is not easy. What I am trying to say is that Lindsay might only design a language that is intuitive to his declarative memory. When he gets to use it in practice he might not find it intuitive at all (ie, his procedural memory might not get on with it at all). -- Derek M. Jones tel: +44 (0) 1252 520 667 Knowledge Software Ltd mailto:de...@knosof.co.uk Source code analysis http://www.knosof.co.uk
Re: Intuitiveness of programming languages/paradigms
On Tue, Nov 24, 2009 at 5:08 PM, Richard O'Keefe o...@cs.otago.ac.nz wrote: a different syntax, and indeed Lisp-Flavored Erlang exists. +1 for mentioning lfe; i wish somebody would do something similar for ada some day.
Re: Intuitiveness of programming languages/paradigms (fwd)
(forwarding my earlier direct reply to Richard) [This is] A regularly recurring question, over the years of PPIG! This has been the starting point for a number of PhDs, but a religious war seldom makes a good PhD. I'm not aware that the results have ever found anything very conclusive. Some of the students involved may still be on the list, and can tell you what they ultimately found. It seems unlikely that the people shouting on your list would respond to any common sense, but here are the questions I tend to ask new PhD students: 1) What is the measure of 'intuitive' that you propose to use? 2) Do you believe that all people are the same? If not, who are you trying to help? 3) What do you want people to be able to do with a programming language? Depending on their answers, I might do something like refer them to John Pane's work with Brad Myers on 'Natural Programming' (which was focused on understanding childhood models), or just tell them the old joke that I saw posted during a religious war on a Python list that 'ML is the language they use to mop up the excess brain capacity of first year Cambridge students' (or same joke, for MIT students using Scheme). I'm not answering you from the email account that has the list subscription - feel free to forward if you like. Alan On 23 Nov 2009, at 04:23, Richard O'Keefe wrote: Does anyone know whether there's any empirical evidence either way for the hypothesis programmers find a programming language or paradigm intuitive to the degree that it resembles what they learned first ? Another mailing list I'm on just had a bunch of people shouting that imperative programming was obviously more intuitive than functional or logic programming. Since they didn't seem to be familiar with the fairly wide gap between a typical first-year model of how an imperative language and what _really_ happens (e.g., apparently non-interfering loads and stores can be reordered both by the compiler and the hardware, loads from main memory can be 100 times slower than loads from L1 cache, c), I found myself wondering if what they _really_ meant is I learned a simple model early on and find anything else different. There's evidence that people find languages like Scheme and Erlang (and even Prolog) easier if they haven't done conventional imperative or OO programming before, but that's not to say that they wouldn't have found those approaches easier still. - -- Alan Blackwell Reader in Interdisciplinary Design, University of Cambridge Further details from www.cl.cam.ac.uk/~afb21/ --- End of Forwarded Message -- Alan Blackwell Reader in Interdisciplinary Design, University of Cambridge Further details from www.cl.cam.ac.uk/~afb21/
Re: Intuitiveness of programming languages/paradigms
On Nov 24, 2009, at 3:18 AM, keith gallagher wrote: like i said, i'm not sure intuition exists What's quite certain is that *claims* of intuitiveness exist. I think it's possible to operationalise the concept. Given languages of similar syntactic complexity, which of several paradigms is easier to learn to a specified criterion? William Billingsley's anecdote suggests (what we should by now expect): a heterogeneous population, some of whom find one approach easier, and some of whom find another. From a teaching point of view, would it be possible to offer two introductory streams, one functional and one imperative, and let students choose and/or transfer early?
Intuitiveness of programming languages/paradigms
Does anyone know whether there's any empirical evidence either way for the hypothesis programmers find a programming language or paradigm intuitive to the degree that it resembles what they learned first ? Another mailing list I'm on just had a bunch of people shouting that imperative programming was obviously more intuitive than functional or logic programming. Since they didn't seem to be familiar with the fairly wide gap between a typical first-year model of how an imperative language and what _really_ happens (e.g., apparently non-interfering loads and stores can be reordered both by the compiler and the hardware, loads from main memory can be 100 times slower than loads from L1 cache, c), I found myself wondering if what they _really_ meant is I learned a simple model early on and find anything else different. There's evidence that people find languages like Scheme and Erlang (and even Prolog) easier if they haven't done conventional imperative or OO programming before, but that's not to say that they wouldn't have found those approaches easier still.