PascalABC.NET
October 30, 2022

История про for var

Это наша любимая история.

Язык PascalABC.NET - современная версия языка Object Pascal, которая взяла всё лучшее, что есть в современных языках программирования. Поэтому мы ввели описание типов внутри блоков и автоопределение типа переменной.

begin
  var x := 1;
  var a := |1,2,3|;
end.

Но это не работало. Все как учили этому старому древнему стилю Pascal с описанием груды переменных до begin

var x: integer;
var a: array of integer;
begin
  x := 1;
  a := |1,2,3|;
end.

так и продолжили учить.

После этого мы ввели описание переменной-счетчика цикла прямо в заголовке цикла:

begin
  for var i:=1 to 10 do
    Print(i);
  for var i:=20 to 30 do
    Print(i);
end.

Но и это не помогло. Все, кто знали старое, продолжали учить по старому:

var i: integer;
begin
  for i:=1 to 10 do
    Print(i);
  for i:=20 to 30 do
    Print(i);
  i := 666666;  
end.

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

И в конце концов мы сделали неуничтожимое предупреждение:

И на нас обиделись! Стали писать на разных форумах, что мы нарушаем каноны Паскаля и нас надо запретить!

Но ситуация изменилась. Кто-то понял, кто-то просто стал следовать. Правило есть правило.

И язык PascalABC.NET стал языком "for var i". У нас даже школьники говорят на вопрос, какие циклы вы знаете: "while, repeat, loop и for var".

Вот такая история. Мир меняется. Надеемся, он поменяется еще больше, и мир современного программирования победит.