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

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

Давайте создадим тему “Справка Pascal ABC”. Ошибки, вопросы, предложения.

А давайте еще после этого будем прямо в справку контрибъютить. Я могу выложить все исходники. Ошибки можно править прямо тут же.

1 лайк

ВИКИ-справка? А можно это будет только желающим, а остальным останется Справка, которую только разработчики сопровождают?

Я и имею в виду html исходники справки

Кстати, на указанную мною страницу стоит PABC.NET добавить :slight_smile:

Это которую?

2 лайка

Я полностью с этим согдасен, однако есть тонкость: PascalABC.NET настоятельно позиционируется как среда разработки, а не язык (см. его вики-страницу). Я глубоко убёжден, что это именно новый язык (или диалект старого, что не имеет принципиальной разницы). Но пока вики-страница говорит «IDE», я побоюсь добавлять.

Если редактор + справка + компилятор в одном флаконе - конечно IDE. Универсальный язык программирования (software), никак не привязан ни железякам (hardware), ни к другому софту.

А вроде на вики сказано, что это язык программирования. Какую ссылку Вы имеете в виду?

Может быть, стоит где-то явно сказать, что это язык и дополнительно может быть установлена IDE, обеспечивающая работу с ним, потому что ведь IDE можно и не ставить, а пользоваться компилятором из командной строки.

О, какая прекрасная картинка встраивается…

Не так давно про это говорили “вешалка”… Менять надо.

Можно ли сделать нормальную работу с указателями? То есть обращаться к ним как к числам и сделать рабочим такой код:

var a: Byte; // Переменная, адрес которой берём. Можно использовать первый элемент массива.
var p := @a; // Указатель на переменную(Byte^).
p += 1; // Смещаем адрес. Если массив, то указатель начинает ссылаться на второй элемент массива.
p := (Byte^)(Int32(p) + 2). // Задаём смещение на 2 элемента(указатель на 3 элемент массива). Преобразуем Int32 напрямую в Byte^.

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

Арифметику указателей как в C++ мы делать не будем.

p :=  PByte(pointer((integer(p) + 2)));

Да, так можно. На страх и риск. Ровно так сделано в Delphi

Обратите внимание, что у нас это транслируется в эффективный IL-код:

public unsafe static void $Main()
{
	byte b;
	fixed (byte* ptr = &b)
	{
		fixed (byte* ptr = ptr + 2)
		{
		}
	}
}
1 лайк

Так ее в .NET и не существует. Кроме безобразия с unsafe в C#. но и там все не так уж “красиво”. Не будем делать из PascalABC.NET очередной С++, а то и он подпадет под сказанное А.Хейльсбергом:

Проблема применения С++ заключается в том, что его мощь используется в течение 1% времени, а 99% времени уходит на то, чтобы понять, какую конструкцию языка применить для решения той или иной задачи.

Нет нет, арифметика указателей - хорошая штука. И - сделать было бы можно. Но

  1. Ни в одном из Паскалей этого нет
  2. Этого нет в C#
  3. Это противоречит безопасности
  4. Это противоречит высокоуровневости задач, на которые направлен PascalABC.NET
1 лайк

Я бы только поменял порядок по приоритетам:

  1. Это противоречит высокоуровневости задач, на которые направлен PascalABC.NET
  2. Это противоречит безопасности
  3. Этого нет в C# (а последующий переход на С# в приоритете для изучающего язык)
  4. Ни в одном из Паскалей этого нет (много чего нет в тех паскалях)