Even though Programa offers a very powerful programming environment compared to exiting languages, it can also be used as a testbench to easily test and verify program functionality of common languages (i.e, C, Python, or Java). The following figure shows Programa's capability to create and test code initially written using Programa directives. A conversion module can then be used to convert the Programa code into one of main programming languages so users can further develop applications using other programming environments. 

Programa as Testbench

Programa can be considered as a superset of all available modern languages that provides a level of abstraction that makes coding a fun experience. Programa eliminates the frustrations associated with coding and debugging by providing simple concepts and constructs to access variables and perform computations. Below are some of its main features:

  • Pointer-free Variable Access: Programa eliminates the use of pointers which are very cumbersome to use, very prone to errors, and typically create memory access problems that are very difficult to trace. In Programa, a variable is accessed using its name only.
  • Simple Variable Types: Programa only using two primitive variable types:
    • Numbers that can be of any type (i.e., integers, floating point numbers) and are independent of their decimal point accuracy
    • Strings
  • Variable Definition: Programmers do not have to worry about declaring variables whether they are numbers or strings. Programa automatically parses the code and detects whether a variable is a number or a string
  • Abstract and Hierarchical: Programa introduces a powerful concept of generalized variables which can be anything from a primitive variable (number of string), to an array, a structure, an array of structures, or even complex objects such as an image.  An image variable contains the image data, as well as other ancillary information describing the type of the image (i.e., geolocation, camera characteristics, date and time of capture of the image, etc.). When performing operations on generalized variables, operations are applied to the parts of the generalized variable that is applicable to a particular operation. For example if we have two arrays of numbers the operation newArray = Array1 + Array2 will create a newArray by adding each element of Array1 to the corresponding element of Array2. Similarly an operation newImage = 0.4 * Image1 + 0.6 * Image2 will create a new blended image where each pixel is using 40% of the corresponding pixel in Image1 and 60% of the corresponding pixel in Image2. 
  • Self-Declarations: Functions as well as generalized variables do not need to be declared anywhere in the program. Declarations are implied at the place where they are defined. This eliminates the need of header files to declare the types of functions, arrays, structures, primitive variables, etc.
  • Functions: Programa alleviates the need of pointers to pass back multiple data generated by a function, by allowing a function to return multiple outputs the same way multiple inputs are provided to a function. For example, a function that returns the max, min, and average numbers of an array can be defined as myFunction (inp: numberItemsInArray, array, out: max, min, avg);

The following table shows a comparison chart of Programa with other modern programming languages. 


The human interface can be the classical keyboard and mouse, touch-screen, speech, or any combination of them. This provides you with the maximum flexibility since it allows you to use a keyboard and/or mouse when you write a large program, or a touch screen interface when you want something portable to solve some smaller problems. The touch-screen interface is also particular useful for students since they are more accustomed using this type of interface. Finally, we envision that Programa will ultimately have a speech recognition capability where users will be able to write programs using a spoken language.

The next layer of Programa is the syntax input language that allows the user to write code in one of the supported syntaxes.

The Mass computing engine is the heart of Programa. It reads the user code, checks for correct syntax, performs the necessary calculations, and produces the results of the program.

With Programa, standard functions from different programming languages can be integrated within the computing environment, thus offering a very powerful environment to quickly create programs with substantially functionality. Programa can be used to develop:

  • Applications that perform computations by integrating standard C functions
  • Websites by integrating HTML functions
  • Web and other server apps by integrating Java and PHP standard functions
  • Game and graphics apps by integrating  standard graphics functions

In addition, Programa offers a set of powerful data parsing functions that allow users to quickly read data and automatically create structures that can be easily accessed by the program. This saves developers a significant amount of time and minimizes the time it takes a programmer to reach the most rewarding part of computing which is the problem solving state.

All this advanced functionality is encompassed by a powerful set of visualization functions that allow users to easily visualize and illustrate the output produced by their code.

Programa Architecture

Programa combines a set of powerful teaching, debugging, and coding features:

  • Interactive learning: Programa provides interactive instructions that help you to write program while you are coding
  • Correct-by-construction coding: Programa has built-in templates of common programming constructs to minimize syntax errors while coding
  • Syntax checking while coding: Once a line of code has been entered, Programa automatically checks for remaining syntax errors without the need of compilation
  • Auto-Execution: Program execution starts or resumes once a line of code has been typed
  • Variable Visibility: Variable values are available as soon as a line of code has been typed and can be displayed within the Programa environment

Learning and Coding using Programa

What is programa

  • It is a full programming environment which allows users to perform a variety of tasks ranging from learning how to program computers and writing simple programs, to solving complex problems and developing software applications
  • Programa can be used to teach introduction to programming languages such as C, Python, Java, and Ruby on Rails
  • Programa provides extensions to those languages that significantly reduces the barrier of learning
  • Makes the process of coding, debugging, as well as accessing and visualizing data a very easy and straightforward task