Basics-Overview.xml 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  3. "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
  4. <sect1 id="Overview" role="nobrk">
  5. <title>Visão geral</title>
  6. <para><emphasis role="bold">E</emphasis>nterprise <emphasis
  7. role="bold">C</emphasis>ontrol <emphasis role="bold">L</emphasis>anguage
  8. (ECL)<indexterm>
  9. <primary><emphasis role="bold">ECL</emphasis></primary>
  10. </indexterm> foi concebida especificamente para grandes projetos de dados
  11. que usam o High Performance Computer Cluster (HPCC) da LexisNexis<indexterm>
  12. <primary><emphasis role="bold">HPCC</emphasis></primary>
  13. </indexterm>. A extrema escalabilidade da ECL decorre de uma concepção que
  14. permite reutilizar todas as consultas criadas em consultas subsequentes,
  15. conforme a necessidade. Para fazer isso, a ECL adota uma abordagem de
  16. Dicionário na criação de consultas. Cada definição de ECL define uma
  17. expressão. Cada Definição anterior pode ser usada em definições posteriores
  18. da ECL – <emphasis>a linguagem estende a si mesma à medida que é
  19. usada</emphasis>.</para>
  20. <sect2 id="Attributes_versus_Actions">
  21. <title>Definições versus Ações</title>
  22. <para>Funcionalmente, há dois tipos de código de ECL: Definições (AKA
  23. definições de atributo) e Ações executáveis. As Ações não podem ser usadas
  24. em expressões porque não retornam valores. A maioria do código de ECL é
  25. composta de definições.</para>
  26. <para>As definições definem apenas <emphasis>o que</emphasis> deve ser
  27. feito, mas não executam nada. Isso significa que o programador de ECL deve
  28. pensar em termos de criar código que especifica <emphasis>o que</emphasis>
  29. fazer em <emphasis>vez de como</emphasis> fazer. Esse é um conceito
  30. importante na medida em que o programador diz ao supercomputador o
  31. <emphasis>que</emphasis> precisa acontecer e não <emphasis>como
  32. </emphasis>o resultado será conseguido. Assim, o supercomputador fica
  33. livre para otimizar a execução real da forma necessária para gerar o
  34. resultado desejado.</para>
  35. <para>Uma segunda consideração é que a ordem em que as Definições aparecem
  36. no código fonte não define a ordem de execução. A ECL é uma linguagem não
  37. procedural<indexterm>
  38. <primary>non-procedural language</primary>
  39. </indexterm>. Quando uma Action (como OUTPUT) executa, todas as
  40. Definitions que precisa usar (considerando até as Definitions de nível
  41. mais baixo nas quais as outras são baseadas) são compiladas e otimizadas.
  42. Ou seja, ao contrário de outras linguagens de programação, não há uma
  43. ordem de execução inerente implícita na ordem em que as definições
  44. aparecem no código fonte (embora exista uma ordem necessária para que não
  45. corram erros de compilação; referências antecipada referência <indexterm>
  46. <primary>forward reference</primary>
  47. </indexterm>s não são permitidas). Esse conceito de "execução sem ordem"
  48. exige uma atitude diferente da usada em linguagens de programação padrão,
  49. dependentes de ordem, porque aparenta executar "tudo ao mesmo
  50. tempo".</para>
  51. </sect2>
  52. <sect2 id="Syntax_Issues">
  53. <title>Problemas de Sintaxe</title>
  54. <para>A ECL não faz distinção entre maiúsculas e minúsculas. Os espaços em
  55. branco são ignorados, o que permite a formatação necessária para melhor
  56. legibilidade.</para>
  57. <para>A ECL admite comentários no código. Os comentários em bloco devem
  58. ser delimitados com /* e */.</para>
  59. <programlisting>/* this is a block comment - the terminator can be on the same line
  60. or any succeeding line -- everything in between is ignored */</programlisting>
  61. <para>Comentários de uma única linha devem começar com //.</para>
  62. <programlisting>// this is a one-line comment</programlisting>
  63. <para>A ECL usa a sintaxe <emphasis>object.property</emphasis> padrão
  64. utilizada por várias outras linguagens de programação (no entanto, a ECL
  65. não é uma linguagem orientada a objeto) para qualificar o escopo das
  66. Definições e eliminar ambiguidades das referências de campos dentro de
  67. tabelas:</para>
  68. <programlisting>ModuleName.Definition //reference an definition from another module/folder</programlisting>
  69. <programlisting>Dataset.Field //reference a field in a dataset or recordset</programlisting>
  70. </sect2>
  71. </sect1>