Hog
77 лет - говорит :)
Ayrat
Да, похоже на то. Это где-то пенсионный возраст уже вот-вот!
Hog
на "исходнике", кстати, накинул мне годков
Hog
наверное надо поберечь себя :)))))
Doge
привет Y
Вопрос сколько из этих невыразимых вещей актуальны на практике
Doge
короче, он в плохом смысле ебанутый
Ему просто надо семинары продавать.
Во и приходится вбрасывать, чтобы популярность держать.
То говорит, что в скале ОО не нужно, а потом пишет ЗИО с диким использованием сабтайпинга в ОО стиле внутри
Aleksandr
Конкретно про Y не знаю что и сказать
Aleksandr
Слабо представляю себе язык, где есть higher order functions, но нет рекурсии
Ayrat
Doge
Aleksandr
Верно, но речь зашла о применимости на практике
Doge
Если кто такой знает, то говорите, было бы интересно взглянуть
Ayrat
Не, я таких не знаю. Все костылят сей момент компилятором чтобы не ебаться с невыразимостью рекурсии в строгих системах
Aleksandr
Hog
Пошёл погулять в обед. А тут шарп сломали
Hog
Ilya
Точно не F#?
Shub
Dr. Friedrich
Dr. Friedrich
ООП в Scala очень классно сделано. А вот добрая половина функциональных фишечек внедряется через боль
Dr. Friedrich
for {
_ <- f1
_ <- f2
_ <- f3
}
Ilya
До сих пор не понимаю, что это означает. Я счастливый человек.
Dr. Friedrich
Ну то есть вдумайтесь, родную функциональную монаду там люди используют, описывая эмуляцию императивного цикла for.
Dr. Friedrich
Там ещё какой-нибудь yield в конец надо воткнуть
Anonymous
дело в том что семантика языков слишком сложна
Anonymous
когда начинал изучать фш был озадачен что for с разной скоростью работал
Anonymous
это было около года назад,
Dr. Friedrich
Anonymous
for to и for in
Anonymous
так кажется
Dr. Friedrich
У нас есть for to? %)
Dr. Friedrich
Надо же, и правда есть.
Anonymous
ну тот который в обычный цикл комплится, а второй for использует yeild
Dr. Friedrich
Один это for, а второй foreach :)
Dr. Friedrich
Посаны грят, на массивах должно одинаково по перформансу работать.
Anonymous
Так вот в nemerle изучая стал делать через for, а мне на rsdn говорят используй foreach
Anonymous
ну т.е. на вид конструкция похожая но в немерле по возможности в простой цикл компилится
Anonymous
Dr. Friedrich
Dr. Friedrich
В сишарпе, как мы на днях выяснили, foreach по массиву компилируется в for.
Dr. Friedrich
По всему остальному — нет.
Anonymous
Real: 00:00:00.046, ЦП: 00:00:00.046, GC gen0: 0, gen1: 0, gen2: 0 - for i to arr.length -1 do sum()
Real: 00:00:00.073, ЦП: 00:00:00.062, GC gen0: 0, gen1: 0, gen2: 0 - for i in arr do sum()
на 1000_000 int[]
Anonymous
померял немерл foreach(вызывается вторым) стабильно на 1-5 мс быстрее for
мерял stopwatch, в фш мерял #time-ом (запуск Microsoft (R) F# Interactive, версия 4.1)
Anonymous
Anonymous
Dr. Friedrich
Dr. Friedrich
А виртуальную машину кто будет прогревать?
Dr. Friedrich
Тем более вообще в fsx %)
Dr. Friedrich
Я не принимаю такие бенчмарки, короче.
Dr. Friedrich
(другой разговор, что ты можешь и не задаваться задачей чтобы мне их сдавать)
Anonymous
Dr. Friedrich
Братюнь, если хочешь норм померить, то возьми benchmarkdotnet.
Dr. Friedrich
Он тебе и дисперсию посчитает, и многомодальное распределение задетектит, всё как в лучших домах Европы.
Dr. Friedrich
И вот его натрави на немерле и на фшарп-проги
Dr. Friedrich
Хотя мб в твоём случае достаточно IL-код посмотреть
Anonymous
верю. но н-лет назад скорость была в разы меньше при обходе через for in
Vasily
Dr. Friedrich
Но мб это просто на новой студии скин такой, хз
Dr. Friedrich
Ну и, да, информации о рантайме действительно не хватает, тут уже без шуток. Немерле же, кажется, не умеет в неткор, да?
Dr. Friedrich
Значит, честно будет тестировать на .NET Framework 4.8.
Dr. Friedrich
Но основные современные перф оптимизации таки в неткоре делаются, на .NET 4.8 не так интересно делать замеры.
Anonymous
Dr. Friedrich
Ну ты же понимаешь, что на самом деле код выполняется под тем фреймворком, который установлен на машине, а не тем, под который ты компилируешься
Anonymous
Разве не ссылки на библиотеки не содержат номер версии?
Ayrat
Dr. Friedrich
Dr. Friedrich
Маловероятно (хоть и возможно), что перф цикла for по массиву зависит от версии FSharp.Core.
Anonymous
Dr. Friedrich
Dr. Friedrich
Все рантаймы старше 4.0 просто обновляют один и тот же енжин
Dr. Friedrich
Поставил 4.8 на машину — и у тебя весь дотнет-код, кроме сборок под 2.0 и 3.5, просто начинает выполняться на 4.8.