Болталка PascalABC.NET

То есть pabc ненормальный паскаль?

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

На сколько Вы планируете сократить код, убрав var в описании цикла?

Пусть и не намного, но ведь ведь как правило с сокращением кода улучшается ещё и его читаемость.

В это время объявление переменных в километре от места их использования :+1:

Компилятор выделит для всех этих переменных одну ячейку памяти.

Это как “давайте использовать одну зубную щётку на всех - так эффективнее будет”

1 лайк

Вообще я тоже думал что JIT достаточно умный, но так используются 2 разные ячейки:

##
for var i := 1 to 10 do
  if i=1 then Writeln(@i);
for var i := 1 to 10 do
  if i=1 then Writeln(@i);
Readln;

Возможно это из за указателей…

Во всяком случае, экономия памяти на стеке это сумашествие.

Это не JIT такой умный. Любой компилятор считает размер записи активации во время компиляции.

Можно по-подробнее?

Тогда тем более странно их описывать отдельно.

А если обойтись без сломанных аналогий?

На сколько Вы планируете улучшить читаемость, убрав var в описании цикла?..

есть конкретные примеры, где понятно, что из-за этого незакрыта какая-то сфера деятельности или замена .net функционалом является более плохим решением?

На сколько Вы планируете улучшить читаемость, убрав var в описании цикла?..

На 0.68% на каждую переменную в блоке var на положенном месте (перед begin).

есть конкретные примеры, где понятно, что из-за этого незакрыта какая-то сфера деятельности

Указатели. Совместимость с существующим кодом для Free Pascal и Turbo Pascal.

замена .net функционалом является более плохим решением?

Более низкая производительность по сравнению с нативным кодом и что более важно, лишняя зависимость от mono, которую нужно отдельно устанавливать.

И даже с mono совместимость с UNIX-подобными ОС не полная.

Так, а зачем они вам в наше время?..

Закройте форум и идите учить плюсы. Больше никак положение не исправить

1 лайк

Помнится, где то про указатели с вами уже говорили…

Зачем вы рассказываете про минусы .net в целом? Я ведь совершенно о другом спросил!

как должен быть записан данный код, что бы ничего не вызывало ошибки?

##
var fruits:= new system.Collections.ArrayList;
fruits.Add('mango');
fruits.Add('apple');
fruits.Add('lemon');

var query: IEnumerable<string>:= fruits.Cast<string>().OrderBy(fruit -> fruit).Select(fruit -> fruit);

по сути это перевод Enumerable.Cast<TResult>(IEnumerable) Метод (System.Linq) | Microsoft Docs но как не пытаюсь, всё равно получаю какие-то ошибки компиляции

Проблема явно в Cast

Проблема в том что идёт сразу после Cast. У вас его считает оператором меньше, потому что ставьте & для явного указания шаблона подпрограммы.

1 лайк

действительно. извиняюсь, что сам это в справке не нашёл

А можно узнать, для чего такие кандибоберы, почему просто не написать

##
var fruits:= new List<string>;
fruits.Add('mango');
fruits.Add('apple');
fruits.Add('lemon');

var query := fruits.Order;
Print(query)

Вы, возможно, аргентинских шпионов запутать хотите?

1 лайк

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

из чего и во что переводить? Я, может, неграмотный в этом предмете, потому что проблемы пока не ощущал ни разу.

локальная(моя личная) проблема имеется ввиду

Смейся, паяц!

обложка

Структурное программирование : учебное пособие для вузов / С. П. Якимов. — Москва : Издательство Юрайт, 2022. — 342 с. — (Высшее образование). — ISBN 978-5-534-14885-5

Замечательная книга о паскале, которого нет. Вперёд в прошлое!