"Code refactoring using AI is a machine learning process that rewrites existing code from legacy languages like COBOL to newer languages like Java with no human programming. It is available now and used in the banking, insurance, and healthcare industries for example. Based on a recent NCI government project, we know we can rewrite applications four times faster and at 20-30% of the cost today"
"Code refactoring using AI is a machine learning process that rewrites existing code from legacy languages like COBOL to newer languages like Java with no human programming. It is available now and used in the banking, insurance, and healthcare industries for example. Based on a recent NCI government project, we know we can rewrite applications four times faster and at 20-30% of the cost today"
I'm putting this in DevOps for archiving, but it's for the main board also... many of you have comp sci backgrounds, though I have taken a lot of comp sci courses (my degrees are in CIS) I don't know the answer to this question: how do interpreted languages like Python and PERL handle the step after compilation where the object code needs to be linked with and libraries and subprograms needed? It would seem that this would make interpreted vs compiled languages unfeasibly slow... too slow for ... moreI'm putting this in DevOps for archiving, but it's for the main board also... many of you have comp sci backgrounds, though I have taken a lot of comp sci courses (my degrees are in CIS) I don't know the answer to this question: how do interpreted languages like Python and PERL handle the step after compilation where the object code needs to be linked with and libraries and subprograms needed? It would seem that this would make interpreted vs compiled languages unfeasibly slow... too slow for something like Firefox to be written in Python. I know interpreters have gotten a lot faster, but fast enough to ostensibly skip the link-edit step?
Wayne BeaversFor the programming language SAS many people think it is interpreted. Actually the source code is compiled which creates an object deck. This object code is then used to create a load module. It is this load module that executes. As observed by the user the compile takes awhile but then executing the load module is lightening quick.
I do not think that SAS uses the Linage Editor or the Binder. I think SAS used the loader, which is essentially the Linkage Editor except instead of getting a load... moreFor the programming language SAS many people think it is interpreted. Actually the source code is compiled which creates an object deck. This object code is then used to create a load module. It is this load module that executes. As observed by the user the compile takes awhile but then executing the load module is lightening quick.
I do not think that SAS uses the Linage Editor or the Binder. I think SAS used the loader, which is essentially the Linkage Editor except instead of getting a load module on disk the executable code is created in storage and then it executes.
As I said before, for JAVA on z/OS the Java source code is compiled creating the class file, which I believe is byte code suitable for interpretation by the Java Virtual Machine. In z/OS this byte code is then used to create object code which is used to create a load module which is cached. Because it is cached it is only the first execution that goes through the process of creating the load module. For the second and all subsequent executions the load module is fetched from cache, bypass a lot of overhead.
I think that an IPL (boot) results in an empty cache and this process starts over. Fortunately z/OS can run for several years without an IPL so the JAVA based load modules will likely be in the cache for a very long time.
Wayne Beavers
The platform of choice for running JAVA, me thinks, is a large Z processor. Same for REXX. I have no internal knowledge of Python or other language that did not start on the mainframe.
Wayne BeaversFor REXX you have 3 choices on how to run it.
1. You can interpret the source, in which case byte code is generated but not saved.
2. You can run the source through the compiler and save the byte code for execution.
3. You can run the compiler and create an object deck and that can be link-edited with all of the classic compiled languages (Fortran, COBOL, PL/I)
For JAVA the compiler creates a CLASS file, much like on other platforms. However, the first time it is executed the JAVA VM will take ... moreFor REXX you have 3 choices on how to run it.
1. You can interpret the source, in which case byte code is generated but not saved.
2. You can run the source through the compiler and save the byte code for execution.
3. You can run the compiler and create an object deck and that can be link-edited with all of the classic compiled languages (Fortran, COBOL, PL/I)
For JAVA the compiler creates a CLASS file, much like on other platforms. However, the first time it is executed the JAVA VM will take the byte code and create an MVS loadmodule (Just In Time). This is cached for future use. If you read the POO (aka POP, Principles of operation) you may notice that many of the hardware instructions that have been added over the last 10 years or so are very complex instructions that were created to make JAVA run faster.
A friend of mine maintains the Principles of Operations manual. I mentioned to him around 2011 that the rate of adding new hardware instructions to the mainframe is higher now than at any other time in the history of the platform, not including the first day it shipped. He said I probably was right.The last time I looked he had around 8 US patents for new instructions on the z platform.
cameron seayMy friend Chip Davis, who probably knows more about REXX than anyone on the planet except its creator Mike Cowlishaw, gave me a very lucid and extended answer that I will summarize here for brevity's sake: That is what REXX is built to do. Access to all libraries and functions is provided on demand by the interpreter. He further went on to say that the COBOL compiler works the way it does- that is linking the libraries- was to save cycles back when they were much more expensive. Modern inte... moreMy friend Chip Davis, who probably knows more about REXX than anyone on the planet except its creator Mike Cowlishaw, gave me a very lucid and extended answer that I will summarize here for brevity's sake: That is what REXX is built to do. Access to all libraries and functions is provided on demand by the interpreter. He further went on to say that the COBOL compiler works the way it does- that is linking the libraries- was to save cycles back when they were much more expensive. Modern interpreters are not under that constraint If anyone has anything to correct or add, please do. I always want to be on solid technical ground.
Frans BeylI hope this doesn't turn into a discussion on terms but lets go anyway.
As far as I know sources written in interpreted languages are never linked because they're just input to the interpreter who performs what is in them, it is the interpreter or by extension the virtual machine that executes not the script! Even if there is some kind of bytecode creation, sometimes called (pre)compiling, this bytecode never executes.
Sources written in compiled languages however are turned into machinecode obj... moreI hope this doesn't turn into a discussion on terms but lets go anyway.
As far as I know sources written in interpreted languages are never linked because they're just input to the interpreter who performs what is in them, it is the interpreter or by extension the virtual machine that executes not the script! Even if there is some kind of bytecode creation, sometimes called (pre)compiling, this bytecode never executes.
Sources written in compiled languages however are turned into machinecode objects which need linking to become executables even if they consist of one module only. The linking is not just gather all needed modules together in one executable but more important taking care of addressing, it is the created loadmodule that executes!
I have the impression that you refer to cycles needed to search and load of whichever needed component. There are many factors possibly in the game here. I don't know how java, python, perl or rexx decide at what time this process is done but they surely have intelligent algorythms to optimise this. For z/OS loadmodules there are several techniques of influence, dynamic or static load, preload, lla, vlf, .... I'm sure loadmodules are executing faster then virtual machines running bytecoded scripts and that they are probably faster loading because smaller but the main factor will be the search and load algorythm for these cycles. Don't know that in the case of Firefox the user will sense this difference.
What I see most of the time is that these 'technical' kind of cycles are peanuts compared to the ones lost by badly conceived or written code, be it scripting or coding.
cameron seayIt absolutely does, and if I had thought about it a little I would have had part of the answer in my head. I'm fairly clear on how the JVM works and it's pretty obvious that they have the logic of linking worked out in the Java compile process. What stumps me is that Python is not compiled; you just run it. But your answer gives me a clue in that somehow Python must do some pre-processing at run time (the Python interpreter is fast, I know that). It would only take a few cycles to run throug... moreIt absolutely does, and if I had thought about it a little I would have had part of the answer in my head. I'm fairly clear on how the JVM works and it's pretty obvious that they have the logic of linking worked out in the Java compile process. What stumps me is that Python is not compiled; you just run it. But your answer gives me a clue in that somehow Python must do some pre-processing at run time (the Python interpreter is fast, I know that). It would only take a few cycles to run through the code before execution and see what it needs. I'll go through the docs you provided.
I'm really going to like this Board. Finbar is on to something here. Thanks for the time you spent on this, man.
DeLander CollinsThis is what I could find on the topic.
Python source code (.py files) is converted into byte code (.pyc file) for use by the python virtual environment (PVM) as it’s being written. The .pyc is used the the next time the file is run for quicker start up. I do not believe python uses static or dynamic linking in the traditional sense for modules. The import of modules would be searched in the sys.path before being changed into byte code. I found these links on the subject. Hope that helps and is... moreThis is what I could find on the topic.
Python source code (.py files) is converted into byte code (.pyc file) for use by the python virtual environment (PVM) as it’s being written. The .pyc is used the the next time the file is run for quicker start up. I do not believe python uses static or dynamic linking in the traditional sense for modules. The import of modules would be searched in the sys.path before being changed into byte code. I found these links on the subject. Hope that helps and is a starting point.
Finbar Burke
An early mention of ZOWE, and the importance of it's resources in his project caught my eye, as a non tech I've had to go over the article a few times just to grasp the basics, but things are looking very exciting,
Frans Beyl
Great quote from the author which I fully subscribe : "The reality for these goals is that z/OS is just another remote machine, just like Ubuntu or Windows servers. So let's treat it that way!"