Curl (programmeertaal) - Curl (programming language)
| Paradigma | multi-paradigma : objectgeoriënteerd , markup |
|---|---|
| Ontworpen door | Steve Ward , MIT |
| Ontwikkelaar | Curl, Inc., Sumisho Computer Systems Corp., SCSK Corporation |
| Verscheen voor het eerst | 1998 |
| Stabiele vrijlating | 8.0.10 / 30 augustus 2019
|
| Typediscipline | sterk |
| OS | Linux , MacOS , Windows |
| Website | www |
| dialecten | |
| geen | |
| Beïnvloed door | |
| HTML , JavaScript , Lisp | |
| |
Curl is een reflecterende objectgeoriënteerde programmeertaal voor interactieve webapplicaties met als doel een soepelere overgang tussen formatteren en programmeren te bieden. Het maakt het mogelijk om complexe objecten in eenvoudige documenten in te bedden zonder te hoeven schakelen tussen programmeertalen of ontwikkelplatforms. De Curl-implementatie bestond aanvankelijk uit slechts een interpreter, maar later werd een compiler toegevoegd.
Curl combineert tekstopmaak (zoals in HTML ), scripting (zoals in JavaScript ) en heavy-duty computing (zoals in Java , C# of C++ ) binnen één uniform raamwerk. Het wordt gebruikt in een reeks interne bedrijfs-, B2B- en B2C- toepassingen.
Curl-programma's kunnen worden gecompileerd tot Curl-applets, die worden bekeken met behulp van de Curl RTE, een runtime-omgeving met een plug-in voor webbrowsers . Momenteel wordt het ondersteund op Microsoft Windows . Linux en macOS zijn op 25 maart 2019 verwijderd (vanaf versie 8.0.8). Curl ondersteunt "losstaande applets" , een op het web geïmplementeerde applet die onafhankelijk van een browservenster op het bureaublad van de gebruiker wordt uitgevoerd, net als in Silverlight 3 en Adobe AIR .
architectuur
De Curl-taal probeert een al lang bestaand probleem aan te pakken: de verschillende bouwstenen waaruit elk modern webdocument bestaat, vereisen meestal totaal verschillende implementatiemethoden: verschillende talen, verschillende tools, verschillende frameworks, vaak totaal verschillende teams. De laatste - en vaak moeilijkste - hindernis was om al deze blokken op een consistente manier met elkaar te laten communiceren. Curl probeert deze problemen te omzeilen door een consistente syntactische en semantische interface te bieden op alle niveaus van het maken van webinhoud: van eenvoudige HTML tot complexe objectgeoriënteerde programmering .
Curl is een opmaaktaal zoals HTML, dat wil zeggen dat platte tekst wordt weergegeven als tekst; tegelijkertijd bevat Curl een objectgeoriënteerde programmeertaal die meerdere overerving ondersteunt . Curl-toepassingen zijn niet verplicht om de scheiding van informatie, stijl en gedrag te observeren die HTML, Cascading Style Sheets (CSS) en JavaScript hebben opgelegd, hoewel die programmeerstijl desgewenst in Curl kan worden gebruikt.
Hoewel de Curl-taal kan worden gebruikt als HTML-vervanging voor het presenteren van opgemaakte tekst, variëren de mogelijkheden ervan helemaal tot die van een gecompileerde, sterk getypte, objectgeoriënteerde systeemprogrammeertaal. Zowel de authoring (HTML-niveau) als de programmeerconstructies van Curl kunnen worden uitgebreid in gebruikerscode. De taal is zo ontworpen dat Curl-applicaties door een just-in-time compiler kunnen worden gecompileerd tot native code van de clientcomputer en op hoge snelheid kunnen worden uitgevoerd. Curl-applets kunnen ook zo worden geschreven dat ze offline werken wanneer ze zijn losgekoppeld van het netwerk ( af en toe aangesloten computergebruik ). In feite is de Curl IDE een applicatie geschreven in Curl.
Syntaxis
Een eenvoudige Curl-applet voor HelloWorld zou kunnen zijn
{Curl 7.0, 8.0 applet}
{text
color = "blue",
font-size = 16pt,
Hello World}
Deze code wordt uitgevoerd als de gebruiker ten minste één van de Curl-versies 7.0 of 8.0 heeft geïnstalleerd.
Curl biedt naast anonieme procedures en benoemde methoden zowel macro's als tekstprocedures. Een alternatief voor het gebruik van de tekst-procedure paragraaf zou zijn:
{paragraph
paragraph-left-indent=0.5in,
{text color = "red", font-size = 12pt,
Hello}
{text color = "green", font-size = 12pt,
World}}
Onlangs is deze stijl van lay-out door "bouwers" overgenomen in de Groovy- taal voor de JVM, maar is ook bekend bij gebruikers van CSS of Tcl/Tk. De meeste functies voor webapplicaties die nu zijn geïmplementeerd via combinaties van JavaScript-bibliotheken + HTML + CSS zijn al te vinden in de Curl-taal, inclusief functies die gewoonlijk worden geassocieerd met Prototype + script.aculo.us , zoals accordeonpanelen.
Curl stelt callbacks in op de manier die ook door Groovy wordt gebruikt:
{CommandButton width=100pt,
height = 50pt,
label = {center {bold Invokes an event handler when clicked}},
control-color = "orange",
|| Attach the following event handler to this CommandButton
{on Action do
{popup-message
title = "Your Message",
"This is a user message dialog."
}
}}
Curl-opmerkingen gebruiken de verticale balk in verschillende variaties. De eenvoudigste is als volgt:
{text A comment can be on a line by itself,
|| A comment on a line by itself
or it can be at the end || A comment on the same line as code
of a line.}
Krullen als lichtgewicht opmaak
Omdat Curl zowel door de gebruiker gedefinieerde tekstprocedures als stylesheets biedt, kan Curl gemakkelijk worden gebruikt als domeinspecifieke lichtgewicht opmaak. Een groot voordeel ten opzichte van HTML-opmaak in platte tekst is dat de tekstcodering kan worden ingesteld op UTF-8 en dat tekst kan worden ingevoerd in een Unicode-editor zonder ontsnapping van tekens (zoals JavaScript, Curl is Unicode-vriendelijk). Een voorbeeld van poëzie zou zijn:
{poem || wraps entire poem
{stanza || first verse here in any language
}
{stanza || another verse here in any language
}
}
die in eerste instantie kan worden geïmplementeerd door de opmaak van het gedicht en de strofe te definiëren als alineatekstindeling. Stanza zou verder kunnen worden verfijnd om een verborgen navigatieanker voor paginanavigatie op te nemen met behulp van de Curl {destination} die zelf een tekstprocedure is.
Dezelfde opmaak kan voor verschillende resultaten worden gebruikt, omdat men tekst zo kan opmaken dat deze in de ene context zichtbaar is en in een andere onzichtbaar. Curl maakt ook opname van bestanden op het hoogste niveau mogelijk, zodat een brontekst in opmaak kan worden opgenomen in verschillende bovenliggende bestanden. In het onderwijs zou men bijvoorbeeld een bronbestand met toetsvragen kunnen maken en dit in zowel een leerling- als een docentversie van de tekst kunnen opnemen.
Zie ook
- Homoiconiciteit : Curl is zowel een programmeertaal als een gegevensformaat
Referenties
Externe links
- MIT Curl Project , de resultaten van het Curl-onderzoeksproject bij MIT's Laboratory for Computer Science.
- Curl, Inc. en Curl International Corp. ontwikkelen en distribueren een reeks commerciële producten die gebaseerd zijn op de resultaten van het MIT-onderzoek. Eigendom van SCSK Corporation, een meerderheidsbelang van Sumitomo Corp.
- InfoWorld-recensie van Curl 6.0 door Martin Heller. InfoWorld heeft Curl de prijs Technologie van het Jaar 2008 toegekend in de categorie Rich Internet Application .