Динамическая типизация
От: Adopt  
Дата: 25.08.06 02:43
Оценка:
Какие плюсы у динамической типизации в сравнении со стачиеской типизации? Какие задачи с помощью динамически типизированного языка реализуются легче? Приведите плз примеры кода для сравнения?
Re: Динамическая типизация
От: FR  
Дата: 25.08.06 04:12
Оценка:
Здравствуйте, Adopt, Вы писали:

A>Какие плюсы у динамической типизации в сравнении со стачиеской типизации? Какие задачи с помощью динамически типизированного языка реализуются легче? Приведите плз примеры кода для сравнения?


В первую очередь гибкость, потом обобщеность кода. Но я думаю что обсуждать только динамическую типизацию в отрыве от других возможностей (Re[32]: Unit-тесты vs. контрактно ориентированное программир
Автор: FR
Дата: 21.07.06
) динамических языков малоосмысленно.

А как пример вот этот код:

def cache(func):
    map = {}
    def call(*args):
        if map.has_key(args):
            return map[args]
        else:
            result = func(*args)
            map[args] = result
            return result

    return call


позволяет кешировать любую функцию:

def fib(n):
    if n < 2: 
        return 1
    else:    
        return fib(n-1)+fib(n-2);

fib = cache(fib)

print fib(300)
Re: Динамическая типизация
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.08.06 06:26
Оценка: +1 :))) :))) :))) :))) :)
Здравствуйте, Adopt, Вы писали:

A>Какие плюсы у динамической типизации в сравнении со стачиеской типизации? Какие задачи с помощью динамически типизированного языка реализуются легче? Приведите плз примеры кода для сравнения?


Ну что, сразу в Священные войны поедем или здесь еще помучаемся?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Динамическая типизация
От: ArtDenis Россия  
Дата: 25.08.06 09:24
Оценка:
eao197 пишет:
> Ну что, сразу в Священные войны поедем или здесь еще помучаемся?

Пускай сначала люди свои умные мысли выскажут... А как дойдёт дело до
обсуждения личностей, можно сразу в священные войны
Posted via RSDN NNTP Server 2.0
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Динамическая типизация
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.08.06 09:37
Оценка: +2 :)
Здравствуйте, ArtDenis, Вы писали:

>> Ну что, сразу в Священные войны поедем или здесь еще помучаемся?


AD>Пускай сначала люди свои умные мысли выскажут...


Эти мысли высказывались уже не понятно сколько раз. Вместо провоцирования нового витка лучше почитать ранее написанное. Например, вот здесь:
DynamicTyping
BenefitsOfDynamicTyping
IsDynamicTypingSufficientlyEfficient
и далее по ссылочками.

А еще лучше, самому взять динамически типизированный язык и сделать на нем что-нибудь.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 25.08.06 12:39
Оценка:
Здравствуйте, FR, Вы писали:

FR>позволяет кешировать любую функцию:


А зачем нужно кешировать функцию?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Динамическая типизация
От: FR  
Дата: 25.08.06 13:24
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, FR, Вы писали:


FR>>позволяет кешировать любую функцию:


IT>А зачем нужно кешировать функцию?


А зачем вообще нужна функция?

Смысл твоего вопроса от меня ускользает, или тебе нужно разъяснять зачем вообще может понадобится кеширование?
Просто человек просил привести пример я привел.
Re[4]: Динамическая типизация
От: fmiracle  
Дата: 25.08.06 14:22
Оценка: +5
Здравствуйте, eao197, Вы писали:

E>А еще лучше, самому взять динамически типизированный язык и сделать на нем что-нибудь.


Вот это точно бесполезно, если прям сразу. Потому что человек, привыкший к статически типизованным языкам, поначалу, а особенно — без дополнительной теоретической подготовки — будет писать на динамически типизованном в точности так же, как на статически типизованном и при этом только мучаться — что неудобно.

По себе знаю
Уж как я изначально писал на javascript — это нечто. Далеко не сразу и только хорошо почитав про динамические языки, я понял насколько это можно было сделать лучше. При переписывании иногда целые страницы запутанного кода (который я с баальшим трудом писал и олаживал) — заменялись на несколько строчек простого и понятного кода

В каких случаях что лучше/хуже я судить не возьмусь (к тому же у меня с динамическими языками опыта все же мало), но точно скажу — что нужно осознать и освоиться с тем и с другим, чтобы реально это использовать. В смысле человек, привыкший к статике, далеко не сразу поймет прелесть динамики и наоборот. Должен быть некий перелом в сознании для удобного и эффективного использования. В статике человек привыкает использовать контроль компилятора, в динамике — привыкает к большей свободе — и переход от одного к другому не так-то и прост.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Динамическая типизация
От: fmiracle  
Дата: 25.08.06 14:22
Оценка: 24 (1)
Здравствуйте, IT, Вы писали:

IT>А зачем нужно кешировать функцию?


Если функция вычисляется долго и сложно, но дает гарантированно однозначный результат для каждого уникального набора параметров (как приведенные в примере числа Фиббоначи), и при этом в программе высока вероятность частого использования функции с несколькими заранее неизвестными наборами параметров, то использование кэширования может оказаться очень эффективным.
Может так же оказаться очень полезным для рекурсивно вычисляемых функций.

Такая вот теория.
Самому ни разу пока не пришлось применить
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Динамическая типизация
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.08.06 14:29
Оценка: +1 :)
Здравствуйте, fmiracle, Вы писали:

F>В каких случаях что лучше/хуже я судить не возьмусь (к тому же у меня с динамическими языками опыта все же мало), но точно скажу — что нужно осознать и освоиться с тем и с другим, чтобы реально это использовать. В смысле человек, привыкший к статике, далеко не сразу поймет прелесть динамики и наоборот. Должен быть некий перелом в сознании для удобного и эффективного использования. В статике человек привыкает использовать контроль компилятора, в динамике — привыкает к большей свободе — и переход от одного к другому не так-то и прост.


Не прост, подтверждаю.
Но и читать споры философов, пытаясь выделить из них крупицы рациональности, еще более бесполезное дело. Нельзя научиться кататься на велосипеде в теории. Так и здесь


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Динамическая типизация
От: FR  
Дата: 25.08.06 16:27
Оценка: +3
Здравствуйте, eao197, Вы писали:


E>Не прост, подтверждаю.

E>Но и читать споры философов, пытаясь выделить из них крупицы рациональности, еще более бесполезное дело. Нельзя научиться кататься на велосипеде в теории. Так и здесь

Особенно философов написавших за свою жизнь пару строчек на динамике, и потом кричащих что писали и знают что это такое, но при этом замечающих только недостатки
Re[4]: Динамическая типизация
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.08.06 19:59
Оценка: +1
Здравствуйте, fmiracle, Вы писали:

F>Если функция вычисляется долго и сложно, но дает гарантированно однозначный результат для каждого уникального набора параметров (как приведенные в примере числа Фиббоначи), и при этом в программе высока вероятность частого использования функции с несколькими заранее неизвестными наборами параметров, то использование кэширования может оказаться очень эффективным.


Вот в Немерле, языке отнюдь не динамичесоком, есть такой стандартный макрос — Memoize. Доастаочно добавить его к свойству или методу и его значение будет закэшировано после первого использования. Так что почти все что достижимо динамической типизации можно реализовать на макросах. А то что зависит от информации доступной исключительно в рантайме можно решить с помощью динамической кодогенерации. Обычно такие решения получаются значительно более быстрыми. Ну, а сложность зависит от возможностей языка и фрэймворков.

F>Может так же оказаться очень полезным для рекурсивно вычисляемых функций.


При рекурсии более полезны акамуляторы в стеке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Динамическая типизация
От: Adopt  
Дата: 25.08.06 23:37
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>По себе знаю

F>Уж как я изначально писал на javascript — это нечто. Далеко не сразу и только хорошо почитав про динамические языки, я понял насколько это можно было сделать лучше. При переписывании иногда целые страницы запутанного кода (который я с баальшим трудом писал и олаживал) — заменялись на несколько строчек простого и понятного кода

можете привести парку кусков кода?

F>В каких случаях что лучше/хуже я судить не возьмусь (к тому же у меня с динамическими языками опыта все же мало), но точно скажу — что нужно осознать и освоиться с тем и с другим, чтобы реально это использовать. В смысле человек, привыкший к статике, далеко не сразу поймет прелесть динамики и наоборот. Должен быть некий перелом в сознании для удобного и эффективного использования. В статике человек привыкает использовать контроль компилятора, в динамике — привыкает к большей свободе — и переход от одного к другому не так-то и прост.


где можно найти материал помогающий перейти? туториал... по принципу делаем сначала как привыкли, а потом пример на динамически типизированном языке
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 00:17
Оценка:
Здравствуйте, FR, Вы писали:

FR>А зачем вообще нужна функция?


Функция нужна, что бы её вызывать. Ы?

FR>Смысл твоего вопроса от меня ускользает, или тебе нужно разъяснять зачем вообще может понадобится кеширование?


Зачем нужно кеширование я могу попытаться догадаться или в крайнем случае погуглить и почитать. Зачем нужно кешировать, ВНИМАНИЕ!, функцию не может ответить даже гугль

FR>Просто человек просил привести пример я привел.


Боюсь, что человек, задавший подобный вопрос, находится после твоего ответа в таком же недоумении как и я.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 00:40
Оценка:
Здравствуйте, fmiracle, Вы писали:

IT>>А зачем нужно кешировать функцию?


F>Если функция вычисляется долго и сложно, но дает гарантированно однозначный результат для каждого уникального набора параметров (как приведенные в примере числа Фиббоначи), и при этом в программе высока вероятность частого использования функции с несколькими заранее неизвестными наборами параметров, то использование кэширования может оказаться очень эффективным.


Вот теперь понятно. Т.е. речь идёт не о кешировании функции, а о кешировании результата её вызова.

To FR: Функция для меня, человека погрязжего в управляемом коде и гарбач-коллекторах, тем не менее всё ещё представляется как указатель на блок кода, который можно вызвать ассемблерной инстукцией call или jmp. Зачем нужно кешировать, не запоминать для косвенного вызова, а именно кешировать этот указатель я не понимаю

F>Такая вот теория.

F>Самому ни разу пока не пришлось применить

На самом деле довольно полезная штука. Я иногда использую в DAL для кеширования результатов вызова сохранённых процедур. Код реализации, конечно не такой компакнтный как у FR, но написан один раз и есть больше не просит. При этом настройка параметров кеширования производится декларативно.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 00:45
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>В статике человек привыкает использовать контроль компилятора, в динамике — привыкает к большей свободе...


К свободе менять типы переменных исполняемой средой как ей вздумается, привыкнуть невозможно
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Динамическая типизация
От: FR  
Дата: 26.08.06 06:02
Оценка: -1
Здравствуйте, IT, Вы писали:


FR>>Смысл твоего вопроса от меня ускользает, или тебе нужно разъяснять зачем вообще может понадобится кеширование?


IT>Зачем нужно кеширование я могу попытаться догадаться или в крайнем случае погуглить и почитать. Зачем нужно кешировать, ВНИМАНИЕ!, функцию не может ответить даже гугль


Понятно просто тебе охота поспорить, и поэтому решил прикопатся к терминологии. Хороший способ можно долго спорить ни о чем.

FR>>Просто человек просил привести пример я привел.


IT>Боюсь, что человек, задавший подобный вопрос, находится после твоего ответа в таком же недоумении как и я.


Боюсь у него нет такого горячего желания пофлеймить как у тебя.
Re[6]: Динамическая типизация
От: FR  
Дата: 26.08.06 06:05
Оценка: +2
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, fmiracle, Вы писали:


F>>В статике человек привыкает использовать контроль компилятора, в динамике — привыкает к большей свободе...


IT>К свободе менять типы переменных исполняемой средой как ей вздумается, привыкнуть невозможно


Еще одна легенда.
Re[5]: Динамическая типизация
От: FR  
Дата: 26.08.06 13:02
Оценка:
Здравствуйте, IT, Вы писали:

IT>Вот теперь понятно. Т.е. речь идёт не о кешировании функции, а о кешировании результата её вызова.


IT>To FR: Функция для меня, человека погрязжего в управляемом коде и гарбач-коллекторах, тем не менее всё ещё представляется как указатель на блок кода, который можно вызвать ассемблерной инстукцией call или jmp. Зачем нужно кешировать, не запоминать для косвенного вызова, а именно кешировать этот указатель я не понимаю


Ты просто привык к тому что функции не первоклассные объекты, по этому и думаешт о них как как об указателях. Можно и функцию "кешировать". В функциональщине те же замыкания и карринг и есть в принципе "кеширование" функции. Кстати в моем примере это тоже есть так как присутствует замыкание.

F>>Такая вот теория.

F>>Самому ни разу пока не пришлось применить

IT>На самом деле довольно полезная штука. Я иногда использую в DAL для кеширования результатов вызова сохранённых процедур. Код реализации, конечно не такой компакнтный как у FR, но написан один раз и есть больше не просит. При этом настройка параметров кеширования производится декларативно.


Интересно бы посмотреть для сравнения.
Re[7]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 16:44
Оценка:
Здравствуйте, FR, Вы писали:

IT>>К свободе менять типы переменных исполняемой средой как ей вздумается, привыкнуть невозможно


FR>Еще одна легенда.


Что значит легенда? На "javascript parseint" гугль выдаёт больше миллиона ссылок. Это легенда? Отсутствие нормальной типизиации было основной мотивацией переписвания этого сайта с ASP на ASP.NET. Это тоже легенда?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.