An Entity of Type: language, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

Ur also called Ur/Web is a free and open-source functional programming language specific for web development, created by at the Massachusetts Institute of Technology that from a single program produces server code, browser client code and SQL code specific for the chosen database backend. Ur supports a powerful kind of metaprogramming based on row types. This type safety is just the foundation of the Ur/Web methodology. It is also possible to use metaprogramming to build significant application pieces by analysis of type structure. The implementation of all this is open source.

Property Value
dbo:abstract
  • Ur també anomenat Ur/Web és un llenguatge de programació, d'àmbit d'aplicació específic per desenvolupar aplicacions web, creat per a l'Institut Tecnològic de Massachusetts, que partint d'un únic programa, genera HTML amb codi client en JavaScript, codi nadiu per al servidor, i codi SQL per al sistema gestor de base de dades. Fa un ús extensiu dels registres, que converteix en estructures travessables, assegurant l'encaix de l'estructura dels formularis amb la dels gestors al servidor i proporciona un "Mapatge d'objectes relacional" integrat en el codi per la correcta generació de l'SQL. La sintaxi es basa en la del llenguatge ML Estàndard incorporant conceptes del llenguatge Haskell. Exemple de programa amb formulari que interactua amb el servidor, encapsulant la comunicació Ajax XMLHttpRequest en la crida rpc. datatype list t = Nil | Cons of t * list ttable t : { Id : int, A : string } PRIMARY KEY Id(* accions de servidor cridades via Ajax per "rpc" més avall *)fun add id s = dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]})) (* plantilla de codi SQL *)fun del id = dml (DELETE FROM t WHERE t.Id = {[id]})fun lookup id = ro <- oneOrNoRows (SELECT t.A FROM t WHERE t.Id = {[id]}); case ro of None => return None | Some r => return (Some r.T.A)(* "check" cridat des de "onclick", serà compilat a JavaScript *)fun check ls = case ls of Nil => return | Cons (id, ls') => ao <- rpc <| lookup id; alert (case ao of None => "Fi" | Some a => a); check ls'fun main = idAdd <- source ""; aAdd <- source ""; idDel <- source ""; return <xml><body> <button value="Check values of 1, 2, and 3" onclick={fn _ => let val llista = 1 :: 2 :: 3 :: [] in check llista end}/><br/> <br/> <button value="Add" onclick={fn _ => id <- get idAdd; a <- get aAdd; let rpc <| add intId a where val intId = readError id end}/> <ctextbox source={idAdd}/> <ctextbox source={aAdd}/><br/> <br/> <button value="Delete" onclick={fn _ => id <- get idDel; let rpc <| del intId where val intId = readError id end}/> <ctextbox source={idDel}/> body>xml> (ca)
  • Ur also called Ur/Web is a free and open-source functional programming language specific for web development, created by at the Massachusetts Institute of Technology that from a single program produces server code, browser client code and SQL code specific for the chosen database backend. Ur supports a powerful kind of metaprogramming based on row types. Ur/Web is Ur plus a special standard library and associated rules for parsing and optimization. Ur/Web supports construction of dynamic web applications backed by SQL databases. The signature of the standard library is such that well-typed Ur/Web programs "don't go wrong" in a very broad sense. Not only do they not crash during particular page generations, but they also may not: * Suffer from any kinds of code injection attacks * Return invalid HTML * Contain dead intra-application links * Have mismatches between HTML forms and the fields expected by their handlers * Include client-side code that makes incorrect assumptions about the "AJAX"-style services that the remote web server provides * Attempt invalid SQL queries * Use improper marshaling or unmarshaling in communication with SQL databases or between browsers and web servers This type safety is just the foundation of the Ur/Web methodology. It is also possible to use metaprogramming to build significant application pieces by analysis of type structure. The Ur/Web compiler also produces very efficient object code that does not use garbage collection. The implementation of all this is open source. SQL syntax templates embedded in the language facilitate the handling of tables. Although the syntax is based on Standard ML the language includes concepts from Haskell with additional type manipulation. Ajax call/response is serialized through a monad called transaction (corresponds to Haskell's IO) and its marshalling and decoding is encapsulated in the rpc function. The browser client side includes functional reactive programming facilities using the (source a) type and a signal monad. Ur/Web not only makes web applications easier to write, it also makes them more secure. "Let's say you want to have a calendar widget on your web page, and you're going to use a library that provides the calendar widget, and on the same page there's also an advertisement box that's based on code that's provided by the ad network," Chlipala said. "What you don't want is for the ad network to be able to change how the calendar works or the author of the calendar code to be able to interfere with delivering the ads." (en)
  • Ur也叫作Ur/Web,是一个自由和开源的函数式编程语言,专门用于web开发,由Adam Chlipala在麻省理工学院创建,它从一个单一的程序产生服务器代码、web浏览器客户端代码、和特定于选择的数据库后端的SQL代码。 (zh)
dbo:designer
dbo:influencedBy
dbo:latestReleaseDate
  • 2020-02-09 (xsd:date)
dbo:latestReleaseVersion
  • 20200209 release
dbo:license
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 44948462 (xsd:integer)
dbo:wikiPageLength
  • 11835 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1055174962 (xsd:integer)
dbo:wikiPageWikiLink
dbp:align
  • right (en)
dbp:designer
  • Adam Chlipala (en)
dbp:family
dbp:fileExt
  • .ur, .urs, .urp (en)
dbp:influencedBy
dbp:latestReleaseDate
  • 2020-02-09 (xsd:date)
dbp:latestReleaseVersion
  • 20200209 (xsd:integer)
dbp:license
  • open source (en)
dbp:name
  • Ur, Ur/Web (en)
dbp:paradigms
dbp:platform
dbp:quote
  • Ur/Web not only makes web applications easier to write, it also makes them more secure. "Let's say you want to have a calendar widget on your web page, and you're going to use a library that provides the calendar widget, and on the same page there's also an advertisement box that's based on code that's provided by the ad network," Chlipala said. "What you don't want is for the ad network to be able to change how the calendar works or the author of the calendar code to be able to interfere with delivering the ads." (en)
dbp:released
  • December 2014 (en)
dbp:title
  • The Ur Programming Language Family (en)
dbp:width
  • 50.0
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • Ur也叫作Ur/Web,是一个自由和开源的函数式编程语言,专门用于web开发,由Adam Chlipala在麻省理工学院创建,它从一个单一的程序产生服务器代码、web浏览器客户端代码、和特定于选择的数据库后端的SQL代码。 (zh)
  • Ur també anomenat Ur/Web és un llenguatge de programació, d'àmbit d'aplicació específic per desenvolupar aplicacions web, creat per a l'Institut Tecnològic de Massachusetts, que partint d'un únic programa, genera HTML amb codi client en JavaScript, codi nadiu per al servidor, i codi SQL per al sistema gestor de base de dades. Fa un ús extensiu dels registres, que converteix en estructures travessables, assegurant l'encaix de l'estructura dels formularis amb la dels gestors al servidor i proporciona un "Mapatge d'objectes relacional" integrat en el codi per la correcta generació de l'SQL. (ca)
  • Ur also called Ur/Web is a free and open-source functional programming language specific for web development, created by at the Massachusetts Institute of Technology that from a single program produces server code, browser client code and SQL code specific for the chosen database backend. Ur supports a powerful kind of metaprogramming based on row types. This type safety is just the foundation of the Ur/Web methodology. It is also possible to use metaprogramming to build significant application pieces by analysis of type structure. The implementation of all this is open source. (en)
rdfs:label
  • Ur (llenguatge de programació) (ca)
  • Ur (programming language) (en)
  • Ur (编程语言) (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
foaf:name
  • Ur, Ur/Web (en)
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License