Ну я тут не планирую навербовать гильдию сподвижников, но если что - милости прошу в личку желающих продолжить тему. )))
Давайте создадим тему “Справка Pascal ABC”. Ошибки, вопросы, предложения.
А давайте еще после этого будем прямо в справку контрибъютить. Я могу выложить все исходники. Ошибки можно править прямо тут же.
ВИКИ-справка? А можно это будет только желающим, а остальным останется Справка, которую только разработчики сопровождают?
Я и имею в виду html исходники справки
Кстати, на указанную мною страницу стоит PABC.NET
добавить
Это которую?
Я полностью с этим согдасен, однако есть тонкость: 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)
{
}
}
}
Так ее в .NET и не существует. Кроме безобразия с unsafe в C#. но и там все не так уж “красиво”. Не будем делать из PascalABC.NET очередной С++, а то и он подпадет под сказанное А.Хейльсбергом:
Проблема применения С++ заключается в том, что его мощь используется в течение 1% времени, а 99% времени уходит на то, чтобы понять, какую конструкцию языка применить для решения той или иной задачи.
Нет нет, арифметика указателей - хорошая штука. И - сделать было бы можно. Но
- Ни в одном из Паскалей этого нет
- Этого нет в C#
- Это противоречит безопасности
- Это противоречит высокоуровневости задач, на которые направлен PascalABC.NET
Я бы только поменял порядок по приоритетам:
- Это противоречит высокоуровневости задач, на которые направлен PascalABC.NET
- Это противоречит безопасности
- Этого нет в C# (а последующий переход на С# в приоритете для изучающего язык)
- Ни в одном из Паскалей этого нет (много чего нет в тех паскалях)