You are a stupid programmer, you can't have that
Brian Tiffin
btiffin at gnu.org
Tue Aug 10 10:59:58 UTC 2021
On Tuesday, 10 August 2021 at 06:23:39 UTC, Paulo Pinto wrote:
> On Monday, 9 August 2021 at 23:09:30 UTC, H. S. Teoh wrote:
> ...
> I love how people love to hate Java, yet have no words of hate
> against OOP in Smalltalk, SELF, Eiffel, Sather, C#, VB, Python
> (check methods from typeof(func)), Dart.
>
> How has D's multiparadigm helped to have a better marketshare
> than some of those extremist OOP languages?
I may have started some of the jump on Java trend with the bumper
car comment.
*This may get long, as there are historical evolutions to cover,
an old guy in the mood to ramble, and maybe pass on some
learnin's, save a few younglings from some choice of programming
tool angst.*
I'm not going to speak for others, Paulo, but I find Java to be
fun, not hated, more smirky amusing.
*Now rambling to the room.* Being a fellow Canuck, I've followed
the works of James Gosling with some interest, for a lot of years
now. Back when it was Oak, and the smart agent in Oak was Duke,
and Duke is still a very cool mascot.
*Be sure to check out sc, the spreadsheet calculator, a TUI
interface console spreadsheet with vi like key bindings.
Something James also wrote, way back when as public domain code.*
And some *personal* reasons behind the smirking at Java.
When Java was first being hyped (and it was hyped, something like
$500 million was allocated to advertising by Sun), I was
programming in Forth on a Vax for a phone company. PCs were toys
and core business adjacent, not core business tools, in my mind
at the time.
The web was a distraction, for science and amusement, viewed as
business adjacent, not core. *At the time*. Could see the
potential of Mosaic and the WWW, but would not have recommended
it to a manager as a smart move for critical work. It was for
the marketing department, not a competitor to telephony. The web
did not seem like bigboy pants internet technology at the time,
not like the more serious uses like Gopher, Telnet and FTP. :-)
Attitude on the web changed fairly quickly, but Java still seemed
like a toy. Real programmers wrote to machine code, not a play
area sandbox. But, $500 million in advertising budget caught the
eye of many a leader, and it was fun.
Our Forth system was set to be superseded by an amalgam overlord
system in C++, consolidating some 20 or 30 other large systems.
Watched in predicted horror as three years of 300 people's time
was wasted on project management and Grady Booch cloud diagram
planning. 300 people. 3 years. The writing was on the wall
when **zero** user level demo screens were available years after
starting. *C++ isn't going to work, this needs to be in Java,
was the next recommendation.*
I think the Forth project we worked on (for many more years after
the story from above) was finally retired a few years ago after
being outsourced to a Vaxen emulator in Bangalore a decade ago.
The amalgam is still in a continuing cycle of development startup
followed by cancel and fail, last I heard. 25ish years later.
Yet, unless given the runway we initially enjoyed with the Forth
system, I would not recommend Forth for large scale systems. You
need time to build an application vocabulary when using Forth in
the large, and there is little chance for cost recovery during
that phase. Given lead time, absolutely, but that'd be a rare
management decision in the 3rd millennium.
C++ rose to fame, in part, due to human pride. A sense of "I
figured it out, ar'mant I smart". That's a powerful draw. For
many, C++ is very smart. Smarter than some of us prideful
programmers though.
Java did not rise to fame on merit (it might have, more slowly).
It rose to fame on aggressive marketing and expensive hype.
Since the lock in had started, many companies have poured
billions into JVM technology, to ensure its success at making
reasonably fast bumper cars run in a sandbox.
That's all ok, but I was young when it was just starting, and it
smelled like a toy then. It still kinda smells like a toy,
because of that initial bias.
Useful for business adjacent pretty reporting and such. Haven't
been paid to work in Java since 1998-ish, but have followed it
along the way, 1.2 was just coming out, with the whole J2EE thing
(or J2SE, or JDK, can't quite remember the marketing speak
without looking it up). I'm not sure, but I'd wager some of that
Java 1.2 is still in the marketing application we wrote, if the
company still exists.
Still enjoy exploring OpenJDK 11 now, and have an intrinsic
FUNCTION JVM built into a version of GnuCOBOL, which should
eventually be solid enough for us to advertise GnuCOBOL as ready
to run any enterprise Java classes in an engine embedded in COBOL
via JNI. *At its core, JDK Java is written in C and GnuCOBOL
compiles via C.*
I'm still that kind of biased internally, COBOL for core
business, Java for some fluffy bits and pretty pictures. Also
realize that the amount of .class code in the world is immense.
Why not leverage it to help an enterprise pursue its goals, while
counting all the beans in COBOL, integrated tightly?
My bias to OOP is similar. Watched too many large scale failures
come and go with C++ and Java rip and replace projects. But when
determined and with deep enough pockets most failures can be
silently buried, small successes over hyped until it all becomes
legacy code anyway, ready to be replaced by Go, Ruby, Rust, Zig,
or whatever is the lang hype du jour at the time.
Except for the life expectancy of source code thing, I'd happily
hype D to any management at any large company. But at 6ish years
of life expectancy before being forced to manually update a
codebase, it'd be a hard sell for large systems. Will recommend
D for business adjacent short span productivity applications from
now on though.
How many sites still run Python 2 because the code borks in
Python 3? How many sites will be on Java 8 until 2038 or beyond?
The borks might be extremely trivial to a programmer, parens
around arguments to `print` for instance, but when a non-tech
boss sees the first
`SyntaxError: Missing parentheses in call to 'print'. Did you
mean print(name)?`
they may just stick with Python 2 and get on with running their
business. They paid for that code already. 10 years is nothing
in that kind of time frame. They will wait until the pain of
stagnation (or being mocked as archaic legacy) exceeds a
threshold. Then they will pour money at the tech team, often
times just to save face, and in a sour mood. There will always
be another consultant ready to hype a tech, and promise a short
cut to the promised land.
Slow, long tail growth is the best kind of growth, in my old guy
opinion.
D is making sound decisions in the now it seems, growing slowly,
which is sound in the long term. Now to convince the D dev team
that we, the stupid programmers, leave behind code that may not
age well if even a small language detail changes. Cover that
base and businesses will follow.
To keep a little bit more *in thread*, some of the decisions may
be guard rail protect the programmer from the programmer
decisions. Those aren't all bad.
COBOL isn't active at 60 because it's great tech in the internet
era, it's still active, with a huge market share, because it grew
that big with a never shrinking codebase, that still compiles.
Pennies are still pennies, core banking is still the same
banking. If I'm not mistaken, the oldest still running codebase
is a contract management system, MOCAS, for the U.S. department
of defense. 60+ years old, mostly COBOL. There are billions on
the line for the first team that can answer a still open call to
convince DoD that a replacement won't drop any features or muck
up any contracts in play at time of transition. Some have tried,
all failed to convince the brass, so far. More famous, but still
old is the SABRE airline reservation system, in COBOL/CICS. There
are programs running in the IRS supporting the Individual Master
File and Master Banking File projects still using (probably,
these are not overly public source codes) COBOL sources written
in 1962, recompiled for each new mainframe iteration.
Java 8 is set to ~~enjoy~~ suffer a similar fate. As is Python
2, Perl 5, ... (whether the Python/Perl/... core contributors
like it or not). Ruby, maybe not, but maybe. If you can
convince a company to pay for some code, they are not going to
want to pay for the same code again, even decades later.
Ranting almost over. D design decisions seem like very sane long
view decisions. But source codes need a longer life expectancy,
or D may end up relegated to short and mid range development
planning, ad infinitum. That's ok, if that is the end goal or an
acceptable fate.
D does not feel like a design effort with stupid in mind. The
guard rails and preferred paths in D seem well planned and well
placed. *Still new to D, could be completely wrong in the
depths*. Protecting from tricks some people may feel comfortable
with but keeping simple mistakes from being catastrophic, painful
to find and fix or costly to maintain, is not limiting, in my
opinion, at least not in a bad way. That goes for D or any other
programming language tool chain.
Have good, make well, excuse the long read and slow drift.
More information about the Digitalmars-d
mailing list