43 ms·
Pharo 9
- floxy 5y agoIt seems like the code/system browser has essentially stayed the same since Smalltalk-80. See Figure 17.11 on page 298 (PDF page 320) of the blue book [1]. I've often wondered about "modernizing" it, or at least exploring other options for interacting with the source. Have there been attempts at this? This is pretty far down on my list of things to fund even if I were to win the lottery some day. But I like to think about it anyway. [1] http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....
- xkriva11 5y agoThere was a lot of attempts, Glamorous Toolkit is exploring one alternative approach now. But the basic concept seems to be very solid. Think of the code base as the fractal system you want to explore. Then the browser provides several well-placed views with increasing zoom levels. It is hard to beat it. When you explore, for example, senders of a given message, you jump to another position in the fractal that conceptually looks similar. And you need to keep track to do not lose orientation. Exploring a classical source file is like moving in fractal on a fixed zoom level.
- wiradikusuma 5y agoCould someone share a practical/industrial use case for this? E.g. can I build a SaaS, or a mobile app?
- estebanlor 5y agoIs a generic purpose language, and there are generic usages, and a lot of examples :) But here you have a huge SaaS made with Pharo: https://yesplan.be/en https://yesplan.be/en, and here you have a small mobile app made also with Pharo: https://plc3000.com https://plc3000.com [edit] technically is not a mobile app, but runs in any browser so... yes :P
- jamie_ca 5y agoSeaside http://seaside.st/ http://seaside.st/ is a web framework in Smalltalk that will run on Pharo (and a number of other smalltalk systems). Also they have a GUI system ready so you can develop desktop apps (I'm not sure what the deployment story is like these days, but I assume it's fine).
- d-mason 5y agoHere is another web application made with http://pharojs.org http://pharojs.org which runs on Pharo https://covid.cs.ryerson.ca/compare/ https://covid.cs.ryerson.ca/compare/
- publicola1990 5y agoCan it build GUIs? What about 2d/ 3d graphics? Does it interface with Java things? Databases?
- scroot 5y ago> Can it build GUIs? Yes. The GUI framework is called Spec (Spec2, to be specific) and supports multiple backends, including GTK.
- xfer 5y agoIt's a single threaded vm like python/nodejs with ffi support. So you can expect same things i.e. ipc/network to communicate with outside.
- pjmlp 5y agoSmalltalk was born as a graphics based workstation OS, naturally it can do all of that.
- gavinray 5y agoI've often heard two statements online from older programmers. "Delphi/TurboPascal was the peak of developer productivity" And "Smalltalk was the peak of developer productivity" I've only been programming about a decade so both of those languages were long before my time. Can anyone who has experience programming in Smalltalk share what was so special about it/what made it so productive to write programs in versus other languages? It seems like this unique playground-VM thing makes it sort of unwieldy for non-graphical tools. IE can you use it for scripting tasks system, or for writing networked applications? There must be something unique about Smalltalk for so many of it's developers to reminisce about it and claim it's been unparalleled since.
- AceJohnny2 5y agoIt's a very noisy datapoint, but compare performance VW Smalltalk to NodeJS: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/smalltalk.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... VW Smalltalk is between 2x and 27x times slower than Javascript. And Pharo is slower yet than VW Smalltalk: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/vw-pharo.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... Nevertheless, as the front page the the Benchmarks Game is careful to mention, benchmark performance is 1) not necessarily representative of real-world performance and 2) not even always important in the greater context! Still, it's sad that Smalltalk & company haven't received the VM optimization attention that JS has. What would our world look like if Brendan Eich had gone for Smalltalk instead of creating a language from scratch?
- jhgb 5y ago> Still, it's sad that Smalltalk & company haven't received the VM optimization attention that JS has. Well...if you consider that the heritage of V8 in Node.js kind of goes back to StrongTalk, I'd say Smalltalk has received more of it than perhaps many people think. Unfortunately StrongTalk didn't really succeed on the market for the same reasons as many other Smalltalk implementations - proprietary nature and exclusivity doesn't really help you in the long run against worse-but-cheaper-and-more-accessible solutions.
- 5y ago
- ilaksh 5y agoAwesome. Seems like it can't find the Windows VM files though.
- Zenchess 5y agoJust a heads up the pharolauncher does not seem to be working for me, at least for pharo 9. Manual download of vm + image 64bit works but 32 bit does not. I have been making pharo raylib bindings and plan to make a video soon about why Smalltalk is an interesting choice for game development, it's a very 'live-coding' feel, i.e. you run your game while the editor is still live, you have free reign to at any time modify the methods of all game objects, execute random code, etc. without restarting the game...
- Ardren 5y agoYeah, I'm having trouble with Pharolauncher too on Windows. Trying to launch any image (downloaded in launcher, or manually) results is an error. e.g. Retry? Error downloading 'https://files.pharo.org/get-files/90/pharo-vm-Windows-X86_64-stable.zip' Cancel Retry (The link is a 404, so that's something) Edit: "Templates: Pharo image (stable)" works (32bit v8)
- radiowave 5y agoIt turns out to be the capital 'X' in X86 that is the problem. The same URL but with a lowercase 'x' works fine. Presumably someone in the Pharo team need to fix whatever image metadata the Pharo launcher is working from.
- estebanlor 5y agoit requires an update :)
- Tepix 5y agoSounds very interesting, i look forward to your video. Where will i be able to find it?
- Zenchess 5y agoI made a new youtube channel where the focus will be on Smalltalk game development https://www.youtube.com/channel/UC9QoB2Ik54E1gEJsBixqJ9A https://www.youtube.com/channel/UC9QoB2Ik54E1gEJsBixqJ9A Alternatively I'll be sure to post it to the pharo discord and the smalltalk subreddit
- Gormisdomai 5y ago[edit - the link below now loads, very cool to see all the companies involved, especially given Pharo crops up here every few months] I'd be curious about who, if anyone, funds Pharo development - especially if there are any medium-large companies backing it's development. I found this link to the Pharo "consortium" but it's not loading for me https://consortium.pharo.org/ https://consortium.pharo.org/
- deleted 5y ago[deleted]
- estebanlor 5y agoweird, it loads correctly for me. Yes, a bunch of companies (some of them very important in their fields) are backing Pharo... but Pharo is a community effort, made by hundreds of people.
- Gormisdomai 5y agoLoads for me now too. Wow, that is indeed an impressive list! And yes, definitely don't want to detract from the community effort, the huge list of individual contributors is impressive in itself.
- agumonkey 5y agoKudos, it's a great system from the few I played with.
- bGmSIDoSwMB 5y ago> Kudos, it's a great system from the few I played with.
- dogma1138 5y agoAre there any good general examples for Pharo in the wild? I've seen it a few times in some niche industries used as a replacement for Visual Basic or some proprietary 4GL stack.
- mikro2nd 5y agoAn interesting project for devs is Glamorous Toolkit (https://github.com/feenkcom/gtoolkit https://github.com/feenkcom/gtoolkit) as an experiment/exploration of better dev tooling.
- liminal 5y agoThat IDE looks amazing, but it looks like I'd need to be proficient in Smalltalk to use it for any language. Watching the video on the site and it's impressive what the presenter is doing with live representations of code.
- whartung 5y agoAnd, frankly, this just reinforces my overall opinion of Pharo. Pharo is really amazing, they've been working on it, actively, forever, and make great strides. But I'm convinced that Pharo is an amazing development environment and eco-system designed to make amazing development environments and eco-systems. All of the folks are putting work in to improving IDE to make a better IDE. They're on their, what, fourth(?) iteration of the "widget" set that folks still find difficult to use and under documented. As recently as Pharo 7, when I last looked in any depth to the matter, their rendering model is straight out of the 80s. Vastly less capable than Java2D or Canvas in the browser. It's my understanding it's on their todo list, but I don't know how far they've advanced on this. What focus there is on applications seems to mostly come from Seaside, the web server application framework. If you look at their "success" page, most (not all) are web apps. It would not surprise if someone, somewhere, is fusing Pharo and some Electron-esque rendering front end and using it to create a "desktop application". And it's not unreasonable to say "Well, web is where it is, desktop is dead." There's certainly arguments in that direction. In the end, it's moot. The devs have their itches to scratch. Nature of the game. Their itches are not my itches, and an "advanced" rendering model and modern widget set is something I want to use, not write. So, I'm at their mercy waiting for whenever that day may, if ever, come. If was interested in writing IDEs, then perhaps Pharo would be a place for me. Instead I'm interested in writing hobby desktop apps, and it's not there yet.
- svc 5y agoCongrats !
- xkriva11 5y agoThis is a long list of rare features that make Pharo interesting: https://pharo.org/features https://pharo.org/features
- blihp 5y agoNothing rare about most of these features as they came from Squeak. What's really rare is how slimy they're being in at least implying most of these features are unique to Pharo in their marketing of it. There is not a single mention of Squeak or Smalltalk, which their project is derived from[1], on the page. It's unfortunate as they have put a lot of effort in expanding on the previous work and created a nice UI to make the environment more productive and accessible which they can legitimately take credit for. [1] I don't mean 'inspired by', they literally started off with a fork of the code of both the VM and image. This is perfectly legit per the license, but it's hardly a completely original work.
- the-dude 5y agoWhat is also rare is the quality of the site. Impressive.
- lghh 5y agoUnless you’re on mobile…
- FpUser 5y agoFor people who are actively using their smartphones for many tasks. They're in majority I guess. I personally use smartphone as a phone, off-line GPS, camera (when I happen to not carry dedicated one) and to control various gismos like drones. I do not use it for reading, viewing websites, computing, etc.
- Santosh83 5y agoWhat about music and videos/films? I admit carrying a separate e-ink device is too much of a hassle, so I read books on the smartphone when am not at the PC.
- dvfjsdhgfv 5y agoThank you very much for explaining what Pharo is in one sentence on the linked page. Seriously, other projects and submissions should take notice because the general attitude is as if everybody knew exactly what your project is and what can be used for.
- boomboomsubban 5y agoSimilarly, they gain points for including a screenshot, but then lose those points for the bizarre photo-like cropping and skewing.
- estebanlor 5y agotruth to be told, we learned that the hard way ;) but we learned! :P
- jhoechtl 5y agoPurely object oriented languages did fall out of fashion lately. While the environment looks sophisticated, I have the feeling I would bet on a limping horse?
- FpUser 5y agoPersonally I do not give a flying hoot about fashion. The only thing that matters to me is how one particular tool helps me to make what I want. I've never "bet" on any tech. To me those are just tools. Nothing to get excited about. Not trying to rate any particular language here.
- rendall 5y agoI think OO has fallen out of fashion because there's a perception it can more easily lead to confusing code. While one can write confusing code using FP, it's not as easy to do.
- FpUser 5y agoI really do not care why is something in fashion / not. There are many software paradigms and one simply has to know which one is the best for particular situation. Trying to bring everything down to a "there can be only one" level is not very wise. Unfortunately for some reasons many programmers get really religious about language / framework / paradigm / whatever. Also writing confusing code is incredibly easy in any language / paradigm. One just has to be inexperienced thinker.
- dragonwriter 5y ago> While one can write confusing code using FP, it's not as easy to do. Yes, it is. It is in some situations easier to write non-confusing code in FP (though in other situations its easier in OO.) Also, OO hasn’t really “fallen out of fashion”, its still, AFAIK, the dominant paradigm. It’s just not as hyperdominant as it was from the mid-90s through the -00s.
- unnouinceput 5y ago
- estebanlor 5y agoPharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback.
- melling 5y ago“Pharo is a … and immediate feedback.” The key that we should provide more often. Bret Victor has been discussing for over a decade. Can’t find them demo that i’m thinking of but here’s an introduction into Bret https://youtu.be/ef2jpjTEB5U https://youtu.be/ef2jpjTEB5U https://youtu.be/8pTEmbeENF4 https://youtu.be/8pTEmbeENF4 His ideas go beyond “immediate feedback” …
- adius 5y agoAnd 10 years later still no proper support for retina displays. I really think you should get your priorities straight.
- Jenk 5y ago> I really think you should get your priorities straight. The irony.
- floatboth 5y agoThere is a GTK3 backend now, hopefully that should make HiDPI work, support Wayland, etc. – depending on how it's implemented of course. Doesn't look like it's ready to handle all the UI (?) though – in the promo screenshot there's one GTK window on top of a more classic Pharo window (?)
- creamytaco 5y agoBecause GTK3 is so great on Linux, we should run it on macOS and Windows too... I don't know what they were thinking. As far as I can tell, Pharo UI history has been one bad (as in not pragmatic) decision after another.
- jhgb 5y agoIt's the MVP of native GUIs. Should a purely-Win32-based UI arrive later, the additional work would at least be validated and trailblazed by the first Gtk implementation. You can't expect a small set of people do everything at once just because you want them to.
- estebanlor 5y agoit doesn't yet support the whole IDE (because it has some other complications, we will solve in next release), but it supports application development with it.
- floatboth 5y agoCool. How does it work, is it 100% native widgets? Are there any platform specific (x11 etc.) things used?
- aitchnyu 5y ago>In Pharo, everything is an object. This purity and uniformity in the system and language design makes Pharo clean and comfortable to learn. Does this mean Python and JS meet the same definition and are as "clean and comfortable"?
- goatlover 5y agoRuby comes closer than Python or JS with it's blocks and consistent object model (including primitives).
- jhgb 5y ago> Does this mean Python and JS meet the same definition and are as "clean and comfortable"? Are things like message sends or activation records accessible and manipulable as objects in Python and JS?
- e12e 5y agoRuby is much closer to smalltalk than python and js (in the evything is an object sense, and partially in the clean and comfortable sense). Maybe the closest "real world" examples would be Lua, and scheme?
- ssdspoimdsjvv 5y agoPython comes close, but what makes Smalltalk special is that flow control and loops are done with objects. There are almost no keywords. Imagine that you could do something like this in JavaScript: (name === "Mike").ifTrue(() => console.log("Hi Mike"); The implementation of this is done through a Boolean class, which has two subclasses, True and False. True implements the ifTrue(fn) by invoking "fn", False simply returns. The main advantage is that everything is predictable and inspectable.
- TenToedTony 5y agoPrimitives in javascript are not objects.
- billsix 5y agoI remember while learning Smalltalk how surprised I was when if statements and loops weren’t syntax of the language, but methods on objects. True and False are singletons of a Boolean class, which has a method ifTrue:ifFalse which take lambdas as arguments. For loops, a lambda which returns True or False has a method whileTrue: which takes a lambda as an argument. Although I like Python, and I don’t know JS well, I really enjoyed learning Smalltalk, even though I will likely never use it professionally.
- chazu 5y agoThis is really exciting - congratulations to the team and all the contributors. For those who already know "what smalltalk is all about" but are looking to get into Pharo and get something done, I recommend Pharo by Example and Deep into Pharo - between those two books, any developer should be able to figure out the workflows Pharo expects you to employ to be productive. My only advice would be to go in without preconceived notions based on your years of using other languages. And the community is super helpful.
- moron4hire 5y ago> My only advice would be to go in without preconceived notions based on your years of using other languages. And the community is super helpful. Honestly, if more people went into every language with that mindset, there'd be a lot less bickering and problem a lot more getting done in the world.
- TrevorJ 5y agoIt's a tall order. My observation with people with mastery, who switch to a new tool, is that usually: A- something external has forced the change, in which case it's hard for them to be patient/charitable. or B- they like their current tool, but have some ultra specific complaints that they hope the new tool will address whilst leaving the rest intact. Basically, the common circumstances around these things leads to some biases. I think one way to address this, is to simply be aware of ourselves. Another would be to ensure people use a large variety of tools early on in their education/career. The meta-skill of navigating to a new tool is something we get better at with practice.
- thirsteh 5y agoGreat talk by deech on Pharo: https://www.youtube.com/watch?v=baxtyeFVn3w https://www.youtube.com/watch?v=baxtyeFVn3w
- unixhero 5y agoIt sounds like a very fun environment . But what can I use this for?
- butterisgood 5y agohttps://pharo.org/success https://pharo.org/success
- libx 5y agoFor anyone that wants to learn about Pharo, I recommend this online course: https://www.fun-mooc.fr/en/courses/live-object-programming-pharo/ https://www.fun-mooc.fr/en/courses/live-object-programming-p... It's available in English and French.
- xkriva11 5y agoThe videos from it are on Youtube. English voiceover: https://www.youtube.com/watch?v=JUKIjdjGjBU&list=PL2okA_2qDJ-kCHVcNXdO5wsUZJCY31zwf https://www.youtube.com/watch?v=JUKIjdjGjBU&list=PL2okA_2qDJ... French: https://www.youtube.com/watch?v=-Sk_35lB-EI&list=PL2okA_2qDJ-k83Kxu_d8EPzMXtvCrReRn https://www.youtube.com/watch?v=-Sk_35lB-EI&list=PL2okA_2qDJ...
- a2800276 5y agoThe page seems to be going out of it's way to not mention the word "Smalltalk". Does anyone have an idea why that is? Does Smalltalk have such a bad reputation nowadays or has someone trademarked the term?
- vfclists 5y agoIt is mostly marketing bullshit. Pharo IS Smalltalk in the same way Skoda is Volkswagen
- blooalien 5y agoI know a buncha literal rocket scientists who swear by Smalltalk with a heavy bias toward the Squeak VM as bein' the best thing since sliced bread, but I honestly rarely hear about it outside those particular circles. Mostly I hear about Javascript, .NET/Mono, and Python in other programming language circles I frequent.
- samatman 5y agoIf you look at the home page for Racket, you won't see the word "Scheme" anywhere. Same thing, basically: neither language wants to be beholden to what's come before, nor to their peers.
- zabzonk 5y agoI've noticed that as well - it's a bit strange given that Pharo is a fork of Squeak, which does proclaim its ST origins on its front page. I wouldn't say Smalltalk has a bad rep nowadays, but it used to be knocked for being too expensive (the cost of ST licences back when was beyond a joke), too slow, and producing nasty-looking non-native GUIs. These have almost all been fixed.
- igouy 5y ago> cost of ST licences back when was beyond a joke March 7, 1988 "Smalltalk/V 286 is available now and costs $199.95" https://books.google.com/books?id=CD8EAAAAMBAJ&pg=PA25&lpg=PA25&dq=digitalk+smalltalk+v/286&source=bl&ots=jg-JNM2df5&sig=zCZ6zSeRV1zcLMT_VhaK49_YWkQ&hl=en&sa=X&ved=0CFIQ6AEwB2oVChMIh-Xi5qS9xwIVkCWICh1taQpK#v=onepage&q&f=false https://books.google.com/books?id=CD8EAAAAMBAJ&pg=PA25&lpg=P... > nasty-looking non-native GUIs The "non-native GUI" was quite important because Smalltalk was running on MS-DOS — not on MS-Windows.
- Communitivity 5y agoThis looks like an amazing environment and interesting language. The first thing I thought of was a version of Croquet [1] using Pharo. Another thing it reminds me a bit of is HyperCard. [1] https://planetcroquet.squeak.org/ https://planetcroquet.squeak.org/
- deleted 5y ago[deleted]
- blacklion 5y agoI wonder, how hard is it to bootstrap Pharo on new platform...
- d-mason 5y agoPharo, like its siblings Cuis, Squeak, and NewSpeak runs on a VM called Open Smalltalk. It is written in a stylized version of Smalltalk so can be debugged with the tandard Smalltalk tools (i.e. you can have the modified VM you're working on load and run an image - but your VM is running in a debugger!) Then when you're happy with your revised VM, you can spit out portable C code, compile it, and BAM you've got a production VM! Most plug-ins and primitives are also written in the Smalltalk subset (called SLANG), so they will likely be similarly portable. There is also an FFI for interfacing beyond the standard model.
- blacklion 5y agoAre here any documents how to start? For example, Pharo github repo doesn't have any C code at all, and to build it I need Pharo VM already running. It is Ok for building new version for existing platform, but what should I do if I want to build VM for other platform (OS)? Hardware platform is supported already, so, I think, I don't need to have new assembler / JIT / Whatever, but I need new glue to new libc, kernel, etc., and new executable file format, am I right?
- liminal 5y agoAre there any perceived shortcomings of Smalltalk that caused it not to take hold?
- xkriva11 5y agoTo really take advantage of its strengths, one needs to adopt to a completely new IDE and way of working, which puts a lot of people off. On the other hand, if it were adopted to behave like all other environments, there would be objections again, "It's exactly the same as what I'm using now. So why switch?" It should be added that Pharo addressed most of the small problems that the original Smalltalk had.
- crdrost 5y agoSo, Smalltalk is radically different from other programming languages, and has a very different vision for what it means to program. Imagine that you download the binary for the programming language, and then you don't know what to do with it so you double click it or try to execute it from the shell, and you are very surprised to see a window open up, showing something looking like a blank desktop. What is this? You go off to read some tutorials, they show you some ways to click inside the window and so forth. It slowly dawns on you: this is your program. It is running as we speak. You are livecoding it, those button clicks are mutating it to do new things. The reason it's not doing anything is you haven't written it yet, and it's inviting you to, and when you do it'll recompile and show you the new thing instantly. So your programming languages have always been designed like a circuit board or a 3D printing rig. Lots of files of blueprints, and then the robots will assemble it for you. Smalltalk is different, the mental model is more like clay or Lego, the thing is already built and running in front of you, what are you going to mold it into being? This different vision means that usually you are editing text not from vim or emacs or VS Code, but from the editing widgets inside of the programming language. Those are part of the clay, and are editable too. Similarly, Smalltalk version control was typically exposed inside of the running system rather than outside. My favorite example of this, the thing that is maybe the most outrageous if you're in a normal programming language, is Object.become(). This is a runtime dependency injector. “I want to instruct the programming language to take all of the traffic that it was sending to that object, and send it to me instead. I will become that object.” If you are used to Java where my constructor instantiates some dependency object and I save it to a private variable in this object, surely you see this as a safety violation. “What do you mean, that anybody who gets a reference to this object can tear it out of my private property and replace it with some other subclass? I made it private so I could control when that field gets set! How dare you?” It’s not, of course. And this is available for every object in the system, which is why you can do this modeling by clay. They tried to write as much of Smalltalk as possible in Smalltalk and so you can just see the source code of the programming language in the source code browsers that you can call up from this window, and you can live edit any of that, and Smalltalk will compile your new object and swap it into where the built-in object was. Put a different way, it's not a safety violation because this is how modern development with microservices and kubernetes actually works. Security is people's ability to surprise you, measured in dollars: part of this definition is, Smalltalk developers are not surprised by their ability to do this. Every “object” is thought of as a separate server with an API, and of course I will replace old servers with new ones and tell the load balancer to send traffic my way.