tag:blogger.com,1999:blog-36017112.post1082858970808342913..comments2024-03-28T17:08:26.448+00:00Comments on Featherweight Musings: Teaching programmingUnknownnoreply@blogger.comBlogger8125tag:blogger.com,1999:blog-36017112.post-60803576109251582322010-10-28T18:51:00.603+01:002010-10-28T18:51:00.603+01:00I was taught Scheme as a first language and I am q...I was taught Scheme as a first language and I am quite sure it was the best possible choice for me.<br /><br />It's exactly for the opposite reason as what you said: syntax isn't relevant; you rather focus on the semantics. Everything looks the same and can be exchanged everywhere. You don't need to think about operator precedence because the brackets enforce order.<br /><br />And then the most important part is that the language forces you to work with lambdas and only lambdas. When I started working at a Java-taught institution I noticed that even students in the third year and higher still didn't know the difference between static and dynamic scoping! This is something I learned in the second month or so.<br /><br />Scheme can teach you OO from the ground up using lambdas (dispatch objects). Since there is no magic in the language that makes it work, but you rather construct your own objects, this made it really clear to me how it all fitted together.<br /><br />Scheme is maybe not the only language that could teach all of this, but I haven't really seen other languages (and other environments than Racket Scheme, PLT) that easily support such coding from the ground up. And especially in Racket the Help Desk with its links really helps you out. Probably not a merit of Scheme on its own; but then again, most people probably use Java for Eclipse.<br /><br />Too bad there is no Smalltalk in any of those lists though ;)Toon Verwaesthttps://www.blogger.com/profile/11530656930639752375noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-73354980853951868782010-10-25T10:43:36.877+01:002010-10-25T10:43:36.877+01:00> I don't think being a Java programmer mak...> I don't think being a Java programmer makes you a better software engineer in C<br /><br />I think that being a good software engineer is orthogonal to the language employed, but that OO languages help you understand the concerns of software engineering.Sophia Drossopoulouhttps://www.blogger.com/profile/16573531322680501368noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-45464361677314937062010-10-25T10:41:12.411+01:002010-10-25T10:41:12.411+01:00Why does the functional language have to be lazy? ...Why does the functional language have to be lazy? And what about Prolog?Sophia Drossopoulouhttps://www.blogger.com/profile/16573531322680501368noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-65506873469799347102010-08-13T04:26:44.178+01:002010-08-13T04:26:44.178+01:00Hi John, I like Python before Java, hopefully they...Hi John, I like Python before Java, hopefully they'll ahve learned static typing from Haskell in the 1st year and then C. They should also get some motivation for static types, because writing large-ish Python programs can be painful.<br /><br />I guess this is a curriculum for programmers rather than software engineers. But, I don't think being a Java programmer makes you a better software engineer in C. You need to be good at non-OO software engineering for that.<br /><br />Also, Java, C, and C++ _are_ from the dark ages, PL-wise. It would be a good thing if a few more graduates realised that!Nick Cameron.https://www.blogger.com/profile/04760749052780174977noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-61088473006968761562010-08-11T14:55:27.611+01:002010-08-11T14:55:27.611+01:00nice- makes sense to build up from lambda calculus...nice- makes sense to build up from lambda calculus (chris clacks' course was really good!) to OO programming, but I would move python to the third year as students would get too used to dynamic typing, which makes C/C++/java look like they are from the dark ages, especially since most courses don't touch on performance issues.<br /><br />Also, although I agree that java doesn't make you a better C "programmer", it does make you a better "software engineer", which is what most CS grads end up doing.John Tanghttps://www.blogger.com/profile/13829231169955265409noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-9022930503927896602010-08-03T22:14:20.599+01:002010-08-03T22:14:20.599+01:00Alex - why?
Is Scheme so they know how to use bra...Alex - why?<br /><br />Is Scheme so they know how to use brackets properly before they get to 2nd year? Because I can't think of any other reason to teach it.<br /><br />Shouldn't you be pushing something like<br /><br />1st year: Java<br />2nd year: Java<br />3rd year: JavaNick Cameron.https://www.blogger.com/profile/04760749052780174977noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-69173416815037308712010-07-31T07:10:25.044+01:002010-07-31T07:10:25.044+01:001st year: Scheme.
2nd year: Java and x86.
3rd year...1st year: Scheme.<br />2nd year: Java and x86.<br />3rd year: C/C++ and HTML5+Javascript.Alex Buckleyhttps://www.blogger.com/profile/12559932534649195508noreply@blogger.comtag:blogger.com,1999:blog-36017112.post-3448395811085295042010-07-30T09:14:16.522+01:002010-07-30T09:14:16.522+01:00Asked a fun question to my honours class today: wh...Asked a fun question to my honours class today: <i>why can't you have a double-linked list if you're reference counted</i>. (There was a comment to this effect in some C++ code used as an example of the Iterator pattern).<br /><br />Noone could (or bothered?) to answer it - so I did it worked on the board. Interesting that this question really is more subtle than I'd first thought: and for people raised on Java - even Java with (I hope!) a fair bit of C/C++ - seeing the answer isn't intuitive. <br /><br />but then I guess I wrote a book about this once...Anonymousnoreply@blogger.com