All streams
Search
Write a publication
Pull to refresh
222
0
Алексей @PsyHaSTe

Зигохистоморфирующий

Send message
.Net выше 3.5 не ставится на XP, а значит про все эти новомодные 12 студии и async/await придется забыть как страшный сон. Не говоря про TPL, PLINQ и многое другое.
Хорошие книги обычно платные, потому что как справедливоз амечает тот же автор «Sharepoint 2010 Unleashed», они практически все время тратят на изучение нового ПО и написание книжек. А кушать им тоже что-то все-таки надо. А если написание книги это «хобби», то либо информация запоздает, либо будет просто неполной или недостоверной. К тому же за хорошую работу не стыдно и заплатить. Я многие книги сначала качал с торрентов, и если потом она мне нравилась, я обязательно покупал её в бумажном виде, даже если потом не открывал ни разу. Сюда и Шилдт, и Иакдональд, и Мартин и Нейгел и многие другие…
«Счастье придет, если еще раз пройтись по статье и загуглить термины. Выделить слово, потом нажать правой кнопкой мышки и в открывшемся меню выбрать пункт “Искать...”»

Именно этим и знаимаюсь. Причем в любой статье. Всегда приятно побывать незнающим (когда этого никто не видит) — можно узнать новое, а это наиболее яркое человеческое чувство.
Спасибо вам обоим, жаль репа в заднице, плюсовать не могу.
Насчет ковариации массивов решарпер мне постоянно орет, а вот в чем заключается эта ошибка я так и не смог нагуглить.
Более того, в некоторых постах автор спорит с подразумеваемой версией: например в первом посте он спорит с шуточным утверждением «я не хочу следовать модным тенденциям», то есть спорит с утверждением, что им надо следовать. С другой стороны в посте №10 авторя явно намекает, что стоит учить математику. Так как в этом автор согласен с автором репоста, но не остается ничего, кроме как начать спорить с заведомо шуточным (а значит, отражающий противоположенность истине) пунктом.

То есть когда автору удобно — он громит подразумеваемый смысл, а когда он физически не может этого сделать (ввиду самоочевидной истинности какого-либо пункта), начинает спорить уже с шуткой…
Если верить Рихтеру и Шилдту, то C# — это именно потомок С++, а не джавы (см. c-like object oriented language aka COOL aka C#)
Круто. Даже не представляю, каким адским матаном это все реализовывалось. Вернее, матлогикой. Вернее даже представляю. Но просыпаться в холодном поту не хочу. Так что поверю вам на слово.
Почти все это реализовано в шарпе, только местами немного кривокосо (напиример, «чистые» функции отличаются от обычных только добавлением аттрибута [Pure]).

Так что надеемся на развитие.

«Я имел в виду несколько большее, чем сахар лямбд.»
Ну так и я не про то, чтобы писать на 2 строчки меньше кода, а про то, что у меня иногда встречаются функции, которые принимают параметрами функции, которые работают с функциями. Не скажу, что это часто нужно, обычно это все же излишне, но например как в задаче многомерной нелинейной оптимизации, где целевая функция у нас в свою очередь имеет аргументом другие функции, это является насущной необходимостью
Посмотрите ниже. Для языков типа шарпа недостаточно знать, что это «целое» или «с плавающей запятой» Это может быть short, может быть byte, может быть знаковый или беззнаковый… Много чего может быть. И в общем случае задача вывода нетривиальная. Тут это наверняка как-то по-хитрому решается (сложнее, чем в примере выше, потому что там все-таки не охватывается все многообразие имо), но тут у нас остается какая-то степень контроля над программой (множество возможных значений числа, занимаемый объем памяти, и т.д.). В хаскелле афайк вообще длинная арифметика реализована неявно, а вот в том же шарпе всему этому приходится уделять внимание, я бы не сказал, что это сделано по недосмотру или небрежности.
В шарпе многие подобные вещи запрещены, по причине того, что иногда неясно, какой тип должен быть у делегата
stackoverflow.com/questions/4965576/why-cant-an-anonymous-method-be-assigned-to-var
Насчет школы и дизайна — абсолютно согласен. По крайней мере делегаты и локальные лямбды теперь используются намного чаще, а код — получается намного чище.

А вот насчет принципиальной разницы не особо понял. Может поясните более конкретно? Насколько я понял, у вас просто получается неявное преобразование Action к Action, этакая ковариация типа делегата, в шарпе это запрещено, то есть
пусть T: U, но тогда ⌐∀T (Generic(T): Generic(U)), то есть такую ковариацию можно произвести не для всех типов, а только для наследников, причем делегаты должны быть явно указанны как ковариационные. В шарпе, очевидно, int не является наследником double и наоборот тоже.

Либо я опять вас не понял)
var inums = Enumerable.Range(0, 6).ToList();
var fnums = Enumerable.Range(0, 6).ToList();
inums.ForEach(Console.WriteLine);
Action fprint = i => Console.WriteLine((double) i);
fnums.ForEach(fprint);

честно говоря не увидел, что намного мощнее. Лаконичнее — да, но это не во всем. Когда изучал функциональщину то тоже показалось, что вывод всего и вся, иммутабельность, сопоставление с образцом — все очень красиво и кратко. А когда решил реальную задачу попробовать смастерить — любимый шарп дал 100 очков форы. Конечно, можно сказать, что я плохо знаю функциональные языки, но результат ООП + лямбда-выражений зачастую оказывается не хуже, а иногда и лучше.

P.S. (почему-то теги так и не хотят работать… Видимо, репутация и на это влияет :( )
Она тут и используется, иначе гугл не смог бы посчитать
Г — это гипотеза. То есть Г ⊢ X: T означает, что «из гипотезы Г выводится то, что X принадлежит типу T»
Это можно переписать в виду: ⊢ Г => X: T, то есть «Формула, что из гипотезы Г следует то, что X принадлежит типу T, является общезначимой». Общезначимая формула, по сути, это аксиома. Очевидно, что эти две записи эквивалентны.
«А где и для чего на практике это можно использовать?»
var x = await MySheduler.FirstTask.Start();

по сути идет формализация правил «вывода типов». Немножко матлогики и мы получаем все, что нужно.
Г ⊢ X: T означает, что «из гипотезы Г выводится то, что X принадлежит типу T» Значек ⊢ — это перевернутая «Т», от слова «Теорема». То есть существует теорема, доказывающее подобный вывод.
Мне кажется, это ваши персональные предпочтения и ваши персональные проблемы.
Современная газета Times за неделю печатает больше информации, чем узнавал человек в XVI веке за всю жизнь…
Вы уже начинаете извиваться и разделять самоубийства на кошерные (голыми руками) и некошерные (повеситься, поджариться, и т.д.)…
Почему это?

Взять ту же психологию, есть понятие «влечения к смерти». Согласно вашим утверждением. у человека такого быть не может, ведь человек — система. Любой достаточно сложный робот — это механизм, который не думая пожертвует собой ради человека, потому что он на это запрограммирован, при этом он является сложной системой многих электронных компонент.

Кроме того, у системы может стоять цель — уничтожить себя. Кроме того, цель может быть достигнута до того, как система себя разрушит, «походя», так сказать.

Information

Rating
Does not participate
Registered
Activity