"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.
I 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.
Installing 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/ 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 prod…
I'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.
As a rails developer - my introduction to Pharo started with this video: 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.
Idunno, as a Rubyist, the bit on examples was kind of cool (awful syntax though!) but my IDE already offers to create stub classes for lots of stuff.
What I don't get is why this sort of thing needs to be in its own OS. Why can't it live in my OS of choice, so I can use it to interact with things I care about?
As a rails developer - my introduction to Pharo started with this video: 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.
Until I watched this I never understood class definitions in Pharo. His "we tell the TestClass to create a subclass of itself" blew my mind.
I 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?
>> 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?
Linux using X11
Also setting 'Display scale factor'=1.0 because any other value makes fonts blurry again.
> It is hard to say that Java or any other imperative language is OO after seeing Smalltalk/Pharo. This. It so frustrates me to see people trash talk on "OOP" in HN and other forums, where I know people never really got to really realize what it could really be about. Just hacky approximations. I'm sure that functional silver bullet will avoid this cycle some how. /s
I think that's true for most paradigms. Most people see .prototype and the end-all-be-all of Prototypal Inheritance and base everything they think they know about it, from how a frontend from the early 2000s was coded. They work through some lisp book in school, have an exam and think that's all lisp development can give you. Same for functional programming, where most "we love functional programming" companies just…
Could you give a good example of functional programming that does not follow that method? I am very interested.
What do people use Pharo for? Is anyone here using it for a product?
I 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 ima…
> 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 ;-)
"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.
I 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…
The 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)
As a rails developer - my introduction to Pharo started with this video: 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.
I feel anxious looking at the multitude of windows. Do you get used to it?
Depending on your workflow, you get used to it rather quickly imo.
I recently rewrote a Python script which extracted metadata from an XML file and using that metadata to stitch together fulltext from OCR (OCR where single pages,and the metadata held references to page numbers - whoever programmed that needs to be slapped).
So I worked fully in the Pharo environment, file browser to look and check, "code browser" to code and change etc.
The glory really was, the extraction took quite some time (a few hours, millions of files, python wasn't really faster), but after that, I had objects in the environment and code changes reflected, I saw a wrong extraction, I could correct and run it over this single text, which with the Py script was much more inconvenient. Yes, you could code it differently to do that, but with Pharo my code didn't need to account for that. Also "oh, I need to create a new metadate like year+month", code it and its there for every text, and if I decide to have it generated on the fly, I'm done if I need it as instance variable, I run this (and only this) method for all texts, which takes a second. And then into Elasticsearch for our other pipeline afterwards ;-)
Plus, close it (and save) and you when you reopen, you are exactly where you were, opened windows and all
I 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…
Java shares a lot with Smalltalk though, even if on the surface it has a C++ like syntax, the semantics are closer Smalltalk/Objective-C.
Same applies to C#.
Sure Proxy classes aren't a replacement for #doesNotUnderstand:, the metaclasses are relatively poor when compared to Smalltalk metaclasses, and hot code reloading isn't the same as having a Smalltalk image, but that is about it.
Eclipse was born out of Visual Age for Smalltalk, and the experience isn't that much dissimilar when taking those differences into account.
C++ had two Smalltalk/CL like environments, Energize C++ and Visual Age for C++ v4, they failed to gain adoption due to hardware requirements.
C++ Builder offers a bit of what they did, but its price point means only big enterprises care about it.
Nowadays VC++ with hot reload, or Clion with Live++, are the closest that one can get to Energize/VA.