[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