Content deleted Content added
This article appears to be factually accurate. |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(43 intermediate revisions by 32 users not shown) | |||
Line 1:
{{Short description|None}}
{{Infobox programming language
| name
| developer = [[HPCC|HPCC Systems®]], LexisNexis Risk Solutions
| logo =
| paradigm
| typing
|
| year
| designer
| latest release version =
| latest release date
| influenced_by
| influenced
| operating_system
| license
| website
}}
'''ECL''' (Enterprise Control Language) is a declarative, data
== History ==
ECL was initially designed and developed in 2000 by David Bayliss as an in-house productivity tool within [[Lexis-Nexis|Seisint Inc]] and was considered to be a ‘secret weapon’ that allowed
ECL, at least in its purest form, is a declarative, data
▲== Language Constructs ==
▲ECL, at least in its purest form, is a declarative, data centric language. Programs, in the strictest sense, do not exist. Rather an ECL application will specify a number of core datasets (or data values) and then the operations which are to be performed on those values.
=== Hello world ===
ECL is to have succinct solutions to problems and sensible defaults. The
'Hello World'
Perhaps a more flavorful example would take a list of strings, sort them into order, and then return that as a result instead.
<syntaxhighlight lang="ecl">
// First declare a dataset with one column containing a list of strings
// Datasets can also be binary,
D := DATASET([{'ECL'},{'Declarative'},{'Data'},{'Centric'},{'Programming'},{'Language'}],{STRING Value;});
SD := SORT(D,Value);
output(SD)
</syntaxhighlight>
The statements containing a <code>:=</code> are defined in ECL as attribute definitions. They do not denote an action; rather a definition of a term. Thus, logically, an ECL program can be read:
OUTPUT(SD)
What is an SD?
<syntaxhighlight lang="ecl">
SD := SORT(D,Value);
</syntaxhighlight>
SD is a D that has been sorted by ‘Value’
What is a D?
<syntaxhighlight lang="ecl">
D := DATASET([{'ECL'},{'Declarative'},{'Data'},{'Centric'},{'Programming'},{'Language'}],{STRING Value;});
</syntaxhighlight>
D is a dataset with one column labeled ‘Value’ and containing the following list of data.
=== ECL
ECL primitives that act upon datasets include
=== ECL
Whilst ECL is terse and LexisNexis claims that 1 line of ECL is roughly equivalent to 120 lines of C++, it still has significant support for large scale programming including data encapsulation and code re-use. The constructs available include
=== Support for Parallelism in ECL ===
In the [[HPCC]] implementation, by default, most ECL constructs will execute in parallel across the hardware being used. Many of the primitives also have a LOCAL option to specify that the operation is to occur locally on each node.
=== Comparison to Map-Reduce ===
The Hadoop Map-Reduce paradigm
{| class="wikitable
|-
! Hadoop Name/Term
Line 74 ⟶ 73:
! Comments
|-
|-
|-
|-
|}
Line 96 ⟶ 95:
== External links ==
* [http://rosettacode.org/wiki/ECL Rosetta Code ECL category]
* [https://hpccsystems.com/training/documentation/ecl-language-reference/html ECL Language Reference] {{Webarchive|url=https://web.archive.org/web/20210116135748/https://hpccsystems.com/training/documentation/ecl-language-reference/html |date=2021-01-16 }}
* [http://www.bloomberg.com/apps/news?pid=newsarchive&sid=aBuqYZDOSPL4&refer=uk Reed Elsevier's LexisNexis Buys Seisint for $775 Mln]▼
* [
▲* [
* [https://archive.today/20130201091208/http://www.reuters.com/finance/stocks/keyDevelopments?symbol=ENL&pn=15 Reed Elsevier]
[[Category:Declarative programming languages]]
[[Category:Data-centric programming languages]]
[[Category:Big data]]
[[Category:Statically typed programming languages]]
|