Здравствуйте, AndrewVK, Вы писали:
AVK>Ну, Даффи довольно много спорных утверждений там сделал. Бог с ним, с тормозами, тем более что он таки там самый тормозной на графике, но вот как у него safety оказалась выше и шарпа и джавы — вот это куда интереснее. И ответа на этот вопрос в его статье нет.
У него safety это больше Memory safety чем Type Safety, что очевидно, т.к. неясно чего он упоминает сайд эффекты и прочую хрень.
Здравствуйте, AndrewVK, Вы писали:
EP>>Язык C позволяет выжать из железа тоже самое, но это потребовало бы целое болото кода. AVK>На графике это вертикальная ось, а не горизонтальная
Если performance на графике это теоретический максимум который можно достичь сколько угодно огромным количеством неудобного кода, то Java, C# и JavaScript (за счёт типизированных массивов через asm.js) будут примерно на одной вертикальной оси.
Здравствуйте, VladD2, Вы писали:
VD>>>Жабаскрип без ЖЦ обходится. DM>>Это где такой? VD>Сейчас уже редко где, но раньше был везде. Все первые версии использовали подсчет ссылок.
А, ну все ж подсчет ссылок (особенно когда он спрятан под капот) — это один из видов GC. В куче языков до сих пор используется.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Евгений Акиньшин, Вы писали:
I>>>Вообще эта хрень пролазит уже в мобайл, не сильно в курсе какие успехи.
ЕА>>Ничего не понял — чем бы помешал единый способ работы с потоками везде, включая браузер и какая поддержка им нужна?
I>Тебя не смущает, что браузер пока что, в общем виде, не поддерживает файловые операции в хтмл-страницах ? Сами по себе стримы это всего лишь одна из многих вычислительных моделей, которая в браузерных приложениях очень слабо задействована.
Так я вроде ничего не говорил про файловые операции. Просто во всех средах с которыми я сталкивался, любая библиотека обработки данных написана в общем виде с использованием потоков и только в jscript каждый раз придумывают несовместимый велосипед.
I>Идея простая — в приложение идёт только то, что реально используется. Незачем создавать аналог флеша или сильверлайта но на джаваскрипте.
I>>>следующем стандарте. INotifyPropertyChanged при желании реализуется очень просто — где надо, берёшь и файришь эвент
ЕА>>Ну так я о том же: каждый у кого возникает желание, придумывает свой, ни с чем не совместимый евент\листенер и потом сиди пиши переходники между ними.
I>Это больше домыслы. В основном эвенты и листенеры хорошо совместимы.
Да ладно — каждый mvvm-подобный фреймворк типа knockoutjs, kendoui требует все отнаследовать от определенного типа модели, со своими сигнатурами листенеров — нигде такого бардака больше не видел.
I>>>А зачем они нужны ?
ЕА>>Деньги считать
I>И указателей и всякого другого мусора тоже нет.
Т.е. типы с фиксированной точкой это мусор
I>>>>>Динамика дает возможности, которых в C# нет и никогда не будет
ЕА>>>>Например?
I>>>метапрограммирование в рантайме. На этом сделана целая куча либ.
ЕА>>Ну так в си-шарпе это тоже частенько используется — начиная от компиляции лямбд и кончая полноценной кодогенерацией с запуском компилятора. Понятно, что в динамике это будет удобнее делать, но "нет и никогда не будет" это перебор.
I>Покажи как на C# пропатчить Console.Write
Не, этого нам не надо — каждая библиотека пропатчит половину базовых типов и потом эту кашу отлаживать
Чтобы патчить пользовательские типы есть несколько библиотек для аспектно-ориентированного программирования, ну я бы это тоже очень осторожно использовал.
Здравствуйте, Евгений Акиньшин, Вы писали:
I>>Тебя не смущает, что браузер пока что, в общем виде, не поддерживает файловые операции в хтмл-страницах ? Сами по себе стримы это всего лишь одна из многих вычислительных моделей, которая в браузерных приложениях очень слабо задействована.
ЕА>Так я вроде ничего не говорил про файловые операции. Просто во всех средах с которыми я сталкивался, любая библиотека обработки данных написана в общем виде с использованием потоков и только в jscript каждый раз придумывают несовместимый велосипед.
Что за обработка данных или какие велосипеды придумывают в джаваскрипте ?
I>>Это больше домыслы. В основном эвенты и листенеры хорошо совместимы.
ЕА>Да ладно — каждый mvvm-подобный фреймворк типа knockoutjs, kendoui требует все отнаследовать от определенного типа модели, со своими сигнатурами листенеров — нигде такого бардака больше не видел.
Это специфика mvvm похоже. Разрабов нокаута я бы бил в каптёрке каждые 15 минут.
I>>И указателей и всякого другого мусора тоже нет.
ЕА>Т.е. типы с фиксированной точкой это мусор
И это очевидно. Тебя ведь не расстраивает, что С++ искаропки не может посчитать sinus(Some(1.2)) или Sinus(Nullable(1)) или Sinus([1,2,3,4,5,6]) ?
I>>Покажи как на C# пропатчить Console.Write
ЕА>Не, этого нам не надо — каждая библиотека пропатчит половину базовых типов и потом эту кашу отлаживать
Такое метапрограммирование используется чуть не во всех либах в джаваскрипте, только никто не называет это метапрограммированием, настолько просто.
ЕА>Чтобы патчить пользовательские типы есть несколько библиотек для аспектно-ориентированного программирования, ну я бы это тоже очень осторожно использовал.
Здравствуйте, AndrewVK, Вы писали:
AVK>Ну, Даффи довольно много спорных утверждений там сделал. Бог с ним, с тормозами, тем более что он таки там самый тормозной на графике, но вот как у него safety оказалась выше и шарпа и джавы — вот это куда интереснее. И ответа на этот вопрос в его статье нет.
Там народ уже возмутился. И да, все же safety&productivity, а не просто safety.
Здравствуйте, Ikemefula, Вы писали:
I>Хилый вывод типа и все вытекающие проблемы.
Какая связь между выводом типов и динамическим полиморфизмом?
AVK>>http://msdn.microsoft.com/en-us/library/hh549175.aspx I>Покажешь, как выполнить шаг Add Fake Assembly в рантайме и как заставить скомпилироваться код ?
А что, думаешь что это невозможно?
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Если performance на графике это теоретический максимум который можно достичь сколько угодно огромным количеством неудобного кода, то Java, C# и JavaScript (за счёт типизированных массивов через asm.js) будут примерно на одной вертикальной оси.
Не будут.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
I>>Хилый вывод типа и все вытекающие проблемы.
AVK>Какая связь между выводом типов и динамическим полиморфизмом?
Пудозреваю, связь такая — ты увидел лямбду, которая не скомпилится и решил, что я говорю про динамический полиморфизм. Годится ?
AVK>>>http://msdn.microsoft.com/en-us/library/hh549175.aspx I>>Покажешь, как выполнить шаг Add Fake Assembly в рантайме и как заставить скомпилироваться код ?
AVK>А что, думаешь что это невозможно?
Ты для начала покажи, а потом уже будем выяснять, о чем я думаю. Желательно как у меня — в три строки и что бы это _работало_.
Здравствуйте, Философ, Вы писали:
Ф>Какие, например? Что ты подразумеваешь под этим понятием, определи понятие — походу мы на разных языках разговариваем.
Да вроде об одном и том же.
I>>В C# система типов очень сильно ограничивает этот самый полиморфизм. I>>Пример I>>
I>>var f = (int x) => x * 2;
I>>
Ф>В каком месте в этом примере должен быть полиморфизм?
В этом месте полиморфизма вообще нет, зато это место мешает применять полиморфизм и вынуждает тебя заниматься подсказками компилятору.
I>>Вот есть у тебя метод I>>
I>>void Write(string data) {}
I>>
I>>Покажи код на CodeDom, который пропатчит метод нужного экземпляр или класс и будет дополнительно файрить эвент.
Ф>Чего делать с ивентом?
Файрить.
Ф>Зачем это делать именно в рантайме, почему нельзя тоже самое, например в компайл тайме?
Можно и в компайлтайм, но ты ведь утверждаешь, что в C# не хуже. Вот и покажи это.
Здравствуйте, Ikemefula, Вы писали:
I>Пудозреваю, связь такая — ты увидел лямбду, которая не скомпилится и решил, что я говорю про динамический полиморфизм. Годится ?
Все ходы записаны:
I>....плюшки динамики — православный полиморфизм.
Ф>Можно подробнее?
I>Полиморфизмы они разные бывают. В C# система типов очень сильно ограничивает этот самый полиморфизм.
I>Пример
AVK>И что этот пример должен показать?
I>Хилый вывод типа и все вытекающие проблемы.
AVK>Какая связь между выводом типов и динамическим полиморфизмом?
I>Пудозреваю, связь такая — ты увидел лямбду, которая не скомпилится и решил, что я говорю про динамический полиморфизм. Годится ?
Так что нет, не годится.
AVK>>А что, думаешь что это невозможно? I>Ты для начала покажи, а потом уже будем выяснять, о чем я думаю. Желательно как у меня — в три строки и что бы это _работало_.
Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, D. Mon, Вы писали:
DM>А, ну все ж подсчет ссылок (особенно когда он спрятан под капот) — это один из видов GC.
Это если уж очень за уши притянуть. Подсчет ссылок все же к ЖЦ отношения не имеет и бы известен когда о ЖЦ еще и речи не шло. Подсчет ссылок это единственный более менее автоматический способ управления памятью в языках не рассчитанных на ЖЦ (читаем С/С++).
DM>В куче языков до сих пор используется.
Я говорил о том, что не ЖЦ дело. Когда ЖЦ не было, производительность была еще хуже.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
I>>Полиморфизмы они разные бывают. В C# система типов очень сильно ограничивает этот самый полиморфизм.
I>>Пример
AVK>>И что этот пример должен показать?
I>>Хилый вывод типа и все вытекающие проблемы.
AVK>>Какая связь между выводом типов и динамическим полиморфизмом?
I>>Пудозреваю, связь такая — ты увидел лямбду, которая не скомпилится и решил, что я говорю про динамический полиморфизм. Годится ?
AVK>Так что нет, не годится.
Православный ты прочитал как динамический ? Бывает. Я то сравниваю позможности полиморфизма в джаваскрипте и возможностями полимормизма в C#, а тебе хочется непойми чего, динамический с динамическим сравнить наверное Сравнивай сам.
Из лямбды понятно, что вопрос никакого от
AVK>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате.
Принципиальная возможность это не интересно. Нет никакого значения сколько ты напишешь неудобного кода, а в джаваскприте это искаропки.
Здравствуйте, Ikemefula, Вы писали:
I>Православный ты прочитал как динамический ?
Нет, просто в JS ничего статического нет, так что полиморфизм там может быть исключительно динамическим.
AVK>>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате. I>Принципиальная возможность это не интересно.
А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Нет, просто в JS ничего статического нет, так что полиморфизм там может быть исключительно динамическим.
Спасибо, капитан. Каким законом запрещено сравнивать возможности, скажем, того полиморфизма, что был в C# до динамиков с возможностями джаваскриптового динамического полиморфизма ?
AVK>>>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате. I>>Принципиальная возможность это не интересно.
AVK>А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог.
Я ж сказал — для демонстрации сказаного. Если можно пропатчить один метод, можно пропатчить любой другой.
Здравствуйте, Ikemefula, Вы писали:
I>Каким законом запрещено сравнивать возможности, скажем, того полиморфизма, что был в C# до динамиков с возможностями джаваскриптового динамического полиморфизма ?
Повторяю вопрос: "Какая связь между выводом типов и динамическим полиморфизмом?".
AVK>>А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог. I>Я ж сказал — для демонстрации сказаного.
То есть нафик не нужно. ЧТД.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>