12 ms·
Pharo 10
- xkriva11 5y agoThis is a list of quite rare features that make Pharo interesting: https://pharo.org/features https://pharo.org/features
- brandonbloom 5y agoThis page is great! If any Pharo folks are reading this, here's a small website feature request: Let me click on the images of this page to get full-resolution, un-cropped versions.
- Jeff_Brown 5y agoWow. The density of ideas I've never heard of before on that page is high.
- Qem 5y agoPharo and Smalltalk in general always remind me of that famous William Gibson quote: "The future is already here—It’s just not very evenly distributed".
- cout 5y agoThat is a good introduction to what makes pharo appealing. It sounds a lot like Smalltalk though. Do you know of a similar page that highlights the differences between pharo and Smalltalk?
- Jtsummers 5y agoPharo follows from Smalltalk, particularly through Squeak. It started off as a fork of Squeak and retains Smalltalk's syntax, but has gone its own way in terms of the capabilities it provides and rewriting portions.
- svc 5y agoCongrats !
- ramesh31 5y agoWho's using Pharo in production? Every time Smalltalk comes up, it's almost like it's this Loch Ness monster that everyone claims to be enamored with but doesn't actually exist. I want to love Pharo so much, I just can't think of a single thing it would be useful for.
- andrewl 5y agoI’ve heard there’s a lot of Smalltalk (not necessarily Pharo) used on Wall Street. There’s a fairly extensive page listing companies who use Pharo at: https://pharo.org/success.html https://pharo.org/success.html
- butterisgood 5y agoWhy does knowing who else is using something have any impact on your ability to love it? Sounds like it's just a motivation problem perhaps? For example, I make use of Plan 9 daily, and I don't really give a whip if anyone else thinks it's worth anything at all. I also use Emacs lisp in pretty strange ways (automating workflows by cross-querying REST services in ways I used to do by hand). I've even demonstrated it for coworkers, and I think some of them may be using the same techniques, but I'm not sure, and I don't care. If they have questions about it, I'll answer them. If not, they can say "that guy's weird", and I'm totally fine with that. Outnerd the nerds I say! Let your freak flag fly! In all seriousness I encourage people to write some code. Play around! Share your experiences. It's good for you and everyone else to foster new ideas and be innovative. It's especially good if the technology in question is surrounded by a welcoming community. It provides an additional sense of belonging to something, and who knows you might just actually enjoy yourself! You've got the first spark of curiosity, now you've just got to stoke the flames, or not!
- deleted 5y ago[deleted]
- butterisgood 5y agoNice release! And yes, for a short iteration, there's a lot of good stuff in there! Congrats!
- ok123456 5y agoI went through the MOOC material and tried it out for a few small things. It inherited a lot of the unique Smalltalk features which make it sort of alienating to a modern programmer. For instance, all your code resides in an image file, and if you want a copy of your code the environment does some extra epicycles to copy it outside. The choice to make everything a message, including basic flow control takes some getting used to. As you just sort of hack your image to do what you want, it just sort of turns into a ball of mud. The paradigm they're going for is TDD for everything. Personally, I feel this is a big step backwards from most mainstream scripting languages adding on type annotations. It's not easy to use a simple text editor. You pretty much have to use their integrated environment. Then, there were a few problems that were specific to Pharo. Pharo went through a couple different package systems and the different package systems don't necessarily have the same packages. Pharo has had major breaking changes in their GUI toolkit, so if you found a package that did exactly what you wanted and were able to install it, it just wouldn't work.
- fmakunbound 5y ago> a copy of your code the environment does some extra epicycles to copy it outside Iceberg https://github.com/pharo-vcs/iceberg https://github.com/pharo-vcs/iceberg is the Git/etc. integration built into Pharo and works extremely well. You don't need to "file out" code if that's what you meant.
- wslh 5y agoIs there an updated Pharo native Wiki like: https://wiki.squeak.org/squeak https://wiki.squeak.org/squeak
- selykg 5y agoWhat are some good resources for learning to develop using Pharo? Anything others would recommend?
- fmakunbound 5y agoThere's a ton of practical Pharo books here https://books.pharo.org https://books.pharo.org and Smalltalk books here http://stephane.ducasse.free.fr/FreeBooks.html http://stephane.ducasse.free.fr/FreeBooks.html
- Qem 5y agoThere's a MOOC[1] on it, and there are several free books that cover the basics of the language itself[2][3], data visualisation[4] and numeric stuff[5]. The only issue is, as it is developed at a fast pace, documentation tends to get a bit dated quickly. [1]. https://mooc.pharo.org/ https://mooc.pharo.org/ [2]. https://github.com/SquareBracketAssociates/PharoByExample9/releases/download/latest/PBE9-wip.pdf https://github.com/SquareBracketAssociates/PharoByExample9/r... [3]. https://books.pharo.org/deep-into-pharo/ https://books.pharo.org/deep-into-pharo/ [4]. http://agilevisualization.com/ http://agilevisualization.com/ [5]. https://books.pharo.org/numerical-methods/ https://books.pharo.org/numerical-methods/
- indigochill 5y agoIMO the better approach, given how dynamic and fast-moving development is, is to put this kind of information directly into the image. Pharo even already has a mechanism for authoring tutorials and it has an example tutorial using that mechanism, but I wish there was just more to that content that covered the material in the books/MOOC. The reason is then hopefully the documentation stays aligned with the state of the particular image you're working with rather than hoping some volunteer has updated a book for the particular version of Pharo you're using. I took a stab at doing this myself, but I was learning as I went and eventually ran out of gas since writing Pharo tutorials didn't beat other stuff on my personal priority list.
- kkfx 5y agoSmallTalk as a language is IMVHO terrible BUT it's strength came from it's concept, an user-programmable environment, that's matter so much. SmallTalk was the language of first commercial desktop environments, modern desktops with keyboard, mouse, a similar form factor than today desktop, networking etc and those historical systems are still far more advanced than today's ones. Personally I prefer Lisp as a base language, but in any case the concept is far more important than the rest. A thing humanity lost years ago and that need to recover ASAP.
- sebastianconcpt 5y agoI find preferences-wars a source of evil. Lisp is fine, not the subject here, tho. Back to the subject, Smalltalk's syntax allows the most elegant expression of computer code similar to natural written language I've seen. And that at the lowest cognitive load to learn and read that the computer world provided so far. I'm with you about raising the importance on concepts and that humanity needs to rescue its capacity for making that relevant again. I'm afraid Post-modernism is liquifying intelligence and is making everything regarding to intelligence to be harder to flourish. PS: We use a lot of camel case but please remember it's Smalltalk (instead of SmallTalk).
- dgb23 5y agoIt has nothing to do with philosophical concepts and everything with business culture. There are tools that facilitate expression, innovation and individual contribution. And there are tools that make it easier to scale and for programmers to be interchangeable. These two are very hard to unify. There’s cross pollination but that’s about it. Whether you’re in a top down hierarchical business model or in one that’s more open and people centric has a significant impact on which type of tools you’re using. Smalltalk, Lisp and their descendants belong to the former category. They are immersive, expressive and incredibly dynamic and their communities are often pioneers. But this type of freedom comes at a cost that some do not want to pay.
- sebastianconcpt 5y ago
- chunes3 5y agoThe problem I have with Pharo is that there are hundreds if not thousands of types — each with their own fiddly interfaces. I don't have time for that. I much prefer the Clojure philosophy of having few types that can do it all.
- melvinroest 5y agoI've been using Pharo professionally for about 1.5 months now, and I'm beginning to getting the hang of the language, and the culture surrounding it. I'll share a couple of thoughts. __General Development/Hacking__ 0. From Pharo 9 and onwards, it runs smooth on an M1 Mac. 1. If you're interested in developing in Pharo professionally, we're hiring [1]! 1b. Other ways to learn about Pharo is to come to Smalltalk/Pharo conferences. I've been to the Pharo Days in Lille recently and I've learned a lot in those 3 days! Other than the Pharo Days there is ESUG. 1c. Check out the Discord channel. People have been really helpful [0]. 2. A big part of the documentation can be found inside the image. For example, press SHIFT + enter and type "tutorial" or "exercise" and a few will come up. Moreover, when you click on any class, there's a "class comment" tab. Some class comments actually have comments and they're written out in a quite understandable fashion when they do. 3. You can make the following clicks and they do something different: - Click: shows a context menu to showcase a particular window / tool - Right click: shows "World Contents", aka objects about your GUI (I haven't used this one yet) - Shift + Option + click: this shows a "halo" around a GUI - Shift + Control + Click: the coolest meta click there is, it shows all objects that are directly related to the pixel you clicked on. If you clicked on a table cell item in a GUI window, you can figure it out via this click. I've used this trick to figure out where to go in order to alter my IDE to my own taste. 4. Pharo is one of the few languages I know where you can create like a game or application for which it's possible to immediately see the source code and interact with it. The use-case this allows for is highly hackable open-source applications. For example, here's a game that allows you to design chips [2]. It's easy to see how you could alter levels yourself quite easily, just start editing the code! IMO, that's next level open-source. 5. If you want to, it's relatively easy-ish to inspect the AST and see how it's mapped to the VM. Be careful of setting breakpoints here, you'll crash your image :P 6. A Smalltalker told me that Pharo's VM enforces everything to be an object but technically not everything is an object, as far as VM implementation goes. If you're not hacking on the VM, then you can assume everything is an object. 7. Overwriting the #doesNotUnderstand: message can lead to all kinds of fun! I wrote my custom If/Elif/Else DSL. Smalltalkers will hate me but I found it awesome because it showcases how one could hack a DSL quickly. You can see about it here [3]. Here's some example code: ``` If _: (someCondition) _: [ "code" ] Elif _: (anotherCondition) _: [ "more code" ] Else _: [ "final code" ] ``` As you can see, I've hacked the _: to be a separator of some sorts, but what it actually is, is an argument of a message. You can do all kinds of fun stuff with this. See [8]. 8. When you overwrite #doesNotUnderstand then you can inspect the message and its arguments. So whether you send Object1 a:arg1 veryImportant:arg2 message:arg3, then you can inspect those arguments. In the case above, this means you can also inspect _:arg1 _:arg2 or _:arg1 _:arg2 _:arg3 ... _;argN. In other words, you can deal with variable arguments and it doesn't matter what they're called. Because of this, it's easy to create a simple DSL, if you need another separator, then simply add one. You have a lot of characters at your disposal that are quite unique [4]. I figured that out by using by using point (2) and just looking around in the environment. __Web Development__ 9. Seaside is capable of live and dynamic updating. MOOCs won't tell you this because it requires using Seaside quite differently. In short, the pattern that I see used at my work is by having server-side rendered HTML that has designated blocks as callbacks. So when you send your server-side rendered HTML, those callback blocks will transform itself into a jQuery GET/POST request. Pharo writes the jQuery for you. We also use React, but I haven't gotten around to it how it's used, I'm fairly sure we don't use anything like Redux. 10. In terms of testing, it's relatively easy to write tests. As with Go, it's all included and you're ready to test! Also note: if you want to use Selenium tests, you can use Parasol [5], it's quite easy to use. 11. The following concepts are not explained well, so I'll do it: Seaside heavily uses what we'd call middleware in NodeJS (filters in Seaside). In NodeJS/Express we also have a request object that exists during the lifetime of a request. In Seaside this is called a dynamic variable (WADynamicVariable is the class). __Stuff I wrote out in the open__ 12. I've been working on refactoring i18n in Seaside [6]. I currently find the approach Pharo uses the nicest approach, which is something along the lines of: 'You have some string that needs translation in your web app' SeasideTranslated When you want to export a catalog file of all the strings you want to translate, then you send exportCatalog new exportCatalog and it will look through the whole image and find every tagged string and export it into a catalog (.pot) file that you can edit with POEdit (a free Mac app [7]). 13. I wrote a simple animation that shows the definition of sin and cos [8]. Most of the code is shown in that video, IMO it gives a good enough sense how to use it. __Bottom Line Thoughts__ 14. I think Pharo is a production-ready language for SaaS apps where you can easily scale by adding instances. I am not sure if it'd be production-ready for consumer facing web apps with many concurrent users. 15. It's an amazing language to create desktop applications for. 16. The debugger capabilities are awesome and there's active research on it. Time travel debugging is currently in its PoC phase (source: Pharo Days). 17. It's also a good language for live music making (source: Pharo Days where someone demo-ed some live coded acid music). [0] https://discord.gg/QewZMZa https://discord.gg/QewZMZa [1] We're hiring developers able to work in Europe and based in a European time zone. The way we use Pharo is IMO the real deal, it goes far beyond what any MOOC can teach you. https://yesplan.be/en/vacancy/full-stack-software-engineer https://yesplan.be/en/vacancy/full-stack-software-engineer [2] https://github.com/pavel-krivanek/PharoChipDesigner https://github.com/pavel-krivanek/PharoChipDesigner [3] https://www.youtube.com/watch?v=BUEnRrUZ-Ug https://www.youtube.com/watch?v=BUEnRrUZ-Ug [4] ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ [5] https://github.com/SeasideSt/Parasol https://github.com/SeasideSt/Parasol [6] https://github.com/SeasideSt/Seaside/tree/gettext-fix https://github.com/SeasideSt/Seaside/tree/gettext-fix [7] https://poedit.net/features https://poedit.net/features [8] https://drive.google.com/file/d/1Z3UwTAj4A2CRo_TXk6JNG-mN9yMamYMj/view https://drive.google.com/file/d/1Z3UwTAj4A2CRo_TXk6JNG-mN9yM...
- travisgriggs 5y agoCongratulations to all the Pharo folks. It’s good to see a number of names in the contributors list that I still recognize. I really impressed that Pharo has maintained ground this long. This coming June, it will be 10 years since I jumped out of the Smalltalk balloon, and dedicated myself to embracing polyglotism, right tool for right job, pragmatism, etc. I miss the community. I miss many of the elegant aspects of Smalltalk. Maybe, since it’s release 10, and I’ve journeyed elsewhere for 10 years, I should give Pharo a spin. Any pointers for ye olde VisualWorks guru to get up to speed again? Or minor contributions to be made?
- VaxWithSex 5y agotravisgriggs doIt.
- musicale 5y agoRather misleading - and seemingly insulting to the people who created and use Smalltalk and Squeak - that it doesn't say "Smalltalk" (not to mention Squeak) anywhere on the front page. They should really give credit where credit is due; growing the Smalltalk community seems like a better idea rather than pretending it's something else and implying that Smalltalk is somehow something bad that they need to hide.
- spdegabrielle 5y agoA modern smalltalk for a modern era! Congratulations to the Pharo team, past and present, and all the contributors for a truly monumental achievement.
- athenot 5y agoI really appreciate that a blog post about a language update starts with a simple sentence to describe what the language actually is. > Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback. Many times I land on announcements about Foo v3.0 that is super awesome and describes the diff from v2.5, with no mention whatsoever about what Foo actually is. Thank you!
- musicale 5y agoExcept that it omits the part that Pharo is a version of Smalltalk (and also a fork of Squeak/Smalltalk.)