No worries :)

Welcome to Pharo!


On 05.01.2012, at 10:22, Gerry Weaver wrote:

> Hi Max,
> 
> Okay now I'm busy feeling pretty stupid. I sincerely appreciate your 
> (everyone's) help and patience with me. I'm pretty sure I'm all finished 
> being retarded now. I'm going to try not to bother y'all again until I have 
> much better (harder) questions :p
> 
> 
> Many thanks Max and many thanks to you all,
> Gerry
> 
> 
> -----Original Message-----
> From: "Max Leske" <[email protected]>
> To: [email protected]
> Date: 01/05/12 02:56
> Subject: Re: [Pharo-project] Pharo by Example
> 
> I'll try to give you a scenario for a simple project:
> Click on any class in the browser. You will see the class definition that 
> will look somewhat like this (I replaced actual names with placeholders): 
> <superclass> subclass: #<name of your class>    
>      instanceVariableNames: '<instVar1> <instVar2>' 
>      classVariableNames: '' 
>      poolDictionaries: '' 
>      category: '<name of your project category>'
> For this example let's use this: 
> Object subclass: #MyCalculator    
>      instanceVariableNames: '' 
>      classVariableNames: '' 
>      poolDictionaries: '' 
>      category: 'GCal'
> Once you have the class definition you want, hit ctrl+s (or cdm+s on Mac) and 
> the browser will show you your new category in the leftmost panel, containing 
> your new class MyCalculator which is a subclass of Object.
> Go to the third panel from the left. This panel contains "protocols" (method 
> categories). You will see something like "no messages". Click on that label 
> and you will be presented with a method template.
> Your first method: 
> add: aMoney to: anotherMoney 
>     ^ aMoney + anotherMoney
> Again, hit ctrl+s once your finished. Now of course we'll need a money class 
> that understands the #+ selector: 
> Object subclass: #Money    
>      instanceVariableNames: 'value' 
>      classVariableNames: '' 
>      poolDictionaries: '' 
>      category: 'GCal'
> Define the message #+ for the class Money: 
> + aMoney 
>      ^ self value + aMoney value
> And define the method value: 
> value 
>     ^ value 
> Once you save the method #value you'll be asked if you want 'value' to be an 
> instance variable or a temporary variable. Make it an instance variable.
> In the browser below the panel with the classes, click on 'class' to see 
> "class side" methods and define the method #value: : 
> value: aNumber 
>     ^ self new 
>         initializeWith: aNumber; 
>         yourself 
> Go back to the "instance side" of the class and define the method 
> #initializeWith: : 
> initializeWith: aNumber 
>     value := aNumber
> Open the world menu and open a workspace
> Type this in the workspace: 
> MyCalculator new add: (Money value: 30) to: (Money value: 20) 
> hit ctrl+p to print the result (hopefully 50, I haven't tested the example :) 
> )
> 
>  
>  
> You would follow the same steps to enhance your application further. Now you 
> should take a look at Monticello to learn how to manage versions of your 
> application.
> 
>  
> Hope this helps a bit.
> 
>  
> Cheers,
> Max
> 
>  
> 
>  
> On 05.01.2012, at 09:26, Gerry Weaver wrote:
> 
>> Hi Max, 
>> 
>> Okay thanks. I think I get the startup scenario now.  
>> 
>> 
>> I come from the other end of the world in terms of software development 
>> (kernel, C, command line, etc.). I guess the part that's giving me a hard 
>> time is really the IDE workflow. I want to start writing code, but I feel 
>> kind of like I'm trying to build a ship in a bottle. What I would expect is 
>> that I would create some kind of project spec and add my code to that, but 
>> instead I'm finding this rather strange path. I assume that it's all about 
>> defining classes, but I'm having trouble figuring out where and how to do 
>> that. For example, is an application a category or is it just a way to group 
>> like functionality? Collections look like they are a tool for organizing 
>> code? Anyway, I'm going to keep plugging away at it. I kind of hoping maybe 
>> Visualworks will fill in some of the blanks.  
>> 
>> 
>> I recently left my job as a full time developer. There are several projects 
>> that I've been thinking about over the last few years. Since I am now a 
>> force of one, I'm looking for a higher level (hopefully more productive) 
>> language to code in.  One of the things that attracted me to Smalltalk was 
>> the concept of the image and something called "Opentalk". Most of the 
>> applications I have in mind would be distributed in nature. However, a web 
>> interface wouldn't be completely out of the question. The FFI is also 
>> something that will be critical for me. I have quite a bit of C code that I 
>> will want to make use of.  
>> 
>> 
>> I have watched several of the screencasts, but they seem to leave out the 
>> part that I am having trouble with. I am still actively searching though. 
>> 
>> 
>> Thanks, 
>> Gerry 
>> 
>> 
>> -----Original Message----- 
>>> From: "Max Leske" < [email protected]> 
>>> To: [email protected] 
>>> Date: 01/05/12 01:55 
>>> Subject: Re: [Pharo-project] Pharo by Example 
>>> 
>>> Hi Gerry 
>>> 
>>> From your talk of application entry points it seems to me that you might be 
>>> talking about web development with Pharo. In that case PharoByExample won't 
>>> help you much. 
>>> Maybe, if you could tell us what you are trying to accomplish, we would be 
>>> able to help you better. Right now, at least to me, it is not clear why you 
>>> are having troubles. I've learnt Smalltalk with PBE and Pharo and found 
>>> everything to be fairly straight forward and clearly explained. 
>>> 
>>> As for the #init method, the only one I can find belongs to the ParseStack 
>>> object. That is definitely not what you want. What might be confusing you 
>>> is that you don't "execute" a binary like you would in other cases. Pharo 
>>> is not only an IDE but it is also the runtime environment. 
>>> 
>>> It just occurred to me, that you might be looking for something like: "if i 
>>> double click on the image I want my application X to be launched in the 
>>> image". That can certainly be done but is not the usual way. More often, 
>>> you will save the image with the "start UI" of your application opened, so 
>>> that when a user opens the image he will see one window with your 
>>> application. 
>>> 
>>> You also might want to check out the Pharo Screencasts ( 
>>> http://www.pharo-project.org/documentation/screencasts), you might see 
>>> something there that helps you to better understand Pharo. However, from 
>>> what I have experienced I suggest that you just work through PBE and see if 
>>> your questions persist. 
>>> 
>>> Cheers, 
>>> Max 
>>> 
>>> On 05.01.2012, at 06:50, Gerry Weaver wrote: 
>>> 
>>>> Hi, 
>>>> 
>>>> Perhaps I should just take a shot at explaining what I'm having trouble 
>>>> understanding. 
>>>> 
>>>> 
>>>> My current take on the environment is that an image is basically a 
>>>> container that holds everything in the application. In development mode it 
>>>> also includes the IDE and tools. I assume one would typically start by 
>>>> defining a class that was a subclass of some system or package class. I 
>>>> assume this process would continue until the application logic and data 
>>>> were defined. I also assume that there must be a way to indicate the class 
>>>> that represents the top level or entry point (main) of the application. 
>>>> That appears to be the init method. Is this anywhere close to being 
>>>> correct? 
>>>> 
>>>> 
>>>> The problem is that I'm not sure how to get started. I have played around 
>>>> with the system browser a bit. I can see that you would create a category 
>>>> and be presented with what looks to be a template for a class. I'm 
>>>> confused about the fact that the "Pharo by Example" has me creating a 
>>>> package when I don't see that in the 1.3 browser. I also don't know how to 
>>>> create additional classes in that category or how to tell the environment 
>>>> which class is my application entry point. I figure maybe the answer to 
>>>> all of this is a little too much for a mailing list question, which is why 
>>>> I didn't start out asking this. Anyway, at least this gives you an idea of 
>>>> where I'm stuck. Maybe my brain just isn't wired to understand something 
>>>> that may be obvious to others. 
>>>> 
>>>> 
>>>> Thanks, 
>>>> Gerry 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -----Original Message----- 
>>>>> From: "Serge Stinckwich" < [email protected]> 
>>>>> To: [email protected] 
>>>>> Date: 01/04/12 23:04 
>>>>> Subject: Re: [Pharo-project] Pharo by Example 
>>>>> 
>>>>> On Thu, Jan 5, 2012 at 11:45 AM, Gerry Weaver < [email protected]> 
>>>>> wrote: 
>>>>>> Hi, 
>>>>>> 
>>>>>> I've been trying various downloads, but I haven't found anything that 
>>>>>> works. I guess I may be making it harder than it needs to be, but I 
>>>>>> really have no idea how to proceed. I've been trying to find some doc on 
>>>>>> basic things like creating a package, class, etc., but I'm not having 
>>>>>> much luck. I assume the docs will be updated at some point. Would anyone 
>>>>>> have a feel for when that might be? I'm not in a hurry at all, so I 
>>>>>> could wait for a couple of more versions. 
>>>>> 
>>>>> Could give us more information about what is not working exactly ? 
>>>>> Did you upload the file here: 
>>>>> https://gforge.inria.fr/frs/download.php/27023/PBE-1.0.zip 
>>>>> and try the exemple in the book ? 
>>>>> 
>>>>> Regards, 
>>>>> -- 
>>>>> Serge Stinckwich 
>>>>> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam 
>>>>> Matsuno Laboratory, Kyoto University, Japan (until 12/2011) 
>>>>> http://www.mechatronics.me.kyoto-u.ac.jp/ 
>>>>> Every DSL ends up being Smalltalk 
>>>>> http://doesnotunderstand.org/ 
>>>> 
>>>> 
>>>> 
>>>> 
>> 
>> 
>> 
>> 
>>  
>  
> 

Reply via email to