Болталка PascalABC.NET

Назад, к природе! Переменные описываются там, где они впервые употребляются, если нет серьёзных оснований сделать это на более высоком уровне видимости. И вообще, забудьте про эту хрень - а, бэ, цэ сидели на трубе. В программировании такие идентификаторы употребляются только в циклах и т.п.

Чтобы не забыть, что там дальше написал.

Нет, не так. Учить нужно методы сортировки, а применять на практике встроенные возможности языка.

@Catcher чисто ради интереса. С какой целью Вы вообще этот форум посещаете? Ну явно же, что pabc Вам поперёк горла. Тогда в чём смысл заходить сюда, поднимать тему о том, как “в pabc всё плохо” и получать закономерные ответы?

Не то что бы я хотел от Вас избавиться; мне интересны первопричины. Потому что обсуждать одни и теже темы смысла особого уже не вижу

1 лайк

Профессиональное программирование это не изобретение велосипедов, а использование подходящих кирпичиков для конкретных задач.

А причём здесь профессиональное программирование, если речь шла о ЕГЭ по информатике?

Чтобы это исправили, и стало не всё плохо.

Ну вот есть экзамен, например ЕГЭ, цель его заданий, проверить, понимает ли школьник тот или иной концепт. Пусть будет скажем задание на сортировку. Если дать школьнику обычный какой-нибудь паскаль, компилятор C, бейсик, кумир или подобное — то можно будет увидеть, получится у него или нет. А если дать ему ABC или Python где есть метод sort — то можно будет увидеть только знает он «волшебное слово» или нет.

Так вот и вопрос — есть ли что-то плохое в самом ЕГЭ как таковом или проблема вовсе не в нём, а в его организации или даже социальных процессах которые вокруг него выросли?

Ну вот в паскале принято все переменные описывать в одном месте — перед процедурой/функцией, для которой они локальны. Не вижу ничего криминального в таком соглашении и сразу ясно где искать описания переменных, не нужно смотреть весь код а достаточно посмотреть только в раздел var.

Зачем делать гибрид ежа с ужом и тащить описания перед использованием из других языков в паскаль?

Если это коэффициенты квадратного уровнения или стороны треугольника, то вполне себе нормальные идентификаторы. Ну или в моём примере это просто примеры.

Что, часто исправляют?..

Так а что конкретно Вы предлагаете исправить? Запретить внутриблочные переменные? Убрать модуль school? Развить тему указателей, работая вразрез с принципами .NET?

А зачем их искать? Вспоминать что как называется? Ну это надо наплодить приличное количество переменных, что бы в процессе разработки перезабыть что как назвал. Это при том, что в pabc.net зачастую переменных нужно использовать куда меньше, чем в остальных диалектах. Если речь идёт о чтении чужого кода, то его всё равно перечитывать и переменные, очевидно, будут замечены. Ситуацию, когда нужно узнать тип переменной я даже не рассматриваю. Всё таки это обеспечивает любая ide. Но вообще не вижу проблемы в этом вопросе. Если Вам хочется объявлять всё заранее, то такая возможность, по-моему, никак не ущемлена. А вот пытаться остановить развитие не стоит. Причин для использования внутриблочных переменных достаточно, и лишать pabc.net такой возможности только потому что это не прописано в соглашениях n-летней давности как-то глупо

3 лайка

Вот так и хлам из переменных получается. А переменная для счетчика цикла должна описываться в самом цикле. Это просто закон современного профессионального программирования.

1 лайк

Так можно объяснить всё, что угодно. Конечно, в одном месте вполне можно всё описывать. И все эти места уже хорошо описаны. Какое отношение к этим описанным местам имеет паскаль?

Вы, батенька, старовер. В тайгу Вам нужно, подальше от людей… Будете там белкам впаривать свои думки.

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

В одном хорошем фильме эту ситуацию разрешили так: не нужно делать глупости даже от скуки.

Чтобы не было скучно, возьмите книгу по современному программированию и учитесь уму-разуму.

Для начала, кодировку файлов, создаваемых IDE. Добавление BOM в любой сохраняемый файл, особенно, не содержащий ни единого символа вне ASCII — это глупо.

Далее, добавить различные операторы, которые есть в нормальном паскале, но которых нет в ABC. Не так уж их и много, readstr например.

Убрать предупреждения при использовании нормальных описаний переменных (до блока begin/end) и убедиться, что они локальны для блока, не смотря на то что их описание расположено вне его. Убрать предупреждения при использовании операторов вроде Program name; и прочего.

Убирать модуль school бессмысленно на данный момент. Если вам поступит пожелание от минобра, чтобы на сайте появилась версия без него, тогда будет о чём говорить.

С указателями можно просто привести синтаксис в соответствие с другими диалектами паскаля. Так-то указатели уже есть.

Предположим, в одной программе есть несколько циклов, везде счётчик - это переменная i типа integer, причём проходящаяся по одному и тому же диапазону (например массиву, прочитанному из файла). Зачем её описывать более одного раза?

А если потом понадобится поменять тип на int64, так как ширины не хватило, предлагаете копаться во всём коде и менять вместо одного исправления в секции var?

Вы уверены, что это действительно прямо таки “закон”, а не ваше личное стилистическое предпочтение?

Вы же знаете, что вам ответят и куда пошлют, да? Да точно знаете, уже посылали. Вы точно хотите повторять этот день сурка?

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

И если в разных циклах нужна переменная разных размеров - как раз лучше если изначально существует по 1 переменной на цикл, а уже автоматические системы решают как их объединять.

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

а кому оно мешает? ладно бы речь шла про web, где с php и js действительно есть какие-то проблемы. Тут это вроде жёвано-пережёвано. И по-моему, всё таки пришли к выводу, что если не пытаться организовать себе геморой, то он не возникнет.

как я понимаю, readstr это что-то вроде string.ReadInteger, string.ReadWord и тд. Чем эти аналоги не годятся мне не особо понятно. избыточность решений это конечно хорошо, но не вижу смысла уделять этому особое внимание. может быть есть какие-то операторы, которым нет полноценной замены?

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

а в чём проявляются существенные отличия, которые, к тому же, не позволяют полноценно работать с неуправляемым кодом? развивать что-то большее только ради совместимости, по-моему, будет тратой времени

UPD: и зачем всё это конкретно Вам? Вам нравится работать именно на pabc.net? Или всё это надо для какой-то совместимости? Которая что, опять же, даст?

Дело не в экономии 4 или 8 байтов памяти, дело в сокращении количества кода. Если описание переменной i только одно, то в заголовки циклов не нужно будет добавлять слово var, например. Разве плохо?

А, ну да, я забыл про эту тему. Админ сказал, что используется готовый компонент текстового редактора, где BOM прибит гвоздями.

Тем что при переносе готового кода придётся его переделывать. readstr есть в спецификации паскаля, а string.ReadInteger там нет.

Некоторые штуки оформляются именно как предупреждения. Я правда не помню точно какие именно.

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

Например, чтобы школьник мог дома писать программу и пользоваться Free Pascal для отладки, а в школе она бы запустилась при открытии файла в PABC .NET и без всяких предупреждений, если она корректная.

По-моему, пишет трансгендер-бабушка, которая уже всех достала на лавочке. Редкостная хрень.

1 лайк

Нет

Нет