The ideas, goals, design, and possibility of such project.
Today there is uncountable number of programming languages. Some are useless and some is a must for any programmer. By time a compatibility problems arise. This leads to an idea of programming language for all programmers and all types of applications on all types of platforms. This idea proposed as Universal Programming Language (Upl).
Programming languages are the only way of communication between programmers and the computer. Each programming language has its own syntax and semantic. The syntax is the sentence structure. The semantic is the meaning of the sentence. Programmers should be able to read, write and manipulate such sentences in order to write a program.
A program is a set of sentences written in some programming language then compiled or interpreted to machine code, in order to be executed.
Upl aims to provide a perfect syntax and semantics. Which are easy to be understand by the programmers and powerful enough to produce high quality programs.
Analysis
“Universal”:
Universal is an adjective for a noun that is a general for everything.
“Universal language”:
Universal language is a language that is used by everyone in everywhere, as a general way of communication.
“Universal programming language”:
Universal programming language is a programming language that is can be used by any programmer to write any kind of programs.
Programmers and the language itself:
English as “Universal language”:
English is one of most spoken languages in the world. It can be found spoken and written everywhere. This vast spreading of English language makes a big problem for non English peoples. They want their languages to be universal ones. As example, French believe that their language is more powerful, elegant and flexible language and they are trying to make it a universal one.
English as “Universal programming language”:
Most of programming languages are written in English characters with respect for English syntax and semantic. This makes programming languages more understandable by programmers.
A problem similar to the previous one has been arising. Programmers want to program in their mother tongue language. Moreover some freaks want to program in their own languages.
Programs that can be written by the language:
Universal programming language must be able to allow programmers to write any type of programs. It must produce system level, web services, real systems, phones, desktop, games, etc ….
In fact there is no programming language that can do all of those programs. But there are many programming languages to do each type. C and C++ are most programming languages used for operating systems, system level programs and games. Java and Dot Net are both famous at desktop application level. Assembly is unbeatable at real system level. And so on.
Unfortunately, each programming language is designed for specific domains and ranges. Domains are the platforms and ranges are the applications types. So we can not use assembly to create web pages and we can not use html to produce real time systems.
Problems arise:
- Everybody wants to program in his suitable language
- Each Programming language has a domain and a range
Implementation:
By the time being there is one simple freaky implementation of the universal programming language. It is called upl_2. It is an enhanced version of upl_1 project. We will discus the original upl project before getting cross upl_2.
Upl_1
Latest release is upl_0.1.4 alpha
Available at http://upl.sourceforge.net
Definition
Universal Programming Language is a platform that helps new comers and children to learn programming.
This platform helps to create programming languages for all languages and all purposes.
Goals
- provide a Multilanguage programming language
- language for who do not speak English, non IT major students and school students
Work Method
- Language engine load the language definition from language definition file
- Language engine spread the language definition for the whole system
- Programmer writes his code with respect to loaded language definition
- Check engine checks the written code for any errors
- Upl compiler will Convert upl language to java
- Java compiler will Compile java files to byte code
- Jar creator will pack the class files in a jar file

Advantages of UPL_1
- Programmer can change the programming language keywords for his own keyword
- Keywords can be written in any utf-8 supported languages. Such as Arabic, Hebrew, French, etc.
- Easy syntax and semantic
- Upl and it is output are operating system independent, written using java
Disadvantages of UPL_1
- Programmer can not change syntax nor semantic
- Output limited to simple desktop applications
- Little features comparing to famous high level languages
Conclusion
Upl_1 is a very promising project. It needs to add a more advanced language engine which allows changing of keywords syntax and semantic. Also more features should be copied from java by extending upl to java compiler. Finally, with more time and effort upl can override the entire disadvantages that it has, Except the application type limitation, where a new design should be adapted.
Upl_2
Upl_1 project design is very simple. This makes it difficult to use it for the new generation of upl project. A new replacement was proposed as upl_2. It is an enhanced version of upl_1. It promise to be more stable, powerful, flexible and with no disadvantages.
Upl_2 goal is to be the first complete universal programming language. It aims to fulfill the three main conditions. They are:
- Written by any language
- Produce any application
- Run on any platform
Analysis
To achieve a correct analysis results we must analyze the three main conditions separately. Then make a connection between them.
Condition 1 _ Any Language
This part is held in the language engine. So the improvement should be in the language engine and the language definition file.
“Any language” can be divided to two types:
- Existing programming language
- Customized programming language
Language engine will deal with the second type. Since the first type can be handled by the available corresponding compilers and interpreters.
In order to deal with customized programming language we will need some tools and methods from the compilers topic such as parsers, lexical analyzers, etc.
There is uncountable number of possible customized programming language. It will be impossible to make a compiler for each language. Possible solution is to make a backbone programming language where any customized programming language must depend on it.
Dynamic parser can be used to create links between the backbone and the customized programming languages. Adding those links to the upl_1 language definition files will be the last step for creating the upl_2 language definition files. In the other side a Dynamic parser should be included in the language engine to work as translator between the backbone and the customized programming languages.
Possible scenario can be like this:
Parser1: verb,sp+,Keyword,sp+,name,sp+,operand,sp+,value
cpl code1: declare integer I = 0
Parser2: verb,sp+,name,sp+,Keyword,sp+,operand,sp+,value
cpl code2: put I as int equal 0
| backbone language definition | customized language definition |
| put | Declare |
| Int | Integer |
| Equal | = |
| Space = { nt}
Name !={!@#$%^&*()-+/[]{}?<>`’”;:,.} Value ={0-9}+{0{{.}1{}+}1} Keyword = {as} keyword |
Space = { nt}
Name !={!@#$%^&*()-+/[]{}?<>`’”;:,.} Value ={0-9}+{0{{.}1{}+}1} keyword = keyword |
Condition 2 _ any application:
A problem arise that there is no one programming language that can create all type of applications. But Upl_2 designers believe that it is not the end of the dreams.
An imaginary design was proposed as a solution for this problem. They summarized it in one phrase:
“If you cannot climb a mountain, still you can walk around it”.
Here goes the figure:

From the above figure, it is clear that upl engines will work as an intermediate level between the input and output codes. A possible scenario is as following:
- A code written by c++ in order to produce a java desktop application
- Using upl engines, it will be converted to java code. After that the code generated will be used to create the application
For such a dream it is a must that we link all available tools together. Let us assume the following condition:
- There exist a upl to java code convertor (ujc)
- There exist a java to c++ code convertor (jcc)
- There exist a c++ to c# code convertor (ccc)
A programmer who knows how to write in upl code wants to develop a c# program. A life cycle for his code could be as following:
- Upl code to java (using ujc)
- Java code to c++ (using jcc)
- C++ code to C# (using ccc)
- The program code is in c# code
Such scenario can be repeated in millions of different forms. Still all of them can be solved in the same way.
Condition 3 _ Any Platform
An interpreted language as java can be a convenient for this condition. Still most of programming languages are compiled ones. Different version of compilers and interpreters should be linked together in similar way as discussed in condition 2.
Conclusion
As the time goes, a lot of updates and enhancement will be add to the available programming language. Upl aim is to link all these programming languages together, which is almost impossible. From the proposed structures and designs, upl will face limitless obstacles. Those obstacles are belonging to time the ideas appear on, available technologies and most of all the desirable benefits will be gained from this project.
In the time being, making a Multilanguage programming language may be a good excuse for working on this project, where the target of the project are students and non it majored people. A more powerful designs and architectures should be proposed, if the project wanted to be continued in future as a real upl.












Leave Your Response