Re[7]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 15:36
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>На C#/Java получится ли сделать нечто похожее на apply:

EP>
EP>template<typename F, typename ...Args>
EP>auto apply(F f, Args... args)
EP>{
EP>    return f(args...);
EP>}
EP>
без сильного ухода в динамику?


А нафига оно вообще надо такое?

EP>О том и речь — многие возможности динамических языков могут быть реализованы в статических


Ровно как и наоборот. Вопрос не в абстрактных возможностях, а в балансе плюсов и минусов.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[8]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 15:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну, Даффи довольно много спорных утверждений там сделал. Бог с ним, с тормозами, тем более что он таки там самый тормозной на графике, но вот как у него safety оказалась выше и шарпа и джавы — вот это куда интереснее. И ответа на этот вопрос в его статье нет.


У него safety это больше Memory safety чем Type Safety, что очевидно, т.к. неясно чего он упоминает сайд эффекты и прочую хрень.
Re[6]: C# for Systems Programming
От: Evgeny.Panasyuk Россия  
Дата: 03.01.14 15:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

EP>>Язык C позволяет выжать из железа тоже самое, но это потребовало бы целое болото кода.

AVK>На графике это вертикальная ось, а не горизонтальная

Если performance на графике это теоретический максимум который можно достичь сколько угодно огромным количеством неудобного кода, то Java, C# и JavaScript (за счёт типизированных массивов через asm.js) будут примерно на одной вертикальной оси.
Re[9]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 15:48
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

I>>Покажи как на C# пропатчить Console.Write


AVK>А зачем?


Шоб продемонстрировать заявленое.
Re[7]: C# for Systems Programming
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 03.01.14 15:50
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Жабаскрип без ЖЦ обходится.

DM>>Это где такой?
VD>Сейчас уже редко где, но раньше был везде. Все первые версии использовали подсчет ссылок.

А, ну все ж подсчет ссылок (особенно когда он спрятан под капот) — это один из видов GC. В куче языков до сих пор используется.
Re[9]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 15:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

I>>
I>>var f = (int x) => x * 2;
I>>


I>>


AVK>И что этот пример должен показать?


Хилый вывод типа и все вытекающие проблемы.

I>>Вот есть у тебя метод

I>>
I>>void Write(string data) {}
I>>


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


AVK>http://msdn.microsoft.com/en-us/library/hh549175.aspx


Покажешь, как выполнить шаг Add Fake Assembly в рантайме и как заставить скомпилироваться код ?

var old = obj.method;

obj.method = function() { me.fireSomeEvent(arguments); old.apply(this, arguments); }


Вот и весь рокетсаенс
Re[8]: C# for Systems Programming
От: Евгений Акиньшин grapholite.com
Дата: 03.01.14 16:13
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Евгений Акиньшин, Вы писали:


I>>>Вообще эта хрень пролазит уже в мобайл, не сильно в курсе какие успехи.


ЕА>>Ничего не понял — чем бы помешал единый способ работы с потоками везде, включая браузер и какая поддержка им нужна?


I>Тебя не смущает, что браузер пока что, в общем виде, не поддерживает файловые операции в хтмл-страницах ? Сами по себе стримы это всего лишь одна из многих вычислительных моделей, которая в браузерных приложениях очень слабо задействована.


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


I>Идея простая — в приложение идёт только то, что реально используется. Незачем создавать аналог флеша или сильверлайта но на джаваскрипте.


I>>>следующем стандарте. INotifyPropertyChanged при желании реализуется очень просто — где надо, берёшь и файришь эвент


ЕА>>Ну так я о том же: каждый у кого возникает желание, придумывает свой, ни с чем не совместимый евент\листенер и потом сиди пиши переходники между ними.


I>Это больше домыслы. В основном эвенты и листенеры хорошо совместимы.


Да ладно — каждый mvvm-подобный фреймворк типа knockoutjs, kendoui требует все отнаследовать от определенного типа модели, со своими сигнатурами листенеров — нигде такого бардака больше не видел.


I>>>А зачем они нужны ?


ЕА>>Деньги считать


I>И указателей и всякого другого мусора тоже нет.


Т.е. типы с фиксированной точкой это мусор

I>>>>>Динамика дает возможности, которых в C# нет и никогда не будет


ЕА>>>>Например?


I>>>метапрограммирование в рантайме. На этом сделана целая куча либ.


ЕА>>Ну так в си-шарпе это тоже частенько используется — начиная от компиляции лямбд и кончая полноценной кодогенерацией с запуском компилятора. Понятно, что в динамике это будет удобнее делать, но "нет и никогда не будет" это перебор.


I>Покажи как на C# пропатчить Console.Write


Не, этого нам не надо — каждая библиотека пропатчит половину базовых типов и потом эту кашу отлаживать

Чтобы патчить пользовательские типы есть несколько библиотек для аспектно-ориентированного программирования, ну я бы это тоже очень осторожно использовал.
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[9]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 16:42
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

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


ЕА>Не, этого нам не надо — каждая библиотека пропатчит половину базовых типов и потом эту кашу отлаживать


Такое метапрограммирование используется чуть не во всех либах в джаваскрипте, только никто не называет это метапрограммированием, настолько просто.

ЕА>Чтобы патчить пользовательские типы есть несколько библиотек для аспектно-ориентированного программирования, ну я бы это тоже очень осторожно использовал.


Патчить много чего можно
Re[8]: C# for Systems Programming
От: Sharov Россия  
Дата: 03.01.14 17:12
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну, Даффи довольно много спорных утверждений там сделал. Бог с ним, с тормозами, тем более что он таки там самый тормозной на графике, но вот как у него safety оказалась выше и шарпа и джавы — вот это куда интереснее. И ответа на этот вопрос в его статье нет.


Там народ уже возмутился. И да, все же safety&productivity, а не просто safety.
Кодом людям нужно помогать!
Re[8]: C# for Systems Programming
От: Философ Ад http://vk.com/id10256428
Дата: 03.01.14 17:55
Оценка:
Здравствуйте, Ikemefula, Вы писали:


Ф>>Кстати, мы тут вообще об ООП говорим, или о чём?


I>Мы про полиморфизм. Не совсем ясно, почему ты ООП вспомнил


I>Полиморфизмы они разные бывают.


Какие, например? Что ты подразумеваешь под этим понятием, определи понятие — походу мы на разных языках разговариваем.


I>В C# система типов очень сильно ограничивает этот самый полиморфизм.

I>Пример
I>
I>var f = (int x) => x * 2;
I>


В каком месте в этом примере должен быть полиморфизм?


I>>>Метапрограммирование в рантайме...


Ф>>Что мешает метапрограммировать в рантайме на шарпе? CodeDOM отменили?


I>Вот есть у тебя метод

I>
I>void Write(string data) {}
I>


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


Чего делать с ивентом?
Зачем это делать именно в рантайме, почему нельзя тоже самое, например в компайл тайме?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[10]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 18:52
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[7]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 18:52
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[11]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 19:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

I>>Хилый вывод типа и все вытекающие проблемы.


AVK>Какая связь между выводом типов и динамическим полиморфизмом?


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

AVK>>>http://msdn.microsoft.com/en-us/library/hh549175.aspx

I>>Покажешь, как выполнить шаг Add Fake Assembly в рантайме и как заставить скомпилироваться код ?

AVK>А что, думаешь что это невозможно?


Ты для начала покажи, а потом уже будем выяснять, о чем я думаю. Желательно как у меня — в три строки и что бы это _работало_.
Re[9]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 19:17
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Какие, например? Что ты подразумеваешь под этим понятием, определи понятие — походу мы на разных языках разговариваем.


Да вроде об одном и том же.

I>>В C# система типов очень сильно ограничивает этот самый полиморфизм.

I>>Пример
I>>
I>>var f = (int x) => x * 2;
I>>


Ф>В каком месте в этом примере должен быть полиморфизм?


В этом месте полиморфизма вообще нет, зато это место мешает применять полиморфизм и вынуждает тебя заниматься подсказками компилятору.

I>>Вот есть у тебя метод

I>>
I>>void Write(string data) {}
I>>


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


Ф>Чего делать с ивентом?


Файрить.

Ф>Зачем это делать именно в рантайме, почему нельзя тоже самое, например в компайл тайме?


Можно и в компайлтайм, но ты ведь утверждаешь, что в C# не хуже. Вот и покажи это.
Re[12]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 20:29
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[8]: C# for Systems Programming
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.14 20:40
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>А, ну все ж подсчет ссылок (особенно когда он спрятан под капот) — это один из видов GC.


Это если уж очень за уши притянуть. Подсчет ссылок все же к ЖЦ отношения не имеет и бы известен когда о ЖЦ еще и речи не шло. Подсчет ссылок это единственный более менее автоматический способ управления памятью в языках не рассчитанных на ЖЦ (читаем С/С++).

DM>В куче языков до сих пор используется.


Я говорил о том, что не ЖЦ дело. Когда ЖЦ не было, производительность была еще хуже.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 20:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Все ходы записаны:

AVK>

I>>....плюшки динамики — православный полиморфизм.

Ф>>Можно подробнее?

I>>Полиморфизмы они разные бывают. В C# система типов очень сильно ограничивает этот самый полиморфизм.
I>>Пример

AVK>>И что этот пример должен показать?

I>>Хилый вывод типа и все вытекающие проблемы.

AVK>>Какая связь между выводом типов и динамическим полиморфизмом?

I>>Пудозреваю, связь такая — ты увидел лямбду, которая не скомпилится и решил, что я говорю про динамический полиморфизм. Годится ?


AVK>Так что нет, не годится.


Православный ты прочитал как динамический ? Бывает. Я то сравниваю позможности полиморфизма в джаваскрипте и возможностями полимормизма в C#, а тебе хочется непойми чего, динамический с динамическим сравнить наверное Сравнивай сам.

Из лямбды понятно, что вопрос никакого от

AVK>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате.


Принципиальная возможность это не интересно. Нет никакого значения сколько ты напишешь неудобного кода, а в джаваскприте это искаропки.
Re[14]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 21:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Православный ты прочитал как динамический ?


Нет, просто в JS ничего статического нет, так что полиморфизм там может быть исключительно динамическим.

AVK>>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате.

I>Принципиальная возможность это не интересно.

А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Re[15]: C# for Systems Programming
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.01.14 21:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Нет, просто в JS ничего статического нет, так что полиморфизм там может быть исключительно динамическим.


Спасибо, капитан. Каким законом запрещено сравнивать возможности, скажем, того полиморфизма, что был в C# до динамиков с возможностями джаваскриптового динамического полиморфизма ?

AVK>>>Ну началось. Принципиальная возможность есть? Есть. А показывать тебе я буду только по предоплате.

I>>Принципиальная возможность это не интересно.

AVK>А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог.


Я ж сказал — для демонстрации сказаного. Если можно пропатчить один метод, можно пропатчить любой другой.
Re[16]: C# for Systems Programming
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.14 23:23
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Каким законом запрещено сравнивать возможности, скажем, того полиморфизма, что был в C# до динамиков с возможностями джаваскриптового динамического полиморфизма ?


Повторяю вопрос: "Какая связь между выводом типов и динамическим полиморфизмом?".

AVK>>А практическая определяется потребностями. На вопрос зачем тебе понадобилось заменять Console.Write ты нормально ответить не смог.

I>Я ж сказал — для демонстрации сказаного.

То есть нафик не нужно. ЧТД.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.