Sacrilegeous question : what are compelling use cases for Pharo
Hello, This isn't a mail intended to troll this community. I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. Kind regards, ~Mayuresh
Hi Mayuresh, It's not about what you can do, but it's about how you do it. The language and the community culture have a huge influence on the way we build software. They have consequences not only at the implementation level, but also at the design level. The Pharo language and its main libraries are simple, pure OO, highly reflective, dynamic... So, when building software, we tend to adopt the same good practices. The Pharo powerful IDE addresses all development facets (coding, refactoring, debugging, versionning, ...). It makes it easy to make things right. This is what makes Pharo compelling. Noury On Jan 14 2023, at 9:01 am, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community. I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. Kind regards, ~Mayuresh
Hi Mayuresh, We use Smalltalk almost exclusively for all our server systems - database and applications. This includes POS applications and payment systems, SaaS applications, multiplayer games and IoT devices. We use GemStone Smalltalk [1] as our database and application server, and Pharo as the development tool. Our IoT devices are Raspberry Pi based and run Pharo IoT [2]. Also, most of these systems have a web based interface developed and served via Seaside [3] running in GemStone. We also have Mobile apps that connect to these systems that are developed in Swift, Dart or Java as users have come to expect native interfaces on their devices. Using these languages to create nothing but thin client like interfaces is quick and easy to maintain. Thatâs where they shine. Compared to Smalltalk these languages suck for writing anything more complex. Weâve had many recent graduates join the team with experience in Oracle or MongoDB or Redis or React or Node or any number of tools who are convinced (like most recent graduates are) that the tools with which they have experience are the âbest" and only serious way to move forward on projects. Typically, as a training exercise, we encourage them to build their first project in the tools they know, along side someone working with GemStone and Seaside. Without fail, a feature identical Seaside application (including a full suite of tests), is completed in a fraction of the time. Sometimes so much quicker that they choose to abandon their attempt and focus on learning Smalltalk and Seaside. FYI, Smalltalk is quite often found at the top-end-of-town. Itâs used on highly complex systems that contain substantial intellectual property, and often require confidentiality. Itâs considered a serious competitive advantage, and itâs where I find much of my work :) Youâre unlikely to get responses from these teams for obvious reasons, Hope this adds to your investigation. Cheers, J [1] https://gemtalksystems.com/ [2] https://www.pharoiot.org/ [3] https://www.seaside.st/
On 14 Jan 2023, at 7:01 pm, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
This question comes up every few years - and itâs a good one to revisit, particularly in a new year. Youâve already had a few good answers - and Iâm sure you will get a few more. Of the languages you cite - Iâve tried 2 of them (C# and Swift) - and they are just too complicated. They donât share the elegance of Smalltalk, itâs such a compact, simple and approachable language. But itâs not just the language - itâs the tools which are all built and self hosted in the language as well , meaning they serve as great examples in how to do most things and also enable you to trivially get in there and extend your programming experience. Even deeper - they let you gradually understand how everything works - even down to the compiler and debugger. Then you understand there is no incomprehensible magic, itâs just straight forward code and messages. I rarely find average C# or Swift programmers who understand how things work in their language - itâs all voodoo and stack overflow for them, whereas most Smalltalkers after 6 months will understand how conditional logic works and many other lower level concepts. Itâs also not surprising that many computing innovations (more than most languages Iâd say) trace back to Smalltalk (and continue to do so). That simplicity and elegance just inspires creative thinking. While many languages have borrowed ideas from Smalltalk (which none of us mind) - they just got awkwardly bolted on. As an example - most languages now have closures , but the ethos of them is never properly embraced. For example, while we have exceptions - they dont get used as much as other languages because the convention (pervasive in all libraries) is to carry an error closure along with an operation - so on an error condition you can evaluate some code exactly where you need it vs winding back up the stack. Eg #at:ifAbsent: or #detect:ifNone: (and as previously mentioned, you can see how these work, and implement your own similar conventions in your models too). In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code. I keep looking at new languages hoping to find the same elegance, but it seems that such simplicity is just not appreciated (I think lisp is one of the few that does - and itâs a cousin of Smalltalk). Finally, itâs just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air. If you havenât tried it, I encourage you to dip a toe in the water. Even if you use other things, we all seem to find that we just come back to Smalltalk as itâs so deceptively addictive. Tim
On 14 Jan 2023, at 08:01, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
Hey Tim,
On 15 Jan 2023, at 4:59 am, Tim Mackinnon <tim@testit.works> wrote:
In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code.
This is one of the first things I introduce new Smalltalkers to, typically after the question âHow do you do an if / then?â More often than not, it leads to a âmind-blownâ moment. They come to understand that C++, or Swift, or Java, or Dart, or whatever quasi-oop language they know has really only added a few OOP concepts to their development (and sometimes runtime) workflow. Understanding Smalltalk makes you a better developer in other languages, and makes it easier to learn new languages, since you clearly see the line between pure Object Oriented, and Language idiosyncrasies.
Finally, itâs just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air.
OMG Yes! I sometimes think of myself as a lazy programmer since the thought of having "to go back to" C++ or C# or Go makes me wince - Itâs just too much work and not enough fun! :) Iâd also add that once you adopt Smalltalk end-to-end you gain another significant advantage - no matter the role, your developers can actually support each other right down to the code. This isnât possible with the mish-mash of more âpopularâ languages and technologies. The entire development industry has largely become a sausage factory with jobs so specific in nature that they provide no joy, no diversity, and no clear path for advancement. Cheers, J PS The missing piece of the puzzle for Smalltalk ubiquity is a VM with native UI's on major platforms (MacOS / iOS / Linux / Android / Windows). If we had that, thereâd be no reason / excuse to use any other language :)
Hello, In response to my email below, I received 5 interesting responses. I thank those people for writing-in. Here is my take on what I've understood and why I am still hesitant to go along. My comments on those responses are further below, but, at the moment, let me explain my situation. I am a 46 year-old who has been programming computers since the age of 16. I used to be a highly sought-after programmer till the year 2000, when due to circumstances beyond my control, my life and career got destroyed completely. In fact, I was so highly valued, that in spite of me being from India, I was pursued by Verizon US. I am now confined to my home (mostly) and I have very little to do, in the past 12 years I have not programmed anything beyond a basic prime-number tester and a fibonacci-sequence generator in C. I am getting my life back in order and I need some occupation, though, not necessarily one from which I would demand financial returns. I have been dilly-dallying on a decision, primarily because I am unable to take a call on whether to pursue my love for the low-level (x64 assembler + Forth) or the extremely high-level (work involving reasoning using symbolic inference) using a Smalltalk (either Squeak or Pharo). The above is not meant to elicit sympathy, but has been tacked-in just to give potential advisers an idea about my state. Onward to my take on the responses I received to my first email. As Noury Bouraqadi and Stephane Ducasse mentioned: It's not about what you can do, but it's about how you do it. I'd say, that is the basic problem with all Smalltalk aficionados. The whole environment is such a joy to work with that it is addictive, to the extent that developers forget that it is the "what you can do" which is of utmost importance. Jupiter Jones email provided the most amount of real-world use-cases. Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk. Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk? So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby. Tim Mackinnon is very correct in observing that relative to C# and Swift, Smalltalk (and hence Pharo) is very compact, simple and approachable. Though, I did not understand his statement about conditional logic becoming easier to understand after working especially with Smalltalk. Would he care to elaborate? Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had better acknowledge the fact that most Lispers "look down" upon Smalltalk and do not spare any opportunity to berate its users/developers (this is from personal experience). Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment. Thank you, ~Mayuresh On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via Pharo-users" <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment.
The âmind blownâ comes from a first look at methods in the classes True and False to see how boolean logic is implemented. For many beginners, it seems so foreign that it takes a moment to realise just how simple and clean the implementation is. It opens their mind to new ways of writing code, and gives them a beautiful example of polymorphism. With your prior experience, you may not feel the same awe :)
Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk.
That whole world is kinda in a state of flux right now. But you can check out https://gemtalksystems.com/small-business/gsdevkit/
Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk?
For the most part Seaside pretty much runs identically on all its platforms. But itâs because GemStone is a server smalltalk, and as such doesnât have a native interface beyond a terminal.
So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby.
Exactly.
Hi Mayuresh, Thanks for sharing your background. My advice would be to simply download it and "suck it and see". I've got twenty years on you and have spent my whole career working with computers (punched cards anyone?). I still get a buzz out of programming in Smalltalk. The reason it is such a joy is due to the ultimate simplicity of the grammar of the language. It fits on one page: http://chronos-st.blogspot.com/2007/12/smalltalk-in-one-page.html. And also that it is "Turtles all the way down" ( https://en.wikipedia.org/wiki/Turtles_all_the_way_down). Well mostly, but then there's access to C libraries via the FFI. In other development environments, you're mostly stuck with what you've got. With Smalltalk, you can dig under the hood. For Pharo, this is just as well, as some parts of it are a bit flakey. You mentioned Iceberg. I have had nothing but trouble with it and it's fair to say put me off using Git with Pharo. Other things are an absolute joy - check out Roassal for example. One of the highest quality pieces of code I've come across in my extensive career. Speaking of which, it has come to an end and what am I doing in my retirement? - working on a project that I plan on sending out into the real world! This has its challenges in Pharo, and this is where other platforms excel and are designed for (along with substantial financial backing), but I believe it is doable in Pharo. Hopefully it will be a "real world" use case! All the best with whatever path you choose... Cheers, Stewart On Sun, Jan 15, 2023 at 7:11 PM mayuresh@kathe.in via Pharo-users < pharo-users@lists.pharo.org> wrote:
Hello,
In response to my email below, I received 5 interesting responses. I thank those people for writing-in.
Here is my take on what I've understood and why I am still hesitant to go along. My comments on those responses are further below, but, at the moment, let me explain my situation.
I am a 46 year-old who has been programming computers since the age of 16. I used to be a highly sought-after programmer till the year 2000, when due to circumstances beyond my control, my life and career got destroyed completely. In fact, I was so highly valued, that in spite of me being from India, I was pursued by Verizon US. I am now confined to my home (mostly) and I have very little to do, in the past 12 years I have not programmed anything beyond a basic prime-number tester and a fibonacci-sequence generator in C. I am getting my life back in order and I need some occupation, though, not necessarily one from which I would demand financial returns. I have been dilly-dallying on a decision, primarily because I am unable to take a call on whether to pursue my love for the low-level (x64 assembler + Forth) or the extremely high-level (work involving reasoning using symbolic inference) using a Smalltalk (either Squeak or Pharo).
The above is not meant to elicit sympathy, but has been tacked-in just to give potential advisers an idea about my state.
Onward to my take on the responses I received to my first email.
As Noury Bouraqadi and Stephane Ducasse mentioned: It's not about what you can do, but it's about how you do it. I'd say, that is the basic problem with all Smalltalk aficionados. The whole environment is such a joy to work with that it is addictive, to the extent that developers forget that it is the "what you can do" which is of utmost importance.
Jupiter Jones email provided the most amount of real-world use-cases. Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk. Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk? So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby.
Tim Mackinnon is very correct in observing that relative to C# and Swift, Smalltalk (and hence Pharo) is very compact, simple and approachable. Though, I did not understand his statement about conditional logic becoming easier to understand after working especially with Smalltalk. Would he care to elaborate? Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had better acknowledge the fact that most Lispers "look down" upon Smalltalk and do not spare any opportunity to berate its users/developers (this is from personal experience).
Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment.
Thank you,
~Mayuresh
On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via Pharo-users" <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
Hi Mayuresh, I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general. As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R. As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment. For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself. So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful. Best wishes, Tomaz
^ThumbsUpEmoji new display On Sun, Jan 15, 2023 at 11:30 PM Tomaž Turk <tomazz.turk@gmail.com> wrote:
Hi Mayuresh,
I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general.
As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R.
As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment.
For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself.
So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful.
Best wishes, Tomaz
Hi Mayuresh, To add a little bit to the excellent answers thread, I would emphasize that the important thing is effectively the how and not the what, despite of some languages excelling at some particular contexts (for example JavaScript being part of the de-facto emergent glued together under pressure "standard" for the Web with HTML and CSS being the other two parts of the Manticore) or that, at some point, several of us have listened that all languages being Turing complete are equivalent in such nerdy metric and capable of the same "what", but definitively not of the same how. Even authors like Maxwell in Tracing the Dynabook[1], said that comparing Smalltalk with other computer languages (like Ruby or Python) instead of computer environments misses the point and that a more convenient comparison would be between the Dynabook tradition and the Unix tradition. [1] https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook In the case of Pharo and Smalltalk, I feel them pretty empowering as a way of conceiving computing, where environment, language, tools, apps, conform an explorable/modifiable continuum, instead of all the indirection layers common in the Unix paradigm. This have allow us in the local community to address a set of projects in a pretty different a more agile way to what could be done in languages like Python under Unix (and I tried that combination before confirming my definitive bet for Smalltalk like/inspired metasystems). As a consequence, we have been able to enable grassroots innovation in several topics that fall under the umbrella of civic tech, including: performative writing and (re)publishing, agile data storytelling and visualization, data feminism, civic hacktivism, reproducible research, making "Big Data" approachable, hypertextual resilient community and interpersonal memory and presences, among other topics (see our portfolio at [2]). [2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio Even when Pharo/Smalltalk are not suited for every context, you can combine them with external tools (for example when some functionality is not implemented in Pharo or for performance reasons). We have being doing that with Nim language, Lua, Pandoc with pretty good results. So you can be as agile as you need and rely on external tools when needed. Pharo is not only a innovative place/tech with a welcoming, vibrant and responding community, but also is becoming a good team player with other tech ecosystems and tools. Hope this helps, Offray On 15/01/23 5:30, Tomaž Turk wrote:
Hi Mayuresh,
I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general.
As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R.
As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment.
For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself.
So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful.
Best wishes, Tomaz
Hi Offray, Very kind of you to have shared links to the document: "Tracing the Dynabook". That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages. But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell. In the opening sentences of his abstract, he errs by stating that: The origins of the personal computer are found in an educational vision. Desktop computing and multimedia were not first conceived as tools for office workers or media professionalsâ they were prototyped as âpersonal dynamic mediaâ for children. Both of John Maxwell's statements above are "completely" brain-dead. To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968. Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs. Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC. If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI. Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day. I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis. Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo. Best regards, ~Mayuresh On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi Mayuresh,
To add a little bit to the excellent answers thread, I would emphasize that the important thing is effectively the how and not the what, despite of some languages excelling at some particular contexts (for example JavaScript being part of the de-facto emergent glued together under pressure "standard"Â for the Web with HTML and CSS being the other two parts of the Manticore) or that, at some point, several of us have listened that all languages being Turing complete are equivalent in such nerdy metric and capable of the same "what", but definitively not of the same how. Even authors like Maxwell in Tracing the Dynabook[1], said that comparing Smalltalk with other computer languages (like Ruby or Python) instead of computer environments misses the point and that a more convenient comparison would be between the Dynabook tradition and the Unix tradition.
[1] https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook
In the case of Pharo and Smalltalk, I feel them pretty empowering as a way of conceiving computing, where environment, language, tools, apps, conform an explorable/modifiable continuum, instead of all the indirection layers common in the Unix paradigm. This have allow us in the local community to address a set of projects in a pretty different a more agile way to what could be done in languages like Python under Unix (and I tried that combination before confirming my definitive bet for Smalltalk like/inspired metasystems). As a consequence, we have been able to enable grassroots innovation in several topics that fall under the umbrella of civic tech, including: performative writing and (re)publishing, agile data storytelling and visualization, data feminism, civic hacktivism, reproducible research, making "Big Data" approachable, hypertextual resilient community and interpersonal memory and presences, among other topics (see our portfolio at [2]).
[2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio
Even when Pharo/Smalltalk are not suited for every context, you can combine them with external tools (for example when some functionality is not implemented in Pharo or for performance reasons). We have being doing that with Nim language, Lua, Pandoc with pretty good results. So you can be as agile as you need and rely on external tools when needed. Pharo is not only a innovative place/tech with a welcoming, vibrant and responding community, but also is becoming a good team player with other tech ecosystems and tools.
Hope this helps,
Offray
On 15/01/23 5:30, Tomaž Turk wrote:
Hi Mayuresh,
I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general.
As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R.
As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment.
For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself.
So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful.
Best wishes, Tomaz
Hi Mayuresh, I think that putting all the weight of a PhD the thesis in a particular phrase of the abstract, without looking the authors perspective about why he puts a particular origin on that place, it's not a good reading practice. So I'm glad that you will give the deep reading that this particular deep research deserves, particularly in a world where almost all introductions to computing environments are from the technical perspective (performance, applications etc), so Maxwell's work is refreshing and needed. Cheers, Offray On 17/01/23 1:23, mayuresh@kathe.in via Pharo-users wrote:
Hi Offray,
Very kind of you to have shared links to the document: "Tracing the Dynabook". That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages. But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell. In the opening sentences of his abstract, he errs by stating that: The origins of the personal computer are found in an educational vision. Desktop computing and multimedia were not first conceived as tools for office workers or media professionalsâ they were prototyped as âpersonal dynamic mediaâ for children.
Both of John Maxwell's statements above are "completely" brain-dead. To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968. Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs. Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC. If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI. Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day.
I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis.
Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo.
Best regards,
~Mayuresh
On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi Mayuresh,
To add a little bit to the excellent answers thread, I would emphasize that the important thing is effectively the how and not the what, despite of some languages excelling at some particular contexts (for example JavaScript being part of the de-facto emergent glued together under pressure "standard"Â for the Web with HTML and CSS being the other two parts of the Manticore) or that, at some point, several of us have listened that all languages being Turing complete are equivalent in such nerdy metric and capable of the same "what", but definitively not of the same how. Even authors like Maxwell in Tracing the Dynabook[1], said that comparing Smalltalk with other computer languages (like Ruby or Python) instead of computer environments misses the point and that a more convenient comparison would be between the Dynabook tradition and the Unix tradition.
[1] https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook
In the case of Pharo and Smalltalk, I feel them pretty empowering as a way of conceiving computing, where environment, language, tools, apps, conform an explorable/modifiable continuum, instead of all the indirection layers common in the Unix paradigm. This have allow us in the local community to address a set of projects in a pretty different a more agile way to what could be done in languages like Python under Unix (and I tried that combination before confirming my definitive bet for Smalltalk like/inspired metasystems). As a consequence, we have been able to enable grassroots innovation in several topics that fall under the umbrella of civic tech, including: performative writing and (re)publishing, agile data storytelling and visualization, data feminism, civic hacktivism, reproducible research, making "Big Data" approachable, hypertextual resilient community and interpersonal memory and presences, among other topics (see our portfolio at [2]).
[2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio
Even when Pharo/Smalltalk are not suited for every context, you can combine them with external tools (for example when some functionality is not implemented in Pharo or for performance reasons). We have being doing that with Nim language, Lua, Pandoc with pretty good results. So you can be as agile as you need and rely on external tools when needed. Pharo is not only a innovative place/tech with a welcoming, vibrant and responding community, but also is becoming a good team player with other tech ecosystems and tools.
Hope this helps,
Offray
On 15/01/23 5:30, Tomaž Turk wrote:
Hi Mayuresh,
I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general.
As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R.
As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment.
For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself.
So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful.
Best wishes, Tomaz
Much sympathy for your life situation. Most of the Smalltalk code I personally develop is developed using a classic text editor, is batch compiled, and runs headless. Smalltalk is *STILL* an amazing language without the "addictive" IDE. (In fact the more "conventional" Smalltalk systems I use have sufficiently different IDEs that I experience considerable friction using the IDE.) I'm on the fringes of the High Performance Computing world. This is quite dramatically different from most programming, and in some interesting ways. The dominant languages are Fortran, C, and C++ with extensions such as OpenMP and OpenACC and of course "transport" layers like MPI. These languages have *serious* optimising compilers working hard to get the best out of vectorised instructions, GPUs, even FPGAs, and clusters. There are also dialects like SYCL and Cilk. As an example of the kind of application, consider the COVID epidemiological model developed by Neil Ferguson's team in the UK, which was very influential in setting UK government policy (lockdowns). This is about 10 000 SLOC of C++ with much use of OpenMP for parallelism. This isn't "bet your business" software; this is "bet your whole ECONOMY" software. It is, in the 1970s sense, "structured". It is, in the peculiarly C++ sense, "object oriented". And it is very hard for me to figure out what is going on (despite having tracked C++ since cfront days). What does this have to do with Smalltalk? First, Smalltalk is not an HPC language. If you want to develop computationally demanding code, you might prototype it in Smalltalk, but you are not going to deploy. Second, that doesn't necessarily preclude the use of Smalltalk in HPC environments. People seriously use Python (despite Python's single-thread slowness), Matlab, and R for HPC problems. What they do is wrap Fortran/C/C++ data structures and call Fortran/C/C++ code to manipulate them, basically using Python or Matlab or whatever to direct the low level code. Third, just imagine the fun of debugging code like this. You don't really want to write Fortran (even Fortran'08) or C++ (even C++17) by hand; it's ok as "portable parallel assembler". Fourth, in order to configure and customise software like this, you really want a decent interactive modelling language. (For example, the CovidSim program uses data loaded *once* from WorldPop. I haven't yet found anything in the distribution to update this.) Fifth, there's the whole "Embedded Domain-Specific Language" thing. There has been some impressive work done on generating low level code inside functinoal programming languages. Thus I hypothesise that there is room for Smalltalk as a tool for *generating* and configuring HPC code. My main worry is that when it comes to "bet your whole economy" software and worse still, "bet the entire global economy and human happiness for centuries" software like climate models, it's appropriate to use the very highest quality assurance tools practical, including *serious* verification. That's not common practice. CovidSim has 'assert' statements in just two files. Generation via Smalltalk wouldn't be *worse*. But could it be *better* ? What is the state of the art in verification tools - written in Smalltalk? - available (via FFI or otherwise) *through* Smalltalk? - available in any form *for* Smalltalk? (I should probably be looking at MOOSE but am too stupid to know how to start.) On Sun, 15 Jan 2023 at 19:11, mayuresh@kathe.in via Pharo-users < pharo-users@lists.pharo.org> wrote:
Hello,
In response to my email below, I received 5 interesting responses. I thank those people for writing-in.
Here is my take on what I've understood and why I am still hesitant to go along. My comments on those responses are further below, but, at the moment, let me explain my situation.
I am a 46 year-old who has been programming computers since the age of 16. I used to be a highly sought-after programmer till the year 2000, when due to circumstances beyond my control, my life and career got destroyed completely. In fact, I was so highly valued, that in spite of me being from India, I was pursued by Verizon US. I am now confined to my home (mostly) and I have very little to do, in the past 12 years I have not programmed anything beyond a basic prime-number tester and a fibonacci-sequence generator in C. I am getting my life back in order and I need some occupation, though, not necessarily one from which I would demand financial returns. I have been dilly-dallying on a decision, primarily because I am unable to take a call on whether to pursue my love for the low-level (x64 assembler + Forth) or the extremely high-level (work involving reasoning using symbolic inference) using a Smalltalk (either Squeak or Pharo).
The above is not meant to elicit sympathy, but has been tacked-in just to give potential advisers an idea about my state.
Onward to my take on the responses I received to my first email.
As Noury Bouraqadi and Stephane Ducasse mentioned: It's not about what you can do, but it's about how you do it. I'd say, that is the basic problem with all Smalltalk aficionados. The whole environment is such a joy to work with that it is addictive, to the extent that developers forget that it is the "what you can do" which is of utmost importance.
Jupiter Jones email provided the most amount of real-world use-cases. Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk. Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk? So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby.
Tim Mackinnon is very correct in observing that relative to C# and Swift, Smalltalk (and hence Pharo) is very compact, simple and approachable. Though, I did not understand his statement about conditional logic becoming easier to understand after working especially with Smalltalk. Would he care to elaborate? Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had better acknowledge the fact that most Lispers "look down" upon Smalltalk and do not spare any opportunity to berate its users/developers (this is from personal experience).
Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment.
Thank you,
~Mayuresh
On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via Pharo-users" <pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
"Richard O'Keefe" <raoknz@gmail.com> writes:
Thus I hypothesise that there is room for Smalltalk as a tool for *generating* and configuring HPC code.
Yes. But it will be hard to convince people that Smalltalk is a better choice than Python (well established in HPC as you say) for this use case.
My main worry is that when it comes to "bet your whole economy" software and worse still, "bet the entire global economy and human happiness for centuries" software like climate models, it's appropriate to use the very highest quality assurance tools practical, including *serious* verification. That's not common practice.
Indeed, and that's one of my main worries in computational science as well. There is a culture of scientific validation, but not of technical verification of artifacts such as code. My own project in this space (implemented in Pharo) aims at supporting *human* verification for the aspects that no automatic tool can possibly verify. In technical terms, that's verifying the formal specification rather than the implementation of some method. The first step, which I have made good progress on, is a specification language for scientific models and methods that human readers would be happy to proofread. Details: https://github.com/khinsen/leibniz-pharo/ https://science-in-the-digital-era.khinsen.net/#Leibniz Konrad
To Konrad Hinsen: you HERO. On Thu, 26 Jan 2023 at 02:40, Konrad Hinsen <konrad.hinsen@fastmail.net> wrote:
"Richard O'Keefe" <raoknz@gmail.com> writes:
Thus I hypothesise that there is room for Smalltalk as a tool for *generating* and configuring HPC code.
Yes. But it will be hard to convince people that Smalltalk is a better choice than Python (well established in HPC as you say) for this use case.
My main worry is that when it comes to "bet your whole economy" software and worse still, "bet the entire global economy and human happiness for centuries" software like climate models, it's appropriate to use the very highest quality assurance tools practical, including *serious* verification. That's not common practice.
Indeed, and that's one of my main worries in computational science as well. There is a culture of scientific validation, but not of technical verification of artifacts such as code.
My own project in this space (implemented in Pharo) aims at supporting *human* verification for the aspects that no automatic tool can possibly verify. In technical terms, that's verifying the formal specification rather than the implementation of some method. The first step, which I have made good progress on, is a specification language for scientific models and methods that human readers would be happy to proofread. Details:
https://github.com/khinsen/leibniz-pharo/ https://science-in-the-digital-era.khinsen.net/#Leibniz
Konrad
Back when I was a University lecturer, I sometimes amused myself by rewriting student (or other staff!) Java code in Smalltalk. I generally got about a factor of 6 smaller. Of course, that was before Java 8, which copied blocks and higher-order collection methods from Smalltalk. On Sat, 14 Jan 2023 at 21:01, mayuresh@kathe.in via Pharo-users < pharo-users@lists.pharo.org> wrote:
Hello,
This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.
What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.
But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh
participants (9)
-
Jupiter Jones -
Konrad Hinsen -
mayuresh@kathe.in -
Noury Bouraqadi -
Offray Vladimir Luna Cárdenas -
Richard O'Keefe -
Stewart MacLean -
Tim Mackinnon -
Tomaž Turk