12 ms·
Pharo 11
- jadbox 3y agoWhat do people use Pharo for? Is anyone here using it for a product?
- asicsp 3y agoSee discussion for Pharo 10: https://news.ycombinator.com/item?id=30917420 https://news.ycombinator.com/item?id=30917420
- sigzero 3y agohttps://pharo.org/success/ https://pharo.org/success/
- notwhereyouare 3y agoI work for one of the companies on that list and can attest we still use smalltalk/pharo.
- sigzero 3y agoVery cool. Smalltalk is one of those "I'd like to learn" languages for me.
- zabzonk 3y agoit would take you about half an hour. absolute minimal syntax and fairly obvious semantics. of course, learning how to use it properly might take a little longer :-)
- melvinroest 3y agoI disagree with this. You need to know more method signatures to write any program in it. For example things like: someCollection do: [ :someArgument | "some code" ]. Stuff like that. It's still a lot less than most languages though. I found that this really helps [1] and I find it more representative of how difficult the language actually is. The postcard example is a bit contrived. [1] https://gist.github.com/jdevoo/8e8866cd6087e05790841d0f20b2e377 https://gist.github.com/jdevoo/8e8866cd6087e05790841d0f20b2e...
- VaxWithSex 3y agosigzero doIt.
- dgellow 3y ago> ATMs in Moscow streets > From 2008 to 2015 ATMs deployed in Moscow streets were developed and run using Pharo. People use them to pay for services with cash and cards (phone, internet, taxes, parking, etc)."Pharo was a really enabling technology. We developed user interfaces using advanced flow control based on continuations and mixed prototype with class-based programming. We supported various kind of equipment and a... > 2 March 2017 https://pharo.org/success/ATMsInMoscowStreets.html https://pharo.org/success/ATMsInMoscowStreets.html That's a surprising success story!
- gladimdim 3y agoI use it for my interactive-fiction backend and to host save files for another game. Nothing fancy, just a web server getting file and saving them. Like a KV-storage. I have deployed it to dogital ocean on 2017. I have not TOUCHED it since then. Still running good. And I can access the Pharo GUI via the web VNC just from my browser with full access to the IDE and dev env. The cons: I forgot how to run that docker image. If it fails I am in troubles reminding myself how to run it one more time. 6 years have passed...
- gladimdim 3y agoOn contra, my dart telegram bot runs on the same machine. I have to restart it weekly. Even when the load is 0. LMAO
- bantunes 3y agoYou can use this tool to figure out how to run again any currently running container https://github.com/lavie/runlike https://github.com/lavie/runlike
- replwoacause 3y agoAwesome, I’ve been learning Docker lately and asked ChatGPT how to do this. It told me to run inspect and that there was not a way to get the command used to launch the container. Thanks for sharing.
- all2 3y agoYour bash history should be helpful here.
- leadguit 3y ago> And I can access the Pharo GUI via the web VNC just from my browser with full access to the IDE and dev env. That's a thing I read about elsewhere, and it sounds like it has or had an integrated VNC Server - is that true (meaning run it heqdless from cli via ssh and connect to it through that), or do you need an X and leave Pharo "opened"? Any pointers appreciated ;-)
- andrewl 3y agoThere is a list at: https://pharo.org/success/ https://pharo.org/success/
- 542458 3y agoThe "fusion of a developed program and development environment" idea is very cool. One (maybe dumb) question though: > Simple & powerful language: No constructors, no types declaration, no interfaces, no primitive types. Are constructors and primitive types really the sort of things that people find to be unnecessary complexity?
- zabzonk 3y agoyou can (and often do) have constructors in smalltalk: https://stackoverflow.com/questions/36878787/making-a-constructor-in-pharo-or-smalltalk https://stackoverflow.com/questions/36878787/making-a-constr... - i think the stuff you quoted was probably written with little thought.
- Cthulhu_ 3y agoConstructors are tools to put an object in a starting state, but there's alternative solutions; in Go, factory functions are pretty common. Primitive types reminds me of Java, which doesn't have primitive types per se (everything is an object under water), but they're adding it soon (or already have) for performance reasons.
- jolux 3y agoJava does have primitives/unboxed types (int, long, boolean, etc) what they’re adding is support for unboxed/value classes created by users. This should help reduce the duplication between int and Integer and so forth.
- emaringolo 3y agoMany languages need constructors (and static methods) because the class is not an object. In Smalltalk the class is the sole instance of another class (MetaClass), so a "static method" becomes a "class-side" method. And so it is inheritable. The meta relationship is hard to understand (at first), but it is part of what causes the parsimony in all the interactions, and the "everything is an object". https://stackoverflow.com/questions/57898036/is-it-true-that-metaclass-class-is-just-metaclass https://stackoverflow.com/questions/57898036/is-it-true-that... Primitives (as in int, double, etc.) are a different subject, and although an Integer or a Smallinteger is a specially optimized object, it has the overhead of being an object (as in "Boxed" Integer in other languages), instead of some bytes at some memory location. Most of the times you don't need the optimized version, and if were the case that you do, then it's when you optimize that piece of execution specifically (maybe making an external call to a more low-level, optimized version).
- 101008 3y agoI used Pharo in my Object Oriented course at the Univeristy (for my CS degree) and I was really surprised for this paradigm. We saw Haskell and Pharo and I was really happy to discover new things from a language point of view. It is hard to say that Java or any other imperative language is OO after seeing Smalltalk/Pharo. About the question if it's used in production, the teacher for that segment of the course was a specialist who worked on big companies and showed us examples of being used and we were (again) blown away. I never fully understood it (although I passed that course), but it's one of the things I'd like to know it better: not for usage, but out of curiosity.
- m_mueller 3y agoI'd be interested in some of these industry use case stories if you could share something.
- CraigJPerry 3y agoNot the OP but JP Morgan’s Kapital system which underpins their credit hybrids business was smalltalk. I say was because i believe it’s been deco’d in the past few years but i don’t know for sure, when i worked at JP it was still a core breadwinning system.
- e12e 3y agoI believe the core of Gemstone is smalltalk - it's an object database/runtime and supports java as well - they also sponsored/made maglev ruby (now dead?): https://gemtalksystems.com/about/customers/ https://gemtalksystems.com/about/customers/
- 101008 3y agoMost of them were financial industries, and a gov body in charge of tax processing and that stuff.
- andrewl 3y agoThey have an extensive list at https://pharo.org/success/ https://pharo.org/success/.
- web3-is-a-scam 3y agoAs a rails developer - my introduction to Pharo started with this video: https://youtu.be/HOuZyOKa91o https://youtu.be/HOuZyOKa91o If you're not a ruby/rails developer you can still see how awesome it is, but for rubyists specifically it can really be quite mind blowing.
- xkriva11 3y ago> ...There you go. Now you've seen a little bit of Smalltalk and now you hate your Ruby development environment. Have a nice day!
- VaxWithSex 3y agoI switched from Ruby to Smalltalk in 2008 for this specific reason.
- web3-is-a-scam 3y agoDo you actually work in smalltalk or is it just your hobby language of choice?
- VaxWithSex 3y agoI wrote my Bachelor and Master thesis with it. I thought about working at HRWorks, but then decided to do Python and now TypeScript. I'm learning Rust now, just because how the closures look a bit similar to Smalltalk since I miss it so much.
- xept 3y agoI feel anxious looking at the multitude of windows. Do you get used to it?
- zabzonk 3y agoit's not much more overpowering than other ides - just close anything you are not interested in.
- 3y ago
- MadcapJake 3y ago> Ephemerons Production Ready. Does anyone have any insight into this development? What impact on GC performance?
- xkriva11 3y agoSome materials: https://github.com/pharo-project/pheps/blob/main/phep-0003.md https://github.com/pharo-project/pheps/blob/main/phep-0003.m... https://thepharo.dev/2021/04/07/a-taste-of-ephemerons/ https://thepharo.dev/2021/04/07/a-taste-of-ephemerons/ But I do not know if Guille has some benchmarks.
- jordanmontt 3y agoIt depends on how many objects you installed the ephemerons. We tested with hundreds of thousands of ephemerons and we saw performance problems. We instrumented the code to capture all object allocations of an application. But, if you use ephemerons with not so many objects, let's say a couple of houndreds max, you should not have any issue.
- pkphilip 3y agoThe primary challenge with Pharo is the complexity of using this in a multi-user type of environment where the image is shared between people. How does one do that?
- xkriva11 3y agoPharo source management is based on Git, so the workflow is not special. We build the development images on the CI so every developer can download the already prepared image with the latest commits, but that is just for convenience.
- melvinroest 3y agoThough there is the issue of: the changes in your image are not necessarily the changes in your local repository and the syncing of both can sometimes cause annoying issues. In most cases I've learned to work around it, but it wasn't plug and play straighforward.
- igouy 3y agoNote the Cuis-Smalltalk Daily Workflow: https://cuis-smalltalk.github.io/TheCuisBook/Daily-Workflow.html https://cuis-smalltalk.github.io/TheCuisBook/Daily-Workflow....
- throwawayForMe2 3y agoI did commercial team Smalltalk development using the Digitalk toolset, for a team of around 16 people. You start with a base development image, loaded with the toolset and frameworks for the project. No one modifies this image. You share the app code through a source control tool. We used Team/V. Start up the project base image, open the repository browser, load the project packages. Make changes, commit source back to the repository. No saving of the image for development. So shared, but never changed base image for the project, and app code sharing through the source control repository.
- simplify 3y agoCan Pharo also store data in its language runtime (which is long-running if I understand right)? If so, does that make it its own type of database?
- xkriva11 3y agoYes, it is sometimes used as a database, and there is Gemstone [1] which brings it to another level. [1] https://gemtalksystems.com/products/gs64/ https://gemtalksystems.com/products/gs64/
- CodexArcanum 3y agoI always feel like I should be doing more with Pharo. I love smalltalks and there's something really fun and playful about working with it, even those with a more "professional" shine on them like Pharo. I've been experimenting with Godot recently and I feel like there's a lot of that spirit in modern gamedev, where the tool is written in itself and gives you all of the same parts to play and build with. I guess I don't really know what my usecase for Pharo is, like what niche is it filling? Maybe I need to build my next web...thing with it and see how it works out?
- melvinroest 3y agoIMO it's a good tool for web scraping. The reason: you can do web scraping with Parasol (i.e. Selenium [1]) and then if you need visualization tools then you can immediately use Roassal [2]. The thing is: Pharo and the fact that it's more GUI-oriented than other programming languages, allows for data visualization a bit easier. Also: you don't need to know database specific. You can just store the data and save the image. Super useful for small web scraping projects. Another use-case is: open-source software where you want to encourage users to just open up "the damn code engine" and hack straight into it, seeing it change on the fly. Like, can you just right click in Windows on a pixel and change the code that underlies it? In Pharo you can! Commercial parties would find this horrible, but it's amazing for full open-source software. Note: I don't think any other language is capable of this! For web apps, B2B works quite well. B2C, I see scalability issues. [1] https://github.com/SeasideSt/Parasol https://github.com/SeasideSt/Parasol [2] https://github.com/ObjectProfile/Roassal3 https://github.com/ObjectProfile/Roassal3
- xkriva11 3y agoWhat about trying the Godotalk [1]? [1] https://pharoweekly.wordpress.com/2021/02/03/godotalk/ https://pharoweekly.wordpress.com/2021/02/03/godotalk/
- 0x445442 3y agoI find it useful for scripty things once you come to terms with not needing to write to stdout. Although there are ways to do that and call into the image from shebang scripts. Also, as long as you leave the image running you can setup cron like jobs in the image. The reason I like it for this type of thing is that all you need resides in the image instead of shell scripts scattered hither and yawn. Also, the development for these types of things I find much easier because of the ability to inspect results of every step in the workspace/playground before stitching it all together in a class. I guess in that regard it’s a similar flow to Lisp.
- falcolas 3y agoMy first time seeing Pharo. First impressions are that it reminds me strongly of Smalltalk with the single-source IDE and runtime. Not a bad thing, just an observation.
- sigzero 3y ago"Pharo is an open source, cross-platform implementation of the classic Smalltalk-80 programming language and runtime." So not surprising.
- falcolas 3y agoAah, it's intentional. :) > Pharo features > A dynamic, pure object-oriented programming language in the tradition of Smalltalk
- KMag 3y agoI believe Pharo evolved from Squeak SmallTalk. I'm not sure if they started calling it a new language because of the number of extensions on top of SmallTalk-80 or if they introduced any breaking changes from SmallTalk-80, or if they just didn't want to be bound to strict conformance going forward.
- e12e 3y agoSo, is Cuis Smalltalk left behind? For a while it seemed to maybe be the path forward for a lean, Free Smalltalk? https://cuis.st/ https://cuis.st/
- jecel 3y agoBoth Cuis and Squeak (from which both Pharo and Cuis were forked) are still actively developed. Pharo does have the largest presence in the two major Smalltalk conferences (FAST in Argentina and ESUG in Europe) but there is no need to worry if one of the other options is more aligned with your needs.
- frou_dh 3y agoPharo is anything but lean, so I don't think their relative merits have changed at all.
- api 3y agoPharo looks like a blast from the past in a good way. It harkens back to the era when a lot of work was put into carefully designing language, IDE, and UI/UX environments cohesively with an eye toward using the computer to maximize human capability and productivity. Then we dumped all that and abandoned it and moved to today's visually and ergonomically inconsistent hodge podge. It mostly happened because of the web but also because the velocity of the industry increased to the point that it felt like a waste of time to think deeply about anything. It'll just be obsolete next year. Slap it together, get it out the door, repeat.
- splitstud 3y ago[dead]
- jventura 3y agoI got curious, downloaded and installed it on my computer. Checked the docs, and the next step was to download a stable image. Downloaded 11 (stable) and started it. Then blank stare to screen! What should I do? Lots of things to click on, and no text editor.. Searched for a tutorial on the website, and found nothing! I don't want to spend 30 minutes to look at some random videos of Virtual Reality in Thames or whatever, or read "Pharo for Rubyists" (I use mostly Python). I just wanted to explore a bit, and maybe if it seemed interesting, tomorrow I would continue exploring it. But now I've deleted Pharo! Warning to other project maintainers: just show a tutorial, or an hands-on doc, so that newcomers may get a feeling of what it is. This is especially important for relatively unknown projects like this. Some projects that have done it right: - https://www.djangoproject.com/start/ - https://go.dev/ (Search for Try Go in the main page) - https://www.python.org/ (Carrousel showing some aspects of the language) - https://play.rust-lang.org/?version=stable&mode=debug&edition=2021 - others I can't remember now..
- jdthedisciple 3y agoWhy does this seem so common in niche projects like this one? I often see GitHub repos that seem very interesting and even quite liked but as a newcomer you're just supposed to figure everything out blindly by yourself. P.S: Thanks for saving me the time to download and try out Pharo.
- wslh 3y agoYes, it should be called "Onboarding UX" and nowadays , it it fails, make someone forget completely about that piece of software until there is another emotional event such as browsing it in HN and have feedback from a friend.
- capableweb 3y agoBecause lots of software released as FOSS is not made to attract people to start using it without spending at least some time reading and understanding it. Lots of FOSS is written that way, especially corporate PR FOSS, where engagement and other things are important, because otherwise the cost/value calculation doesn't work out yadda yadda. But lots of other FOSS is released just because someone wrote something, and then just put it out for others to use, if they're curious. They don't owe you anything, and spending time working on the onboarding UX, tutorials or guides might detract from what they wanted to do: entertain themselves solving a problem they care about.
- guestbest 3y agoI really wish Apple’s ObjC went more into the self/smalltalk route in its language and IDE rather than invent swift as a replacement.
- bandrami 3y ago36 years ago a very young me took a programming class in 3rd grade where learned "Small Talk", which was going to be how everybody worked with computers in the future. I still credit most of my skill at programming to the fact that I was introduced to that and Forth in elementary school. I also miss those C64s....
- bogwog 3y agoWow my highschool didn't even offer programming classes. The closest thing to a computer education were some classes that required us take online tests to obtain Microsoft Office and/or Adobe Photoshop "certifications" before we could graduate.
- bandrami 3y agoMy high school didn't either, just my elementary school. The mid-1980s were a different time....
- actuallyalys 3y agoI think I caught the tail end of that in the 90s. I remember taking a class from the local parks and recreation department where we programmed a little robot in (I think?) LOGO.
- bandrami 3y agoGood old RPT 4 FD 50 RT 90. It was only years later that I found out it's basically a full lisp system under the hood with the turtle graphics just a small DSL.
- bogwog 3y agoI wonder if anyone has experience with this and Amber (https://amber-lang.net/ https://amber-lang.net/) and can compare the two? The languages at least appear to be very similar, but the latter uses a web browser rather than a fully custom UI like Pharo has. I assume you can't just open a Pharo program in Amber (or the other way around)?
- jiffygist 3y agoI downloaded the launcher and there are two minor annoyances: 1. The font is blurry (upd: solved by increasing "SDL2 Screen Scale Factor Base DPI" in settings) 2. ~/Pharo/images is being created even though I changed all paths in settings Anyone knows how to solve this?
- mike_ivanov 3y ago>> solved by increasing "SDL2 Screen Scale Factor Base DPI" in settings I drove it to 300, the fonts are still blurry. Are you on Linux or MacOS?
- jiffygist 3y agoLinux using X11 Also setting 'Display scale factor'=1.0 because any other value makes fonts blurry again.
- dysoco 3y agoI have not used Pharo yet, but I've used Cuis Smalltalk for a college class and it was one of the most fun experiences while writing code that I had since my first steps back when I was a kid. I'm pretty eager to learn more about Smalltalk and write something meaningful in it. To anyone who has not yet tried it I suggest heavily that you do, even if it's just for the sake of having fun, it just can be a bit confusing at first since it's a pretty different environment.
- Decabytes 3y agoI love Pharo and have written about it on my blog, but one of the most frustrating things about it is how the documentation in the various books have fallen behind the language.
- jupp0r 3y ago"In Pharo, you can easily replace an object with another one. All references to the old object in your running program will be replaced by references to the new object." This sounds like global mutable state hell.
- jupp0r 3y agoI wish having to debug this onto the person who downvoted my comment without adding to the discussion. This is worse than singletons that - in all their glorious capacity to create tight coupling between unrelated parts of your application - are at least guaranteed to keep their identity after having been constructed and can thus provide some sort of sane exit path by keeping track of changes made to their state and informing observers.
- xkriva11 3y agoThe ability to change the identity of objects is not really used in normal code, so it is pointless to complain about it as bad practice. But it may be handy during debugging sessions, and it is an essential feature that allows the system to evolve like a living system. It is used during class migration and so on. (It wasn't me who downvoted your comment)
- igouy 3y agoPerhaps the comment seemed to condemn without showing knowledge or understanding. Perhaps asking why someone might need to do that would have prompted a more informative response.
- chunsj 3y agoInstalling and running Pharo when new release has been introduced; however, yet, Pharo does not support HiDPI screen and disappointed. Other than this, this project and other projects dependent on this, especially, http://agilevisualization.com/ http://agilevisualization.com/ is looking great to me. Once, I had used Squeak MVC for my company's internal projects (though it has been replaced with Common Lisp applications), and Smalltalk is very productive.
- ejflick 3y agoI've wanted to spend time on Pharo for over a year now but the blurriness gives me a headache. Occassionally I'll check back during a new release to see if they fixed the hidpi issue. Really surprised they haven't.
- xolve 3y agoI hope Pharo developers find time to fix this. HiDPI and variable DPIs are way too common and it does put users off to work with fuzzy/tiny UIs.
- musicale 3y agoAnd motherpharos act like they forgot about Kay. s/Pharo/Pharo Smalltalk/g