Profile Scripting Language

Last updated
Profile Scripting Language
Paradigm Procedural
Designed by Frank Sanchez
First appeared1998
OS Cross-platform
Influenced by
MUMPS

Profile Scripting Language (PSL) is a superset of the MUMPS programming language that adds object-oriented language features. It is currently developed by Fidelity National Information Services (hereafter FIS).

MUMPS, or M, is a general-purpose computer programming language originally designed in 1966 for the healthcare industry. Its differentiating feature is its "built-in" database, enabling high-level access to disk storage using simple symbolic program variables and subscripted arrays; similar to the variables used by most languages to access main memory.

Programming language Language designed to communicate instructions to a machine

A programming language is a formal language, which comprises a set of instructions that produce various kinds of output. Programming languages are used in computer programming to implement algorithms.

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data, in the form of fields, and code, in the form of procedures. A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated. In OOP, computer programs are designed by making them out of objects that interact with one another. OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of classes, which also determine their types.

Contents

History

PSL is a language that implements object orientated concepts such as classes, methods, encapsulation, inheritance, and strong data typing as extensions to the MUMPS language. PSL was initially conceived in December 1998 by Frank Sanchez, then President of Sanchez Computer Associates, as a transformation tool that could reverse engineer a very large and complex banking application (Fidelity National Information Services 'Profile') which was written predominantly in MUMPS.

Frank Sanchez developed the original language semantics, syntax, parser, compiler and optimizer, database interface, schema binding, intrinsic classes and methods over the Christmas holiday in 1998 and early 1999. He was assisted in the development of the initial commercial releases (version 1 - 2) by the late Bob Chiang, the Head of Data-Qwik tool development at Sanchez, and Mark Spier, a Senior Software Developer with Sanchez at the time. Sanchez Computer Associates (SCAI) was acquired by Fidelity National Financial (FNF), now FIS, in April 2004. In later versions the compiler has been maintained and significantly enhanced by Frans Witte, a Senior Technical Lead at FIS, and Dan Russell, formerly the Head of Technology Development at Sanchez and now a remote Senior Technical consultant to FIS. Frans and Dan have focused on implementing the database independent features of the language, and more recently the Java source target code.

FIS (company) American information technology company

Fidelity National Information Services, Inc. is an international provider of financial services technology and outsourcing services. Headquartered in Jacksonville, Florida, FIS employs 52,000 people worldwide. FIS provides payment processing and banking software, services and outsourcing of the associated technology. FIS has over 20,000 clients in more than 130 countries. FIS was ranked second in the FinTech Forward 2016 rankings.

Language concepts

The initial language concepts included the ability to bind the source code to a database schema which generates dynamic Data Access Classes (preempting similar persistent class generation in Java) and database methods that could be code generated into either MUMPS globals or a commercial RDMS. The PSL Data Access Classes are identified in the source code as Record<classes>.

Java (programming language) Object-oriented programming language

Java is a general-purpose programming language that is class-based, object-oriented, and designed to have as few implementation dependencies as possible. It is intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but it has fewer low-level facilities than either of them. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported 9 million developers.

PSL interprets legacy MUMPS code, though some legacy commands (such as GO, NEW and KILL) can be disabled or marked as deprecated (generating compiler warnings). Direct references to MUMPS globals can also be disabled or deprecated. Numerous PSL compiler directives (e.g., #IF/#ELSE, #ACCEPT) were also added to the PSL language, as were Java style blocks and comments, modern error handling semantics and white space. Two MUMPS language elements were eliminated initially (M-style blocks and goto label+offset) as they could not be supported within the PSL object scope handling.

PSL allows a Class to be defined as either Intrinsic or Extrinsic. Extrinsic classes implement Class, Method and Instance variable definitions consistent with common OO languages, and are generated into compiled code (accessed at runtime). Intrinsic Classes and methods, on the other hand are implemented as extensions to the PSL compiler itself, and are executed at COMPILE time in order to generate runtime code. This feature can generate heavily optimized or specialized code depending on compile time or program conditions. This capability was considered to be critical to the ability to generate code that optimized both a MUMPS global database and multiple commercial RDMS's from the same PSL source.

Releases

The initial release of PSL (originally called M++) was in the summer of 1999, as part of the Profile version 6.2. In that release, less than 5% of the MUMPS code was converted to PSL, though new development was predominantly in PSL source code and analysis for widespread reverse engineering was underway. The Profile application conversion from MUMPS to PSL was 100% completed in 2006, with the release of Profile version 7.0. Profile version 7.0 was also the first commercial version of the application that could be targeted to run on either a GT.M MUMPS database or an Oracle 9 database, with GT.M MUMPS source code as the PSL target.

GT.M is a high-throughput key-value database engine optimized for transaction processing. GT.M is also an application development platform and a compiler for the ISO standard M language, also known as MUMPS.

Oracle Database is a proprietary multi-model database management system produced and marketed by Oracle Corporation.

Currently PSL is continuing to be actively enhanced to support IBM DB2 as a target database and to optionally generate either GT.M MUMPS or Java target code from the same PSL source code. Furthermore, PSL is supported by a modern Eclipse-based development environment, with integrated schema and code management and numerous interactive plug-ins. Jim Joyce, a senior R&D Developer at FIS has been responsible for much of the IDE vision and development.

Eclipse (software) Java software development environment

Eclipse is an integrated development environment (IDE) used in computer programming, and in 2014 was the most widely used Java IDE in one website's poll. It contains a base workspace and an extensible plug-in system for customizing the environment. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages via plug-ins, including Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, Groovy, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, and Scheme. It can also be used to develop documents with LaTeX and packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.

Uses

As of June, 2011, PSL remains the source code language for the FIS Profile banking system, deployed in 26 countries and over 200 institutions, including some of the world’s largest banks. While Java and commercial RDMS deployments are possible in the future, today 100% of the deployments are on the GT.M MUMPS target language and database, with the exception of a single Oracle DBMS deployment.

See also

Related Research Articles

A compiler is a computer program that translates computer code written in one programming language into another language. The name compiler is primarily used for programs that translate source code from a high-level programming language to a lower level language to create an executable program.

Dylan (programming language) multi-paradigm programming language

Dylan is a multi-paradigm programming language that includes support for functional and object-oriented programming (OOP), and is dynamic and reflective while providing a programming model designed to support generating efficient machine code, including fine-grained control over dynamic and static behaviors. It was created in the early 1990s by a group led by Apple Computer.

The GNU Compiler Collection (GCC) is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain and the standard compiler for most projects related to GNU and Linux, including the Linux kernel. The Free Software Foundation (FSF) distributes GCC under the GNU General Public License. GCC has played an important role in the growth of free software, as both a tool and an example.

Java virtual machine runtime environment that can execute Java bytecode as a result of compiling computer programs written in the Java programming language

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

In computing, just-in-time (JIT) compilation is a way of executing computer code that involves compilation during execution of a program – at run time – rather than prior to execution. Most often, this consists of source code or more commonly bytecode translation to machine code, which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code.

Object Pascal is an extension to the Pascal programming language that provides object-oriented features such as classes and methods.

Saxon is an XSLT and XQuery processor created by Michael Kay and now developed and maintained by his company, Saxonica. There are open-source and also closed-source commercial versions. Versions exist for Java, JavaScript and .NET.

In computer software, in compiler theory, an intrinsic function is a function (subroutine) available for use in a given programming language which implementation is handled specially by the compiler. Typically, it may substitute a sequence of automatically generated instructions for the original function call, similar to an inline function. Unlike an inline function, the compiler has an intimate knowledge of an intrinsic function and can thus better integrate and optimize it for a given situation.

Apache Axis

Apache Axis is an open-source, XML based Web service framework. It consists of a Java and a C++ implementation of the SOAP server, and various utilities and APIs for generating and deploying Web service applications. Using Apache Axis, developers can create interoperable, distributed computing applications. Axis development takes place under the auspices of the Apache Software Foundation.

XMLBeans is a Java-to-XML binding framework which is part of the Apache Software Foundation XML project.

Haxe cross-platform open-source programming language

Haxe is a high-level cross-platform multi-paradigm programming language and compiler that can produce applications and source code, for many different computing platforms, from one code-base. It is free and open-source software, distributed under the GNU General Public License (GPL) version 2, and the standard library under the MIT License.

Morfik Technology Pty Ltd. is an Australian software company that was acquired by Altium in 2010.

Microsoft Visual Studio integrated development environment

Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs, as well as websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation, Windows Store and Microsoft Silverlight. It can produce both native code and managed code.

The Java Development Kit (JDK) is an implementation of either one of the Java Platform, Standard Edition, Java Platform, Enterprise Edition, or Java Platform, Micro Edition platforms released by Oracle Corporation in the form of a binary product aimed at Java developers on Solaris, Linux, macOS or Windows. The JDK includes a private JVM and a few other resources to finish the development of a Java Application. Since the introduction of the Java platform, it has been by far the most widely used Software Development Kit (SDK). On 17 November 2006, Sun announced that they would release it under the GNU General Public License (GPL), thus making it free software. This happened in large part on 8 May 2007, when Sun contributed the source code to the OpenJDK.

Google Closure Tools

Google Closure Tools is a set of tools to help developers build rich web applications with JavaScript. It was developed by Google for use in their web applications such as Gmail, Google Docs and Google Maps.

OptimJ is an extension of the Java with language support for writing optimization models and abstractions for bulk data processing. The extensions and the proprietary product implementing the extensions were developed by Ateji which went out of business in September 2011. OptimJ aims at providing a clear and concise algebraic notation for optimization modeling, removing compatibility barriers between optimization modeling and application programming tools, and bringing software engineering techniques such as object-orientation and modern IDE support to optimization experts.

Dart is a client-optimized programming language for fast apps on multiple platforms. It is developed by Google and is used to build mobile, desktop, backend and web applications.

References