Le concept semble plutôt étrange. Surtout si, comme moi, vous pensez que le COBOL n'est plus trop utilisé et est appelé à disparaître, remplacé par des langages bien plus récents. Eh bien, selon les recherches d'autres personnes, il s'avère que le langage est encore fortement présent. Après une soixantaine d'années d'existence, ce langage multiplateforme (et même orienté objet en cours de route) est utilisé principalement dans des applications héritées même si personne ne s'en soucie vraiment.
Et donc ? Ionică Bizău explique que son but était de lier ce vieux langage (sans être péjoratif) avec une technologie plus récente : Node.js, qu'il connaissait déjà. Il a d'ailleurs fait ça « pour le fun ».
Toutefois, vous avez maintenant la possibilité de rendre disponible votre application COBOL directement sur le Web (un Web service, par exemple). Sympa ! À l'inverse, vous pouvez exécuter un serveur Web à partir de code COBOL. On pourrait se demander si ce n'est pas plus sûr d'utiliser le COBOL ainsi au lieu de le migrer, avec tout ce que ça implique.
En pratique, les ponts utilisent le compilateur GnuCOBOL qui doit donc être installé. Voici les exemples donnés par l'auteur. C'est d'abord le fait d'exécuter du COBOL dans du JavaScript :
Code javascript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Dependencies var Cobol = require("cobol"); // Execute some COBOL snippets Cobol(function () { /* IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. PROGRAM-BEGIN. DISPLAY "Hello world". PROGRAM-DONE. STOP RUN. */ }, function (err, data) { console.log(err || data); }); // => "Hello World" |
Et ensuite, le fait d'utiliser du JavaScript dans du COBOL :
Code cobol : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | * Compile this file together with the node.cobol modules: * $ cobc -x example/main.cbl lib/node-exec-* * Then execute the binary file: * $ ./main IDENTIFICATION DIVISION. PROGRAM-ID. MAIN. DATA DIVISION. WORKING-STORAGE SECTION. 01 NODEJS-CODE PIC X(100) value "console.log('Hello World!')". PROCEDURE DIVISION. * Execute a short Node.js snippet CALL 'EXEC_NODEJS' USING NODEJS-CODE DISPLAY "Starting an HTTP server on port 8000". * Convert an image into ASCII/ANSI art CALL 'EXEC_NODEJS_FILE' USING "example/grace-hopper.js" DISPLAY "Starting an HTTP server on port 8000". * Starting an HTTP server in Node.js CALL 'EXEC_NODEJS_FILE' USING "example/server.js". STOP RUN. |
Les pages de Node.cobol et Node-cobol sur GitHub.
Super.
- Oui, mais, le titre, là, il parle de Fortran. C'est quoi le rapport ?
Fort de son succès totalement inattendu, et de son amusement totalement personnel, Ionică Bizău a réitéré l'expérience avec le Fortran. À peu de choses près, vous remplacez tous les termes COBOL par Fortran dans ce qui précède et vous obtenez les ponts Node.fortran et Node-fortran.
Le premier vous permet d'exécuter du code Node.js depuis le code Fortran :
Code fortran : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | program nodejs_module_example use nodejs implicit none ! Let's execute a Node.js file call runNodejsPath("example/index.js", .false.); ! => "Hello from a Node.js file." print *, "An HTTP server is going to be started on port 9000." ! And now let's execute some Node.js code right here call runNodejs("const http = require('http');& &http.createServer((req, res) => {& & res.end('Hello World from a Node.js server started& & from Fortran!')& &}).listen(9000);", .true.); end program nodejs_module_example |
Le second vous permet d'exécuter du code Fortran depuis le code Node.js :
Code javascript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | const fotran = require("fortran"); // Let's run some Fortran stuff fotran(` program hello print *, "Hello World!" end program hello `, (err, data) => { console.log(err || data); // => Hello World }); |
Et voilà, le tour est joué !
Les pages de Node.fortran et Node-fortran sur GitHub.
Et vous ?
Programmez-vous encore en COBOL ou en Fortran ?
Que pensez-vous de l'intégration des anciens langages avec les nouveaux ?
Retrouver les cours et tutoriels pour apprendre Node.js.