Content deleted Content added
GNU is the Operating System |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(8 intermediate revisions by 8 users not shown) | |||
Line 1:
{{Short description|None}}
{{Infobox programming language
| name = ECL
Line 12 ⟶ 13:
| influenced_by = [[Prolog]], [[Pascal (programming language)|Pascal]], [[SQL]], [[Snobol4]], [[C++]], [[Clarion (programming language)|Clarion]]
| influenced =
| operating_system =
| license =
| website = http://hpccsystems.com/
}}
'''ECL''' (Enterprise Control Language) is a declarative, data
== History ==
Line 23 ⟶ 24:
== Language constructs ==
ECL, at least in its purest form, is a declarative, data
=== Hello world ===
Line 30 ⟶ 31:
Perhaps a more flavorful example would take a list of strings, sort them into order, and then return that as a result instead.
<
// First declare a dataset with one column containing a list of strings
// Datasets can also be binary, CSV, XML or externally defined structures
Line 37 ⟶ 38:
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: "bottom to top"
Line 44 ⟶ 45:
What is an SD?
<
SD := SORT(D,Value);
</syntaxhighlight>
SD is a D that has been sorted by ‘Value’
What is a D?
<
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 primitives ===
ECL primitives that act upon datasets include
=== ECL encapsulation ===
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 ===
Line 65 ⟶ 66:
=== Comparison to Map-Reduce ===
The Hadoop Map-Reduce paradigm
{| class="wikitable"
|-
Line 78 ⟶ 79:
| SHUFFLE (Phase 1)
| DISTRIBUTE(,HASH(KeyValue))
| The records from the mapper are distributed
|-
| SHUFFLE (Phase 2)
Line 86 ⟶ 87:
| REDUCE
| ROLLUP(,Key,LOCAL)
| The records for a particular KEY value are now combined
|}
Line 95 ⟶ 96:
== 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 }}
* [https://www.nytimes.com/2008/02/21/technology/21iht-reed.4.10279549.html Reed Elsevier to acquire ChoicePoint for $3.6 billion]
* [https://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]]
|