11 ms·
Pharo 12
- orthoxerox 2y agoIs not calling it a Smalltalk implementation still a marketing decision, or has Pharo diverged sufficiently from Smalltalk-80 to become incompatible?
- pjmlp 2y agoOne thing that comes to mind is that Smalltalk-80 doesn't do traits, or the UI is completly different.
- xkriva11 2y ago+Traits, +Slots, different class definition syntax and its processing, different file API, full block closures, different source file syntax, ByteArray literals, different comments syntax, many differences in the standard and UI library, etc. No, Pharo is not Smalltalk-80.
- igouy 2y agoI think incompatible Smalltalk implementations were one of the bigger barriers to Smalltalk adoption. In contrast, Java standard libraries have been a huge benefit.
- peter_d_sherman 2y agoRelated: Pharo Syntax in a Nutshell: http://rmod-pharo-mooc.lille.inria.fr/MOOC/PharoMOOC/Week1/C019-W1S05-PharoSyntaxInANutshell.pdf http://rmod-pharo-mooc.lille.inria.fr/MOOC/PharoMOOC/Week1/C... https://en.wikipedia.org/wiki/Pharo https://en.wikipedia.org/wiki/Pharo >"Pharo is an open source, cross-platform implementation of the classic Smalltalk-80 programming language and runtime.[3]" https://en.wikipedia.org/wiki/Smalltalk https://en.wikipedia.org/wiki/Smalltalk
- anilakar 2y agoSyntax is the easy part. The real difficulty is in trying to make sense of the whole ecosystem, including the strange runtime-IDE-hybrid approach.
- elviejo 2y agoJust imagine that is: - docker image - vscode preibstalled - and everything used the same programming language.
- twixfel 2y agoYes last time I checked they had their own versioning system as well... it's one thing to learn a language but having to learn a whole new set of tools put me off in the end. I guess I can see the argument that the Smalltalk files are not plain text but rather images (or something), but having to basically download a second OS within the OS just to write Hello World was off putting. I realise that that's also can make Smalltalk so powerful, at least in principle. Also lack of retina display support put me off. Of course it is purely cosmetic but when it's literally the only app I used that looks like shit, it is sufficient to nudge me away. Maybe fixed now, not sure.
- andsoitis 2y ago> Yes last time I checked they had their own versioning system as well... Using git with Pharo: https://books.pharo.org/booklet-ManageCode/pdf/2020-05-12-ManageCode.pdf https://books.pharo.org/booklet-ManageCode/pdf/2020-05-12-Ma...
- igouy 2y ago> to learn a whole new set of tools The tools are how we find functionality that can be re-used and re-purposed to do what we need. A lot of exploring and reading existing stuff, less writing new stuff. > Smalltalk files are not plain text but rather images (or something) Mostly Smalltalk files are plain text files! There's a plain text log file with a replayable record of what you've been doing. There's a sources file with the source code. There are plain text file outs and change sets. There's the VM like the JVM — not a plain text file. There's the image, a cache of byte code (like Java .class files, Python .pyc files) and application state — not a plain text file. With a previous Pharo version: $ bin/pharo --headless Pharo10-SNAPSHOT-64bit-502addc.image hello.st pharo is the VM. Pharo10-SNAPSHOT-64bit-502addc.image is the image. hello.st is a plain text file. $ cat hello.st Stdio stdout nextPutAll: 'hello world'; nextPut: Character lf.! SmalltalkImage current snapshot: false andQuit: true!
- Decabytes 2y agoHow does Pharo compare to Squeak? I'm interested in doing more with Smalltalks but Pharo just does not play nice on Fedora 40 with Wayland right now
- xkriva11 2y agoCuis [1] is a simplified fork of Squeak, trying to make it more closely resemble the original Smalltalk-80 (while using a custom version of Morphic). Squeak itself initially tried to not be bound by Smalltalk-80 heritage. Now, it focuses on preserving of the experiments that Alan Kay, Dan Ingalls, and others did, being very conservative in this regard. Pharo forked to have a system that can actually evolve. Pharo should generally work on Wayland, so there will be more things going on, probably. [1] https://cuis.st/ https://cuis.st/
- no_time 2y agoWeirdest programming language/IDE/Runtime/everything I've ever attempted learning. The sheer oddity + lack of real world example code floating around made it feel impenetrable. To put it into perspective, picking up Rust and writing entry level but real world applications was a walk in the park after coming to terms with the ownership system.
- DeathArrow 2y agoYou can try to look at Rosetta Code if you want examples.
- krylon 2y agoI had a similar experience when I tried to learn Smalltalk. Pharo By Example is a thing. I haven't read it, but I assume it is forked from or inspired by Squeak By Example, which made things click for me (at least a little). https://books.pharo.org/pharo-by-example9/ https://books.pharo.org/pharo-by-example9/
- 0x445442 2y agoIIRC, Squeak By Example is heavily Morphic centric, which is going to immediately diverge from other language Getting Started sections. Not sure if one exists but a Getting Started that focuses on just the Workspace, the Transcript and data processing might be a better introduction to those with experience in more traditional languages.
- igouy 2y ago"Quick-UI-Tour" https://github.com/Cuis-Smalltalk/Learning-Cuis/blob/master/Quick-UI-Tour.md https://github.com/Cuis-Smalltalk/Learning-Cuis/blob/master/... "The Cuis Book" https://cuis-smalltalk.github.io/TheCuisBook/ https://cuis-smalltalk.github.io/TheCuisBook/
- andsoitis 2y agoFwiw, you can inspect the Pharo code from within the running Pharo itself. If you’re looking for a good real life code base that is not the bare Pharo, you can check out Glamorous Toolkit: https://gtoolkit.com// https://gtoolkit.com//
- dmpk2k 2y agoIs any thought being put into adding parallelism in the future?
- andsoitis 2y agoNo, but you can do concurrent programming in Pharo: https://books.pharo.org/booklet-ConcurrentProgramming/pdf/ConcurrentProgramming.pdf https://books.pharo.org/booklet-ConcurrentProgramming/pdf/Co...
- ginko 2y agoSo the entire dev environment and any programs you have running in it only uses a single thread?
- andsoitis 2y agoPharo uses green threads https://www.pharo.org/features https://www.pharo.org/features https://en.wikipedia.org/wiki/Green_thread https://en.wikipedia.org/wiki/Green_thread
- packetlost 2y agoSo does it use symmetric multiprocessing at all?
- pjmlp 2y agoGreen threads only mean a M:N mapping to OS threads.
- packetlost 2y agoRight, is the N (OS threads) == 1 in this case? It's a specific, technical way of asking if it can run parallel workloads across modern multi-core CPUs.
- germandiago 2y agoGreat idea but not pragmatic enough. I did try.
- tasuki 2y agoIn what way is it not pragmatic? I don't know Pharo at all, but "not pragmatic" often means just "too different from what I'm used to"...
- germandiago 2y agoYes, very different is part of less pragmatic IMHO. It is very oriented to develop tooling of tooling of tooling and we all work with files nowadays, not wirh images. I want to like Pharo, but that creates other frictions with tools such as Git (I know you can use Git, I tried, it is just not obvious how the workflow works). Also, it has a full set of APIs for GUIs that noone knows in contemporany programming. It is a pitty bc I really think it could really excel at interactive and live programming. However, when I drop Python there even if supposedly inferior, I can have my editor and iterate fast. I can invent even some kind of hot reloading that works well enough. And the result (the pragmatic result!) is that overall it ends up working better for me. I really want to like Pharo. I find it super cool. But... every time I use it I end up getting stuck. C FFI, I am not sure how to do it (my fault probably!), workflow is unobvious even if more powerful. So I end up wanting to do some interactive stuff but I always get stuck. Also, the software deployment with Pharo is weird. It looks weird. It should look like a regular app when I launch something, not like a marsian environment.
- andsoitis 2y agoPharo features - https://www.pharo.org/features https://www.pharo.org/features
- throwaway918274 2y ago7 minutes of Pharo smalltalk for Rubyists: https://youtu.be/HOuZyOKa91o https://youtu.be/HOuZyOKa91o Is a pretty good overview how the environment works.
- krmboya 2y agoMany comments in the vein that pharo is weird and different from what they're used to. I'd say programming is such a young field programmers should dedicate time to try out the weird stuff that they aren't used to, opportunities to rewire your brain for better. Let's not get stuck in a local minima on how to do programming. There could be better ways not yet popular enough. Smalltalk came out of an environment of innovations that were ahead of their time. EDIT: while doing the Pharo mooc, I was able to create a DSL for what I understand to be D&D dice representation without using special metaprogramming syntax of the language or parsing and tokenizing strings. Just plain old OOP of the Smalltalk/Pharo flavour. This were just basics btw
- igouy 2y agoSmalltalk had a moment at the transition from green screen to PC's, fumbled the everything is a string internet, and never showed-up for the multicore + GPU party. Meanwhile the nasty statically type checked languages lowered the pain level with non-nullable and type inference for local vars.
- cess11 2y agoPretty sure Pharo has had GPU-support for a long time, and there's RoarVM for "manycore" applications in Smalltalk.
- igouy 2y ago> Pharo has had GPU-support for a long time For highly parallel general-purpose computations? Tell us more! https://chapel-lang.org/docs/technotes/gpu.html https://chapel-lang.org/docs/technotes/gpu.html As-already stated in this discussion RoarVM "hasn't been touched in over 10 years". This discussion is about the Pharo 12 release and supposedly RoarVM is "compatible with Squeak 4.1 and Pharo 1.2 ". https://github.com/smarr/RoarVM https://github.com/smarr/RoarVM
- cess11 2y agoKinda weird to move the goal posts like this.
- anothername12 2y ago[flagged]
- deleted 2y ago[deleted]
- pvg 2y agoPlease don't sneer, including at the rest of the community. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- john1203 2y agoIt seems too research-oriented programming IDE+language, where there is not a big market compared to other areas. Who does Pharo want to compete with? Maybe developers think they shouldn't compete with other platforms? With the amount of real Pharo apps right now even on GitHub, it would be extremely difficult to "sell" Pharo to any decision maker.
- cess11 2y agoWhy would that be hard? Once you're fluent in it development in Pharo is very, very fast, you can build a GUI application while a prospect or customer is watching and supplying inputs about what they need. Many companies that buy software don't care about programming languages, they care about functionality and price. With Pharo you can show them immediately what the application could look like and how their processes could be implemented. Fast development means you can sell at a lower price and reach customers that can't afford more 'classic enterprise'. You can also reach customers that do work in quickly changing regulatory environments, like insurance. When you've banged out the frontend and some logic you return to your office and figure out things like database schema. Pharo is specifically designed for commercial and industrial applications and not as a research environment. Partnering with private capital has been one source of funding for the project.
- john1203 2y ago>Pharo is specifically designed for commercial and industrial applications and not as a research environment. Partnering with private capital has been one source of funding for the project. Does Pharo have a user base comparable to other programming environments? If Pharo were really used in large-scale commercial and industrial applications, it would be as popular as Python, Java or C++. And it is far from it. I repeat, "Pharo is very, very fast, you can build a GUI application..." is not something that is sells today, and if it were so competitively, companies would use Pharo instead of Flutter, Swift, etc. and on a large scale.
- cess11 2y agoTo me that reads like gibberish. Common Lisp is used in large-scale commercial and industrial applications, why isn't it "as popular as" Java? Pharo and other Smalltalks are used in ERP and similar systems. It's attractive if your business requirements change a lot and you either don't want or can't afford to employ a legion of Java developers. You could write to https://www.cincomsmalltalk.com/main/products/visualworks/ https://www.cincomsmalltalk.com/main/products/visualworks/ and ask why those logos are at the bottom of that page, now that Smalltalk isn't as popular as it would be if it was any good. As a CTO I don't really care whether a programming language and toolchain "sells today" or whether it is "competitive" in some general, presumably universal, sense. I want tooling that fits the problem domain really well, and sometimes niche tools outperform general tools by a large margin for certain problems. They might require fewer developers, allow faster development or better scaling than e.g. Java.
- sigzero 2y agoSmalltalk is one of those "I'd like to learn" but haven't found a good resource that I like (oh and the time, sigh).
- mifa201 2y agoI started a new job in Smalltalk one year ago without any previous experience with the language (background in Scheme, a bit of Common Lisp / Clojure, C, C++, Java, Python, Haskell and a couple of other languages). I had three pair programming sessions in the beginning and that was it, it took me one month to get a grasp of the codebase I have to maintain/develop further. The application is huge, but the tooling and discoverability of the programming environment (including best debugging experience I've ever seen) made it super easy to dive into the system and learn everything practically by myself. This and the fact that everything follows the same basic design principles (objects all the way down) make it a perfect match for solving complex problems. Honestly my experience at work was mostly with Visualworks. But I've been using Pharo in two side projects and I'm loving it. It became one of my top 3 programming languages I've ever used (together with Scheme and CL). It's impressive how much this rather small community achieved, thanks for the awesome work and this new release!
- pheatherlite 2y agoThis top comment is stark contrast to the one right below it. I guess pure oo is a love hate thing
- mifa201 2y agoI used to dislike OOP and favor functional programming languages, until I started working with Smalltalk. I guess the fact that blocks are closures and also first-class objects make up the difference somehow. I learned that programming paradigm is not the main factor I appreciate in a language, but also the elegant/coherent design, simplicity, liveness of the programming environment etc. Also since most of the time developers spend debugging programmings, today I think languages should be designed with improved debugging features in mind. Statically programming languages are doing great progress here (always heard great things about error messages from Rust). Smalltalk and Common Lisp OTH, besides having nice error messages, also have exceptions with resumable semantics. The hability to always get a debugger during an exception without unwinding the stack is such a huge help (specially for dynamic languages), allowing one to fix a running program and continue working. I maintain/develop a complex Smalltalk GUI desktop application and rarely restart it during development (which always take a while, since stuff like connecting and loading data from the database takes some time). Also I can always fire up the debugger to inspect objects I want to change (like dialogs etc), edit code and run it in any frame of the stack (like a REPL everywhere) etc. Maintaining this codebase in a dynamic programming language with exceptions that use the traditional termination model would be a nightmare, every crash would require a restart, and you don't have a compiler to help you. It's no surprise that people just turned to statically typing for this kind of system.
- whartung 2y agoFirst, congrats to the Pharo team, I mean they do a lot of work. But a singular testament of Pharo is that it this amazing environment, with all this heritage, tickling many of the more popular "CS folk" buttons. It's an active, busy project, with lots of committers. And yet, "nobody" uses it. The Pharo folks live in their sandbox, eating their dog food, making Pharo more Pharo than ever, but it seems to only be uplifting folks making Pharo. Pharo is built for Pharo makers to make Pharo, and they continue make Pharo a better place for them to live and do their work. I'm certainly not going say that its because of X or Y or Z. Just that, it "is". It is "not used" in the large. Sure, folks use it, they have their success stories like any project does to some extent. But the larger "hive mind" of the "internet" hasn't seemed to have caught on, or have tasted it and moved on to something else. So, at 30,000 feet, despite all their work, something is not quite clicking.
- lolinder 2y ago> The Pharo folks live in their sandbox, eating their dog food, making Pharo more Pharo than ever, but it seems to only be uplifting folks making Pharo. Some of this is just down to the philosophy of Smalltalks. To program in a Smalltalk is to make Smalltalk. You can't really separate the creation of the system from the creation of the application(s). With that in mind, it's hardly surprising that few people who aren't contributing to Pharo use Pharo—it may not be just that it hasn't found mainstream appeal (which is true) but also that most people who pick it up and start using it seriously end up becoming contributors.
- beefnugs 2y agoWithout ever practically using this system, my first impression is that this is how mech operating systems would have to be. At a certain complexity of vehicle, you would need all of: manufacturer base features/diagnostics, safe-mode control, an open market of source code to add in, pilot preferences, and then real nerd stuff where you customize in your own routines. All the while being able to explore a live running system as it is running without having to trust closed binary only software. Of course the world we live in would never go this way, proprietary unknowable, pre-government hacked, unrepairable trash it is for us.
- melvinroest 2y agoI think Pharo still shines in open-source desktop applications. If I'd ever make a desktop application it'd be in Pharo as I'd want to encourage people hacking on it without ever committing it to git (if they don't want to) and have their own unique version of it.
- ejflick 2y agoI check every release hoping that they finally fixed rendering for HiDPI. Guess I'll have to keep waiting.
- em-bee 2y agoi ran into this problem too. i was able to make it mostly work by changing the font size.
- xkriva11 2y agoIn Settings Browser, check "Set canvas scale factor automatically"
- isr 2y agoYou want cuis smalltalk. It's a heavily-simplified smalltalk (like pharo, it was also forked from squeak), with a redesigned morphic system - which is ENTIRELY vector graphics based (plus a few other niceties). Yes, even the fonts themselves are vector graphics. You can use a fancy cursive font, rotate a text window, and then zoom it in or out - with total clarity.
- jiffygist 2y agoI wanted to try it out, but I couldn't change the directories in pharo launcher to anything other than ~/Pharo. Also it doesn't run on wayland without explicitly setting SDL_VIDEODRIVER=x11 Also can't find a way to increase menu font sizes. Upd: ok, I managed to change the directories (they need to be created beforehand). Somehow empty ~/Pharo/scripts is still created every time the launcher runs. Please fix.