Болталка PascalABC.NET

 — Значит так. Двадцать баранов…
 — Двадцать пять.
 — Двадцать, двадцать. Холодильник Розенлев. Финский, хороший. Почетная грамота.
 — И бесплатная путевка…
 — В Сибирь!

Что бы на это ответил Задорнов

Ну, тупые!

1 лайк

Я говорю о языке Pascal. Тот язык который в ABC .NET, насколько я помню, по выражению определенных граждан с этого форума не является паскалем, а только паскалеподобным языком. Искать конкретную цитату не буду.

Внутриблочность и глобальность - это совершенно разные вещи.

procedure foo;
var a, b, c: integer;
begin
...
end;

Вот например такой код. Переменные a, b и c описаны вне блока begin/end но тем не менее являются локальными для процедуры foo. Точно так же, переменные описанные непосредственно перед главным блоком begin/end. должны считаться локальными для этого блока, а вовсе не глобальными.

Если бы употреблять его не было смысла, зачем же он был введён? Нет, не просто так. Наличие у каждой программы имени — это весьма полезное свойство языка Pascal и глупо было бы от него отказываться в своих программах просто из-за того что современные компиляторы не считают его отсутствие ошибкой.

Это уже игра слов. При этом теряется изначальная суть:

Глобальные переменные это статические поля класса Program, которые живут в куче на протяжении выполнения всей программы. Даже после того как первый поток выполнения завершится - если создать новый. И даже если этому новому потоку они не сдались.

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

Полезное для какой цели?

Полезное для какой цели?

Ну вот открываешь ты программу на паскале написанную года три назад. Если у неё есть имя, то можно понять что это была за программа. А если нету, то уже не факт. Хотя конечно этой цели может послужить и первый комментарий в файле, где написано, что он вообще делает, но не все его пишут. А так хоть что-то.

А локальные переменные живут на стеке до выхода с подпрограммы.

Ну вот тут и проблема. Я говорю, что по синтаксису паскаля следует описывать локальные переменные вне блоков в директиве var перед begin. А @RAlex мне возражает из позиции как будто я топлю за глобальные переменные, хотя я этого вовсе не делаю.

Само по себе ЕГЭ по информатике, на мой взгляд, вполне себе неплохо. Проблемы начинаются из-за естественных, хоть и не желательных процессов, связанных с его введением.

Задания которые есть в ЕГЭ вполне можно было бы решить, хорошо владея школьной программой и не пытаясь даже открывать готовые книжки с заданиями.

Но учителя и ученики путают причину со следствием. Изначальная идея в том что в школе нужно получить определенные навыки и знания, а ЕГЭ — способ их проверить. А они вместо этого решают, что цель обучения в школе — сдать ЕГЭ и начинают пытаться натренироваться на решение типовых задач ЕГЭ и это даже работает, поскольку они год от года меняются незначительно.

А потом говорят о том, что ЕГЭ — это плохо, потому что не развивает творческого мышления и всё такое. А в ЕГЭ ли дело или в процессах которые начались от его введения?

Самое же забавное, что @RAlex, который наиболее активно критикует ЕГЭ за шаблонность как раз и способствует процессу его превращения в фарс путём публикации библиотеки подпрограмм расчитанных как раз на решение задач из ЕГЭ.

Я бы на месте чиновников обратил бы на это внимание и требовал бы заменить Pascal ABC .NET на другой транслятор паскаля или убрать из школьный модуль из него (не из главного дистрибутива на сайте, а из той версии, что будет ставится на компьютеры из КЕГЭ).

Как можно проверить понимание школьником алгоритмов сортировки если дать им ЯП где есть метод sort? Вот аналогичная проблема и возникает на КЕГЭ где есть доступ к Pascal ABC .NET. Из метода проверки знаний получается соревнование на заучивание “волшебных слов” для конкретных типов задач.

Но не являются внутриблочными. С точки зрения читабельности не велика разница где создавать свалку переменных – в глобальной области программы или в той же области подпрограммы.

А что, имени файла/папки уже недостаточно? Впрочем где-то я применял это имя. Тестировал что-то вроде, не упомню уже. И то это связано лишь с тем, что так было проще обратиться к конкретному классу или что-то в этом роде

Может кто разбирался. Получится ли правдами и неправдами работать с Xamarin под Android? Или это заведомо гиблая идея пока? :thinking:

Зачем?.. Бери лучше шарп да MAUI, зачем тянуть сову на глобус?

Ну или можно на паскале, но придётся писать компилятор под .NET Core

И, скорее всего, нет. Точно не скажу, но есть лёгкие сомнения, что IL под .NET Framework не заведётся под Mono. Но, опять же, не специалист

По крайней мере на arch linux код паскаля заводится с mono без проблем.

Собственно вопроса выбора языка не стоит

а почему нет?

если ничего “запрещённого” не юзать, то всё будет норм. но это и к шарпу ровно столько же относится

У шарпа уже есть .NET 6

Всё работает. У нас компилятор под Mono запускается - и оболочку скоро уже допилим - тоже запускается под Mono. Вот - скрин приведу:

1 лайк

MAUI не работает под Linux. К сожалению, в NET мультиплатформенный пользовательский интерфейс - это тупик

Он везде заводится где есть правильно установленный Mono

Ну… и да, и нет

Почему?

Забавно, что преобразование в двоичную систему счисления или нахождение наибольшего общего делителя считается рассчитанным на ЕГЭ

Ну, я не прав - единственное, что работает везде без особых проблем - это Windows Forms. MAUI - там даже меню нормального нет и тулбара - уж не говоря про редактор с подсветкой синтаксиса. А под линуксом что-то работает, что-то нет. Полагаться в промышленном проектен на поддерживаемое сообществом я не стану.