Opa

Opa
Page d'aide sur l'homonymie Pour les articles homonymes, voir OPA.
Opa
Opa-logo-orange.png

Apparu en 2010 (Première citation), 2011 (Release open source)
Auteur MLstate
Dernière version stable Build 28888 (le 6 juin 2011)[+/−]
Paradigme multiparadigme : impérative, fonctionnelle
Typage Fort, statique
Influencé par OCaml
Système d'exploitation Linux, MacOSX
Licence Affero GPL
Site web opalang.org

Opa est un langage de programmation d'applications et services web utilisable sous licence Affero GPL ou sous licence privée.

Philosophie

Opa est une technologie de développement d’applications Web distribuées. C’est un nouveau langage de programmation fortement couplé à une bibliothèque Web standard qui remplit toutes les fonctions : de serveur d’applications Web, à serveur de base de données.

En un mot, Opa ne dépend pas des piles serveurs actuelles, comme par exemple Apache plus PHP plus MySQL plus Symfony. Un code source Opa est compilé en un binaire autonome du service, qui se contente d’une distribution GNU/Linux nue (même MiniLinux) pour l’exécution.

Opa est spécialement conçu pour le Web et spécifie l’ensemble des aspects de l’application :

  • le code client comme le code serveur sont écrits en Opa : le compilateur détermine automatiquement les parties client et serveur (des annotations existent pour lui forcer la main), traduit le code client en JavaScript et automatise les échanges entre client et serveur ;
  • la structure de la base de données et les requêtes sont également écrites en Opa : là aussi, le compilateur analyse les requêtes pendant la compilation et génère le code d’accès aux données.

Exemple de code

L'exemple ci-dessous est le code complet d'un webchat minimal en Opa.

/**
 * Le type des messages échangés sur la chatroom
 */
type message = 
  { author: string // Le nom de l'auteur
  ; text: string }   // Le texte du message
 
/**
 * Le principal "objet" : la room des messages
 */
@publish room = Network.cloud("room"): Network.network(message)
 
/**
 * Mise à jour de l'interface d'un utilisateur lors de l'arrivée d'un nouveau message
 *
 * @param x Le message
 */
user_update(x: message) =
  line = <div class="line">
            <div class="user">{x.author}:</div>
            <div class="message">{x.text}</div>
         </div>
  do Dom.transform([#conversation +<- line ])
  Dom.scroll_to_bottom(#conversation)
 
/**
 * Broadcast un message sur la room
 *
 * Lit le contenu de [#entry], envoie le message à [room] puis efface [#entry].
 *
 * @param author
 */
broadcast(author) =
   do Network.broadcast({~author text=Dom.get_value(#entry)}, room)
   Dom.clear_value(#entry)
 
/**
 * Construit l'interface client
 *
 * Choisit aléatoirement un nom d'auteur qui sera utilisé dans le chat
 *
 * @return L'interface utilisateur, envoyée par le serveur lors de la connexion d'un client.
 */
start() =
   author = Random.string(8)
   <div id=#header><div id=#logo></div></div>
   <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></div>
   <div id=#footer>
        <input id=#entry  onnewline={_ -> broadcast(author)}/>
        <div class="button" onclick={_ -> broadcast(author)}>Post</div>
   </div>
 
/**
 * Programme principal
 *
 * Construit une application "Chat" (sera également le titre de la page),
 * inclut statiquement le répertoire "resources" qui contient CSS et images du style
 * et appelle la fonction [start] définie précédemment dès qu'un client se connecte.
 */
server = Server.one_page_bundle("Chat",
       [@static_resource_directory("resources")],
       ["resources/css.css"], start)

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Opa de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • OPA — may refer to: Contents 1 Computer Science 2 German 3 Government 4 International agreements 5 Laws …   Wikipedia

  • OPA! — Single by Giorgos Alkaios Released 26 February 2010 (2010 02 26) (see …   Wikipedia

  • Opa — locka, FL U.S. city in Florida Population (2000): 14951 Housing Units (2000): 5407 Land area (2000): 4.331271 sq. miles (11.217941 sq. km) Water area (2000): 0.143434 sq. miles (0.371492 sq. km) Total area (2000): 4.474705 sq. miles (11.589433 sq …   StarDict's U.S. Gazetteer Places

  • Opa, FL — Opa locka, FL U.S. city in Florida Population (2000): 14951 Housing Units (2000): 5407 Land area (2000): 4.331271 sq. miles (11.217941 sq. km) Water area (2000): 0.143434 sq. miles (0.371492 sq. km) Total area (2000): 4.474705 sq. miles… …   StarDict's U.S. Gazetteer Places

  • opa — opa·cate; opa·cim·e·ter; opa·cous; opa·ka·pa·ka; opa·li·na; opa·ta; opa·linid; …   English syllables

  • OPA — bezeichnet: den Großvater, siehe Großeltern einen Ort und Suco in Osttimor, Subdistrikt Lolotoe, siehe Opa (Lolotoe) Opa oder OPA steht als Abkürzung für: Offenporiger Asphalt Office Product Activation, ein Verfahren der Software Lizenzierung,… …   Deutsch Wikipedia

  • Opa — bezeichnet: den Großvater, siehe Großeltern einen älteren Mann einen Ort und Suco in Osttimor, Subdistrikt Lolotoe, siehe Opa (Lolotoe) den Sänger der Band Kapelle Petra eine Programmiersprache speziell für Cloud Anwendungen Opa oder OPA steht… …   Deutsch Wikipedia

  • Opa — Opa( Oppa)m 1.Großvater.Kindersprachlichzusammengezogenaus»Großpapa«.1870ff. 2.ältererMann.1930ff. 3.Volkssturmmann.ZumVolkssturmwurdenvorwiegenddieälterenMännereingezogen.Sold1944ff. 3a.Klassenwiederholer.1970ff.… …   Wörterbuch der deutschen Umgangssprache

  • OPA — sustantivo femenino 1. Área: economía Sigla de Oferta Pública de Adquisición , España: Un banco ha lanzado una OPA contra otro …   Diccionario Salamanca de la Lengua Española

  • ¡opa! — ¡opa!2 interj. ¡Aúpa! …   Enciclopedia Universal

  • OPA — sigla Offerta Pubblica di Acquisto …   Dizionario italiano

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”