Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pharo Hands-On: 01 welcome

1,279 views

Published on

Part of one hands-on session on pharo
http://www.pharo.org

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Pharo Hands-On: 01 welcome

  1. 1. Hands-On Pharo: Get ready hacking in one day http://stephane.ducasse.free.fr http://www.pharo.org
  2. 2. Getting the Feel of Pharo http://stephane.ducasse.free.fr http://www.pharo.org
  3. 3. Objectives What is Pharo/Objectives Get the feel Model/Syntax Testing / Saving / Finding information Coding Wrap-up
  4. 4. What is it? Language + Environment Simple Language Object-Oriented, Dynamic, Reflective Explore + Change running systems Live Programming
  5. 5. Pharo 100% MIT license Pure object language Great community of active doers (70 committers in Pharo 40) Powerful Elegant and fun to program Living system under your fingers Mac, Linux, Android, iOS, Windows
  6. 6. Some projects Web 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…
  7. 7. Some projects Web 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
  8. 8. Our goals...
  9. 9. A powerful engine to invent (y)our future
  10. 10. Pharo is a vehicule Pharo is not at its end, just starting Pharo is not our dream, it is what we have But **every** single day we improve it
  11. 11. Enabler “One of the things that drew me to do the Delay refactoring, is simply that I could. That is, I was amazed that I could dig so deep so easily, see a path to improvement and effect change at a fundamental level. Excepting complexities with the Continuous Integration due to “changing the wheels on the car at 100km/h” (and one slip), it seems to have gone reasonably smoothly.  That sense of mastery is seductive.”
  12. 12. Enabler: Turtles all the way A Bryant developed Seaside in Pharo ancestor (while he knew ruby, python, scheme, C, objective-C) because he could manipulate the stack behind the back of developers. Seaside is based on stack on-demand reification.
  13. 13. An ecosystem where innovation/business bloom
  14. 14. 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.
  15. 15. We are a cool community
  16. 16. 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!
  17. 17. • 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
  18. 18. 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
  19. 19. 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
  20. 20. Books Pharo 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
  21. 21. Some success stories…
  22. 22. Continuous API Testing keep your services under control 24/7 Norbert Hartl norbert@2denker.de www.2denker.de
  23. 23. eMCee is developed and deployed using pharo - zinc - seaside - jquery - magritte - mongotalk - magritte-mongo - fuel - metacello mail@2denker.de
  24. 24. • 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
  25. 25. WEBDRUCK.CH Web-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
  26. 26. NTed: disaster scenario recovery
  27. 27. iBizLog - http://www.ibizlog.com A product by Smallworks Tuesday, May 15, 12
  28. 28. Pinesoft MBagger
  29. 29. Pharo is yours
  30. 30. Getting the object feel • Live interaction • Using Inspectors • Talk and interact with objects • Programs are objects too
  31. 31. http://youtu.be/CuimMwuZiGA
  32. 32. Scripting live https://www.youtube.com/watch?v=1Nze9tnwYxY
  33. 33. http://www.pharocasts.com/2010/08/see-how-to-get- data-from-url-parse-xml.html
  34. 34. Simplicity and elegance Simple but complete object model Syntax fits on a postcard!
  35. 35. 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
  36. 36. Object model Everything is an object instance of a class ! Single inheritance ! Public virtual methods ! Protected field
  37. 37. The complete syntax exampleWithNumber: 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 16rFF 2r1010101010101010101 1.0) do: [ :each | Transcript show: (each class name); show: (each printString); show: ‘ ‘]. ^ x < y
  38. 38.
  39. 39. The complete syntax exampleWithNumber: 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
  40. 40. Fun, simple Pure & elegant Productive Empowering Addictive Full access
  41. 41. Creating good energy, software quality, learning and having fun ! http://pharo.org Join

×