Measures Concepts
GitHub icon

ECL

ECL - Programming language

< >

ECL is a programming language created in 2000.

Source code:
git clone https://github.com/hpcc-systems/HPCC-Platform
#318on PLDB 24Years Old 234Repos

ECL is a declarative, data centric programming language designed in 2000 to allow a team of programmers to process big data across a high performance computing cluster without the programmer being involved in many of the lower level, imperative decisions.. Read more on Wikipedia...


Example from Linguist:
/* * Multi-line comment */ #option ('slidingJoins', true); namesRecord := RECORD string20 surname; string10 forename; integer2 age; integer2 dadAge; integer2 mumAge; END; namesRecord2 := record string10 extra; namesRecord; end; namesTable := dataset('x',namesRecord,FLAT); namesTable2 := dataset('y',namesRecord2,FLAT); integer2 aveAgeL(namesRecord l) := (l.dadAge+l.mumAge)/2; integer2 aveAgeR(namesRecord2 r) := (r.dadAge+r.mumAge)/2; // Standard join on a function of left and right output(join(namesTable, namesTable2, aveAgeL(left) = aveAgeR(right))); //Several simple examples of sliding join syntax output(join(namesTable, namesTable2, left.age >= right.age - 10 and left.age <= right.age +10)); output(join(namesTable, namesTable2, left.age between right.age - 10 and right.age +10)); output(join(namesTable, namesTable2, left.age between right.age + 10 and right.age +30)); output(join(namesTable, namesTable2, left.age between (right.age + 20) - 10 and (right.age +20) + 10)); output(join(namesTable, namesTable2, aveAgeL(left) between aveAgeR(right)+10 and aveAgeR(right)+40)); //Same, but on strings. Also includes age to ensure sort is done by non-sliding before sliding. output(join(namesTable, namesTable2, left.surname between right.surname[1..10]+'AAAAAAAAAA' and right.surname[1..10]+'ZZZZZZZZZZ' and left.age=right.age)); output(join(namesTable, namesTable2, left.surname between right.surname[1..10]+'AAAAAAAAAA' and right.surname[1..10]+'ZZZZZZZZZZ' and left.age=right.age,all)); //This should not generate a self join output(join(namesTable, namesTable, left.age between right.age - 10 and right.age +10));
Example from Wikipedia:
D := DATASET([{'ECL'},{'Declarative'},{'Data'},{'Centric'},{'Programming'},{'Language'}],{STRING Value;});

Language features

Feature Supported Token Example
MultiLine Comments ✓ /* */
/* A comment
*/
Line Comments ✓ //
// A comment
Comments ✓
Semantic Indentation X

View source

- Build the next great programming language · Search · Add Language · Features · Creators · Resources · About · Blog · Acknowledgements · Queries · Stats · Sponsor · Day 605 · feedback@pldb.io · Logout