Search
Write a publication
Pull to refresh

Comments 20

Все еще люблю Pascal и смотрю на язык с теплотой. Выдал инвайт чтобы побольше писали статей о нем :)

Дополнительно стоит обратить внимание на то что компилятор в первую очередь будет пытаться выполнить побитовый оператор and и в случае записи кода условия следующим образом: if one and two then - будет выходить ошибка, поэтому при объединении условий их необходимо брать в скобки.

Этот момент разъясните, пожалуйста. У вас две булевские функции, о каком побитовом операторе идёт речь? Зачем скобки?

С каких пор вдруг, и благодаря чему?

Всю жизнь в паскале and была булевская специальная форма, когда операнды типа boolean (а исходно только так и было), и побитовая операция, когда операнды целочисленные.

А самое главное, как скобки вообще могут на это влиять???

приоритет and больше, чем <, поэтому a<0 and b<0 это то же, что a< (0 and b) <0, такое не компилируется ни в какой версии Паскаля, хоть 40 летней давности

Это ясное дело, но мой вопрос о другом. Автор зачем-то ставит в скобки вызов булевских функций:

if (one) and (two) then

Я думаю, он как раз дезориентирован приоритетными скобочками для сравнений, о которых написали Вы.

Маловероятно, что дезориентирован.

Вероятнее всего автор хотел какие-то "сложные" сравнения делать, а по ходу переделал код. Сложные сравнения без скобок выдадут просто ошибку (по большей части).

Он там некую теоретическую базу подвёл, на которую я и отреагировал.

На Паскале не писал со школьных времен, но в силу интереса к языкам программирования как таковым тема интересна. Какие существуют отличия 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. Например:

  1. Инлайн объявление переменных

var i: integer := 2024;
  1. Выведение типов

var i := 2024;

var s := 'Привет';
  1. Анонимные функции (в FPC это на стадии открытого тестирования (в транке))

var d := function: string begin Result := 'hi there' end;
var ss := d();

TTask.Run(
  procedure
  begin
    // работа в потоке
  end);
  1. Инлайн методов классов, процедур и функций (встраивание кода без выполнения вызова метода)

TMyObj = class
  procedure DoSomthing; inline;
end;

procedure Test1; inline
begin

end;
  1. Использование переменной цикла без первичного объявления и 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 ...
  1. Строки в Delphi по умолчанию UTF-16, в FPC - UTF-8

  2. Дженерики тоже работают по-разному. В fpc дженерики ближе к шаблонам.

  1. Атрибуты (RTTI) в FPC тоже только на стадии тестирования.

Ух ты, мои древние статьи вспомнили :-)

Кстати мы до сих пор пишем на Delphi (под Windows). Жаль, последние версии Delphi IDE не блещут качеством.

Периодически лезут мысли "а что там с FPC", но насколько понимаю FPC и лазарус это всё-таки нишевое именно под Linux (с точки зрения концепций, компонентов итд)

но насколько понимаю FPC и лазарус это всё-таки нишевое именно под Linux (с точки зрения концепций, компонентов итд)

Я бы так не сказал. На FPC можно и под Windows делать, там главная проблема — это строки, поэтому фантазии «из одного исходника делаем сразу все платформы» больше миф, исходники все равно придется делать свои под каждую платформу, но все реально. Иногда бывают платформенные заморочки, что, опять же, не дает возможность из одного комплекта исходников делать сразу бинарники под все.

P.S.: Проверно собственной практикой.

Ребята из Эмбы тужатся и стараются (я слежу за внутренним (закрытый, для тестеров) чатиком Эмбы). Но основная головная боль IDE - анализатор кода (LSP). Всё бы ничего, но из-за него кажется, что баги по всей среде и это угнетает. Как только починят (а я крайне надеюсь, что починят), то стабильность среды резко возрастет.

А вообще кроме Эмбы все это хозяйство кому-то нужно еще? Ведутся ли прямо сейчас какие-нибудь ломовые стартапы на Паскале?

Нужно. Среда стоит не малых денег и её покупают. При чем для Легаси новые версии не проходят, а значит, покупают для новых проектов. Насколько компаний я очень знаю. Отдельных разработчиков знаю больше, кто использует новые версии для создания проектов. Под андроид и иос многие создают, под Линукс, особенно сейчас. Так что да, определенно нужно.

А что в этой статье для аналитика, я не совсем понял? И какого аналитика:

  • бизнес-аналитик;

  • системный аналитик;

  • аналитик данных.

С таким же успехом можно написать статью: "Windows Блокнот для аналитика - приемы работы в современном текстовом редакторе".

В самом первом примере ошибка:

 // Инициализация массива местной структуры
 SetLength(Grid,LocalData,AInitialData.Count); 

Должно быть

 SetLength(LocalData,AInitialData.Count); 
Sign up to leave a comment.

Articles