2015 pharo prague lambda meetup
TRANSCRIPT
![Page 1: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/1.jpg)
Pharo: Live objects for complex projects
http://stephane.ducasse.free.fr http://www.pharo.org
![Page 2: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/2.jpg)
![Page 3: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/3.jpg)
I did my PhD in Lisp and Scheme :)
![Page 4: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/4.jpg)
![Page 5: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/5.jpg)
Talk Roadmap• Pharo: an open-source project
• Get the feel
• Model/Syntax
• Coding with the audience
• Web Development in Pharo
• Ongoing works
• Wrap-up
![Page 6: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/6.jpg)
http://www.pharo.orgPure object language Great community of active doers Powerful and full access Elegant and fun to program Living system under your fingers 100% MIT inside Mac, Linuxes, Windows, iOS
![Page 7: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/7.jpg)
A powerful engine to invent (y)our future
![Page 8: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/8.jpg)
Some projectsWeb frameworks - Seaside, iliad, HTTP2, Tide, Aida, Mustache, Oauth, WebSocket CSS styling Format parsers - XML, HTML, NeoJSON, NeoCSV. Application Security, Graphics frameworks - Roassal, Mondrian, EyeSee, GraphET, Tool builders - Glamour, Spec, XUL, MacNative, Databases - DBXTalk, Mongo, Riak, CouchDB, MySql, PunQLite. Object-Oriented databases - Magma, Goods. Database abstraction - Voyage, ROE MetaCompiler - Petit Parser, SmaCC - Proxy, Logging - SystemLogger, Toothpick, SimpleLogger Units: Aconcagua, Units Time - Chronos Calendars, Timezones Productivity Tools - Codecritics, Refactorings, Cherry picking merge tools: merge tool, Komitter Versionner, Mock frameworks (baby mock), PDFgeneration - Artefact, Testing frameworks - PhExample, SUnit Assembly generation: ASMJIT, Integration Tools: Hudson, Alternate window manager, Games: Tetris, Sokoban, Miner, Chess, CrossWords MetaModeling Frameworks - Magritte, Platypus, Cloud deployement - cloudfork cloudPharo, 3D: Roassal3d, NBOpenGL, JVM connection Bio informatics, ODE solvers, Interactive Geometry - DrGeo…
![Page 9: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/9.jpg)
Some projectsWeb frameworks - Seaside, iliad, HTTP2, Tide, Aida, Mustache, Oauth, WebSocket CSS styling Format parsers - XML, HTML, NeoJSON, NeoCSV. Application Security, Graphics frameworks - Roassal, Mondrian, EyeSee, GraphET, Tool builders - Glamour, Spec, XUL, MacNative, Databases - DBXTalk, Mongo, Riak, CouchDB, MySql, PunQLite. Object-Oriented databases - Magma, Goods. Database abstraction - Voyage, ROE MetaCompiler - Petit Parser, SmaCC - Proxy, Logging - SystemLogger, Toothpick, SimpleLogger Units: Aconcagua, Units Time - Chronos Calendars, Timezones Productivity Tools - Codecritics, Refactorings, Cherry picking merge tools: merge tool, Komitter Versionner, Mock frameworks (baby mock), PDFgeneration - Artefact, Testing frameworks - PhExample, SUnit Assembly generation: ASMJIT, Integration Tools: Hudson, Alternate window manager, Games: Tetris, Sokoban, Miner, Chess, CrossWords MetaModeling Frameworks - Magritte, Platypus, Cloud deployement - cloudfork cloudPharo, 3D: Roassal3d, NBOpenGL, JVM connection Bio informatics, ODE solvers, Interactive Geometry - DrGeo…
AND MUCH
MORE
![Page 10: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/10.jpg)
Our goal...
![Page 11: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/11.jpg)
An ecosystem where innovation/business bloom
![Page 12: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/12.jpg)
We want that **you** can make money with Pharo. We want to be able to invent solutions to existing problems.
!
We want a powerful innovative dynamic language where we can build our future.
![Page 13: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/13.jpg)
We are a cool community
![Page 14: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/14.jpg)
Tweets, blogs, buzz
Pharo 3,303 tweets / 1092 followers S. Ducasse tweets 669 / 804 followers S. Stinckwich 8712 / 1006 followers Moose 502 tweets / 255 followers Youtube Pharo smalltalk: about 1540 videos!
![Page 15: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/15.jpg)
• Uni. of Buenos Aires • Uni. of Bern • Uni. of Maroua • Uni. of Brussels • Ecole des Mines de Douai • Uni. de Savoie • Ivan Franko Nat. Uni. of Lviv • Czech Technical Uni. • CULS Prague• Uni. of Quilmes • Uni. of La Plata • Northern Michigan Uni. • Uni. Technologica Nacional (UTN) • Uni. Catholic of Argentina • Uni. of Chile • Uni. Policnica de Catalunya • Uni. de Bretagne Occidentale • Uni. of Tomsk • Uni. of Fernhagen • IT University of Copenhagen • Uni. Cat del Sacro Cuore of Brescia
Pharo's Teachers
![Page 16: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/16.jpg)
![Page 17: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/17.jpg)
Lafhis (AR)Software Composition Group (CH) CAR (FR)RMOD (FR) Ummisco (IRD) Reveal (CH) Lysic (FR)Pleiad (CL) CEA-List (FR) Uqbar (AR) CCMI-FIT(CZ)
Research Groups
![Page 18: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/18.jpg)
www.2denker.de www.agilitic.com
www.airflowing.com www.anymorphic.com www.ardishealth.com
www.beta9.be www.bombardier.com
www.cmsbox.com www.finworks.biz
seaside.gemstone.com www.ibizlog.com www.inceptive.be www.jooshr.com www.majcon.de
www.mindclue.ch
www.miriamtech.com www.myneat.org www.netstyle.ch
www.panasoft.com www.pinesoft.co.uk
www.promedmedical.net www.sharedlogic.ca
www.smallworks.com.ar www.10pines.com www.trantaria.com www.yesplan.be
www.synectique.eu www.sorabito.com objectprofile.com
!
Companies
![Page 19: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/19.jpg)
BooksPharo by example http://www.pharobyexample.org
translated to french, merci!
translated to spanish, gracias!
translated to japanese, ありがとう!
Deep into Pharo http://www.deepintopharo.org
Numerical Methods
https://github.com/SquareBracketAssociates/NumericalMethods/releases
New books in preparation
Updated Pharo by Example
Entreprise Pharo
Fun with Pharo
![Page 20: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/20.jpg)
Some success stories…
![Page 21: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/21.jpg)
![Page 22: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/22.jpg)
![Page 24: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/24.jpg)
eMCee is developed and deployed using pharo
- zinc
- seaside
- jquery
- magritte
- mongotalk
- magritte-mongo
- fuel
- metacello
![Page 25: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/25.jpg)
Sunday 20 May 12
![Page 26: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/26.jpg)
• Entry Level Track & Trace Product
• Complements T3 Full Product
• One Page Javascript HTML5 / Ajax Client
• REST Back End in Pharo Smalltalk
• Gateways to multiple data providers
Sunday 20 May 12
![Page 27: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/27.jpg)
WEBDRUCK.CHWeb-To-Print Solution
• Design and create individual printed matter
• eShop with credit card payment
• High quality PDF output with Printing Process integration
• Thousands of orders for seven Swiss printing companies
![Page 28: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/28.jpg)
NTed: disaster scenario recovery
![Page 29: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/29.jpg)
iBizLog - http://www.ibizlog.com
A product by SmallworksTuesday, May 15, 12
![Page 30: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/30.jpg)
![Page 31: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/31.jpg)
![Page 32: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/32.jpg)
![Page 33: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/33.jpg)
![Page 34: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/34.jpg)
![Page 35: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/35.jpg)
![Page 36: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/36.jpg)
![Page 37: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/37.jpg)
![Page 38: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/38.jpg)
![Page 39: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/39.jpg)
Pinesoft MBagger
![Page 40: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/40.jpg)
Since may 2008Pharo 4.0 - Apr/Jul 2015 (1271 issues closed…)
Pharo 3.0 - Apr 2013 (2364 issues closed)
Pharo 2.0 - Apr 2013 (1727 issues closed)
Pharo 1.4 - Apr 2012 (860 updates)
Pharo 1.3 (700 updates)
Pharo 1.2 - mar 2011 (500 updates)
Pharo 1.1 - jul 2010 (410 updates)
![Page 41: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/41.jpg)
We are improving the complete system!
![Page 42: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/42.jpg)
Of course not everything is perfect :) But it feels like that:
![Page 43: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/43.jpg)
Pharo is
yours
![Page 44: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/44.jpg)
with 20 min per week you can get an impact!
![Page 45: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/45.jpg)
Getting the object feel
• Live interaction
• Using Inspectors
• Talk and interact with objects
• Programs are objects too
![Page 46: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/46.jpg)
http://youtu.be/CuimMwuZiGA
![Page 47: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/47.jpg)
Scripting livehttps://www.youtube.com/watch?v=1Nze9tnwYxY
![Page 48: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/48.jpg)
http://www.pharocasts.com/2010/08/see-how-to-get-data-from-url-parse-xml.html
![Page 49: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/49.jpg)
Simplicity and elegance
• Syntax fits on a postcard!
• Simple but complete object model
![Page 50: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/50.jpg)
The complete syntaxexampleWithNumber: x “A method that illustrates every part of Smalltalk method syntax”
<menu>
| y | true & false not & (nil isNil) ifFalse: [self halt]. y := self size + super size. #($a #a ‘a’ 1 1.0)
do: [ :each | Transcript show: (each class name); show: (each printString); show: ‘ ‘].
^ x < y
![Page 51: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/51.jpg)
…
![Page 52: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/52.jpg)
The complete syntaxexampleWithNumber: x “A method that illustrates every part of Smalltalk method syntax”
<menu>
| y | true & false not & (nil isNil) ifFalse: [self halt]. y := self size + super size. #($a #a ‘a’ 1 1.0)
do: [ :each | Transcript show: (each class name); show: (each printString); show: ‘ ‘].
^ x < y
![Page 53: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/53.jpg)
Less is more!No constructors, no static methods, no operators
No type declaration, no primitive types,
No interfaces, no need for factory
No packages/private/protected modifiers
No parametrized types
No boxing/unboxing
Still powerful
![Page 54: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/54.jpg)
A Pure OO World
Only objects! mouse, booleans, arrays, numbers, strings, windows, scrollbars, canvas, files, trees, compilers, sound, url, socket, fonts, text, collections, stack, shortcut, streams, …
![Page 55: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/55.jpg)
Objects are instances of Classes
![Page 56: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/56.jpg)
Objects are instances of Classes
!
(10@200)
![Page 57: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/57.jpg)
Objects are instances of Classes
!
(10@200) class
![Page 58: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/58.jpg)
Objects are instances of Classes
!
(10@200) class
Point
![Page 59: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/59.jpg)
Classes are objects too
!
!
![Page 60: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/60.jpg)
Classes are objects too
!
Point selectors
!
!
!
![Page 61: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/61.jpg)
Classes are objects too
!
Point selectors
!
an IdentitySet(#eightNeighbors #+ #isZero #sortsBefore: #degrees #printOn: #sideOf: #fourNeighbors #hash #roundUpTo: #min: #min:max: #max #adaptToCollection:andSend: #quadrantOf: #crossProduct: #= #nearestPointOnLineFrom:to: #bitShiftPoint: #* #guarded #insideTriangle:with:with: #grid: #truncateTo: #y #setR:degrees: #normal #directionToLineFrom:to: #truncated #nearestPointAlongLineFrom:to: #theta #scaleTo: #encodePostscriptOn: #> #asPoint #extent: #r #roundTo: #max: #interpolateTo:at: #triangleArea:with: #angleWith: #dotProduct: #isSelfEvaluating #'<=' #to:intersects:to: #'//' #isInsideCircle:with:with: #< #scaleFrom:to: #corner: #to:sideOf: #x #'>=' #roundDownTo: #onLineFrom:to:within: #transposed #ceiling #angle #basicType #translateBy: #asFloatPoint #'\\' #adaptToNumber:andSend: #abs #negated #octantOf: #asIntegerPoint #flipBy:centerAt: #scaleBy: #floor #onLineFrom:to: #isPoint #reflectedAbout: #/ #dist: #asNonFractionalPoint #bearingToPoint: #reciprocal #rotateBy:centerAt: #rotateBy:about: #rounded #setX:setY: #squaredDistanceTo: #normalized #veryDeepCopyWith: #- #storeOn: #rect: #deepCopy #isIntegerPoint #min #adhereTo: #adaptToString:andSend:)
![Page 62: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/62.jpg)
Classes are objects too
!
Point instVarNames
![Page 63: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/63.jpg)
Classes are objects too
!
Point instVarNames
>#('x' 'y')
![Page 64: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/64.jpg)
Methods are public
![Page 65: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/65.jpg)
Methods are all late-bound
![Page 66: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/66.jpg)
Instance variables are protected
![Page 67: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/67.jpg)
Single Inheritance
![Page 68: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/68.jpg)
Summary• Everything is an object
• Single inheritance, public methods, protected attributes
• One single model
• Classes are simply objects too
• A class is instance of another class
• One unique method lookup, look in the class of the receiver
![Page 69: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/69.jpg)
Messages + Objects
![Page 70: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/70.jpg)
postman.send(mail,recipient);
![Page 71: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/71.jpg)
postman.send(mail,recipient);
![Page 72: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/72.jpg)
postman send mail recipient
![Page 73: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/73.jpg)
postman send mail to recipient
![Page 74: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/74.jpg)
postman send: mail to: recipient
![Page 75: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/75.jpg)
2 + 5
2 + 5
> 7
Yes + is a message sent to 2
![Page 76: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/76.jpg)
Unary messages
Binary messages
Keywords messages
5 factorial!Transcript cr
3 + 4
3 between: 10 and: 5!!Transcript show: 'hello world'
![Page 77: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/77.jpg)
Blocks: Closures all the way
• Anonymous method
• Passed as method argument or stored • Functions fct(x)= x*x+3, fct(2). !
fct :=[:x| x * x + 3]. fct value: 2
!
![Page 78: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/78.jpg)
Every control structure is a message
4 timesRepeat: [Beeper beep]
max: aNumber!! ^ self < aNumber !! ! ifTrue: [aNumber] !! ! ifFalse: [self]
![Page 79: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/79.jpg)
<= aPoint !! "Answer whether the receiver is neither!! below nor to the right of aPoint."!!! ^ x <= aPoint x and: [y <= aPoint y]
Method name Argument Comment
Return Binary messageKeyword messageInstance variable
Block
(2@3) <= (5@6) true
![Page 80: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/80.jpg)
Object subclass: #Point!! instanceVariableNames: 'x y'!! classVariableNames: ''!! category: 'Kernel-BasicObjects'
2 instance variables
subclass of Object
![Page 81: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/81.jpg)
Fun with numbers
1 class
![Page 82: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/82.jpg)
1 class
> SmallInteger
![Page 83: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/83.jpg)
1 class maxVal
> 1073741823
![Page 84: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/84.jpg)
(1 class maxVal + 1)
![Page 85: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/85.jpg)
(1 class maxVal + 1)
> 1073741824
![Page 86: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/86.jpg)
(1 class maxVal + 1) class
!
![Page 87: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/87.jpg)
(1 class maxVal + 1) class
> LargePositiveInteger
![Page 88: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/88.jpg)
1000 factorial
>
![Page 89: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/89.jpg)
1000 factorial
> 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
![Page 90: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/90.jpg)
1000 factorial / 999 factorial
![Page 91: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/91.jpg)
1000
![Page 92: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/92.jpg)
1000
![Page 93: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/93.jpg)
Learning from the system…
![Page 94: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/94.jpg)
![Page 95: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/95.jpg)
Check in the system
![Page 96: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/96.jpg)
![Page 97: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/97.jpg)
Let us hack something…
![Page 98: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/98.jpg)
(3 D20 + 3 D4) roll
![Page 99: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/99.jpg)
The Pharo Stack is Gorgeous
Voyage/ DBXTalk / Mongo / (Gemstone :)
Magritte
Zinc, Zodiac(HTTPS), Oauth, ...
STON, JSON, LDAP...
Seaside, Rest, Zinc Rest, Illiad, Aida, Reef
Amber!
![Page 101: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/101.jpg)
Demo
![Page 102: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/102.jpg)
1Natural Flow
![Page 103: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/103.jpg)
Demo
![Page 104: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/104.jpg)
<form action="result.html"> <input type="hidden" name="value1" value="<% value1 %>"> <input type="text" name="value2"> <input type="submit" value="OK"> </form>
<p> <% value1 + value2 %> </p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"> </form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"> </form>
![Page 105: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/105.jpg)
Who cares about HTTP anyway?
![Page 106: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/106.jpg)
is different
![Page 107: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/107.jpg)
Concentrate on your application ...
![Page 108: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/108.jpg)
... no manual request parsing
![Page 109: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/109.jpg)
... no XML configuration files
![Page 110: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/110.jpg)
3 user interactions
![Page 111: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/111.jpg)
3 lines of code
![Page 112: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/112.jpg)
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
![Page 113: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/113.jpg)
AB
call:A Bx :=
![Page 114: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/114.jpg)
AB
answer:B
![Page 115: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/115.jpg)
A
x :=
![Page 116: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/116.jpg)
We don’t think in pages ...
![Page 117: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/117.jpg)
..., but in stateful components
![Page 118: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/118.jpg)
Valid
Sour
ce: s
tock
.xch
ng, A
l Nak
ib
![Page 119: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/119.jpg)
Did you notice?
![Page 120: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/120.jpg)
Web applications
![Page 121: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/121.jpg)
No URL fiddling
![Page 122: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/122.jpg)
No request parsing
![Page 123: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/123.jpg)
Development tools
![Page 124: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/124.jpg)
Control flow at ease
![Page 125: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/125.jpg)
On going work
• Working bootstrap for pharo reflective core
• Customized images (11k)
• First class variables for real
• associations
• data flow model
![Page 126: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/126.jpg)
Glimpse on going work
• Package catalog
• Git (the right subset)
• OSWindow (SDL)
• Multi touch support
• Full vector graphics
![Page 127: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/127.jpg)
VM• Spur: new memory manager (got *4 speed up)
• ephemerons, pinned object, fragmented memory, 64 bits
• Sista: next level JIT
• inliner, constant propagation…
• Unified FFI + threaded
• one syntax several back-ends
![Page 128: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/128.jpg)
Fun, simple Pure & elegant Productive Empowering Addictive Full access
![Page 129: 2015 Pharo Prague Lambda Meetup](https://reader036.vdocument.in/reader036/viewer/2022062419/55a940861a28ab195d8b45a5/html5/thumbnails/129.jpg)
Creating good energy, software quality,
learning and having fun !
http://pharo.org
Join