[HN Gopher] Pharo 10 ___________________________________________________________________ Pharo 10 Author : xkriva11 Score : 177 points Date : 2022-04-05 10:52 UTC (12 hours ago) (HTM) web link (pharo.org) (TXT) w3m dump (pharo.org) | selykg wrote: | What are some good resources for learning to develop using Pharo? | Anything others would recommend? | fmakunbound wrote: | There's a ton of practical Pharo books here | https://books.pharo.org and Smalltalk books here | http://stephane.ducasse.free.fr/FreeBooks.html | Qem wrote: | There'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/ [2]. | https://github.com/SquareBracketAssociates/PharoByExample9/r... | [3]. https://books.pharo.org/deep-into-pharo/ [4]. | http://agilevisualization.com/ [5]. | https://books.pharo.org/numerical-methods/ | indigochill wrote: | IMO 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. | xkriva11 wrote: | This is a list of quite rare features that make Pharo | interesting: https://pharo.org/features | cout wrote: | That 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 wrote: | Pharo 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. | brandonbloom wrote: | This 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 wrote: | Wow. The density of ideas I've never heard of before on that | page is high. | Qem wrote: | Pharo 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". | ok123456 wrote: | I 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 wrote: | > a copy of your code the environment does some extra epicycles | to copy it outside | | 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. | scotty79 wrote: | Do you have any examples of Pharo github repositories created | with Iceberg? What do they even contain? Does Pharo even have | a notion of source file? | kencausey wrote: | The github link in the comment above is one such example. | scotty79 wrote: | On the screens in Getting started tutorial I found this: | https://github.com/pharo-spec/Spec | igouy wrote: | > Does Pharo even have a notion of source file? | | Same as other Smalltalk implementations -- VM + .image file | & .sources file & .changes file. | | .image is a snapshot/cache | | .changes is recovery log text of what has been done with | the .image file | | .sources is source code text for the .image smapshot | igouy wrote: | > As you just sort of hack your image to do what you want, it | just sort of turns into a ball of mud. | | No, it doesn't just turn into a ball of mud all-by-itself. | | As you said, we can export our app code and bake a new working | image (vendor image + our app code -- kind-of like a container, | kind-of like a reproducible development process.) | gjvc wrote: | > The paradigm they're going for is TDD for everything. | | Smalltalk _facilitated_ Kent Beck 's invention of TDD. | mark_l_watson wrote: | As a very long time occasional Smalltalk user (on my 1108 Lisp | Machine, Commercial on early Mac, later Squeak, then Pharo), I | agree with you, except that Pharo has nice git integration that | I can recommend spending the time to set up. | | Also, I used to create Squeak headless standalone applications | - plenty of tutorial material for this. | | Lisp used to get a similar bad rap, but SBCL has good app | packaging available and the commercial LispWorks makes it easy | to build small standalone apps. | zelphirkalt wrote: | For version control they have Iceberg, which should allow you | to use git for your projects. It doesn't have to be all in an | image. | andjd wrote: | This is kinda the point of smalltalk. It's a radically | different programming model _and_ paradigm than most C-derived | languages. If you're looking for a language that feels | comfortable to developers with a background in [insert widely- | deployed language here], there are better options for you. | | Smalltalk has been around for over 40 years, which makes it a | contemporary to C. Just like FORTRAN or COBOL, there's a corpus | of deployed code, and institutions that are invested in a | maintained runtime, but that dosen't mean that you would | necessarily want to use it for a new project today. | | A lot of the great things about smalltalk, such as block syntax | for anonymous functions, have been copied into many modern | programming languages, and we probably wouldn't have them | without smalltalk taking it's unconventional approach. | | > 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. | | So, the push to add types to JS, Python, Ruby and other dynamic | languages is largely from developers accustomed to Java, | C-Sharp, and other enterprisy languages who would probably | rather not work in a dynamic language at all. Put another way, | it's a concession of these languages to try and be everything | for everyone. But statically typed complied languages do not | provide an inherently better programming paradigm than dynamic | programming. Smalltalk commits further and deeper to a live, | dynamic programming experience. It's different, and I don't | feel like saying that it fails to conform to expectations | brought in from other, very different programming paradigms is | a meaningful criticism of the language. | theamk wrote: | > So, the push to add types to JS, Python, Ruby and other | dynamic languages is largely from developers accustomed to | Java, C-Sharp, and other enterprisy languages ... | | Nope, this is not true. I am personally pushing to add types | to our Python codebase, and I have no love for "Java, C-Sharp | and other enterprisy languages". | | It's just that as the codebase grows, and especially as | number of contributors grows, people start to make more | mistakes. A rarely used code path, like an error handler, | might fail in production because of wrong type or missing | argument. We can require unit tests with 100% coverage, but | this is very hard -- and typing linter finds you many more | bugs per effort spent. | | That does not mean that we should always specify every type | in program explicitly, like Java does. Unspecified types are | great for interactive exploration, or a quick hack. But as | you move to production, don't understimate typecheckers -- | they can help a lot. | ok123456 wrote: | This is pretty much my feeling. I'm not adding types | because I have some kind of brain rot that makes me need | AbstractFactoryBeanContainerAnnotationFactory. I like | adding type annotation because it means you can do static | analysis on your code base. Without it, you need exhaustive | coverage tests to demonstrate what exactly can be returned. | cxr wrote: | > That does not mean that we should always specify every | type in program explicitly, like Java does. Unspecified | types are great for interactive exploration, or a quick | hack. | | It's also helpful to consider whether they constitute | unnecessary requirements[1]. Most mainstream JS code is | rife with problems like this--including rampant mis-/over- | use of triple equals. (I call this "going out of your way | to do the wrong thing".) | | 1. https://www.teamten.com/lawrence/programming/dont- | invent-unn... | wirrbel wrote: | > the push to add types to JS, Python, Ruby and other dynamic | languages is largely from developers accustomed to Java, | C-Sharp, and other enterprisy languages who would probably | rather not work in a dynamic language at all | | I recall Guido van Rossum stating once, that he got convinced | of the necessity for type annotations by JetBrains explaining | to him how hard it was to provide good code completion. Not | sure its the full answer, but back then I found it | interesting as an example how lobbying can work. | | (I feel rather indifferent on the type annotations for Python | actually, I can see their usefulness, but also the | shortcomings of retroactively introducing such a system into | a dynamically typed language). | cout wrote: | Typically in Ruby (which is heavily Smalltalk-influenced) | we do ad-hoc type annotations anyway and call it | documentation. | | So you've got the camp that favors type annotations for | various reasons and the camp that is opposed. There is also | a third camp: the DBC (design by contract) camp. Their | argument is that type annotations don't go far enough and | that's what you really need is to enforce preconditions and | postconditions. While I see their point, I think DBC lacks | a "killer app" -- which as you pointed out, for type | annotations, is static analysis (which leads to tools like | code completion, refactoring browsers, performance | improvements, and more). | svc wrote: | Congrats ! | wslh wrote: | Is there an updated Pharo native Wiki like: | https://wiki.squeak.org/squeak | kkfx wrote: | SmallTalk 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. | rileyphone wrote: | For reference: | http://augmentingcognition.com/assets/Kay1977.pdf. Modern | Smalltalk is quite different from Smalltalk-76, to the chagrin | of Kay. | | I agree on the Lisp part, textual syntax is nice for human | understanding but will one day be no longer necessary. If only | they had made a cheap Lisp machine! | sebastianconcpt wrote: | I 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). | butterisgood wrote: | Nice release! And yes, for a short iteration, there's a lot of | good stuff in there! | | Congrats! | ramesh31 wrote: | Who'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. | Kototama wrote: | Please don't let the _hacker_ in hackernews fads away. We need | alternative technologies. These alternatives should not be | judged on one singe metric. | ilrwbwrkhv wrote: | Hacker News has become mainstream. Which means leet code | grind with Java Python or JavaScript. The hackers are still | here. But they are just a minority. | tormeh wrote: | HN is owned by Y Combinator. It's at least as much a tech | finance/industry board as a pure tech board. | andrewl wrote: | I'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 | sebastianconcpt wrote: | Telna [1] is using Pharo to resolve roaming for an incredible | amount of daily network traffic. I'm in their dev team. | | Here you have may others using it in production: | https://pharo.org/success.html | | [1] https://www.telna.com | theamk wrote: | This is super interesting! Do you have more information about | this? | | - How many developers are working on that codebase | simultaneously? | | - What is your workflow like? Do you have any sort of CI | system? How does it work? | | - How does your deployment works? Is it a single beefy | machine or a fleet of smaller ones? | | - What kind of network protocols do you use? Any code | generation? | | - How do you deal with errors -- are there equivalents of | "coredumps" or "logs" in the Pharo world? | sebastianconcpt wrote: | Yes, in the Pharo world there are coredumps, logs, | serialization of the context of the exception (so you can | open a debugger later from another host and see the | messages walkback and inspect the values of all objects and | its instvars on any step of that wallback), also I've made | a RESTful REPL [1] to interact live with headless images | and I'm _cough_ secretly working in websocket based IDE. | | For the rest I can tell you that: | | - The CI doens't have anything special in it, just build | and delivers, after many categories of tests, a docker | image with the app ready for production. | | - Iceberg for a shared repo. Devs usually use one fresh | image per new branch to work on. Flow is reasonably | approximated to git-flow. | | - The app is generally architected as stateless as it can | be so it can enjoy undefined horizontal scaling capacity. | | [1] https://github.com/sebastianconcept/REPLEndpoint | igouy wrote: | > websocket based IDE | | ? Like Resilient Smalltalk | | https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1 | .84... | igouy wrote: | Curious -- Why not Erlang? | sebastianconcpt wrote: | The GTP client that touches Pharo is done in Erlang. | igouy wrote: | So Pharo for the front-end? | sebastianconcpt wrote: | Pharo runs in the backend for resolving roaming for SS7, | GTP and DIAMETER. It orchestrates _a lot_ in there in | order to provide Network Virtualization [1] | | [1] https://www.telna.com/blog/why-virtualization-is- | critical-to... | igouy wrote: | > I just can't think of a single thing it would be useful for. | | Have you wanted to love Pharo enough to install and use it? | agumonkey wrote: | around 2009 there were a few websites running on pharo object | db IIRC | butterisgood wrote: | Why 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! | ramesh31 wrote: | >Why 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? | | Not making a value judgement. I agree that it doesn't need | any more reason to exist than for its own sake. But I'm just | genuinely curious what advantages Pharo has that make it | useful in a professional setting. | rscho wrote: | > what advantages Pharo has that make it useful in a | professional setting. | | Pretty much, the ultimate quick-and-dirty prototyping | engine, especially for GUI projects. In the sense that | you're prototyping largely from scratch, not cobbling | myriads of huge libs. So, ball of mud. Not brick wall. | igouy wrote: | Sculpting clay. | | Funny thing. Back-in-the-day Smalltalks were attractive | because the source code was included to be studied and | re-used (When that wasn't true of many other development | tools). | scotty79 wrote: | > Why does knowing who else is using something have any | impact on your ability to love it? | | It's easier to learn to love something if you see how other | people love it. | [deleted] ___________________________________________________________________ (page generated 2022-04-05 23:01 UTC)