довольно известный блоггер Ola Bini написал пост, о том, что, по его мнению, Руби бы была не бесполезна опциональная типизация: как минимум она помогла бы для оптимизации "узких" мест в программах. Примеры даются из Common Lisp, в комментариях приводят факт о том, что похожее есть и в Dylan.
Здравствуйте, Курилка.
Статическая и динамическая типизация в рамках одного языка давным давно есть в Delphi. В основном там статическая типизация, но для IDispatch динамическая типизация. (Через COM-интерфейс IDispatch, например, можно получить доступ к программному интерфейсу Excel-а.) Именно поэтому в Delphi работать с IDispatch гораздо удобнее, чем в C++.
uses
ComObj;
procedure DynamicTyping;
var
Excel: Variant; // хранит указатель на IDispatchbegin
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;
Здравствуйте, Пётр Седов, Вы писали:
ПС>Здравствуйте, Курилка. ПС>Статическая и динамическая типизация в рамках одного языка давным давно есть в Delphi. В основном там статическая типизация, но для IDispatch динамическая типизация. (Через COM-интерфейс IDispatch, например, можно получить доступ к программному интерфейсу Excel-а.) Именно поэтому в Delphi работать с IDispatch гораздо удобнее, чем в C++.
[cut]
Ты удивишься, но, насколько я помню IDispatch, делался для васика, который тоже вполне сочетает и тот и другой подход.
И ещё секрет — Common Lisp будет постарше дельфи (окончательный стандарт вышел в 1994 году), тем более если учитывать диалекты, на базе которых он создавался.
Здравствуйте, Курилка, Вы писали:
К>Ты удивишься, но, насколько я помню IDispatch, делался для васика, который тоже вполне сочетает и тот и другой подход.
Нет, не удивлюсь, ведь Delphi — это прямой конкурент Visual Basic-а. И да, Visual Basic (не .NET) поддерживает оба подхода (статическая и динамическая типизации).
К>И ещё секрет — Common Lisp будет постарше дельфи (окончательный стандарт вышел в 1994 году), тем более если учитывать диалекты, на базе которых он создавался.
Вряд ли это секрет. Просто в России Lisp — это инопланетная экзотика, а Delphi — это mainstream. А кто кого старше — не важно .
Здравствуйте, Пётр Седов, Вы писали:
ПС>Вряд ли это секрет. Просто в России Lisp — это инопланетная экзотика, а Delphi — это mainstream. А кто кого старше — не важно .
Медленно, но верно сей мейнстрим идёт в сторону кобола, в отличии от Ruby, к примеру
Но к теме типизации этот флейм не имеет отношения, так что для себя считаю сей вопрос закрытым.
Здравствуйте, Пётр Седов, Вы писали:
ПС>Здравствуйте, Курилка, Вы писали: К>>Ты удивишься, но, насколько я помню IDispatch, делался для васика, который тоже вполне сочетает и тот и другой подход. ПС>Нет, не удивлюсь, ведь Delphi — это прямой конкурент Visual Basic-а. И да, Visual Basic (не .NET) поддерживает оба подхода (статическая и динамическая типизации).
.Net-версия также поддерживает оба, вот пример, правда по-умолчанию там Option Strict теперь.
Здравствуйте, Курилка, Вы писали: ПС>>И да, Visual Basic (не .NET) поддерживает оба подхода (статическая и динамическая типизации). К>.Net-версия также поддерживает оба, вот пример, правда по-умолчанию там Option Strict теперь.
Я просто про VB.NET не знаю почти ничего . Поэтому и утверждал только про старый VB (не .NET).
довольно известный блоггер Ola Bini написал пост, о том, что, по его мнению, Руби бы была не бесполезна опциональная типизация: как минимум она помогла бы для оптимизации "узких" мест в программах. Примеры даются из Common Lisp, в комментариях приводят факт о том, что похожее есть и в Dylan.
В Руби было бы не бесполезно иметь статическую типизацию (пусть и в стиле Boo). А вот зачем Руби строем в прошлый век ходить, я лично не понимаю. Руби тем и хорош, что он краток и понятен. Лиспу до него в этом отношении никогда не дорости.
В прочем, по любому Руби для этого нужно серьезно изменить. В нем слишком много скриптовости.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
довольно известный блоггер Ola Bini написал пост, о том, что, по его мнению, Руби бы была не бесполезна опциональная типизация: как минимум она помогла бы для оптимизации "узких" мест в программах. Примеры даются из Common Lisp, в комментариях приводят факт о том, что похожее есть и в Dylan.
если поднять архивы 5-летней давности, то можно увидеть, как я пытался Матца убедить в том же самом, прчиём столь горячо, что на меня некоторые давже твит поставили а потом я нашёл хаскел