Henrik, I fear you may have missed my point and perhaps misunderstood where I am coming from too. I have written hardly any RPG in the last few years, most of my time has been spent writing Typescript/Angular, with a smattering of Java. The majority of the backend work I do is pure SQL. I've also a reasonable amount of experience with languages away from the IBM i, having spent some time writing microlight avionics stuff with embedded C and assembly so I can assure you I am not stuck in some RPG/IBM i comfort zone 😉 I'm also quite a fan of Javascript and especially Typescript, but that doesn't mean I can't see their weaknesses too.

I made no comment about the stability of Javascript in terms of the VM or the environment in which it runs, I said I thought Javascript was a poor choice for implementing core business logic. Its lack of static typing and the fact it's interpreted at runtime make it very easy to write poor and unreliable code. There are way too many programming pitfalls in the standard language IMO to make it a good choice for critical code (I highly recommend Douglas Crockford's "Javascript - The Good Parts" if you want to know some of them, it's a bit out of date, but still worth a read). Javascript doesn't even support decimal numbers natively, which makes it pretty useless for doing almost any kind of financial calculations without some sort of workaround (try typing 0.1 + 0.2 in your Javascript console - most people might be surprised to find the answer isn't 0.3!). I know there are tools and libraries to mitigate many of these issues, for example Typescript IMO is a massive step forward and linters can pickup common coding mistakes, but I still don't think I'd use even Typescript for my core business code and I definitely wouldn't suggest to anyone they bin their existing stuff and rewrite it.

The stability issues I mentioned are more to do with the stability of the libraries that you inevitably end up depending on, in terms of breaking changes being made, not the stability of VM or the platform itself. Having made the journey from Angular 1 to Angular 5, I can tell you, it's been painful at times and I don't think this is unique to Angular.

I believe it's about using the best tool for the job, for the front-end I think Progressive Web Apps written in Typescript and Angular, interfacing to the backend over a RESTful API, are absolutely the way forward. But, as I said, I think there are better languages for writing the server side code in.



________________________________
From: WEB400 <web400-bounces@xxxxxxxxxxxx> on behalf of Henrik Rützou <hr@xxxxxxxxxxxx>
Sent: 17 March 2018 14:41
To: Web Enabling the IBM i (AS/400 and iSeries)
Subject: Re: [WEB400] Rise of Node

Tim,



Javascript:

There is a lot of psychology in this matter. E.g. You think that javascript
isn’t so stable code as RPG just because it is compiled at load time and
even recompiled as you go (without you notice it).

I can guarantee you that javascript neither gets warn and seldom changes
behavior from ECMA version to ECMA version, but companies that makes
compilers sometime add functionality to the standard (e.g. Microsoft
ActiveX) and browsers DOM rendering machines (runs outside javascript)
works quite different from browser to browser.

Don’t confuse browsers rendering machines with their javascript VM, most
rendering machines are a mess caused by trying to forgive programmers bad
and unstructured html coding, javascript aren’t forgiving, you miss a comma
or has unclosed code the compiler stops.

Furthermore, if you are a ECMA/old vanilla javascript programmer you will
get a chock when you see node.js code since most runs ECMA5 or ECMA6.
Javascript is the fastest developing programming language and tons of new
features are added for each new ECMA standard.

BTW, javascript VM’s are mostly like java JVM written in C, however
Google’s javascript engine (V8) newest compiler TurboFan (it now has 4) are
written in assembler and it produces binary code from javascript that runs
faster than any known JVM.

( Compiles in V8:
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2F3.bp.blogspot.com%2F-mas1Y0fJ2v0%2FV7yn9fzkzWI%2FAAAAAAAABcg%2Fgm6b8X66L7oQ8Rw1z2kFO2RcAY9OgaszwCLcB%2Fs1600%2Fignitionpipeline.png&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=uiJgQkSXq5BYOZyHZuhyHV0Si3WJxsVfE%2B4aA%2FhvxCw%3D&reserved=0
)

If you take a browser, the javascript engine is sandboxed into an ILE
environment where not only the javascript machine runs but also the
rendering machine and other stuff e.g. binary’s like flash.

The newest kid in town in town in this sandbox are the WebAssembly (wasm)
standard that are binary compiled modules that may be accessed in
javascript exactly like many of the require modules in node.js that are
written in C. WebAssembly modules are also supported by node.js

There is basically no difference between the way we run ILE on IBM I and
the way WebAssembly or Java works. They all produces pseudo binary code
that then is compiled to the platform it runs on by the platform itself.

( WebAssembly; https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWebAssembly&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=CJ77qlTzy6%2B%2B3dgXzmGBnhdXvk2%2B%2FaB3hVxFpLQhED0%3D&reserved=0 )



Java:

IBM was right when they tried to force people to use Java on AS/400. Java
is today the number one programming language for business applications but
the IBM I community was wiser than the world and IBM and stuck to their
proprietary programming language (RPG). I think it is rather well known
that many RPG programmers denies any new programming language like a goose
rejects a splash of water.

The reason for that is proprietary thinking that may be translated into
“sort term protective thinking” and for many years, a war between the
Windows guy’s who manage to be a little bit more open and the IBM guy’s
that preferred to hold their cards close and where you in the IBM camp was
seen as a renegade if you even considered to put a .NET or .ASP frontend on
your AS/400.

Big BP are moving away from native and into java, just take the latest JDE
version.



The IBM I “stability” paradigm:

In regards to IBM I and stability are “the stability statement” really an
argument in 2018? Tons of systems runs on X86 that has uptime on 99,9+% and
still all systems have to be brought down for maintenance where you can
bring an X86 environment down in pieces while an IPL on IBM I will bring
the whole environment down.



Code representation:

The mental block of executing JIT compiled source code instead of binaries
is also a big issue. Like you, I felt safe in the RPG environment and
knowing myself and seeing others not always knowing the exact location and
current version of source on the PC I felt unsafe also in regards to source
in the IFS. But if you analyze the problem it is only due to the structured
way on IBM I we have more or less forced upon ourselves where we most often
have the Qxxx source files (nobody calls their source file “garfield” other
than garfield’s) located in the same library as the binaries it represents.

So, if you think about the common used IBM I library structure as it
actually represented a project (directory structure) most other
technologies (like node.js, angular etc.) has recognized the need for a
common structure, not technology dependent but voluntarily forced upon
programmers by themselves, they also has a well-defined directory structure
called a project and project can be created by a command in the
technologies CLI and if you add a DEVOPS tool on top (like Git) you will
also get version control and documentation.

So, it is more a matter of discipline than anything else and programmers
without discipline is also able to f*ck up an IBM I environment – there is
basically no difference.



BL:

BL is also a mental block, javascript is able to do the exact same
calculations than any other programming language – it just doesn’t sound
right because the mental block is that “javascript is some unstable stuff
that runs in unstable browser” regardless that there are tons of unit-test
programs to automatically test changes and unit-tests are a central part of
DEVOPS before you even consider putting code in production.

Besides that, node.js also supports WebAssembly so if it is a must you are
able to write you BL in C, C++, C# or whatever and plug it into your
javascript like a service-program with procedures in RPG.

Stability, is node.js stable or does it go down? The quick answer is the
node.js like a JVM or a IBM I job goes down if faulty code is executed, but
unlike a IBM I job you are able to automatically restart the node.js if a
faulty function brings it down.

Besides that, it really doesn’t matter if the UI or the backend goes down.
This is a typical backend-programmers approach but users measure the UX on
the UI and if that goes down they really don’t care if it was the front-end
program, the back-end program or the firewall that caused it.



DB:

And let me also bring you out of your comfort zone, in the modern world a
server is a DB service that may exist anywhere like many other cloud
services that makes “the system”, in other words server centric (and
especially one server can do it all) are legacy architecture an a little as
running you games or mining bitcoins on the main processors instead of a
stack of graphical processor cards that are optimized for algorithm and
vector-processing. There really isn’t anything new, it may be cozy to have
all in one environment, but LPAR’s and physical multi-tiers has existed for
years and BL doesn’t necessarily have to exist and be executed on the
LPAR/system that holds the DB.


On Sat, Mar 17, 2018 at 2:40 PM, Justin Taylor <JUSTIN@xxxxxxxxxxxxx> wrote:

A complete RPG->Node migration? Wow!

-----Original Message-----
From: Aaron Bartell [mailto:aaronbartell@xxxxxxxxx]
Sent: Saturday, March 17, 2018 8:09 AM
To: Web Enabling the IBM i (AS/400 and iSeries) <web400@xxxxxxxxxxxx>
Subject: Re: [WEB400] Rise of Node

Is there really a case to be made for Node doing it all?

In my mind, yes.

But I wouldn't want to see a node application that does AR, Inventory,
etc... You'd go blind.

What parts would make you go blind?

I think it's worth looking at some Node.js apps(n1) to see how well they
can be organized. Sure they won't be perfect, but having a long-term
modernization strategy of keeping both RPG and Node.js (with equal parts in
both) is not a decision that saves time.

n1 - https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.totaljs.com&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=hOVajlNuSd9ZmsLbLuQNPvASCsgiUJ32mH2YSkiobcA%3D&reserved=0, https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftotaljs&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=Q90xC%2FEH9toI9qkjcI19khTrCYZBH%2BZ5uRfnYEWfKhc%3D&reserved=0




Aaron Bartell
IBM i hosting, starting at $157/month. litmis.com/spaces


On Fri, Mar 16, 2018 at 5:03 PM, Bradley Stone <bvstone@xxxxxxxxx> wrote:

On Fri, Mar 16, 2018 at 4:45 PM, Nathan Andelin <nandelin@xxxxxxxxx>
wrote:

I wonder the reason for the assertion that shops are "moving away"
from
ILE
languages, rather than integrating with ILE languages on IBM i?
Sure,
some
shops may be using scripting languages to generate formatted
responses
to
requests from browsers and web-service clients, but still
integrating
with
IBM i stored procedures, triggers, and user defined functions? And
using ILE languages for batch and background processes? A separation
of responsibilities? A shift in application architecture that includes
both?

Is there really a case to be made for Node doing it all?


If there were, there wouldn't be so many things in the toolkit that
let you interact with data areas, queues, etc. And you could run it
on any platform you wanted and simply migrate off the IBM i. Maybe
that's the end goal? Who knows. But I wouldn't want to see a node
application that does
AR, Inventory, etc... You'd go blind.

It has its uses, but while we RPGers are told "you use RPG as a
hammer, and see everything as a nail" I see the similaries on the other
side of things.
--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=mkZjJx5eANjECCEoDOadjekiaQ5nC6Swqoi%2B783pm0g%3D&reserved=0
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=%2Fg5KIBmUkj9MuvMHdBZTiJIBaEydslTWgavHeM4MUUU%3D&reserved=0.



--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=mkZjJx5eANjECCEoDOadjekiaQ5nC6Swqoi%2B783pm0g%3D&reserved=0
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=%2Fg5KIBmUkj9MuvMHdBZTiJIBaEydslTWgavHeM4MUUU%3D&reserved=0.




--
Regards,
Henrik Rützou

https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2FpowerEXT.org&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=NlufdTJY9B555LhJ38APyxENlI6Z1BnQS2Ys7XHmq78%3D&reserved=0 <https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpowerext.org%2F&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=uPjoqwv%2Fwl4kptWrx44BtHmDalU1ze3WOnkAiZJ8RLQ%3D&reserved=0>
--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=mkZjJx5eANjECCEoDOadjekiaQ5nC6Swqoi%2B783pm0g%3D&reserved=0
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&data=02%7C01%7C%7Ceaa92df1a7f9459ce70108d58c0cf209%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636568909579699054&sdata=%2Fg5KIBmUkj9MuvMHdBZTiJIBaEydslTWgavHeM4MUUU%3D&reserved=0.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.