Do not hesitate to ask questions! Smalltalk is different. And Pharo is not as cool as I would love it to be. But this is like that. I would like also it to be better. We are step by step getting there. I would like to have a small kernel that we can embed anywhere and that can talk to anything outside and a powerful set of tools and frameworks to load. We have nearly everything but some more work to do to get the full picture.
Stef > 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/ >>>> >>>> >>>> >>>> >> >> >> >> >> > >
