Re[8]: Динамическая типизация
От: FR  
Дата: 26.08.06 17:14
Оценка: +1
Здравствуйте, IT, Вы писали:


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


IT>Что значит легенда? На "javascript parseint" гугль выдаёт больше миллиона ссылок. Это легенда? Отсутствие нормальной типизиации было основной мотивацией переписвания этого сайта с ASP на ASP.NET. Это тоже легенда?


Это проблема языков со слабой типизацией, к динамике отношения не имеет, динамические языки с сильной типизацией не позволяют фокусы вроде x = 2 + "3".
Re[6]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 17:26
Оценка:
Здравствуйте, FR, Вы писали:

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


С функциями у меня всё в порядке. Единственное новое что я о них узнал из функциональщины, это то, что их там принято называть первоклассными объектами. Всё остальное так или иначе знал со времён баловства с дековским ассемблером на PDP-11.

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


FR>Интересно бы посмотреть для сравнения.


AOP interceptors
Автор: IT
Дата: 12.06.06
. Только не смейся
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 17:26
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это проблема языков со слабой типизацией, к динамике отношения не имеет, динамические языки с сильной типизацией не позволяют фокусы вроде x = 2 + "3".


А такое позволяют:

y = 2;
x = y + "3"

?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Динамическая типизация
От: FR  
Дата: 26.08.06 17:29
Оценка:
Здравствуйте, IT, Вы писали:

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


FR>>Это проблема языков со слабой типизацией, к динамике отношения не имеет, динамические языки с сильной типизацией не позволяют фокусы вроде x = 2 + "3".


IT>А такое позволяют:


IT>y = 2;

IT>x = y + "3"

IT>?


нет
>>> y = 2
>>> x = y + "3"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Re[11]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 17:39
Оценка:
Здравствуйте, FR, Вы писали:

IT>>А такое позволяют:


IT>>y = 2;

IT>>x = y + "3"

IT>>?


FR>нет

FR>
>>>> y = 2
>>>> x = y + "3"
FR>Traceback (most recent call last):
FR>  File "<stdin>", line 1, in ?
FR>TypeError: unsupported operand type(s) for +: 'int' and 'str'
FR>


А так?

fun(y)
{
x = y + "3";
}

y = 1;
fun(y)
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Динамическая типизация
От: FR  
Дата: 26.08.06 17:42
Оценка:
Здравствуйте, IT, Вы писали:

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


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


IT>С функциями у меня всё в порядке. Единственное новое что я о них узнал из функциональщины, это то, что их там принято называть первоклассными объектами. Всё остальное так или иначе знал со времён баловства с дековским ассемблером на PDP-11.


То есть на том ассемблере были и замыкания и карринг?

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


FR>>Интересно бы посмотреть для сравнения.


IT>AOP interceptors
Автор: IT
Дата: 12.06.06
. Только не смейся


Да что-то у меня дежавю Особенно с кешем на определенное время.
Re[12]: Динамическая типизация
От: FR  
Дата: 26.08.06 17:45
Оценка:
Здравствуйте, IT, Вы писали:


IT>А так?


IT>fun(y)

IT>{
IT> x = y + "3";
IT>}

IT>y = 1;

IT>fun(y)

тоже нет:
def fun(y):
    x = y + "3";

y = 1
fun(y)


Traceback (most recent call last):
  File "tst00.py", line 5, in ?
    fun(y)
  File "tst00.py", line 2, in fun
    x = y + "3";
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Re[8]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 17:50
Оценка: :))
Здравствуйте, FR, Вы писали:

FR>То есть на том ассемблере были и замыкания и карринг?


В ассемблере есть всё, разве ты не знал?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 18:22
Оценка: :))) :)))
Здравствуйте, FR, Вы писали:

IT>>А так?

FR>тоже нет:

Ok, сдаюсь
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 18:28
Оценка: 1 (1) +2
Здравствуйте, FR, Вы писали:

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


Нет, дело не в поспорить. К сожалению, терминология такая штука, которая нас в основном разъединяет и большинство споров у нас носят терминологический характер. Было бы лучше, если бы все это понимали и старались говорить на одном языке. Или хотя бы расшифровывали то, что понимают под используемыми терминами.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Динамическая типизация
От: Cyberax Марс  
Дата: 26.08.06 20:09
Оценка:
IT wrote:
> С функциями у меня всё в порядке. Единственное новое что я о них узнал
> из функциональщины, это то, что их там принято называть первоклассными
> объектами. Всё остальное так или иначе знал со времён баловства с
> дековским ассемблером на PDP-11.
А лямбды? А ленивость?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[8]: Динамическая типизация
От: IT Россия linq2db.com
Дата: 26.08.06 20:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А лямбды? А ленивость?


На поверку лямбда оказалась всего лишь короткой формой записи локальной функции. Ленивость я не знаю что такое. Если объяснишь, то наверняка можно будет поискать аналог и в нефункциональном мире.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Динамическая типизация
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 26.08.06 20:52
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>А такое позволяют:


IT>>>y = 2;

IT>>>x = y + "3"

IT>>>?


FR>>нет

FR>>
>>>>> y = 2
>>>>> x = y + "3"
FR>>Traceback (most recent call last):
FR>>  File "<stdin>", line 1, in ?
FR>>TypeError: unsupported operand type(s) for +: 'int' and 'str'
FR>>


IT>А так?


IT>fun(y)

IT>{
IT> x = y + "3";
IT>}

IT>y = 1;

IT>fun(y)

Еще в копилку:
irb(main):001:0> y=2
=> 2
irb(main):002:0> x=y+"3"
TypeError: String can't be coerced into Fixnum
        from (irb):2:in `+'
        from (irb):2
irb(main):003:0> def fun(y); x = y + "3"; end
=> nil
irb(main):004:0> y=1
=> 1
irb(main):005:0> fun(y)
TypeError: String can't be coerced into Fixnum
        from (irb):3:in `+'
        from (irb):3:in `fun'
        from (irb):5
irb(main):006:0>

Осталось только кого нибудь из Smalltalk-еров подождать


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Динамическая типизация
От: c-smile Канада http://terrainformatica.com
Дата: 27.08.06 00:49
Оценка: 12 (1)
Здравствуйте, IT, Вы писали:

IT>Ok, сдаюсь


На самом деле то что тебя так волнует в JS чинится примерно так:

String.prototype.toNumber = function(x)
{
  alert("Тю на тебэ!");
}


или около того.
Re[9]: Динамическая типизация
От: FR  
Дата: 27.08.06 04:31
Оценка:
Здравствуйте, IT, Вы писали:

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


C>>А лямбды? А ленивость?


IT>На поверку лямбда оказалась всего лишь короткой формой записи локальной функции. Ленивость я не знаю что такое. Если объяснишь, то наверняка можно будет поискать аналог и в нефункциональном мире.


Аналог итераторы, ну и плюс сахар в виде yield
Re: Динамическая типизация
От: Gaperton http://gaperton.livejournal.com
Дата: 27.08.06 11:11
Оценка: +2
Здравствуйте, Adopt, Вы писали:

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


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


Most of GoF design patterns invisible or simple in dynamic languages.

A>Приведите плз примеры кода для сравнения?


http://norvig.com/design-patterns/

Еще можно глянуть на мой пример конечного автомата — без атомов, которые трактуются в качестве имени функции (динамической типизации) так красиво бы (весь "паттерн" — в одну строку) не получилось.
http://rsdn.ru/Forum/Message.aspx?mid=2073832&amp;only=1
Автор: Gaperton
Дата: 24.08.06
Re[4]: Динамическая типизация
От: Gaperton http://gaperton.livejournal.com
Дата: 27.08.06 11:22
Оценка:
Здравствуйте, eao197, Вы писали:

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


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


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


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

E>DynamicTyping
E>BenefitsOfDynamicTyping
E>IsDynamicTypingSufficientlyEfficient
E>и далее по ссылочками.

Ну, еще свой мегапост на эту тему приведу, чтоли. Тоже лень повторяться. Но он, правда, посвящен вопросам производительности и "опасности" языков с динамической типизацией.

http://rsdn.ru/Forum/Message.aspx?mid=984393&amp;only=1
Автор: Gaperton
Дата: 12.01.05
Re[9]: Динамическая типизация
От: Gaperton http://gaperton.livejournal.com
Дата: 27.08.06 11:35
Оценка:
Здравствуйте, IT, Вы писали:

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


C>>А лямбды? А ленивость?


IT>На поверку лямбда оказалась всего лишь короткой формой записи локальной функции.


funct( X, Y, Container ) -> 
   Z = X + Y,
   map( fun( X ) -> X + Z end, Container ).


Код понятен? Просьба записать то же самое через локальные функции — на поверку.
Re[10]: Динамическая типизация
От: Gaperton http://gaperton.livejournal.com
Дата: 27.08.06 11:42
Оценка:
Здравствуйте, FR, Вы писали:

IT>>На поверку лямбда оказалась всего лишь короткой формой записи локальной функции. Ленивость я не знаю что такое. Если объяснишь, то наверняка можно будет поискать аналог и в нефункциональном мире.


FR>Аналог итераторы, ну и плюс сахар в виде yield


Ерунда. Итераторы позволяют кое-как сымитировать ленивые списки, но ни разу не помогут в ситуации, как бы объяснить попроще... Вы знаете, что такое RS-триггер? Это два элемента 2и-не, объединенных вот так:

a = 2nand( b, R );
b = 2nand( a, S );

Чтобы на самом деле прочувствовать разницу между строгим и ленивым языком, попробуйте промоделировать правильную работу этой схемы на строгом языке. В ленивом языке — сами понимаете, программа будет в целом похожа на то, что я написал — не сильно сложнее.
Re[11]: Динамическая типизация
От: Cyberax Марс  
Дата: 27.08.06 11:53
Оценка:
Gaperton wrote:
> Чтобы на самом деле прочувствовать разницу между строгим и ленивым
> языком, попробуйте промоделировать правильную работу этой схемы на
> строгом языке.
SystemC

Хотя получается очень некрасиво и неудобно.

> В ленивом языке — сами понимаете, программа будет в целом

> похожа на то, что я написал — не сильно сложнее.
Угу. Кстати, как ваши эксперименты с Эрлангом? Насколько удобнее он чем
SystemC?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.