A clean, innovative, open-source Smalltalk.

Similar documents
A clean, innovative, open-source Smalltalk.

I have a dream... S. Ducasse & STICAmsud (

Pharo Syntax in a Nutshell

Seaside. What has happened since? What will happen after? Lukas Renggli

Seaside: An Innovative Web Application Framework

Scripting Browsers. Philipp Bunge, Tudor Gîrba, Lukas Renggli, Jorge Ressia, David Röthlisberger

Software Evolution from the Field: An Experience Report from the Squeak Maintainers

Dynamic Object-Oriented Programming with Smalltalk 1. Introduction

Introduction to Smalltalk

Why using Smalltalk for Teaching Object- Oriented Design

Stéphane Ducasse. Senior Researcher (Directeur de recherche de première classe) 47 years INRIA Lille Nord Europe- LIFL/USTL - CNRS UMR8022

IWST 2011! "#$%&&'()*+!$,!-.&!/ #'!&'(0$)!$,!! -.&!1)-&#)20$)23!4$#5+.$6!$)! !

14th International Smalltalk Conference 2006

Pharo by Example. Andrew Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, Marcus Denker. To cite this version:

Iterators. Damien Cassou, Stéphane Ducasse and Luc Fabresse. W3S09

Powerful DSL engineering with Smalltalk

Software Evolution from the Field. An Experience Report from the Squeak Maintainers

IWST In conjunction with the 22th International Smalltalk Joint Conference Cambridge, England, August 19, 2014

APIEvolutionMiner: Keeping API Evolution under Control

CAP - Advanced Programming Concepts

Object-Centric Reflection

Introduction to Seaside

Use vs. Inheritance. Learning Object-Oriented Programming and Design with TDD. Stéphane Ducasse.

arxiv: v1 [cs.pl] 17 Sep 2013

Sista: Improving Cog s JIT performance. Clément Béra

Run-Time Evolution through Explicit Meta-Objects

Albatross: Seaside Web Applications Scenario Testing Framework

CAP - Advanced Programming Concepts

Towards a flexible Pharo Compiler

Object Spaces for Safe Image Surgery

Squeak by Example. Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet. with Damien Cassou and Marcus Denker. Version of

Metaprogramming and Reflection Refactoring

Outline Smalltalk Overview Pragmatic Smalltalk Closing. Pragmatic Smalltalk. David Chisnall. February 7,

2. Smalltalk a reflective language. Oscar Nierstrasz

Squeak by Example. PDXScholar

Testing and Migration

Sub-method Structural and Behavioral Reflection

Ing. Mariano Martínez Peck

Deep into Pharo. Alexandre Bergel Damien Cassou Stéphane Ducasse Jannik Laval

An Overview of Essential Collections

An Overview of Essential Collections

About Double Dispatch

cient Object-Centric Debugging with Declarative Breakpoints

Pharo s Tips and Tricks

Traits in C# Stefan Reichhart Oscar Nierstrasz, Stephane Ducasse. Software Composition Group

Cog VM Evolution. Clément Béra. Thursday, August 25, 16

Problems and Challenges when Building a Manager for Unused Objects

Domain-Specific Program Checking

Pragmas: Literal Messages as Powerful Method Annotations

About Instance Initialization

An Introduction to Smalltalk for Objective-C Programmers

Efficient Proxies in Smalltalk

Encapsulating and Exploiting Change with Changeboxes

Problems and Challenges when Building a Manager for Unused Objects

A detailed VM profiler for the Cog VM

Syntax and Messages. Stéphane Ducasse 8.1

Syntax-Elements for Smalltalk

Software Reengineering P1: Intro & Organization. Martin Pinzger Delft University of Technology

Read-Only Execution for Dynamic Languages

Hermion - Exploiting the Dynamics of Software

CS 403/503 Exam 4 Spring 2015 Solution

SqueakSource Smart Monticello Repository ESUG Innovation Technology Awards 2005

Prototyping Languages Related Constructs and Tools with Squeak

Identifying cycle causes with Enriched Dependency Structural Matrix

Bootstrapping Reflective Systems: The Case of Pharo

Remote Debugging and Reflection in Resource Constrained Devices. Nikolaos Papoulias - December 2013

GENERICS AND REVERSE GENERICS FOR PHARO

8. Static Single Assignment Form. Marcus Denker

Language Boxes. Bending the Host Language with Modular Language Changes.

Towards a Moldable Debugger

Restructuring. What is restructuring? Tudor Gîrba Reengineering life cycle. What? forward engineering. reverse engineering

Smalltalk FOOP. Smalltalk

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Syntax and Messages. Stéphane Ducasse S.Ducasse

Cincom Smalltalk. News ESUG Update. By Arden Thomas. Product Line Manager

Smalltalk. Topics. History of Smalltalk. OOP and GUI. Steve Jobs, PARC, Dec Smalltalk 1. The best way to predict the future is to invent it.

ST Introduction. Birds-eye view

3. A Simple Counter. Creating your own class

Explora: Infrastructure for Scaling Up Software Visualisation to Corpora

Tracking Objects to Detect Feature Dependencies

The System Transcript, Class Point and Inspectors

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017

Tackling Software Navigation Issues of the Smalltalk IDE

Squeak Tools. Alexandre Bergel Marcus Denker Prof. Dr. Stéphane Ducasse


The DCI Paradigm Implemented in Squeak

5-Sep-16 Copyright 2016 by GemTalk Systems LLC 1

Seaside Web Application Toolkit for Squeak

Toyin Adedokun & Daniel Laughlin. Exploring the iphone SDK

Smalltalk Conferences in 2009

Supporting Incremental Change in Large System Models

Dynamic Languages and Applications

6. Intermediate Representation!

Flexible Dynamic Ownership in Smalltalk

2. Classes & Inheritance. Classes. Classes. Éric Tanter Objects and Design in Smalltalk. How do you create objects?

Tool Support for Refactoring Duplicated OO Code

7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker!

Ghost: A Uniform and General-Purpose Proxy Implementation

6. Intermediate Representation

Call Stack Management

Transcription:

A clean, innovative, open-source Smalltalk http://www.pharo-project.org

Roadmap Short intro User community Look at syntax and runtime Coding Session Future

In a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open and flexible environment Platform for Seaside and Aida/Web web frameworks

Pharo? A progressive, open-source Smalltalk platform for professional use. Stable Bugs fixed fast But innovative

Pier

Pier

iphone

Smalltalk with OO-Database Pharo is the IDE

Companies netstyle.ch cmsbox.com Pinesoft Smallworks GemStone SW GmbH 2Denker... Agilitic.be Inceptive.be

Universities Annecy Lugano Bruxelles... Bern Douai Lille Santiago

Getting started Model Tools Syntax

A Simple and Pure Model Everything is an object (instance of a class) Public methods Protected attributes Single inheritance

Everything happens by sending messages to objects 1000 factorial / 999 factorial (Smalltalk iscool) iftrue: [ Yeahh ] #(1-2 3) collect: [ :each each abs ]

Running Pharo

Do it, print it You can evaluate any expression anywhere in Pharo

Standard development tools

Standard development tools

Debugger, explorer, inspector

Syntax in a nutshell

3 kinds of messages Unary messages 5 factorial Transcript cr Binary messages 3 + 4 Keywords messages 3 raisedto: 10 modulo: 5 Transcript show: 'hello world'

From Java to Smalltalk postman.send(mail,recipient);

Removing postman.send(mail,recipient);

Removing unnecessary postman send mail recipient

But without losing information postman send mail to recipient

postman send: mail to: recipient postman.send(mail,recipient);

Precedence (Msg) > Unary > Binary > Keywords from left to right No mathematical precedence

2 + 3 squared 28

2 + 3 squared > 2 + 9 29

2 + 3 squared > 2 + 9 > 11 30

Color gray - Color white = Color black 31

Color gray - Color white = Color black 32

Color gray - Color white = Color black > acolor = Color black 33

Color gray - Color white = Color black > acolor = Color black > true 34

Statement and cascades Temporary variables Statement p pen p := 100@100. pen := Pen new. pen up. pen goto: p; down; goto: p+p Cascade

Block Closures: aka Function fct(x) = x * x + x fct fct:= [:x x * x + x]. 36

Function Application fct (2) = 6 fct (20) = 420 fct value: 2 > 6 fct value: 20 > 420 [:x x * x + x] value: 2 >6 [:x x * x + x] value: 20 >420 37

#(15 10 19 68) do: [:i Transcript show: i ; cr ] 38

#(15 10 19 68) do: [ :i Transcript show: i ; cr ] 39

1 to: 100 do: [ :i Transcript show: i ; space] 40

1 to: 100 do: [ :i Transcript show: i ; space] 41

1 to: 100 by: 3 do: [ :i Transcript show: i ; space] 42

1 to: 100 by: 3 do: [ :i Transcript show: i ; space] 43

A typical method in Point Method name Argument Comment <= apoint! "Answer whether the receiver is neither! below nor to the right of apoint."! ^ x <= apoint x and: [y <= apoint y] Return Binary message Instance variable Keyword message Block (2@3) <= (5@6) true

Creating classes Send a message to a class (!) Number subclass: #Complex! instancevariablenames: 'real imaginary'!...! category: 'ComplexNumbers'

Past... Started with Squeak Smallltalk + Major Cleanups (MVC, etoys) + New UI Look / TrueType + Tools + Block Closures + Lots of bugfixes and small improvements + Preferences clean up + MIT license clean

Update ~1200 Bug-reports closed 496 Updates (1.0) 61 (1.1 unstable) Release Candidate: October 2009 ;)

Future

...cleaner started to run SmallLint... and fix

...smaller deployment image is 7 MB

...faster

What we dream about A flexible infrastructure to be able to reinvent itself Better tools next generation refactoring Better infrastructure Integration Server... So that people can invent their future New compilers First class packages Minimal core

Everybody can help Reporting bugs Confirming bugs Writing tests Writing examples Writing comments Simple contributing fixes Deep discussion...

Process FIX/ ENHANCEMENT In PharoInbox or Changesets Discussed on Discussed on Mailinglist BUG Described Described BUG Tracker Discussed on Other version Integrated Rejected

Pharo Sprints May 2008 Bern July 2009 Bern October 2009 Lille November 2009 Buenos Aires more in the future...

Books This book is made available under the Creative Commons AttributionShareAlike 3.0 license. You can either download the PDF for free, or you can buy a softcover copy from lulu.com. Additional material is available from Pharo web site at www.pharo-project.org. Square Bracket Associates +,-.*(&'/!/()%!!"#/$/% ( &'!()%!!"#$% * by example Pharo by Example, intended for both students and developers, will guide you gently through the Pharo language and environment by means of a series of examples and exercises. by example 2nd Volume in preparation Pharo is a modern open-source development environment for the classic Smalltalk-80 programming language. Despite being the first purely object-oriented language and environment, Smalltalk is in many ways still far ahead of its successors in promoting a vision of an environment where everything is an object, and anything can change at run-time. Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet with Damien Cassou and Marcus Denker

Thanks Hans Beck Alexandre Bergel Cedric Beler Torsten Bergmann Matthias Berth Ralph Boland Noury Bouraqadi Brian Brown Gwenael Casaccio Damien Cassou Nicolas Cellier Gary Chambers Miguel Coba Gabriel Cotelli Carlos Crosetti Cyrille Delaunay Simon Denier Marcus Denker Ramiro Diaz Trepat Stephane Ducasse Morales Durand Hernan Stephan Eggermont Luc Fabresse Matthew Fulmer Hilaire Fernandes Julian Fitzell Tudor Girba Sean Glazier Norbert Hartl Dale Henrichs Reinout Heeck Eric Hochmeister Keith Hodges Henrik Sperre Johansen Pavel Krivanek Adrian Kuhn Adrian Lienhard Andreas Leidig Mariano Martinez Peck Dave Mason John McIntosh Johnaton Meichtry Eliot Miranda Hernan Morales Durand Philipp Marshall Jannick Menanteau Yann Monclair Oscar Nierstrasz David J Pennell Joseph Pelrine Alain Plantec Damien Pollet Lukas Renggli Jorge Ressia Mike Roberts Robert Rothwell David Rotlisberger Michael Rueger Bill Schwab Niko Schwarz Igor Stasenko Francois Stephany Serge Stinckwich Mathieu Suen Lawrence Trutter Andrew Tween martin von loewis Juan Vuletich Steven Wirts Hernan Wilkinson

Join Us! Creating good energy, software quality, learning and having fun http://pharo-project.org