One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, 
basically, a Smalltalk dialect, as is obvious from the screenshot.  However for 
MacOS and iOS, it allows you to bypass the static Objective-C API interface and 
debug / modify or even write applications directly in the system.  To do that 
you ‘inject’ F-Script into the OS.  The ability to so has a specific 
implication, though.  MacOS and iOS are themselves written in and as a dialect 
of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able 
to do things that are impossible in Objective-C, and it wouldn’t need to be 
‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s 
useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as 
well.

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, 
injected into the system dynamically, and modified / debugged dynamically using 
the Pharo tools.  The result, at least as far as iOS is concerned, may make 
Pharo actually the most powerful way to program it, well beyond XCode alone, 
along with doing the same for MacOS.  Android is another issue, although the 
Raspbian port of Pharo should be relatively easy to port to it. For me, unless 
someone had a use case, I don’t have one myself for Android.  I’ve tried nearly 
every version, because I’d love to support an OSS ecosystem, unfortunately 
using it compared to the iPhone is still like driving a Fiero based kit car 
compared to an actual Ferrari.

As far as JNI, while I see your point, JNI is such a PITA that few Java 
developers know it.  My usual workaround is to use Stamp and Synapse, which has 
the further advantage of allowing Java to ‘throttle’ data that the JVM can’t 
deal with at full speed.

As far as dealing with other JVM languages, PetitParser or SmaCC can generate 
bytecode rather than Java or other JVM code, and that allows libs to be written 
that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, 
but a possible one without having to support umpteen environments.  Another 
potential way of accomplishing that is to use NetRexx, a declarative JVM 
language, which is both easy and terse, and like SQL, generates the actual 
bytecode rather than precompiling to it.  For instance, imagine the code needed 
for a simple ‘hello world’ in Java, then compare:

Say ‘hello world’

Since it generates virtually the same bytecode, it may be an easy way to do it.

With the last statement, that expresses really well the exact reason I no 
longer want to work in most other environments 😊.

Tc
Andrew



Sent from Mail for Windows 10

From: p...@highoctane.be
Sent: Thursday, October 26, 2017 2:19 AM
To: Any question about pharo is welcome
Subject: Re: [Pharo-users] Smalltalk Argument

I like that piece a lot, seeing exactly the described situation in large 
enterprises.

I made a strategic decision to go with Pharo for the long run for my solutions 
because it is a stable base on which to build (ok, there are evolutions, but 
fundamentally, I can rely on it being under control and can maintain solutions 
in a version).

The rationale is that at a deep level I am really fed up with having to deal 
with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven 
stuff) that makes the dev focus 80% technology drag and 20% net business 
contribution.

One key thing is that a team needs guidance and Smalltalk makes it easier due 
to well known ways of doing things.

Now we miss the boat on mobile and bigdata, but this is solvable. 

If we had an open Java bridge (and some people in the community have it for 
Pharo but do not open source it - so this is eminently doable) + Pharo as an 
embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have 
a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where 
fast starting VMs and small footprint would make the cluster capacity x2 or x3 
vs uberjars all over the place)  this would be a real disruption.

Think about being able to call Pharo from JNA 
https://github.com/java-native-access/jna the same way we use C with UFFI.

Smalltalk argument for me is that it makes development bearable (even fun and 
enjoyable would I say) vs the other stacks. That matters.

Phil








On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <aglyn...@gmail.com> wrote:
There’s other questions that are relevant to me:
 
Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in 
any way I can avoid it.
 
Do I give a f*** about mobile apps?  No, the screen’s too small to read 
anything longer than a twit, or anyone with anything worthwhile to say.
 
Do I give a f*** about the number of libraries in other languages?  No, because 
most of them are crap in every language I’ve had to work in, and the base 
languages are crap so they have to keep changing radically, and libraries and 
frameworks therefore also have to and never get any better. The few that are 
worthwhile I can almost always use from Smalltalk without a problem (read, 
Blender, ACT-R and Synapse, since every other library/framework I’ve used 
outside Smalltalk has been a waste of time).  
 
Do I give a f*** about implementing a complex piece of machine learning 
software in 22 hours, compared to 3 months for the Java version?  Well, 
actually yes, I do, because that was 3 months of my life down the toilet for 
something that is too slow to be useful in Java.
 
Any argument depends on your priorities. I’ve written tons of web apps, because 
I needed to get paid.  I’ve written better shitty mobile apps than the average 
shitty mobile apps.  However, I’m not going to do any of that any longer in 
crap that never improves, because after 26 years the irritability it produces 
is more than it’s worth.  
 
A few weeks ago, a recruiter that specializes in Smalltalk called me about a 
job, although they were well aware I live 1500 miles away from the city I lived 
in when I had worked through them, to see if I’d be willing to move back there 
for a job.  That sounds like another ‘there aren’t enough Smalltalk 
developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was 
writing Java.
 
The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, 
because “people who grew up with Java don’t know how to write code”.  I don’t 
agree with that, I’ve known a (very few) good Java developers.  I would say, 
though, that I’ve known far more incompetent ones than good ones, and I can’t 
think of any incompetent Smalltalk developers off the top of my head.  
 
Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, 
complain about how hard maintaining state is or coming up with various hacks to 
avoid it, which seems to be the main point of every JavaScript based 
‘technology’.  An application is by definition a state-machine, which implies 
plenty about JS developers on the whole.
 
If you’re a good developer you can write good code in (nearly) anything.  My 
question then is why would you want to write in crap?  The better question is 
why aren’t there more good developers in any language?
 
Every project I have been able to do in Smalltalk, though, has had one thing in 
common, the “shit has to work”.  Companies do use it, in fact I could name 4 
large enterprises I’ve worked for who’ve written their own dialects, and they 
all use it only when “shit has to work”.  They know it’s more productive, they 
also know using it for more things would increase the availability of Smalltalk 
developers.  
 
Why do they not do it?  One reason, though it takes a while to recognize it, 
because management doesn’t admit even to themselves why they do it, or not very 
often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an 
advantage to large enterprises because they have resources smaller competitors 
don’t.  
 
Why don’t their competitors do it?  Because they can’t see past an hourly rate, 
what’s fashionable, or just new, or because their customers can’t.  Put more 
generally, average stupidity that isn’t corrected by the market.  Fashion 
affects smaller companies more than larger ones, because they can’t afford a 
few customers walking away because they wanted an app in Electron, even if they 
can’t give any relevant reason for wanting it, and even the samples on the 
Electron site don’t work.  
 
Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s 
to their advantage to promote things that are inefficient, buggy and unreliable.
 
Cost is relevant, but not in the simple way people look at things.  A crucial 
but rarely mentioned perspective on its relevance is that while Java based 
software runs TV set top boxes, Smalltalk based software runs things like 
medical equipment, automated defense systems, tanks, etc.  Cost becomes largely 
irrelevant when ‘shit has to work’.  
 
Productivity is primarily relevant to less talented developers, in an inversely 
sense, since unproductive environments and attitudes have a leveling tendency 
in general, and more specifically make accomplishing what the less talented are 
capable of in any environment sufficiently laborious for them to have a role.  
Capability in Smalltalk, as implied by the person hiring for the Java role I 
mentioned, is a fairly decent means of judging whether someone is a so-so 
developer or a good one.
 
The productivity argument is realistically only relevant in the context of an 
already higher hourly cost.  Given that it is relevant at that point, companies 
that know Smalltalk is more productive would use it outside things that have to 
be 100%, if their own productivity were relevant to the same degree that 
competitors’ productivity is inversely relevant.
 
All these ways of looking at it are contingent perspectives though.  Yes, if 
the number of libraries is relevant to you, Smalltalk is less attractive, but 
that’s only a contingent phenomenon based on the relative popularity of Java 
and JavaScript, as a result it can’t be used as explanatory for that 
popularity.  All the ways of looking at it that are fully determinate are 
determinate via contingencies of that kind, which for the most part are 
precisely the other perspectives, including productivity, cost, availability of 
developers, etc.  None of them is in itself anything but a result of the 
others.  
 
If availability of developers is contingent on popularity (and further, 
popularity contingent on industry attitudes), to use an example already 
mentioned in Joachim’s post, then his simultaneous posit of library 
availability is if anything more contingent on the same popularity, so positing 
it as a cause and not a result, or merely a correlate, of popularity is 
incoherent.  We can go one step further, and demonstrate that even when large 
enterprises make something that works reliably available, they fail to promote 
and support it, which destroys the market for reliable tooling by 
simultaneously owning it while not promoting it, something IBM is particularly 
good at.  But IBM can’t (and if they can’t, neither can any other company) 
operate that way without the tacit agreement of the industry.  
 
To understand it in a more general way, software development has to be looked 
at in the context where it occurs, and how it’s determined to a large degree by 
that context, with a specific difference.  That difference is itself implicit 
in the context, i.e. capitalism, but only purely effective in software 
development. It’s a result of virtualization as an implicit goal of capitalism, 
and the disruptions implicit in the virtual but so far only realized completely 
in software.  In terms of that understanding, the analysis of virtualization 
and disruption as inherent to capitalism is better accomplished in Kapital than 
in any more recent work.
 
Or you can simply decide, as I’ve done recently, that working in ways and with 
tools that prevent doing good work in a reasonable timeframe isn’t worthwhile 
to you, no matter how popular those ways and tools might be, or what the 
posited reasons are, since at the end popularity is only insofar as it already 
is.  What those tools and methods are depends to a degree on your priorities, 
but if developers are engineers those priorities can’t be completely arbitrary. 
 Engineers are defined by their ability to make things work.
 
Software as virtual is inherently disruptive, and the software industry 
disrupts itself too often and too easily to build on anything. A further 
disruption caused by developers, as engineers, refusing to work with crap that 
doesn’t, i.e. insisting on being engineers, while in itself merely an 
aggravation of the disruptive tendencies, might have an inverse result.
 
Using a stable core of technologies as the basis for a more volatile set of 
products, in the way nearly every other industry does, is the best means we 
know of to build things both flexibly and reasonably efficiently.  The computer 
hardware industry is the extreme example of this, while the software industry 
is the extreme contradiction.
 
From: Pharo-users <pharo-users-boun...@lists.pharo.org> on behalf of David 
Mason <dma...@ryerson.ca>
Reply-To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Subject: Re: [Pharo-users] Smalltalk Argument
 
PharoJS is working to give you that mobile app/browser app experience.  As with 
others, we're not there yet, but getting there.  See http://pharojs.org
 
The 67% loved means that 67% of people using Smalltalk (or perhaps have ever 
used it) want to continue - so it's presumably a high percentage of a smallish 
number of people.
 
On 20 October 2017 at 03:23, jtuc...@objektfabrik.de <jtuc...@objektfabrik.de> 
wrote:
First of all: I'd say the question itself is not a question but an excuse. I am 
not arguing there are enough Smalltalkers or cheap ones. But I think the 
question is just a way of saying "we don't want to do it for reasons that we 
ourselves cannot really express". If you are a good developer, learning 
Smalltalk is easy. If you are a good developer you've heard the sentence "we've 
taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you 
most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of 
companies to get people trained in a technology. If Smalltalk was cool and 
great in their opinion, they wouldn't care. It's that simple. As a consultant, 
I've heard that argument so often. Not ferom Startups, but from insurance 
companies, Banks or Car manufacturers who spend millions on useless, endless 
meetings and stuff instead of just hiring somebody to teach a couple of 
developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is 
not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that 
are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to 
other languages?

I know, all that live debugging stuff and such is great and it is much faster 
to find & fix a bug in Smalltalk than in any other environment I've used so 
far. But that is really only true for business code. When I need to connect to 
things or want to build a modern GUI or a web application with a great 
look&feel, I am nowhere near productive, because I simply have to build my own 
stuff or learn how to use other external resources. If I want to build 
something for a mobile device, I will only hear that somebody somewhere has 
done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as 
we like to make ourselves believe, this problem would be non-existent. If 
somebody took out their iPad and told an audience: "We did this in Smalltalk in 
40% of the time it would have taken in Swift", and if that something was a 
must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS 
product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and 
- as you - am convince that many parts of what we've done so far would've taken 
much longer or even be impossible in other languages. But the advantage was 
eaten by our extremely steep learning curve for web technologies and for 
building something that works almost as well as tools like Angular or jQuery 
Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's 
flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. 
But until then, I'd say these arguments about productivity are just us trying 
to make ourselves believe we're still the top of the food chain. We've done 
that for almost thirty years now and still aren't ready to stop it. But we've 
been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language 
using an argument like the number or ready-made developers. That is just an 
argument they know you can't win. The real question is and should be: what is 
the benefit of using Smalltalk. Our productivity argument is a lie as soon as 
we have to build something that uses or runs on technology that has been 
invented after 1990.


Okay, shoot ;-)

Joachim


-- 
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:jtuc...@objektfabrik.de
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 


Reply via email to