Roelof,

I second Richard on that. Maybe Exercism is important, but I don't know if is important enough to consider quitting Smalltalk because of the experience solving a problem there.

Maybe sharing some of our personal experiences learning Smalltalk, the struggles and joys on that could put Exercism in perspective.

In my case I started with Smalltalk via Etoys and Squeak in 2006 and 2007, but I left it as I can not "get it" all, despite of seeing the potence behind ideas like Dynabook and having rewarding experience in educational context with freshmen students. We used Etoys, Bots Inc and Scratch. The last was easier to get, but the others offered a better continuum to go from tile based programming to coding, so we combined all of them. But when I try to build more... "practical" things like OS scripting or data stories/visuals I struggle a lot with the Smalltalk environment, the paradigm switch and its purity, the absence of modern books and local communities and the kind of childish UI. It was like if I was growing in my needs, but the Squeak environment was so tailor suited for education with children that can not grow with me in more professional day to day tasks.

Seven years later I found Pharo, so Smalltalk and I were changed enough for this meeting again experience. I have struggles again, particularly getting support with some issues related the GT, but the community was welcoming (as always), the books where more mature, the mailing list more active, and the level of fluency I get this time to express my old and new ideas in code was nothing I have experienced before in any computer language/environment. I chose a "real" world project as my learning experience this time (called Grafoscopio[1]) and despite it has a lot to improve and there is still newbie code here and there, any time I have the chance to working in it again, I'm really grateful of sticking around and keeping with the Smalltalk communities and the technology.

[1] https://mutabit.com/grafoscopio/index.en.html

So, my advice is don't let the Exercism experience let you down on Smalltalk. You could try with other approaches to learn, you could try with different books, or given yourself some distance, rest a little bit and be back here again. I know nothing about double dispatch, I'm learning design patters, I do not do TDD as common wise advices. I'm learning this by myself, following my own exploration and learning needs as they arrive, with the help of this community. And I know I'm getting better when I compare with myself years ago. So I expect to be here for the years to come and get even better and to showcase that in the code I write and share with this community. Would be nice to have around too.

Cheers,

Offray


On 24/04/19 6:19 p. m., Richard O'Keefe wrote:
Please don't quit Smalltalk.
I never said not to use classes.
That would be insane.
I said that *this specific exercise* is one
where *extra classes do not pay off.
This is in no way whatsoever a debate about
Pharo or Smalltalk.
We'd be having exactly the same discussion
in a list devoted to Java, Python, Ruby, or
any other OO programming language.
Please read
http://www.cs.otago.ac.nz/cosc345/bickerton.htm
It's a short page about learning.

If you want to learn about OOP, the problem is not
Pharo or Smalltalk or even me.  It's that exercism
is not designed to do that.  It's designed to give
people who already know what they are doing in one
or more other languages practice in a new one.

Do a web search for something like "How to learn OO design".
You will find little things like
<quote>

qwertyuiop924 <https://news.ycombinator.com/user?id=qwertyuiop924> on Sept 14, 2016 <https://news.ycombinator.com/item?id=12495808> [-]

Here's the OOP model:

A program can be modelled as a set of communicating black-box objects, with their own state.

The idea is to separate concerns, abstracting away implementation behind well-defined interfaces, which can in turn be implemented by other objects to cleanly replace parts of the application.

The rest of OO is pretty much just understanding Design Patterns (a set of names for common interactions between objects, and methods for setting these interactions up), grokking inheritance, and the difference between inheritance and composition, and grasping how to design a good OO system (how thickly to layer your classes, how much abstraction and what sorts, etc.)

The best languages for learning OO are Ruby and Smalltalk.

</quote>

in https://news.ycombinator.com/item?id=12495117

You will find articles like

https://medium.com/@richardeng/the-consequences-of-learning-oop-the-wrong-way-3659bdf0b996

You will find courses.

And look at the Pharo web site again: Stephan Ducasse has put up free copies of several books about Smalltalk.  I think he now has every one I've heard of.  Here's one link to get to them:

http://stephane.ducasse.free.fr/FreeBooks.html


        

Smalltalk and Object Orientation: an Introduction <http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf>,

may be particularly helpful.



On Thu, 25 Apr 2019 at 04:56, Roelof Wobben <r.wob...@home.nl <mailto:r.wob...@home.nl>> wrote:

    Thanks all.

    Because of all the differences of oponion here what Object
    Oriented is
    and im still very stuck at some exercises of exercism , I have to
    decide
    to quit smalltalk.

    One says to not use classes , the other says use classes. im more and
    more confused.

    Maybe later I come back when I have a beter understanding what Object
    Oriented is and how I can use it to solve more difficult problems.

    Roelof


    Op 24-4-2019 om 18:07 schreef Ben Coman:
    > On Wed, 24 Apr 2019 at 16:52, Richard O'Keefe <rao...@gmail.com
    <mailto:rao...@gmail.com>> wrote:
    >> The one method needed to solve the problem is 18 lines.
    >> The test code, including all available test cases, is 27
    >> lines, of which 18 lines is the test data.  Tests were
    >> needed primarily to sort out what the problem actually *was*;
    >> exercism doesn't even try to provide good specifications.
    >> No debugging time at all was needed, precisely because the
    >> code was so simple and obvious.
    > But we do want to showcase our debugger and demonstrate how to
    get the
    > most out of it.
    > The way the exercises are structured is to sequentially enable one
    > test at a time, see how that fails and fix it, so students will be
    > regularly interacting with debugger.
    >
    >
    >> If it *had* been needed,
    >> viewing the result right next to the expression that yielded
    >> it would have given me all the context I needed, in one window.
    >>
    >> If you want to learn how to design a good set of classes,
    >> this is an absolutely dreadful problem.  In fact ALL of the
    >> exercism problems are going to be dreadful for *that*
    >> purpose because they are provided for languages that do not
    >> *have* classes.
    > Yes, we noticed that.
    > Do you have any problems more suited to class creation that we might
    > contribute to the Exercism problem specifications?
    >
    >
    >> If you want to learn how to *solve problems*,
    >> then you need to learn to write code that is simple, clear,
    >> testable, and so on.  You certainly need to learn how to use
    >> what is already there in the language (except where that is
    >> expressly forbidden).
    > My understanding of the Exercism's purpose is:
    > * not to teach how to solve programming problems; but
    > * to facilitate existing programmers to develop fluency in new
    > languages (although that doesn't preclude complete beginners using
    > it).
    > [ref: search "fluency" at
    >
    https://opensource.com/article/17/1/interview-katrina-owen-founder-exercism]
    >
    >
    >> I completely agree that designing a good set of classes is
    >> a very very important skill for anyone who wants to do OOP.
    >> I completely agree that practising this on problems you can
    >> hold in your head is a good idea.
    >> I completely agree that if *that* is your objective,
    >> writing minimalist code is not the best strategy.
    >> On Wed, 24 Apr 2019 at 16:59, Richard O'Keefe <rao...@gmail.com
    <mailto:rao...@gmail.com>> wrote:
    >>> TL;DR version:
    >>>    "But if the purpose of problems is to lead students in new
    ways of
    >>>     thinking about structuring OO solutions for maintainability"
    >>> It would be very good
    >>> if somebody did craft such a set of exercises, and Pharo would
    be a very
    >>> good environment for them.  The exercism exercises will not do.
    > If the existing set of exercises is not great for this, hopefully we
    > can produce some to demonstrate Pharo's facility for it.
    >
    >
    >> The problem with exercism is that while it does have a
    >> criterion by which you can tell whether you have *solved the
    >> problem*, it provides *no* way to assess your class design.
    >> You don't get told "this is good, that is bloated"; there is
    >> no feedback about the *quality* of your code except via
    >> comments from those few people who can be bothered to look
    >> at other people's solutions and comment on them.  And since
    >> many of them will also be beginners, their comments may not
    >> always help.
    > Hopefully we can grow participation of experienced mentors
    > to share the load providing *quality* feedback to distinguish the
    > benefits of Pharo.
    >
    >> This particular problem is very similar to a "Langton's Ant"
    >> problem my old department gave to students, who were expected
    >> to solve it in two or three hours.  And ALWAYS, the thing that
    >> held them back was creating classes they didn't need and
    >> agonising over what data and methods should go where (and then
    >> getting it wrong, such is the nature of Java).
    > My immediate reaction to that is that  agonizing  and getting it
    wrong
    > are a useful part of the learning process, but I recognize I could
    > just be being contrary :) .
    > I'll keep your observations in mind.
    >
    >> When a problem can be solved quite directly in 18 lines of
    >> clean code, you are going to have a very hard time persuading
    >> me that even one more class pays for itself, especially in a
    >> system with a rich class library of stuff you don't have to write.
    > Not trying to persuade you personally.
    > Just providing an alternative viewpoint for anyone to consider.
    >
    > cheers -ben
    >
    >


Reply via email to