Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispi ...
-like
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
by
Manuel Serrano
Manuel may refer to:
People
* Manuel (name)
* Manuel (Fawlty Towers), a fictional character from the sitcom ''Fawlty Towers''
* Charlie Manuel, manager of the Philadelphia Phillies
* Manuel I Komnenos, emperor of the Byzantine Empire
* Manu ...
for
web 2.0
Web 2.0 (also known as participative (or participatory) web and social web) refers to websites that emphasize user-generated content, ease of use, participatory culture and interoperability (i.e., compatibility with other products, systems, and ...
server
Server may refer to:
Computing
*Server (computing), a computer program or a device that provides functionality for other programs or devices, called clients
Role
* Waiting staff, those who work at a restaurant or a bar attending customers and su ...
and
proxy
Proxy may refer to:
* Proxy or agent (law), a substitute authorized to act for another entity or a document which authorizes the agent so to act
* Proxy (climate), a measured variable used to infer the value of a variable of interest in climate re ...
) that implements this language. It is written in Bigloo
Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
. It is a project funded by
INRIA
The National Institute for Research in Digital Science and Technology (Inria) () is a French national research institution focusing on computer science and applied mathematics.
It was created under the name ''Institut de recherche en informatiq ...
.
Language design
Hop is a stratified language, which means that a single program file contains instructions for both the server and the client. The server executes CPU demanding computations and operations that require system privileges for accessing files or other resources. The clients (of which there may be many such as browsers, cell phones, etc.) are dedicated to executing actions related to the programming of the graphical user interfaces.
(define-service (server-date) ;1
(current-date)) ;2
( ;4
(
The code snippet above illustrates a few concepts.
* The 8 lines of code define a complete program. Lines 1 and 2 result in a service definition on the server. Lines 4 through 8 result in an HTML page complete with javascript functions. It instructs a client (browser) to display a button with the label "Server time" and to send a request to the server when the user clicks on the button. Hop automatically generates all the instructions needed for the communication between the client and the server.
* Hop is based on Scheme. Therefore a Hop program is essentially a list of words and/or lists that start and end with parentheses. For example "(HTML content)". "HTML" is the function name and "content" is the function parameter.
* Function names in Hop may contain characters other than letters and numbers. For example "" is a valid name. Therefore the syntax of Hop looks very similar to HTML (by design). The Hop expression "( content)" is similar to the HTML expression "content".
* HTML parameters start with a colon; for example ":onclick".
* The $ character in "$server-date" indicates that the server should substitute the variable name "server-date" with the variable's value before sending the HTML to the client. This is very similar to how ASP and JSP work.
* The ~ character in ":onclick ~(...)" indicates that the client should process what is between the parentheses.
* The "with-hop" function in "(with-hop (...) (...))" is a special function that delegates work to the server and takes two parameters. The first parameter contains the request the client should send to the server asynchronously. The second parameter contains the callback function that the client should invoke when the response arrives from the server. "(lambda (h) (alert h))" is an anonymous function that takes a single input parameter "(h)", which contains the server response when the function is called. "(alert h)" is the function body.
Issues
Given its recent introduction, Hop currently exhibits a number of weaknesses.
* Security is weak. It is an area of active researchYoutube HOP: A Language for Programming the Web 2.0 starting at 33:50.
* Network failures are currently handled through manually coded time-out and exception routines, this approach is labor-intensive and relatively unreliable.