[racket] Racket style guide (was Re: Argument order conventions (was: Variable naming conventions))

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Thu Sep 22 13:28:17 EDT 2011

Matthias Felleisen wrote at 09/22/2011 12:14 PM:
> Personally, I'd love to see even more of a separation between the header (data + provide) and the implementation. Perhaps I read too much Modula 2 code, perhaps I liked units too much. 

Modula-2 made me a better software engineer using C around 20 years ago, 
in a surprisingly good community college course.  However, thank 
goodness I never had to do real work in Modula-2.  We implemented a 
spreadsheet program as a team project, with a rule that we weren't 
allowed to see other people's Modula-2 implementation files.  It was an 
educational experience, in team dynamics as much as anything else.  But 
we were not at all fond of klunky and annoying Modula-2 setup (perhaps 
somewhat like people who used an impoverished Scheme implementation for 
annoying problem sets in college decided they disliked Scheme).  We 
would've been much happier with Turbo Pascal, and I wonder whether 
whether we could have learned just as well using TP units and some 
conventions to discipline us about interface vs. implementation.  Based 
on industry experience immediately after that, working in C on large 
high-end workstation software and fancy embedded systems tools, I'd say 
that the Modula-2 experience taught one very useful discipline that few 
of the C developers at the time seemed to have a good grasp of.

I wonder whether anyone using Racket for a course with a large team 
project has tried forbidding team members from looking at each other's 
implementations -- let them work only from module interface docs or 
something like Racket's "sig"s -- and how that worked out.  It might be 
harder to do nowadays, due to many students having preconceived ideas of 
how team projects work, based on all the public open source projects, 
the popularized codification of Agile cowboy methodologies, and on 
post-dotcom title inflation-- students might not believe you if you say 
"this is how *software engineering* is done."


Posted on the users mailing list.