По пунктам
1. Непотопляемость. Я вот почему-то думал что языки — это инструменты, а получается, что тут есть враги, друзья, свои и чужие, чужих нужно уничтожить, своих — защитить… Вывод: хороший вброс для холивара.
2. Многопоточность. Вопрос — а где её, собственно, нет? Не говоря про TPL и async/await в C# 5.0. Вывод: выдача желаемого за действительное
3. Первый язык программирования. В целом согласен. Разве что у студентов стран СНГ первым языком все еще является паскаль, реже — С. Вывод: в целом верно.
4. Кроссплатформенность. Фишка джавы. Вывод: очевиден.
5. Снова кроссплатформенность. Зачем-то упоминают андройд, который наоборот, пытается избавиться от Dalvik и переходит на ART. Вывод: присобачили как получилось информацию, выдали в нужном свете — и готово.
6. Блю-рей. Вывод: возможно, сказана правда, никогда ими не пользовался: кино и цифровой контент наше все.
7. Фигурные скобки. Ну это просто смешно. Какое достижение! Какой прогресс! Скобки джавы ведь намного удобнее и скобочнее, чем скобки С 70годов…
8. Groovy. Спорить не о чем.
9. JVM. Опять же, спорить не о чем, обо всем сказал в пункте 5. Не забыли оскорбить C#, забыв, что как раз-таки с помощью Xamarin можно писать одно и то же для всех платформ (Win-iOS-Android). Ну бывает, видимо у автора действительно припекло с врагами и друзьями (имеется ввиду автор оригинала).
10. Не совсем понятно, связь NoSQL с Java. Если бы не было С, WinAPI был бы написан на паскале. Ребята взяли наиболее подходящий язык и реализовали ан нем. Не было бы его — реализовали бы NoSQL на том же шарпе, или еще на чем.
11. Про производительность Minecraft ходят легенды. Хотя можно отнести к плюсам, как авторы пишут.
12. Опен-сорс. Ну, как говорится, любой код на управляемом языке — опен-сорс поневоле :) Про то, что тот C# и CLR тоже являются опен-сорсными (ECMA334,ECMA334) — как-то забывают. Так что выбора у них особо не было.
Вывод: я сравниваю с шарпом просто потому, что эти языки прямые конкуренты. Но это конкуренты, а не враги! Вся статья пропитана фанатизмом и нонконформизмом. Жаль, что есть люди, у которых микроскопы — в друзьях, а лупа — злейший враг.
Я на самом деле не очень в курсе, кто управляет ими, но по чистой логике 51.08 — это сумма всех игр «со скидкой» (посчитайте, там 7 ценников оканчивающихся на 9 и один, оканчивающийся на 5. 9*7+5, остаток 8). Правда, почему бандл стоит дороже — не очень понятно. Но комплект в любом случае стоит столько же, сколько две игры без скидки.
Хотя я юбисофт не очень люблю. За то, что они сделали с серей HOMM разорить их мало. Если в пятой части было довольно много интересных нововведений, которые приближают её к знаменитой тройке, то шестая — это убожество почище Disciples III…
Один только послединий Assassin Creed стоит столько, сколько стим говорит «Стоят все эти игры». Выше же цены приведены. Assassin Creed 3 стоит 50, а «Все эти игры» по версии стима стоят 51. Как-то не сходится.
Просто баг. Если посмотреть поледнюю строчку, то один только Assassin Creed 3 стоит 50 баксов. Character pack выше — +1.35 = 51.35 != 51.08. Так что, как я уже сказал, просто баг системы при подсчете итоговой суммы.
То есть можно догадаться о том, что имелось ввиду, но догадываться от постановки задачи сильно отличается. например, почему лужа не между тройкой и семеркой, а между пятеркой? для точки [4] локальными максимумами будут 3 и 2, но мы заливаем между 5 и 7.
Задача плохо поставлена. Не сказано, какой уровень воды. Я могу вообще сказать, что он затопит все вокруг (см. картинку 3), а значит будет просто myarr.Select(x=>maxlevel-x).Sum();
В этом варианте, мы задали формулу отдельно, а значения параметров отдельно. Метод ExecuteCode проверяет, нет ли среди ранее скомпилированных им сборок, подходящей для выполнения текущего вызова. Если исходный C#-код, возвращаемый им тип, а также типы и имена параметров совпадают, то можно использовать приготовленную при первом вызове ExecuteCode сборку повторно.
У меня помню была похожая задача, но я её решал компиляцией в одной и той же сборке, просто делал god-object статический класс, у которого генерировал методы, после этого эти методы сохранялись в делегат, а делегат отдавался (если надо) наружу. То есть оверхед вызова однажды скомпилированной функции был исключительно в Delegate.Invoke(object[])
Хотя у вас конечно задача меньше регламентирована.
Два вызова GC.Collect() для отработки финализаторов?
А делать так не стоит, потому что многие молодые объекты, на которые остаются ссылки, могут попасть во второе поколение, в результате вызовут частые излишние сборки всех поколений, а не только 0 и 1.
Перво-наперво: события (event) не являются экземплярами делегатов. А теперь снова:
События — это НЕ экземпляры делегатов.
В некотором смысле жаль, что язык C# позволяет использовать события и экземпляры делегатов в определённых ситуациях одинаковым образом, однако очень важно понимать разницу.
Интересно, почему он так подчеркивает, что события — это не делегаты? Я всегда считал, что как раз-таки события являются делегатами специального вида, которые позволяют только подписываться и одписываться, не позволяя обнулить его и т.д.
Определение, которому я всегда доверял:
Событие — это специализированный делегат, позволяющий сторонним объектам только подписываться или отписываться, по сути — формализация паттерна «Наблюдатель».
Деревом называется неориентированный связный граф из N вершин и N-1 ребер. Из любой вершины до любой другой существует ровно один простой путь.
Корнем дерева будет называться такая вершина, от которой задано направление движения по дереву при его обходе.
*зануда мод он*
Грамотное определение: «Дерево — это граф, который не имеет циклов».
Корень — это вершина, откуда достижимы все остальные вершины.
*зануда мод офф*
class CryptoMercenVortex
{
private const int MaxCalls = 600;
private Random _rand = new Random();
private int _calls = 0;
private MT19937 _mercen = new MT19937();
public int Next()
{
if (_calls++ > MaxCalls )
{
_mercen = new MT19937(_rand.Next());
_calls = 0;
}
return _mercen.Next();
}
}
длина последовательности будет влиять только на то, сколько раз будет пересоздаваться внутренний обычный mercen.
Как я уже отмечал выше, если атакующий имеет 624 числа сгенерированных с помощью Вихря Мерсенна этого достаточно для того чтобы восстановить все внутреннее состояние и предугадывать с вероятностью 100% все генерируемые в последующем числа.
А что если каждые 600 выборок в таком случае менять seed на случайный другой? Тоже своего рода каскад сделать. Разве не поможет?
1. Непотопляемость. Я вот почему-то думал что языки — это инструменты, а получается, что тут есть враги, друзья, свои и чужие, чужих нужно уничтожить, своих — защитить… Вывод: хороший вброс для холивара.
2. Многопоточность. Вопрос — а где её, собственно, нет? Не говоря про TPL и async/await в C# 5.0. Вывод: выдача желаемого за действительное
3. Первый язык программирования. В целом согласен. Разве что у студентов стран СНГ первым языком все еще является паскаль, реже — С. Вывод: в целом верно.
4. Кроссплатформенность. Фишка джавы. Вывод: очевиден.
5. Снова кроссплатформенность. Зачем-то упоминают андройд, который наоборот, пытается избавиться от Dalvik и переходит на ART. Вывод: присобачили как получилось информацию, выдали в нужном свете — и готово.
6. Блю-рей. Вывод: возможно, сказана правда, никогда ими не пользовался: кино и цифровой контент наше все.
7. Фигурные скобки. Ну это просто смешно. Какое достижение! Какой прогресс! Скобки джавы ведь намного удобнее и скобочнее, чем скобки С 70годов…
8. Groovy. Спорить не о чем.
9. JVM. Опять же, спорить не о чем, обо всем сказал в пункте 5. Не забыли оскорбить C#, забыв, что как раз-таки с помощью Xamarin можно писать одно и то же для всех платформ (Win-iOS-Android). Ну бывает, видимо у автора действительно припекло с врагами и друзьями (имеется ввиду автор оригинала).
10. Не совсем понятно, связь NoSQL с Java. Если бы не было С, WinAPI был бы написан на паскале. Ребята взяли наиболее подходящий язык и реализовали ан нем. Не было бы его — реализовали бы NoSQL на том же шарпе, или еще на чем.
11. Про производительность Minecraft ходят легенды. Хотя можно отнести к плюсам, как авторы пишут.
12. Опен-сорс. Ну, как говорится, любой код на управляемом языке — опен-сорс поневоле :) Про то, что тот C# и CLR тоже являются опен-сорсными (ECMA334,ECMA334) — как-то забывают. Так что выбора у них особо не было.
Вывод: я сравниваю с шарпом просто потому, что эти языки прямые конкуренты. Но это конкуренты, а не враги! Вся статья пропитана фанатизмом и нонконформизмом. Жаль, что есть люди, у которых микроскопы — в друзьях, а лупа — злейший враг.
Хотя я юбисофт не очень люблю. За то, что они сделали с серей HOMM разорить их мало. Если в пятой части было довольно много интересных нововведений, которые приближают её к знаменитой тройке, то шестая — это убожество почище Disciples III…
У меня помню была похожая задача, но я её решал компиляцией в одной и той же сборке, просто делал god-object статический класс, у которого генерировал методы, после этого эти методы сохранялись в делегат, а делегат отдавался (если надо) наружу. То есть оверхед вызова однажды скомпилированной функции был исключительно в Delegate.Invoke(object[])
Хотя у вас конечно задача меньше регламентирована.
А делать так не стоит, потому что многие молодые объекты, на которые остаются ссылки, могут попасть во второе поколение, в результате вызовут частые излишние сборки всех поколений, а не только 0 и 1.
Я прав?
может лучше говорить неймспейсы, или пространства имен? А то не сразу понятно, что имелось ввиду…
Интересно, почему он так подчеркивает, что события — это не делегаты? Я всегда считал, что как раз-таки события являются делегатами специального вида, которые позволяют только подписываться и одписываться, не позволяя обнулить его и т.д.
Определение, которому я всегда доверял:
*зануда мод он*
Грамотное определение: «Дерево — это граф, который не имеет циклов».
Корень — это вершина, откуда достижимы все остальные вершины.
*зануда мод офф*
глагол забыли.
В целом интересно. Спасибо за статью.
длина последовательности будет влиять только на то, сколько раз будет пересоздаваться внутренний обычный mercen.
А что если каждые 600 выборок в таком случае менять seed на случайный другой? Тоже своего рода каскад сделать. Разве не поможет?