How to Program/en
Inhaltsverzeichnis
Introduction to Programming in expecco[Bearbeiten]
Before you start programming, please read this document, which describes how program code is handled in expecco. Unless you are familiar with the dynamics of a Smalltalk development environment, some of it may be unknown to you. You will have more fun and be more productive, if you know the power of the tools.
Executing Code Fragments[Bearbeiten]
Most of the tools inside expecco (especially the editor, notepad, data inspector and debugger) are able to execute code fragments.
To do this, select the piece of code to be executed and choose one of the "doIt", "printIt" or "inspectIt" menu functions. If no text is selected, the full cursor text line is evaluated. The ESC-key selects everything from the start of the line up to the current cursor position.
"DoIt" will simply execute the code, "printIt" will paste the returned value and "inspectIt" will open a data inspector on the result. The syntax depends on the context: in a workspace, it is selectable via a menu setting, in a debugger, it will be the language of the function being shown, in an inspector it is usually Smalltalk syntax. To get a feeling for this, try the following:
- open a workspace (Mainmenu: "Extras" -> "Tools" -> "Notepad")
- select Smalltalk syntax (Workspacemenu: "Workspace" -> "Smalltalk")
- enter a piece of Smalltalk code (for example: "
1024 hexPrintString
") - select this code
- apply "PrintIt"
- the text "
400
" (which is the hexadecimal representation of the integer 1024) will be pasted at the text cursor position.
Try the same with the code fragment: " 'hello world' copyTo: 5
".
Opening a notepad (workspace):
Evaluating a code fragment:
Now do the same, but apply the "inspectIt" menu function; an inspector will appear, which shows the result (another string, containing the first 5 characters):
The inspector shows some meta-info (class and size) plus the internal slots of the object on the left, and displays the selected slot's value in the right subview, which is another workspace (so "doIt" is again possible there). Double-click on a left entry navigates into it.
Hot-Swapping Code[Bearbeiten]
One of the coolest feature of expecco is its how-swap capability. Code can be edited and recompiled while the program (test) is running, without a need to stop the execution. However, it is not possible to hot-swap the one function which is currently being executed: it has to be either returned from, or restarted after a change. When an elementary function's code is changed, the new version will be activated with the next call.
Programming "in the Debugger"[Bearbeiten]
To demonstrate the above, create a Smalltalk elementary block (give it any name, such as "Testblock"), give it one input and one output parameter, and define its code as:
execute out1 value:(in1 value * 2)
if you prefer JavaScript, the code should be:
execute() { out1.value( in1.value() * 2); }
Datei:Defining TestBlock code.png
Then create a compound action block (say "Testblock-Runner"), and drop the above TestBlock-action into its network.