Post by m***@gmail.comUnfortunately as desktop operating system linux is pretty
dead. Android has completely taken over. If you did a market share
comparison of all linux variants, Android must be over 95%. There is
just no way the fragmented linux variants could continue to be viable,
it was inevitable that someone would take linux, graft on a 2d/3d high
frame-rate GPU enabled graphics pipeline on top of it, create an app
store with millions of applications which run beautifully. That entity
was Google, and they basically took over linux and rebranded it
Android.
That's eery how you are precisely right and completely wrong at the same
time :-)
You're right, Android has probably the most users, of all the linux
kernels deployed in the world.
You're wrong, linux is not an operating system, it's a kernel, and what
you would call the linux operating system is actually the GNU operating
system.
It is precisely very telling, how few GNU software is distributed with
Android systems (none to my knowledge, given that GNU software is
generally distributed under the GPL, and given the user freedom
restrictions the Android system imposes onto users (they have to hack
their hand computers to gain (root) access to it!)).
http://www.gnu.org/philosophy/android-and-users-freedom.en.html
Considering it from the point of view of Modula-2, the Android system is
not even really a system running on linux, since to really run an
application on Android, you need to compile it to the dalvik VM.
Do you have a Modula-2 compiler able to generate dalvik code?
Until you write one, you are bared from Android development (again, a
privation of freedom, one would say).
All you can do is, indeed, to target the native hardware and the device
driver wrapper called the linux kernel. But while this will give a
program running on your hand computer, this doesn't give an Android
application.
Compare this with the situation on a GNU system, where you can write in
Modula-2 or any other programming language, all kind of programs and
full desktop applications.
Post by m***@gmail.comLinux desktop is completely pointless, which is why my
recommendation for Adobe AIR stands, because it is one of the few
frameworks that gives you GPU access on both Android and IOS which
together constitute most of the computers on the planet. Do you
realize that something like 500 million smartphones were sold last
quarter alone? And that more iPads exist than desktop macintosh
computers? Linux desktop at this point is like sticking with the
Amiga, or lovingly referring to your TRS-80. An antique.
Apple definitely doesn't think like you.
Google, it's more dubious, and Microsoft I don't really know anything
about it.
But you definitely need a desktop or laptop computer to write iOS
applications. While there are IDEs to develop Android applications on
Android, they're not Google projects, and it's much easier to do so on a
desktop or laptop computer with more complete IDEs provided and
supported by Google. And I would guess that Microsoft provides
similarly good development environment only on its desktop/laptop OSes
for its handheld computer OSes (even if they're called the same, just
guess, sorry I don't know anything about Microsoft, one cannot know
everything).
Perhaps you have a view too restrictive considering user interfaces and
form factors. After all, the linux kernel runs on every computer, from
embedded devices to supercomputers, passing thru handheld, laptop and
desktop computers. You can write programs that can run everywhere. The
difference is the user interface. Some programs have none, some use a
"terminal", some some graphic output with various input devices, and you
can indeed choose amongst a number of frameworks to manage those various
user interface modes.
Write a good oral user interface (both input and output), and you will
displace Google and Apple and their lamentable attempts at it, and
foremost, distract users from their screens and free their fingers! (But
probably a little AI will be required to make it).
But the point, is that for some usages, the desktop form factor,
ie. physical user interface, ie. large screen and physical keyboard, is
the best (most productive, efficient, flowing) user interface there is.
And therefore there is definitely a place for GNU/Linux desktop
applications. Also it's on the desktop you can hook a variety of other
user interface devices. While a few of them are integrated into
handheld computers (eye trackers, 3d finger detection), you can more
easily hook and use new devices on desktops; after all you usually only
have two hands, and your backpack is already full.
You cannot say that the cooking batterie is a pointless antique, and
that all you need is a microwave to reheat your industrial frozen pizza
or a mixer to prepare your Soylent. The cooking batterie is an
important and featureful tool for the professional cook. Of course, the
microwave oven is much more popular, found in every house and office.
Nonetheless if you want to cook a real edible meal, a profesionnal cook
will prefer to work at a cooking batterie (even if, gun on the head, you
could make him something not too bad with a mixer and microwave).
Therefore the desktop/laptop computers will remain (at least until we
get eye-projected display and either a good mind reading device or a
brain connection that would allow you to believe you're typing on a real
physical keyboard when you're actually not moving at all (or perhaps
have just switched over the control of your body to your body trainer).
But until you can think of your programs and see them translated and
projected on your eyes, the desktop/laptop physical user interface
remains the best. (And I say, "programs", but any creative or design
work have similar requirements.
Post by m***@gmail.comfor building quick tools, many people reach for Python/Perl. Modula-2
and all languages without an easy binding to the stupid object
oriented API sets that abound today, are greatly hampered. This is why
FORTRAN, COBOL, C, and so many other traditional languages have
suffered, they don't bind that well to the API's that exist today,
making it extremely difficult to build graphical interactive
software. Frankly FORTRAN has improved to such a degree, it is a
terrific language now, with fantastic libraries that make scientific
programming easy, but the minute you try to program Pac-Man in FORTRAN
all those wonderful libraries to compute Bessel functions and
eigenvectors suddenly don't seem as useful.
This is not an intrinsic feature of those language, it's just that the
people who developped those framework and who implement those API cared
only for those few new languages, and didn't do the work to support any
other language. And in the case of things like iOS and Android, it is
done on purpose, so that the capitalist companies developping those
frameworks can control more easily the applications developped in them,
and extract enormous profits from it (30% on the Apple AppStore, how
much on the Google AppStore? Plus the advertising and other malware
introduced by the iOS and Android systems into your apps?).
But it is (still) possible to write a compiler backend to generate code
for those walled gardens, and to write API generators so that you may
easily program using those frameworks.
Post by m***@gmail.comThis is the reason javascript/html/css is such a winner now; you get a
huge reach with a browser based program, zero installation, etc, so
even though Modula-2, Oberon, and 100 other languages are wonderful
tools, because they can't access the drawing and event system easily,
those languages regardless of their merits are put aside.
On the browser side, it also always has been possible to write a
Modula-2 compiler backend to generate javascript, then asm.js, and now
WebAssembly, so ultimately even no performance difference would be
noticeable.
A majority of people discovered computing first with the web, so it's
natural that they would be introduced to programming by the BASIC of the
web, javascript. (Notice how iOS and Android do not contain a "BASIC",
an embedded programming language for the people).
It is obviously not impossible for an individual to push a programming
language toward popularity as python and clojure are witnesses.
You are identifying problems with the Modula-2 ecosystem regarding
popularity, so you already have done half of the work. Now implement
compiler backend and API generators to make it easy to use Modula-2 on
some popular platforms, and they shall come.
Post by m***@gmail.comModula-2 suffered because the academics rejected its simplicity, and
preferred Java, which was a tragic mistake. Java is a huge mess of a
language, inferior in every aspect to Modula-2 from any practical
ease-of-programming, ease-of-maintenance aspect.
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
https://github.com/Keith-S-Thompson/fizzbuzz-polyglot/blob/master/fizzbuzz.mod
http://paste.lisp.org/display/149906
I'll say no more.
Post by m***@gmail.comSo i continue to maintain my modula-2 products, i can't do any more
development in the language. I haven't followed the R10 project. The
stony brook compiler i believe was released to open source, that baby
was incredible, one of the greatest compilers ever written. From
R. Gogesch and Norman Black, it compiles hundreds of thousands of
lines per minute. A real screamer, and it came with its own linker,
because they didn't like the MS linker! when you write your own linker
you know your stuff! not 100 people alive today know how the Windows
linker works, and it did an amazing job.
Come on! It would be really nice and funny to write a Modula-2 compiler
backend of dalvik! If you've already written a compiler, it shouldn't
take more than a few week ends (or a summer vacation) to generate at
least executable code (speed optimization can came later).
And you can use Retrospection
http://code.tutsplus.com/tutorials/learn-java-for-android-development-reflection-basics--mobile-3203
to generate the API automatically, with a Modula-2 program! (You only
have to hand-write the Retrospection API module first).
Again a nice and fun project, that shouldn't take more than a few week
ends.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk