Форум
Декларативное программирование
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, VoidEx, Вы писали: VE>Здравствуйте, vdimas, Вы писали: DG>>>>а почти весь ПМ (при условии, что есть несколько веток) в это и транслируется. VE>>>Любая программа содержит условные переходы, но динамической типизацией это называть было бы крайне странно. VE>>>Поэтому первостепенной задачей было бы как раз решить, что же такое динамическая типизация. V>>Это такое условное ветвление, целью которого является выбрать ветку алгоритма, умеющего работать с неким конкретным устройством значения (т.е. с неким конкретным типом). VE>И if именно это и делает. Не путайте то, какие байтики лежат, с типом. В случае указателя конкретное устройство значения одно и то же - указатель, но тип тем не менее разный. V>>Т.е. имеем следующее: в compile-time пишем алгоритмы под все возможные (или уникально обрабатываемые) типы, ожидаемые в некоей точке алгоритма, а в рантайм через ветвление выбираем одну из веток алгоритма, согласно фактически поданному типу значения. V>>Для работоспособности этой схемы обязательно нужен некий механизм реинтерпретации памяти. Например, в C# это приведение типов as или через (Type1), в С++ через dynamic_cast или через reinterpret_cast, еще через встроенный рантайм-полиморфизм, в ML-языках через паттерн-матчинг. VE>Какая связь типов с памятью? VE>Вот [url=http://en.wikipedia.org/wiki/System_F]тут[/url], например, о каком мезанизме реинтерпретации памяти вообще в принципе может идти речь? VE>>>То, что при наличии разных вариантов у АлгТД происходит ветвление — это динамическая типизация в той же мере, что и ветвление по 0 и не 0 в факториале. V>>Нет. VE>Да. VE>Я вас удивлю, но (x:int){x==0} - это тип. У него ровно одно значение. И if это проверяет, а затем работает с этим типом. VE>[q] VE>Formally, a type can be defined as "any property of a programme we can determine without executing the program" VE>[/q] VE>Вы же почему-то под типом подразумеваете какое-то внутреннее представление. Мол, что (x:int){x==0}, что (x:int){x>0}, один чёрт int, 4 байта, да? Ну так и указатель любой 4 (или 8) байта, ан нет, типы-то разные!
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …