C++11 vs. ALGOL-60

olega

C++11

#include <functional>
#include <iostream>

typedef std::function<int> F;

static int A(int k, const F &x1, const F &x2, const F &x3, const F &x4, const F &x5)
{
F B = [=, &k, &B]
{
return A(--k, B, x1, x2, x3, x4);
};

return k <= 0 ? x4 + x5 : B;
}

static F L(int n)
{
return [n] { return n; };
}

int main
{
std::cout << A(10, L(1 L(-1 L(-1 L(1 L(0 << std::endl;
return 0;
}

ALGOL-60

begin
real procedure A(k, x1, x2, x3, x4, x5);
value k; integer k;
begin
real procedure B;
begin k := k - 1;
B := A := A(k, B, x1, x2, x3, x4);
end;
if k <= 0 then A := x4 + x5 else B;
end;
outreal(A(10, 1, -1, -1, 1, 0;
end;

Еще чуть-чуть, и плюсы догонят АЛГОЛ по выразительности. А прошло всего-то полвека :D

svetaslav212

Правильно, всякие алголы и паскали специально разрабатывались так, чтобы их было удобнее читать человеку, поскольку предназначались для обучения студентов и школьников программированию.

olega

прям уж для школьников
ALGOL was used mostly by research computer scientists in the United States and in Europe. Its use in commercial applications was hindered by the absence of standard input/output facilities in its description and the lack of interest in the language by large computer vendors other than Burroughs Corporation. ALGOL 60 did however become the standard for the publication of algorithms and had a profound effect on future language development.

apl13

В алголе не было ни фьючерсов, ни делеев же.

Ivan8209

> Еще чуть-чуть, и плюсы догонят АЛГОЛ по выразительности.
> А прошло всего-то полвека
"Here is a language so far ahead of its time, that it was not
only an improvement on its predecessors, but also on nearly all
its successors."

---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

bleyman

Я чота в гробу видел такую выразительность.

karkar

Собсно, даже Кнут, придумавший этот код, ошибся в том, что должен он вывести.

svetaslav212

прям уж для школьников
Для чего задумывался и кем mostly used — это две большие разницы.
ALGOL 60 did however become the standard for the publication of algorithms and had a profound effect on future language development.
Потому что в первую очередь был удобен для и предназначался для чтения человеком, да.

bleyman

Собсно, даже Кнут, придумавший этот код, ошибся в том, что должен он вывести.
пруфлинк?
Оставить комментарий
Имя или ник:
Комментарий: