Здравствуйте, netch80, Вы писали:
N>Не завели новый тип, воспользовались при определении переменной просто массивом — получили совместимость.
Совместимость, идущую вразрез с духом golang, ибо алиаса в явном виде нет.
ARK>> Не уверен, что эти фичи являются показателем строгости типизации. ИМХО, строгая типизация — это когда нет неявных преобразований между типами разной структуры. И паскаль этому определению вполне соответствует.
N>Непрактично.
N>Лучше так: строгая типизация — это когда нет неявных преобразований, которые явно запрещены, могут потерять данные или принципиально изменить семантику операций со значениями.
Не вижу, чем это определение лучше. Точнее, оно гораздо хуже, потому что добавляет еще несколько связанных трудноформализуемых (если вообще формализуемых) определений.
N>Например, в нём нет запрета неявной конверсии int во float (по Borland; real — по Вирту), хотя она может дать потерю данных.
https://ideone.com/Vctxcc
program ideone;
var
A: Real;
B: Integer;
begin
A := 33;
B := A;
Write(B);
end.
prog.pas: In main program:
prog.pas:7: error: incompatible types in assignment
N>А Паскаль — не соответствует.
Как видим, соответствует.