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, mayur...@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, "mayur...@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
>

Reply via email to