Замечания и предложения


#547

Если

uses System;

написать, то есть


#548

Понятно, что этот тип существует, но вот вопрос: а для чего это писать?

И еще: должна ли об этом знать каждая школьная учительница?


#549

:smile:


#550

Каждая школьная учительница должна “уметь менять значения двух переменных местами, находить максимум в массиве и находить n-тое число Фибоначчи с помощью рекурсии”


#551

А ещё уметь растянуть передачу этих знаний на 2-3 года, да так чтоб в итоге никто ничему не научился*


#552

Вы там где-то писали, что программы по-разному работают. Смотрите, в том примере что Вы приводите с переменной после begin она локальная, но в стандартном Паскале так нельзя. Однако если в стандартном Паскале

Procedure Swap(Var a: Int32; Var b: Int32);
Var Temp: Int32;
Begin
  
...

Temp всё равно в стеке хранится. Она как локальная. Однако я посмотрел, вроде, в PascalABC.NET она переносится в поле объекта, становится boxed. То есть они по-разному могут инициализироваться, если руками не описать. Не знаю почему так сделали, не суть. У меня самого при переходе к разным версиям сколько раз переставали правильно работать программы, из-за того, что предположение об инициализации по умолчанию оказывалось ложным.


#553

В NET всё инициализируется нулём


#554

А если локальную забыл инициализировать? Которая в стеке. У него посмотрите какой пример. Ну там то она будет всё равно изменена и нулём инициализировать только программу замедлять. А иногда забываешь и на предупреждения компилятора тоже внимание не обращаешь.


#555

Всё равно нулём


#556

Вы будете прокляты великим Турбо Паскалем! :smile:


#557

Предлагаю(опять) реализовать директиву компилятора, либо настройку компилятора, либо параметр консольного компилятора, отключающую привязку к стандартным модулям, таким как PABCSystem.pcu, PABCExtensions.pcu и __RedirectIOMode.pcu.


#558

Вот как раз в старых то Паскалях без динамических массивов забивать всё нулями было дико. А уж нейросеть со случайными значениями каких-нибудь неинициализированных переменных только душевнее, непредсказуемее будет работать. :upside_down_face:


#559

зачем?


#560

Кстати, Free Pascal инициализацию при описании не выполняет. Довольно занятно смотреть, как “школота” пытается понять, почему не работает в fpc программа, которою они в школе отладили на PascalABC.NET (программируя на нем, как на Турбо Паскале, потому что за 20 лет преподавания в школе учительница информатики еще не успела освоить что-то иное).


#561

Ну так это лишь аргумент в мою пользу. То, что КУМИР хуже других языков не означает, что эти самые языки хорошие. Просто из двух зол выбирают меньшее. :smile:


#562

Об это уже давно говорят, причём не только я. Не думаю, что такая возможность останется без внимания. Чистым должен быть не только исходный, но и MSIL код.


#563

Кстати, стандартная проблема при переходе между разными версиями. Вообще, если человек сам пишет программу, он по идее не должен лезть за значением туда, куда ничего до этого не положил. То что в .NET решили всё это пресечь на корню, так зато получается, что порой инициализация памяти занимает O(n) вместо O(1).


#564

Это безобразие пресекли еще задолго до .NET. Память в нормальных языках должна нулиться.


#565

Причем тут чистота. Паскаль не может работать без системного модуля. Как и .NET без FCL.


#566

Согласен.