немного шарпа

Jul 31, 2014 01:48

Занялся давеча генерацией C#, узнал, что этот недоязык не позволяет описать и тут же на месте вызвать лямбду, вроде:

(x => x * 2)(21)
А вывод типов там такой слабенький, что почти и нету; пришлось самому делать.

А скажите, друзья, насколько легко понять, не запуская, что вычисляет этот код?

Thunk fmain = () => run>, Kont>>>(x0 =>
() => run
>, ( Read more... )

fp

Leave a comment

Comments 20

qehgt July 30 2014, 19:28:30 UTC
Можно заставить:
new Func<int, int>(x => x + 2)(21);

Reply

thedeemon July 31 2014, 03:21:22 UTC
У меня это run(x => x+2, 21). С new Func шумнее выходит.

Reply


kodt_rsdn July 30 2014, 20:54:25 UTC
"насколько легко понять, не запуская" - ни насколько.
До такой степени замусоренный явными объявлениями код.
Спасибо, что нет всяких int(3) и minus(a12,b13).

Попробовал разобфускивать руками, да вскоре бросил.

Reply


n16bs July 30 2014, 21:07:21 UTC
Можно выкинуть немного аннотаций типов: http://pastebin.com/v1UYSeWD

Reply


ex_juan_gan July 30 2014, 21:21:19 UTC
Я думаю, если переформатировать, так понятно вполне будет.

Reply


soonts July 30 2014, 22:30:08 UTC
>Это у меня примитивный вариант недопростотипизированной лямбды
Это просто у тебя говнокод.
Такое можно написать на любом языке, и это никак не характеризует язык.

Reply

swizard July 30 2014, 22:41:59 UTC
> Это просто у тебя говнокод.

Это, если я всё правильно понял, сгенерированный код из некоторого высокоуровневого языка. C# автор использует в качестве ассемблера :)

Reply

soonts July 30 2014, 23:01:02 UTC
Ну да.
Говнокод часто получается в результате декомпиляции, или любой другой автомагической кодогенерации.

Только зачем спрашивать, насколько легко его понять?
Вот например говнокод на JavaScript, который используется в 60% популярных сайтов:
http://code.jquery.com/jquery-1.11.1.min.js
Его легко понять? Нет, очень сложно, даже если отформатировать.
Разве это означает, что JavaScript "недоязык"?

Reply

thedeemon July 31 2014, 03:15:27 UTC
>Только зачем спрашивать, насколько легко его понять?

Думаю, не сделать ли так обфускатор для небольшого фрагмента одного моего проекта. У меня для этих целей была одна простенькая ВМ, так ее энтузиаст один расщелкал (что было совсем несложно, впрочем).

Reply


Leave a comment

Up