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