On Wed, 18 Dec 2019 at 16:12, Steve Davies <st...@connection-telecom.com>
wrote:

> Hi,
>
> I'm having yet another go to get to grips with Pharo.
>
> My project is for home automation.  It seems in principle a great match
> since object inside Smalltalk are obviously a great match for physical
> objects being controlled.
>
> I started at the Pharo Wiki on Github "Setting up a new project".
>
> I'm a career programmer but I'm nearly 60 and sadly I can't absorb
> information like I used to be able to, and I'm just finding Pharo so
> overwhelming - I feel like a maintenance programmer trying to find a way
> into a million lines of code when you don't understand the principles of
> organisation and the conventions of the developers.
>

Consider the analogy would be someone wanting to write Hello World as a
newcomer in C
and having the source code for the Eclipse IDE in front of them and feeling
like they have to understand all of that source code before writing Hello
World.
Just because because the code for the whole Pharo IDE system is front of
you doesn't mean you should feel need to understand it all at once, or even
ever.
But I remember a similar initial jarring of my workflow before developing a
constructive-ignorance mindset.


Is there no way to have some sort of "progressive revelation" of the
> insides of Pharo?  Just documentation on most classes, examples of how to
> use the class, without the implementation being exposed initially?
>

The books and MOOC are probably the best for this
https://pharo.org/documentation

For something a bit more goal oriented, try Exercism...
https://exercism.io/tracks/pharo-smalltalk


The stuff I need to look into for my project is mixed in with 1000s of
> classes that I (hopefully) can ignore for now - but there seems to be no
> way to hide away all the irrelevant stuff.
>
> Traditionally if I was trying to get to grips with a large unfamiliar code
> base I would use grep to search, skim through source files getting a sense
> of it.  With the browser in Pharo I feel like I'm looking through a
> keyhole.  No doubt this is just unfamiliarity and I just need to learn the
> tools better.
>

A few things I find useful are:
* In the class definition, select a variable the right-click-it > Code
Search > References to it
* In the Browser, select a class, right-click-it > Class Refs to find some
unit tests using it, then debug-into those tests.
* Make heavy use of Senders and Implementors to find examples of how things
are used.
* Add "self haltOnce" into methods so you can observe the call stack of how
they are used.  Note: "self halt" can be dangerous in system methods you're
not familiar with, in case that method is used by the UI loop.  haltOnce
effectively stops the current UI loop and spawn a new UI loop to keep
working.

Personally I find it easier to understand the Pharo libraries by watching
them run in a debugger than perusing static code.

I'm looking forward to trying out the new object-centric-debugging...
https://www.youtube.com/watch?v=uDYJIm54yE4


Please read this as a request for help as to how to get a finger hold and
> how to shake this feeling of drinking from the firehose?  It's not intended
> as a complaint.
>

Cool.  It does read that way.  Happy to help you settle in.

cheers -ben

>

Reply via email to