[Bluej-discuss] language stuff

Aryeh M. Friedman aryeh.friedman at gmail.com
Tue Oct 16 12:01:37 BST 2007


Stephen Bloch wrote:
> Aryeh writes:
>
>   
>> ... anything but infix requires an amazing amount of
>> conceptual conversion between problem and code space.
>>     
>
> Huh?  What real-world problem (other than parsing infix algebraic 
> expressions) is inherently infix?  Infix notation was invented only a 
> few hundred years ago; it's not exactly hardwired into our brains.
>   

I think it is hardwired enough that adding one more barrier to being a
programmer is not worth it.   By hardwired I mean if the student has no
CS in high school it is the only thing they are familiar with.
>   
>> That plus having to count parens basically rules out any lisp 
>> variant in my mind.
>> ...
>> the reason for using a mix of symbols vs. just one for grouping is
>> breaks the counting up... something is very wrong if you have an
>> expression that has more then 4 leading or closing parens in algol like
>> langs because a[i] is not the same as a(i)... under your arg we should
>> teach fully parened math only (because the only advantage of pre/postfix
>> over infix for human readers {compilers have different reasons} is it is
>> essencially fully parened without the need for parens)
>>     
>
> Suit yourself.  I'd rather keep typing right-parens until everything 
> matches than figure out the correct sequence of parentheses, 
> brackets, curly-braces, and semicolons to close a complex (yet 
> reasonable) expression like
>
> myButton.addActionListener (
>    new ActionListener () {
>      public void actionPerformed(ActionEvent e) {
>        if (showingValues) {
>          myLabel.setText (Integer.toString(myButton.values()[i]));}}});
>
>
> In the interest of fair comparison, here's a Scheme equivalent:
>
> (add-action-handler my-button
>    (lambda (e)
>      (when showing-values
>         (set-text my-label
>            (number->string (vector-ref (values my-button) i))))))
>
>   
>> ... there is also a fantastic language call APL or worse
>> one where all the reserved words are white space
>>     
>
> Slight correction.  In APL, most of the predefined functions (I don't 
> know whether they're reserved words) are spelled using non-standard 
> characters, but not whitespace.
>
>   
>> ... this goes all the way back to the mid
>> 60's with the divide between Bell Labs and MIT on various aspects of
>> Multics (MIT wanted theoretical purity [LISP] and Bell Labs wanted
>> something praciticle [C/C++/Java])
>>     
>
> I was about to point out that Multics was in fact written mostly in 
> PL/1, as C, C++, and Java hadn't been invented yet.  But you're 
> making an analogy, so never mind.
>
> The dispute isn't "theoretical purity vs. something practical"; I 
> think we're all in favor of something practical.  The question is 
> "what approach is most practical and effective for teaching beginning 
> programming?"  In a freshman programming class (or a non-majors' 
> programming class), my main goal is not to get the students a 
> programming job next month; it's to teach them habits of good 
> programming.
> In such a class, one of the real, practical hurdles is the time 
> students spend memorizing syntax rules.  If I can lower that hurdle 
> (e.g. by using a language with far simpler and more consistent 
> syntax, or an IDE that shields them from some of the syntax rules), I 
> have in a very practical way bought myself class time to teach more 
> practical principles of programming: refactoring, design for re-use, 
> polymorphism, data structures, etc.
>
> For my own programming, I occasionally use C, C++, or Java, but in 
> many cases I choose Scheme for its power, flexibility, and brevity. 
> These are practical decisions, motivated by the desire to produce a 
> working program as quickly as possible.
>   

I guess you don't do too much systems level stuff ;-)  btw writing a
Java to native compilar (and later a OS) is "intresting" ;-)
>   
>> There is conceptual ambiguity in pre/post fix because it is so
>> unfamiliar to non-CS people....
>> I was refering to arhithmatic (2 2 + 3 * would just baffle most
>> beginners but 2+2*3 [assuming traditional human precendance] can be read
>> instantly by anyone who is ready for college])
>>     
>
> For the people on this list, 2+2*3 is familiar, comfortable, an old 
> friend.  For many of my students, it's mysterious, scary, an old 
> enemy.  I have had students disagree with one another in class over 
> its correct value, since some of them never really grasped order of 
> operations in high school.  For those students, using a different 
> syntax allows them to start over with a clean slate.  I have seen 
> light bulbs go on over the heads of students who had never understood 
> before what this "order of operations" stuff meant.
>   

This is likely where we differ (I am guessing you teaching in a 4 year
with no automatic admission for anyone with a GED).   At the community
college level I have a hard enough time getting 2 term expressions to be
understood so we almost never use 3+ term ones and thus infix is *ALOT*
easier.



More information about the bluej-discuss mailing list