|
 |
|
|
Design Goals of H2O
The design requirements of the H2O programming language are driven by the nature of how software on the web must be written, deployed and upgraded. Prior to the web, computer languages were defined within the context of hardware-specific operating systems. These languages are known as pre-web or prehistoric, indicating their origin as being before the advent of the World-Wide-Web.
| Computer Languages | | Pre-Web (prehistoric) | Post-Web | | C,C++ | HTML | | Pascal | Java | | Fortran | Javascript | | Basic | H2O | | Ada | HTML/OS | | Cobol | | |
With the birth of the World-Wide-Web, languages became divorced from hardware. HTML was the first. Java was the second. Perl is another. The World-Wide-Web gave programmers a non-proprietary way of looking at computing.
Many languages adapted to the non-proprietary nature of the World-Wide Web. Others resisted. Microsoft products retained their connection with OLE, the function set that locks programmers to Microsoft operating systems. Microsoft has yet to produce a single web-centric language. Their relentless attempts to convert the web model into a Microsoft-proprietary system is considered marketing genius by some and heresy by others. Either way, it leaves programmers in the cold.
Furthermore, other languages do little to embrace the web model. Perl and Java, for example, have no underlying connection to HTML. Collectively, this lack of support for the web motivated the creation of H2O.
The H2O language resulted from the need for a truly web-centric programming language. The design goals of H2O, along with a description of each, is listed below.
Familiar Primary characteristics of the H2O programming language include a functional, non-object-oriented language that can be programmed without extensive programmer training. The fundamental concepts of H2O are grasped quickly; programmers can be productive from the very beginning.
The H2O programming language is designed to be easy to use and learn from the ground up. To function within increasingly complex network-based environments, programming systems must adopt easy-to-use and easy-to-learn approaches.
High Level H2O is a high-level functional language like Basic, Fortran or the macro languages you find in spreadsheets. This was required because HTML is interpreted, thus requiring H2O be too. If it were not high-level it could not be fast. Languages such as Perl and Java, both of which are low-level interpreted, suffer accordingly in their performance.
High-level languages have other benefits too. For one, they are easier to learn and they can take advantage of high-level routines that have been optimized. Such optimization is not available in low-level interpreted languages, but must be painstakingly created by the programmer.
Security by Default The H2O programming language is designed to be secure by default. This is not possible when integration with HTML is not a part of the language. Web applications built with Perl, PhP, and ASP place the burden of security on the programmer. Unfortunately, the programmer does not always have the ability to keep up on the latest security measures, especially when the programmer is asked to utilize multiple tools in the course of building their web application.
Automatic Memory Allocation and Garbage Collection H2O manages the memory used in applications automatically. The engine allocates and frees memory internally, freeing the programmer from having to manage such tasks. Memory issues commonly bedevil C and C++ programmers. With H2O these kinds of problems do not exist.
Architecture-Neutral and Portable H2O technology is designed to support applications that will be deployed into heterogeneous network environments. In such environments, applications must be capable of executing on a variety of hardware architectures. Within this variety of hardware platforms, applications must execute atop a variety of operating systems. To accommodate the diversity of operating environments, H2O applications stay in HTML -- an architecture-neutral intermediate format designed to transport code efficiently to multiple hardware and software platforms. The interpreted nature of HTML containing H2O code solves both the binary distribution problem and the version problem; the same H2O programming language code runs on any platform. Architecture neutrality is just one part of a truly portable system. H2O technology takes portability a stage further by being strict in its definition of the basic language. H2O programs are the same on every platform -- there is no variation in the language across hardware and software architectures.
The architecture-neutral and portable language platform of H2O technology surpasses that found in previous languages. The H2O programming language is written for a virtual machine. Aestiva provides versions of that virtual machine, the H2O engine, for all the web's popular hardware platforms.
High Performance The H2O platform achieves superior performance because it is high-level and optimized. The H2O engine runs at full speed without needing to perform unnecessary checking. Since H2O is high-level, the amount of code interpreted in a single page request is rarely high. Complex web pages can be processed in as little as 15 milliseconds -- delivering performances similar to compiled C or C++ applications.
Applications requiring large amounts of computing power can be designed such that computing-intensive sections can be rewritten in native machine code as required and interfaced with the H2O platform. In general, however, applications stay inside H2O since H2O is fast and efficient. |
|