А какой в них смысл?
Да я в них тоже смысла не вижу, это учитель мой на это жаловался. Впрочем, в C# они зачем-то есть.
Этот учитель сродни автолюбителю, который отказывается покупать современный автомобиль потому, что к нему не приложены правила дорожного движения.с последними изменениями и дополнениями.
Ну там суть была именно в константах, а отсутствие справки и какой-либо документации это уже вторичное. А про правила дорожного движения плохое сравнение, инструкция именно по эксплуатации всех узлов есть у каждого автомобиля, в этом плане даже к родному автовазу не подкопаться.
Да ну? Ну-ка попробуйте по материалу из сервисной книжки любого автомобиля купить набор запчастей, скажем, для замены стеклоподъемника двери. Придется лезть в каталог запчастей, который не идет с автомобилем.
Касательно констант - ну в точности как в старом анекдоте про Чапаева:
- Василий Иванович, ракеты привезли!
- Ага, а седла не забыли к ним?
- А зачем к ракетам седла?
- Ты еще молод Петька, седла завсегда быть должны!
И потом, какая, к лешему, еще нужна документация? Четыре книги, обучающий курс, куча презентаций, стримы… Я по-простому скажу: зажрался учитель ваш!
Неисправности не относятся к эксплуатации узлов в плане этого сравнения с паскалем, потому как при любой неисправности в паскале мы либо её игнорируем (куча ошибок форматирования, анализатора кода и так далее), либо обращаемся к разработчикам на форум/гитхаб (обращаемся в сервисный центр производителя авто, получается).
Касательно ракет, я бы сравнил константы с ремнём безопасности в ракете.
Документация новых фич: ##, ### (про это, кстати, я и сам не знаю ничего), ** и прочие, например недавно добавленная распаковка кортежей. Всё это должно быть максимально доступно в документации языка в справке, а не где-то там на просторах интернета, где это всё ещё надо дополнительно искать зная заранее что ты ищешь, в чём осведомлённость населения сильно хромает. Гораздо удобнее открыть справку и найти в поиске/по тегу интересующий тебя материал, чем перечитывать сотни страниц книг, в которых искомого материала может и не найтись (вы сами, если бы абстрагировались от всего этого, стали бы таким заниматься?)
P.S. пора уже переходить в болталку
Еще раз: константы не делают код безопаснее, это рудимент первых компиляторов, который был введен для повышения эффективности компиляции. Константы, если они не предопределены в языке, работают как глобальные переменные и это плохо, это ломает концепцию самодостаточности модулей.
В любом случае, для себя лично я вижу смысл только в константах класса: дефолтные значения чего-либо и генерируемые значения для атрибутов. Мне без разницы существование внутриблочных констант и уровень IT-подготовки школьников, просто если отталкиваться от того, что ## это программы без begin-end, в которых могут быть другие элементы программы (процедуры, функции, секция uses), то логично было бы и константы включить в этот список.
Есть еще ограничения синтаксиса, связанные с разбором выражений. Если авторы языка что-то не включили в него, значит они видят проблемы в реализации.
Так себе аналогия…
Сравним с пультом для телевизора у которого кнопки не подписаны. Купят его если в магазине есть много пультов других фирм с подписанными кнопками? Даже если у этого кнопок в 10 раз больше и фирма заявляет, что каждый день появляется несколько новых, но узнать о них сложно т.к. они невидимые.
Здесь столько рассуждают о быстроте, простоте написания кода на PascalABC.NET и забывают, что хорошая справка тоже для этого.
#$число
вместо char($число)
.
#n означает “символ, десятичный код которого равен n”. $m означает, что число m представлено в шестнадцатиричной системе счисления. Это просто литерал, он по тетрадам укладывается в память набором бит. #$ даст плохо читаемую конструкцию. Само собой, это мое личное мнение.
В Delphi есть такое: #$D#$A
Ну и что? А мне эта конструкция не нравится. Я же свое впечатление написал. Для меня никогда Delphi не был эталоном, возле которого надлежит стоять на коленях и бить поклоны.
Спасибо. Поправили
Вот на этом коде PascalABC.net ломается:
В самой IDE отображается нормальной, в консоли IDE тоже, имя файла корректное, но в системной консоли отображается криво (Shift-F9), в созданном файле (Ctrl-O. выбрать файл, открыть) — криво.
Надо указывать кодировку в Rewrite
Rewrite(f,Encoding.UTF8);
Writeln(f, 'Unicode — ελληνικά, русский, 中国文字 Zhōngguó wénzì.');
Но UTF-8 и так должна быть по умолчанию, по идее. Логично требовать указания кодировки, только если требуется какая-нибудь экзотическая или устаревшая (866, 1251 и тд), разве не так?
И как насчёт консоли?