Comments 20
Все еще люблю Pascal и смотрю на язык с теплотой. Выдал инвайт чтобы побольше писали статей о нем :)
Дополнительно стоит обратить внимание на то что компилятор в первую очередь будет пытаться выполнить побитовый оператор
and
и в случае записи кода условия следующим образом:if one and two then
- будет выходить ошибка, поэтому при объединении условий их необходимо брать в скобки.
Этот момент разъясните, пожалуйста. У вас две булевские функции, о каком побитовом операторе идёт речь? Зачем скобки?
Особенность синтаксиса Pascal.
a and b - побитовая операция
(a < 0) and (b < 0) - boolean
С каких пор вдруг, и благодаря чему?
Всю жизнь в паскале and была булевская специальная форма, когда операнды типа boolean (а исходно только так и было), и побитовая операция, когда операнды целочисленные.
А самое главное, как скобки вообще могут на это влиять???
приоритет and больше, чем <, поэтому a<0 and b<0 это то же, что a< (0 and b) <0, такое не компилируется ни в какой версии Паскаля, хоть 40 летней давности
На Паскале не писал со школьных времен, но в силу интереса к языкам программирования как таковым тема интересна. Какие существуют отличия FreePascal от Delphi на уровне языка? Есть ли какие-то интересные языковые фичи?
И еще - я как-то посмотреть на RTTI, где-то вычитал что оно в паскале реализовано весьма неплохо сделано. Скачал Lazarus, запустил - и оказалось что RTTI официальной последней версией компилятора не поддерживается. Якобы нужна (разрабатываемая в настоящее время) версия 3.3.1, а не официальная 3.2.2 от 2021 года. Что нибудь слышно о том когда будет релиз 3.3.1?
Какие существуют отличия FreePascal от Delphi на уровне языка? Есть ли какие-то интересные языковые фичи?
Синтаксис Delphi достаточно сильно продвинулся от обычного Pascal. FreePascal (FPC) тоже продвигается, плюс, он пытается быть совместимым и с новшествами в Delphi (FPC позволяет выбрать режим совместимости директивой {$MODE DELPHI}
).
Но далеко не все добавляется в FPC. Например:
Инлайн объявление переменных
var i: integer := 2024;
Выведение типов
var i := 2024;
var s := 'Привет';
Анонимные функции (в FPC это на стадии открытого тестирования (в транке))
var d := function: string begin Result := 'hi there' end;
var ss := d();
TTask.Run(
procedure
begin
// работа в потоке
end);
Инлайн методов классов, процедур и функций (встраивание кода без выполнения вызова метода)
TMyObj = class
procedure DoSomthing; inline;
end;
procedure Test1; inline
begin
end;
Использование переменной цикла без первичного объявления и for in
for var i := 1 to 10 do ...
for var Item in SomeList do ...
for var Item in [1, 2, 3, 4, 5, 6] do ...
Строки в Delphi по умолчанию UTF-16, в FPC - UTF-8
Дженерики тоже работают по-разному. В fpc дженерики ближе к шаблонам.
Ух ты, мои древние статьи вспомнили :-)
Кстати мы до сих пор пишем на Delphi (под Windows). Жаль, последние версии Delphi IDE не блещут качеством.
Периодически лезут мысли "а что там с FPC", но насколько понимаю FPC и лазарус это всё-таки нишевое именно под Linux (с точки зрения концепций, компонентов итд)
но насколько понимаю FPC и лазарус это всё-таки нишевое именно под Linux (с точки зрения концепций, компонентов итд)
Я бы так не сказал. На FPC можно и под Windows делать, там главная проблема — это строки, поэтому фантазии «из одного исходника делаем сразу все платформы» больше миф, исходники все равно придется делать свои под каждую платформу, но все реально. Иногда бывают платформенные заморочки, что, опять же, не дает возможность из одного комплекта исходников делать сразу бинарники под все.
P.S.: Проверно собственной практикой.
Ребята из Эмбы тужатся и стараются (я слежу за внутренним (закрытый, для тестеров) чатиком Эмбы). Но основная головная боль IDE - анализатор кода (LSP). Всё бы ничего, но из-за него кажется, что баги по всей среде и это угнетает. Как только починят (а я крайне надеюсь, что починят), то стабильность среды резко возрастет.
А вообще кроме Эмбы все это хозяйство кому-то нужно еще? Ведутся ли прямо сейчас какие-нибудь ломовые стартапы на Паскале?
Нужно. Среда стоит не малых денег и её покупают. При чем для Легаси новые версии не проходят, а значит, покупают для новых проектов. Насколько компаний я очень знаю. Отдельных разработчиков знаю больше, кто использует новые версии для создания проектов. Под андроид и иос многие создают, под Линукс, особенно сейчас. Так что да, определенно нужно.
А что в этой статье для аналитика, я не совсем понял? И какого аналитика:
бизнес-аналитик;
системный аналитик;
аналитик данных.
В самом первом примере ошибка:
// Инициализация массива местной структуры
SetLength(Grid,LocalData,AInitialData.Count);
Должно быть
SetLength(LocalData,AInitialData.Count);
Lazarus IDE для аналитика. Приемы работы в современном Free Pascal — 1