Английская Википедия:ELLA (programming language)

Материал из Онлайн справочника
Версия от 07:37, 1 марта 2024; EducationBot (обсуждение | вклад) (Новая страница: «{{Английская Википедия/Панель перехода}} {{Use dmy dates|date=April 2021}} {{Infobox software |name = ELLA |logo = <!-- File name only --> |logo alt = |logo caption = |screenshot = <!-- File name only --> |screenshot alt = |caption = |author = |developer = Royal Signals and Radar Establishment |released = {{Start date and age|1986}}<!-- If known, add |mm|dd|df=yes --> |latest release version = |latest release date =...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Шаблон:Use dmy dates Шаблон:Infobox software ELLA is a hardware description language and support toolset, developed in the United Kingdom by the Royal Signals and Radar Establishment (RSRE) during the 1980s and 1990s, which also developed the compiler for the programming language, ALGOL 68RS, used to write ELLA.

ELLA has tools to perform:

ELLA is a winner of the 1989 Queen's Award for Technological Achievement.

Sample

Sample originally from ftp://ftp.dra.hmg.gb/pub/ellaШаблон:Dead link, public release.

Code for matrix multiplication hardware design verification:

MAC ZIP = ([INT n]TYPE t: vector1 vector2) -> [n][2]t:
  [INT k = 1..n](vector1[k], vector2[k]).
     
MAC TRANSPOSE = ([INT n][INT m]TYPE t: matrix) -> [m][n]t:
  [INT i = 1..m] [INT j = 1..n] matrix[j][i].

MAC INNER_PRODUCT{FN * = [2]TYPE t -> TYPE s, FN + = [2]s -> s}
                 = ([INT n][2]t: vector) -> s:
  IF n = 1 THEN *vector[1]
  ELSE *vector[1] + INNER_PRODUCT {*,+} vector[2..n]
  FI.

MAC MATRIX_MULT {FN * = [2]TYPE t->TYPE s, FN + = [2]s->s} =
([INT n][INT m]t: matrix1, [m][INT p]t: matrix2) -> [n][p]s:
BEGIN
  LET transposed_matrix2 = TRANSPOSE matrix2.
OUTPUT [INT i = 1..n][INT j = 1..p]
       INNER_PRODUCT{*,+}ZIP(matrix1[i],transposed_matrix2[j])
END.

TYPE element = NEW elt/(1..20),
     product = NEW prd/(1..1200).

FN PLUS = (product: integer1 integer2) -> product:
  ARITH integer1 + integer2.

FN MULT = (element: integer1 integer2) -> product:
  ARITH integer1 * integer2.

FN MULT_234 = ([2][3]element:matrix1, [3][4]element:matrix2) ->
             [2][4]product:  
  MATRIX_MULT{MULT,PLUS}(matrix1, matrix2).

FN TEST = () -> [2][4]product:
( LET m1 = ((elt/2, elt/1, elt/1),
            (elt/3, elt/6, elt/9)), 
      m2 = ((elt/6, elt/1, elt/3, elt/4), 
            (elt/9, elt/2, elt/8, elt/3),
            (elt/6, elt/4, elt/1, elt/2)).
  OUTPUT
    MULT_234 (m1, m2)
).

COM test: just displaysignal MOC

References

Шаблон:Refbegin

Шаблон:Refend

External links

Шаблон:Programmable Logic Шаблон:ALGOL programming Шаблон:Authority control

Шаблон:Prog-lang-stub