Pascal - маленький язык, созданный в 1972 году. В силу своего размера и логичности стандартный Pascal хорошо подходит для начального обучения программированию (впрочем, Modula-2 и Oberon-07 для этого подходят лучше).
Но в практическом программировании "чистый" Pascal не применяется - только расширенные дополнительными возможностями диалекты разной степени извращённости.
Delphi - очень сильно расширенный и достаточно уродливый диалект Pascal, предназначенный для быстрого создания GUI. Для обучения программированию подходит очень плохо - из диалектов Pascal в этом отношении хуже Delphi только PascalABC.Net.
Другие языки программирования и технологии
В чем отличие pascal от delphi?
Delphi - расширенный паскаль. На Delphi можно делать окошечки =) На Delphi можно писать проги на Pascal, обратно нельзя. Pascal разрабатывался под DOS изначально, современный Delphi может компилировать под Win32/64, Linux, MacOS, iOS, Android.
Вопрос слишком общий, чтобы ответить на него односложно.
Вопрос слишком общий, чтобы ответить на него односложно.
Из чисто языковых - прежде всего автоматическое разыменование объектов. До кучи: поддержка дженериков, интерфейсов, анонимных методов, классов-расширений, цикла foreach (для классов, реализующих IEnumerable), возможность создания и использования динамических библиотек, инлайн-методы, статические методы, записи с методами и конструкторами. Проиллюстрирую:
SomeObject := SomeClass.Create();
SomeObject^.Foo(); //Pascal
SomeObject.Foo(); //Delphi
procedure Foo< T >(Param: T); //Only in Delphi
Foo(begin Boo(); end;); //Only in Delphi
type
TStringHelper = record helper for string; //Only in Delphi
foreach Element in SomeList; //Only in Delphi
library Boo; //Only in Delphi
procedure Foo(); external 'Boo.dll'; //Only in Delphi
procedure Foo; inline; //In Delphi - code is inserted upon call without using stack etc.
strict private procedure Foo(); //Only in Delphi
type
SomeRec = record
private //Only in Delphi
a: integer;
public //Only in Delphi
constructor Create(_a: integer); //Only in Delphi
end;
SomeObject := SomeClass.Create();
SomeObject^.Foo(); //Pascal
SomeObject.Foo(); //Delphi
procedure Foo< T >(Param: T); //Only in Delphi
Foo(begin Boo(); end;); //Only in Delphi
type
TStringHelper = record helper for string; //Only in Delphi
foreach Element in SomeList; //Only in Delphi
library Boo; //Only in Delphi
procedure Foo(); external 'Boo.dll'; //Only in Delphi
procedure Foo; inline; //In Delphi - code is inserted upon call without using stack etc.
strict private procedure Foo(); //Only in Delphi
type
SomeRec = record
private //Only in Delphi
a: integer;
public //Only in Delphi
constructor Create(_a: integer); //Only in Delphi
end;
Вопрос из разряда чем отличается машина от конкретной модели скажем BMW =).
Диалектов Pascal много и соотв. отличий много.
В Delphi прежде всего есть VCL (своя библиотека визуальных компонентов).
Да в каком-то смысле её частично содрали в Lazarus (LCL)
В Pascal ABC.NET идеология другая и ООП тяготеет к тому, что принято в C#, VB.NET, соотв. по полной используются компоненты .NET платформы, имеет много от функционального языка (лямбды, Linq...), которые не встречал ещё ни в одной версии Pascal. В этом смысле развит даже больше чем C#.
Lazarus (IDE + LCL библиотеки) - попытка сделать бесплатный, открытый и кросплатформенный Delphi (сначала Delphi мог компилировать только под Windows). С виду всё неплохо и похоже на Delphi, но чем дальше в лес тем заметнее различия.
В Free Pascal (его компилятор использует Lazarus) тоже свои функции, ближе к "классическому" Object Pascal, но умеет кроссплатформенно компилировать, описаны вызовы WinAPI функций и прочие плюшки.
Pascal ABC - Разрабатывался по большому счету для учебы. Такой гаденький утёнок вышел. И не совсем "классический" Pascal и не совсем современный. Поэтому помер и ничуть не жалко =)
P.S: Не трогал TMT Pascal (некогда довольно популярный), Pascal под ZX Spectrum и прочие совсем давние трупы.
Диалектов Pascal много и соотв. отличий много.
В Delphi прежде всего есть VCL (своя библиотека визуальных компонентов).
Да в каком-то смысле её частично содрали в Lazarus (LCL)
В Pascal ABC.NET идеология другая и ООП тяготеет к тому, что принято в C#, VB.NET, соотв. по полной используются компоненты .NET платформы, имеет много от функционального языка (лямбды, Linq...), которые не встречал ещё ни в одной версии Pascal. В этом смысле развит даже больше чем C#.
Lazarus (IDE + LCL библиотеки) - попытка сделать бесплатный, открытый и кросплатформенный Delphi (сначала Delphi мог компилировать только под Windows). С виду всё неплохо и похоже на Delphi, но чем дальше в лес тем заметнее различия.
В Free Pascal (его компилятор использует Lazarus) тоже свои функции, ближе к "классическому" Object Pascal, но умеет кроссплатформенно компилировать, описаны вызовы WinAPI функций и прочие плюшки.
Pascal ABC - Разрабатывался по большому счету для учебы. Такой гаденький утёнок вышел. И не совсем "классический" Pascal и не совсем современный. Поэтому помер и ничуть не жалко =)
P.S: Не трогал TMT Pascal (некогда довольно популярный), Pascal под ZX Spectrum и прочие совсем давние трупы.
Дима Лапудо
Хотел ещё дописать по поводу Delphi, но время ответа вышло, а в комментах лень =)
не очень большие. язык тот же только объектный.
Pascal - язык. Delphi - среда программирования.
Артем Сопов
Современный Delphi это и язык. Это раньше он назывался Object Pascal, тогда Delphi была только среда
Похожие вопросы
- pascal or delphi
- Один вопрос по Pascal (или Object Pascal, или Delphi) (не надо ничего решать, просто один вопрос)
- В чём отличия Pascal ABC, Free Pascal, Lazarus, Delphi?
- Можно ли назвать Turbo Pascal или Delphi мёртвым языком программирования?
- Pascal and Delphi
- Как написать программу для перевода числа с 8-ричной в 16-ричную систему? (язык Pascal или delphi в крайнем случае C++)
- Стоит ли изучать Pascal и Delphi в 2022 году? Они ещё где-то нужны?
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- добрый день подскажите пожалуйста программисты есть отличия между turbo и object Pascal я знаю что object pascal
- Придумайте задачку на массив в delphi (pascal)