Здравствуйте, Курилка.
Статическая и динамическая типизация в рамках одного языка давным давно есть в Delphi. В основном там статическая типизация, но для IDispatch динамическая типизация. (Через COM-интерфейс IDispatch, например, можно получить доступ к программному интерфейсу Excel-а.) Именно поэтому в Delphi работать с IDispatch гораздо удобнее, чем в C++.
uses
ComObj;
procedure DynamicTyping;
var
Excel: Variant; // хранит указатель на IDispatch
begin
Excel := CreateOleObject('Excel.Application'); // Excel должен быть установлен на компьютере
Excel.Visible := True; // вызов IDispatch::Invoke
Excel.Nonsense; // вызов IDispatch::Invoke
// компилируется, но будет run-time ошибка:
// класс исключения: EOleError
// сообщение: Method 'Nonsense' not supported by automation object.
end;
procedure StaticTyping(Form: TCustomForm);
begin
Form.Visible := True; // вызов TCustomForm.SetVisible
Form.Nonsense; // не компилируется
end;