1 00:00:00,040 --> 00:00:00,880 Hello. 2 00:00:01,040 --> 00:00:04,720 In this lecture I want to show you the vision behind Pharo. 3 00:00:04,880 --> 00:00:07,760 Why are people taking part in Pharo? 4 00:00:07,920 --> 00:00:11,480 This will help you to understand 5 00:00:11,720 --> 00:00:14,720 where Pharo is going and why people use it. 6 00:00:14,920 --> 00:00:17,240 The basic idea is to create 7 00:00:17,400 --> 00:00:19,760 a tool, an infrastructure, 8 00:00:19,920 --> 00:00:23,000 which will enable people to reinvent their future, 9 00:00:23,160 --> 00:00:25,360 to use the web in new ways, 10 00:00:25,520 --> 00:00:29,520 to create new tools, new forms of computation and so on... 11 00:00:29,680 --> 00:00:33,880 For this, the notion of an engine is very important. 12 00:00:34,040 --> 00:00:37,440 It means the infrastructure, the compiler, the services 13 00:00:37,600 --> 00:00:38,960 and that sort of thing. 14 00:00:39,360 --> 00:00:43,760 On a twin track, there's the idea of creating an ecosystem 15 00:00:44,000 --> 00:00:46,400 in which innovation creates new things 16 00:00:46,560 --> 00:00:49,560 to give us a competitive edge, 17 00:00:49,720 --> 00:00:51,960 and in which business can bloom. 18 00:00:52,120 --> 00:00:55,720 So how do we understand this metaphor of ecosystem? 19 00:00:55,960 --> 00:01:00,320 Via the teachers. There are 30 universities around the world 20 00:01:00,480 --> 00:01:02,920 which teach Pharo. 21 00:01:03,640 --> 00:01:05,600 Via the research groups. 22 00:01:05,760 --> 00:01:07,960 There are 15 or so research groups 23 00:01:08,120 --> 00:01:11,160 doing software engineering, but not only that, 24 00:01:11,680 --> 00:01:12,960 around the world. 25 00:01:13,120 --> 00:01:14,480 And via the companies. 26 00:01:14,640 --> 00:01:16,400 The basic idea of Pharo 27 00:01:16,560 --> 00:01:19,240 is not to be an academic language, 28 00:01:19,400 --> 00:01:23,200 but to be a language used by people in order to make money 29 00:01:23,360 --> 00:01:26,640 and live off their programming. 30 00:01:27,760 --> 00:01:31,120 You can see some success stories on the website. 31 00:01:31,280 --> 00:01:33,360 Here's the address. 32 00:01:33,520 --> 00:01:36,360 You can really see what people do with it. 33 00:01:36,520 --> 00:01:39,480 I'm often surprised at what people do with Pharo. 34 00:01:39,640 --> 00:01:42,800 It's not just cool because we say it is. 35 00:01:42,960 --> 00:01:45,120 People do real stuff with it. 36 00:01:46,000 --> 00:01:49,840 You have to realise that for the development team 37 00:01:50,000 --> 00:01:51,840 Pharo is a vehicle. 38 00:01:52,000 --> 00:01:56,320 We're the guys in black around the Formula 1 car. 39 00:01:56,480 --> 00:01:57,960 We improve it every day. 40 00:01:58,120 --> 00:02:01,120 Pharo isn't something finished, 41 00:02:01,280 --> 00:02:05,480 it's something that's constantly being improved. 42 00:02:06,720 --> 00:02:09,440 It's quite young for a programming language. 43 00:02:09,600 --> 00:02:11,600 It began in 2008. 44 00:02:11,760 --> 00:02:15,880 The more it advances, the more exciting its future looks. 45 00:02:16,040 --> 00:02:18,160 I'll say a bit about that. 46 00:02:18,320 --> 00:02:21,800 Most companies do web content now with Pharo 47 00:02:21,960 --> 00:02:24,760 because the web stack is excellent. 48 00:02:24,920 --> 00:02:28,200 We're going to use Seaside 49 00:02:28,360 --> 00:02:31,480 in this course, but we can also use REST. 50 00:02:31,640 --> 00:02:36,200 There are several HTTP servers that are used. 51 00:02:36,360 --> 00:02:40,720 It's a company that developed Pharo the HTTP server. 52 00:02:40,880 --> 00:02:42,400 There's the micro server Teapot. 53 00:02:42,560 --> 00:02:46,440 You have the WebSockets and identifications. 54 00:02:46,760 --> 00:02:50,960 Metadescription of data to avoid generating automatic forms. 55 00:02:51,120 --> 00:02:55,480 Connections to databases, whether SQL or relational. 56 00:02:55,640 --> 00:02:58,600 And loads of protocols. Some come out every day. 57 00:02:58,760 --> 00:03:03,720 People make packages which cover these functions. 58 00:03:04,840 --> 00:03:06,200 Pharo is open. 59 00:03:06,360 --> 00:03:11,600 What this means is that you can help and have an impact, 60 00:03:11,760 --> 00:03:15,120 but at least read and have access to Pharo. 61 00:03:15,360 --> 00:03:18,200 One important thing 62 00:03:18,360 --> 00:03:22,280 which people have trouble putting into concrete terms 63 00:03:22,440 --> 00:03:26,840 is that Pharo is a system which enables you. 64 00:03:27,000 --> 00:03:30,800 Here I'm showing you a quotation from an American 65 00:03:30,960 --> 00:03:34,240 who changed a very fundamental aspect of Pharo: 66 00:03:34,400 --> 00:03:35,560 the delay. 67 00:03:35,720 --> 00:03:39,480 It's a function for adjusting the concurrency in the system. 68 00:03:39,640 --> 00:03:43,720 He found that it couldn't be tested in isolation. 69 00:03:43,880 --> 00:03:47,680 He suggested changes in Pharo 70 00:03:47,840 --> 00:03:50,960 so these functions could be tested individually. 71 00:03:51,120 --> 00:03:55,280 And his changes were incorporated into Pharo. 72 00:03:55,440 --> 00:03:59,360 What's really interesting - I'll let you read the quotation - 73 00:03:59,520 --> 00:04:03,720 is that he says he was really amazed 74 00:04:03,880 --> 00:04:06,800 that he could simply think of doing it and do it. 75 00:04:06,960 --> 00:04:11,120 And similarly, with this slide, Turtles all the way down, 76 00:04:11,280 --> 00:04:15,720 meaning there are objects all the way down, 77 00:04:15,880 --> 00:04:20,800 the creator of Seaside, who knew ruby, python, scheme, objective-C, 78 00:04:21,040 --> 00:04:23,120 developed Seaside in Pharo's ancestor. 79 00:04:23,280 --> 00:04:26,920 I asked him why he used Pharo. He said, "Because I could." 80 00:04:27,080 --> 00:04:30,400 "I can manipulate the stack behind the programmers' backs 81 00:04:30,560 --> 00:04:33,920 "and suggest an abstraction I couldn't in another language." 82 00:04:34,080 --> 00:04:37,920 This empowering is really very interesting. 83 00:04:39,840 --> 00:04:42,960 I want to talk about the mid-term vision of Pharo. 84 00:04:43,120 --> 00:04:46,000 What will Pharo be in about 5 years? 85 00:04:46,160 --> 00:04:49,280 The core will be bootstrapped. 86 00:04:49,440 --> 00:04:53,040 Meaning we'll be able to reconstruct it from itself. 87 00:04:53,200 --> 00:04:55,440 Which isn't possible at the moment. 88 00:04:55,600 --> 00:04:59,200 We'll have a better integration with OSes and C. 89 00:04:59,360 --> 00:05:03,200 We can imagine launching a Pharo app in any C application. 90 00:05:03,360 --> 00:05:07,680 It'll be a more modular system with validated distributions. 91 00:05:07,840 --> 00:05:12,240 If someone writes an XML parser, for example, 92 00:05:12,400 --> 00:05:15,360 you'll want to know if it's passed all the tests, 93 00:05:15,520 --> 00:05:18,200 if it functions in whatever version of Pharo, 94 00:05:18,360 --> 00:05:20,880 if the non-regression rules are satisfied... 95 00:05:21,040 --> 00:05:24,440 So really using software engineering to validate 96 00:05:24,600 --> 00:05:26,680 what is made around the world, 97 00:05:26,840 --> 00:05:31,320 so the people using Pharo can be assured of the level of quality. 98 00:05:32,640 --> 00:05:37,640 There's an effort now to make tools more powerful than they presently are. 99 00:05:38,480 --> 00:05:40,360 The idea is to have a system 100 00:05:40,520 --> 00:05:42,920 that can adapt as well to a coffee machine 101 00:05:43,080 --> 00:05:44,840 as to the cloud. 102 00:05:45,000 --> 00:05:48,960 The Pharo development team is working on this sort of thing. 103 00:05:49,120 --> 00:05:51,280 It'll soon be available for everyone. 104 00:05:52,240 --> 00:05:56,560 So Pharo, with its aim to have an impact on real life 105 00:05:56,720 --> 00:05:58,520 and involve companies, 106 00:05:58,680 --> 00:06:02,040 has created an industrial consortium. 107 00:06:02,560 --> 00:06:05,200 The idea is to promote Pharo, 108 00:06:05,360 --> 00:06:09,400 to sustain its constant development, 109 00:06:09,840 --> 00:06:13,200 to improve its visibility and provide support. 110 00:06:13,440 --> 00:06:17,080 Here are some members of the Pharo consortium. 111 00:06:17,240 --> 00:06:21,720 There are small companies but big ones too, like Lam Research and Thales. 112 00:06:22,160 --> 00:06:25,960 And a lot of universities and research groups.