In the wide world of ELLA (programming language), we find a diversity of aspects and approaches that invite us to explore and understand further. From its impact on contemporary society to its relevance in history, ELLA (programming language) has been the subject of numerous debates and reflections. In this article, we will delve into the different facets of ELLA (programming language), highlighting its importance and influence in different fields. Through a detailed analysis, we will explore the implications and consequences linked to ELLA (programming language), with the aim of providing a complete and enriching vision of this fascinating topic.
| ELLA | |
|---|---|
| Developer | Royal Signals and Radar Establishment |
| Initial release | 1986 |
| Written in | ALGOL 68RS |
| Operating system | VMS |
| Platform | ICL 2900 Series, Multics, VAX |
| Available in | English |
| Type | Hardware description language |
| License | public domain (parts) |
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 originally from ftp://ftp.dra.hmg.gb/pub/ella[dead link], public release.
Code for matrix multiplication hardware design verification:
MAC ZIP = (TYPE t: vector1 vector2) -> t:
(vector1, vector2).
MAC TRANSPOSE = (TYPE t: matrix) -> t:
matrix.
MAC INNER_PRODUCT{FN * = TYPE t -> TYPE s, FN + = s -> s}
= (t: vector) -> s:
IF n = 1 THEN *vector
ELSE *vector + INNER_PRODUCT {*,+} vector
FI.
MAC MATRIX_MULT {FN * = TYPE t->TYPE s, FN + = s->s} =
(t: matrix1, t: matrix2) -> s:
BEGIN
LET transposed_matrix2 = TRANSPOSE matrix2.
OUTPUT
INNER_PRODUCT{*,+}ZIP(matrix1,transposed_matrix2)
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 = (element:matrix1, element:matrix2) ->
product:
MATRIX_MULT{MULT,PLUS}(matrix1, matrix2).
FN TEST = () -> 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