Articulo de referencia

ECL (lenguaje de programación centrado en datos)

ECL (Enterprise Control Language) es un lenguaje de programación declarativo y centrado en datos, diseñado en 2000 para permitir que un equipo de programadores procese grandes v...

ECL (Enterprise Control Language) es un lenguaje de programación declarativo y centrado en datos, diseñado en 2000 para permitir que un equipo de programadores procese grandes volúmenes de datos en un clúster de computación de alto rendimiento sin que el programador participe en muchas de las decisiones imperativas de bajo nivel. [ 1 ] [ 2 ]

Historia

ECL fue diseñado y desarrollado inicialmente en 2000 por David Bayliss como una herramienta interna de productividad dentro de Seisint Inc. y se consideró un "arma secreta" que permitió a Seisint ganar cuota de mercado en su negocio de datos. Equifax tenía un proceso basado en SQL para predecir quién se declararía en quiebra en los próximos 30 días, pero tardaba 26 días en procesar los datos. La primera implementación de ECL resolvió el mismo problema en 6 minutos. La tecnología fue citada como un factor clave en la adquisición de Seisint por LexisNexis y, posteriormente, como una importante fuente de sinergias cuando LexisNexis adquirió ChoicePoint Inc. [ 3 ]

Construcciones del lenguaje

ECL, al menos en su forma más pura, es un lenguaje declarativo centrado en datos. Los programas, en el sentido estricto, no existen. En cambio, una aplicación ECL especifica una serie de conjuntos de datos principales (o valores de datos) y, a continuación, las operaciones que se realizarán sobre dichos valores.

Hola Mundo

ECL se caracteriza por ofrecer soluciones concisas a los problemas y valores predeterminados sensatos. El programa "Hola Mundo" es particularmente breve:

'Hola Mundo'

Quizás un ejemplo más interesante sería tomar una lista de cadenas de texto, ordenarlas y luego devolver ese resultado.

// Primero, declara un conjunto de datos con una columna que contenga una lista de cadenas . // Los conjuntos de datos también pueden ser binarios, CSV, XML o estructuras definidas externamente.D := DATASET ([{ 'ECL' },{ 'Declarative' },{ 'Data' },{ 'Centric' },{ 'Programming' },{ 'Language' }],{ STRING Value ;}); SD := SORT ( D , Value ); output ( SD )

Las sentencias que contienen una "a" :=se definen en ECL como definiciones de atributos. No denotan una acción, sino la definición de un término. Por lo tanto, lógicamente, un programa ECL se puede leer de abajo hacia arriba.

SALIDA(SD)

¿Qué es un SD?

SD := ORDENAR ( D , Valor );

SD es una D que ha sido ordenada por 'Valor'.

¿Qué es una D?

D := CONJUNTO DE DATOS ([{ 'ECL' },{ 'Declarativo' },{ 'Datos' },{ 'Centro' },{ 'Programación' },{ 'Lenguaje' }],{ STRING Valor ;});

D es un conjunto de datos con una columna etiquetada como 'Valor' y que contiene la siguiente lista de datos.

Primitivas ECL

Las primitivas de ECL que actúan sobre conjuntos de datos incluyen SORT, ROLLUP, DEDUP, ITERATE, PROJECT, JOIN, NORMALIZE, DENORMALIZE, PARSE, CHOSEN, ENTH, TOPN, DISTRIBUTE

encapsulación ECL

Aunque ECL es conciso y LexisNexis afirma que 1 línea de ECL equivale aproximadamente a 120 líneas de C++, aún ofrece un soporte significativo para la programación a gran escala, incluyendo la encapsulación de datos y la reutilización de código. Las construcciones disponibles incluyen MODULE, FUNCTION, FUNCTIONMACRO, INTERFACE, MACRO, EXPORT, SHARED.

Soporte para el paralelismo en ECL

En la implementación de HPCC , por defecto, la mayoría de las construcciones ECL se ejecutan en paralelo en todo el hardware utilizado. Muchas de las primitivas también tienen una opción LOCAL para especificar que la operación se realice localmente en cada nodo.

Comparación con Map-Reduce

El paradigma Hadoop Map-Reduce consta de tres fases que se correlacionan con las primitivas ECL de la siguiente manera.

Referencias

  1. Una guía sobre ECL , Lexis-Nexis .
  2. "Evaluación del uso de sistemas de flujo de datos para el análisis de grafos grandes", por A. Yoo e I. Kaplan. Actas del 2.º Taller sobre Computación Multitarea en Redes y Supercomputadoras, MTAGS, 2009.
  3. "Adquisición de Seisint" . Archivado del original el 21/06/2011 . Consultado el 24/03/2011 .
  • Categoría ECL del código Rosetta
  • Referencia del lenguaje ECL archivada el 16/01/2021 en Wayback Machine.
  • Reed Elsevier adquirirá ChoicePoint por 3.600 millones de dólares.
  • LexisNexis, de Reed Elsevier, compra Seisint por 775 millones de dólares.
  • Reed Elsevier