[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.30333 Reply
File: Silly-Berry-by-Falvie.png
Png, 559.25 KB, 550×712 - Click the image to expand
edit Find source with google Find source with iqdb
Silly-Berry-by-Falvie.png
Переношу обсуждение программных аспектов сюда.

В предыдущих постах: я спросил у наших тестеров, как они доказывают наши программы, и был шокирован, узнав, что в этом мире программное обеспечение вообще никто никогда толком не проверяет, не то что доказывают.

Но я так не могу. Поэтому в спешном порядке изучаю теорию доказательств и инструментарий к ней. Недавно узнал про satisfability modulo theories и нашёл решалки для них. Особенно понравился CVC4. Но не знаю, как его прикрутить к коду. Наверно, придётся всё проверять руками.

Тем временем выбираю платформу для реализации бизнес-логики. .NET привлекает меня скоростью, но отталкивает бойлерплейтностью даже лучших языков под него (Nemerle) и абсолютной упоротостью стандартной библиотеки («==» — это почти всегда reference equality; строка, состоящая из одного символа U+1D100, имеет длину 2). Ruby нравится лаконичностью, нормальными массивами байт, корректными строками UTF-8 и простенькой базой данных (GDBM) в стандартной поставке; но меня не устраивает его излишняя динамичность — если я опечатаюсь в имени функции, то узнаю я об этом уже «в полёте».
>> No.30336 Reply
>>30333
> я спросил у наших тестеров, как они доказывают наши программы
Где ты видел тестера, который бы формально доказывал программы?
> в этом мире программное обеспечение вообще никто никогда толком не проверяет
Странно, что ты понял это только сейчас.
> Поэтому в спешном порядке изучаю теорию доказательств и инструментарий к ней.
Чтобы от этого был толк, изучать должен не ты один, ведь так?
> абсолютной упоротостью стандартной библиотеки
> («==» — это почти всегда reference equality
Ты сегодня что-то принимал?
> нормальными массивами байт
Точно принимал.
>> No.30337 Reply
File: MakePure.jpg
Jpg, 78.55 KB, 737×552
Your censorship settings forbid this file.
r-18
>>30333
Это всё оттого, что вы, грязные изврощенцы, тайно желаете наслаждаться глобальными переменными, но вам стыдно это признать.
>> No.30339 Reply
>>30333
фортран будет удачным выбором, если это нельзя сделать будет на фортране сделай на асме, если и на асме нельзя, то это совсем ненужно делать.
>> No.30343 Reply
>>30333
> я спросил у наших тестеров, как они доказывают наши программы
Ты должен доказывать ваши программы, они должны находить, где ты наебался.
> абсолютной упоротостью стандартной библиотеки
> строка, состоящая из одного символа U+1D100, имеет длину 2
Корректное поведение (http://www.fileformat.info/info/unicode/char/1d100/index.htm) теперь является "абсолютной упоротостью"?
> нормальными массивами байт,
Што?
> никто никогда толком не проверяет, не то что доказывают.
> Поэтому в спешном порядке изучаю теорию доказательств и инструментарий к ней...
Нахуй ты нам это все рассказываешь, если ты обычный чувак "памагите выброть лутчший изык в мире"? Впрочем, вопрос риторический.
>> No.30345 Reply
>>30333
лисп /тред
>> No.30347 Reply
File: 602px-Haskell-Logo.svg.png
Png, 7.44 KB, 602×425 - Click the image to expand
edit Find source with google Find source with iqdb
602px-Haskell-Logo.svg.png
>>30333
> отталкивает бойлерплейтностью
> не устраивает его излишняя динамичность
Очевидно же.
>>30345
> лисп
Апофеоз динамичности, лол.
>> No.30349 Reply
>>30333
> излишняя динамичность, если я опечатаюсь в имени функции, то узнаю я об этом уже «в полёте».
Юнит-тестирование и contracts.ruby.
>> No.30350 Reply
File: aly21_vi4rk.jpg
Jpg, 79.17 KB, 604×395 - Click the image to expand
edit Find source with google Find source with iqdb
aly21_vi4rk.jpg
>>30347
> Апофеоз динамичности, лол.
Можно забить на типизацию, и писать чистые функции быстрее, и тестить быстрее.
> если я опечатаюсь в имени функции, то узнаю я об этом уже «в полёте».
Не на столько. Проверка на существование переменной делается.

>>30337
Почему иммутабельные глобальные переменные - это плохо?
Почему динамичные иммутабельные глобальные переменные - это плохо?
>> No.30352 Reply
File: 68b1357c49260b0baffa588e2977c24e.jpg
Jpg, 27.70 KB, 429×491
Your censorship settings forbid this file.
r-18
>>30350
> Проверка на существование переменной делается.
И когда же? На этапе компиляции?
>> No.30353 Reply
File: uzeh98ey27m.jpg
Jpg, 86.92 KB, 604×454 - Click the image to expand
edit Find source with google Find source with iqdb
uzeh98ey27m.jpg
>> No.30354 Reply
>>30353
При чём тут кложур? Речь ведь шла про лишп.
>> No.30355 Reply
File: s95md3zb6d4.jpg
Jpg, 41.56 KB, 500×375 - Click the image to expand
edit Find source with google Find source with iqdb
s95md3zb6d4.jpg
>>30354
Кложур и есть лишп, дурашка.
>> No.30357 Reply
>>30355
Нет, зделай на CL или схемке.
>> No.30358 Reply
File: Ray-of-Hope-by-Falvie.png
Png, 520.90 KB, 550×774 - Click the image to expand
edit Find source with google Find source with iqdb
Ray-of-Hope-by-Falvie.png
>>30336
> Где ты видел тестера, который бы формально доказывал программы?
До недавнего времени я вообще не видел тестеров.
> Чтобы от этого был толк, изучать должен не ты один, ведь так?
Так давайте изучать вместе!

Алсо, я сейчас занимаюсь больше поиском, чем изучением.

>>30343
> Ты должен доказывать ваши программы, они должны находить, где ты наебался.
Если бы это было так, то с меня бы требовали еще и доказательства. Реально же я даже пробные запуски не всегда провожудил (скомпилировалось — и ладно), и это прокатывало.
> Корректное поведение (http://www.fileformat.info/info/unicode/char/1d100/index.htm) теперь является "абсолютной упоротостью"?
Не понял, о чём ты. Я имел в виду, что длина строки, состоящей из одного музыкального символа, в C# равна 2. А в Ruby — 1.
> > нормальными массивами байт,
> Што?
С «==», сравнивающим их содержимое, с «+», конкатенирующим их, и т. д. Впрочем, да, претензии мелочные.
> "памагите выброть лутчший изык в мире"
Нет. Я советуюсь, какую платформу лучше выбрать для данной задачи, и спрашиваю/рассказываю, как потом доказывать корректность того, что напишу.

>>30347
Спасибо, но я не вижу у него преимуществ перед .NET-языками или Ruby. У него мощная система типов, но она позволяет отсечь лишь часть нежелательных поведений программы (не все). Так что в этом смысле он ничем не лучше того же Ruby.

Есть его более продвинутые аналоги, как-то: Agda, Coq, ATS — которые позволяют ограничивать возможные поведения программы вплоть до одного. Но используют для этого теорию типов Мартина—Лёфа, в которую я пока не въехал, но которая по сравнению с SMT выглядит как говно.

К тому же, в Ruby меня не устраивает только возможность опечататься в названии функции.

>>30349
>>30350
Юнит-тесты позволяют проверить программу только на определённых — «показательных» — наборах данных. Эти самые «показательные» наборы ещё надо вычислить.

P. S. Вообще, злой какой-то тред вышел, не рекомендую.
>> No.30362 Reply
> Так давайте изучать вместе!
Не могу сейчас позволить себе заниматься этим. Надеюсь, скоро преграды будут преодолены.
> я не вижу у него преимуществ перед .NET-языками или Ruby.
Тебе ещё многое предстоит узнать!
> по сравнению с SMT выглядит как говно.
SMT - это решалки. Вычислительные штуки из довольно-таки другой оперы. Можно сказать, это такие умные брутфорсеры формул,
в то время, как ИКГ и прочее - это метатеории, в которых корректность по построению, и формально-логические доказательства.
>> No.30366 Reply
>>30358
Не спорю, что на показательных. Но суть ФП в том, что можно тестировать не программу, а отдельные функции(при условии, что они без сайд-эффектов).
>> No.30369 Reply
>>30333
Доказательства корректности это долго и муторно. Писать с контрактами намного выгодней. Тем более в .NET с этим все в порядке, включая множество статических проверок контракта.

http://research.microsoft.com/en-us/projects/contracts/userdoc.pdf
http://lunarfrog.com/blog/2009/12/01/code-contracts-net/
>> No.30370 Reply
>>30369
У этой библиотеки есть один серьёзный недостаток - ни она, ни язык C# не написаны ОПом. Если он ими воспрользуется, то напишет свой движок для текстового квеста за пару вечеров, и больше не о чем будет ныть ITT и в треде в /cr/. Всё это слишком просто! Пора изобретать ещё несколько велосипедов, велосипеды сами не изобретутся!
мимокрокодил
>> No.30372 Reply
>>30362
> Тебе ещё многое предстоит узнать!
Я уже его забросил. Что в нём есть такое, ради чего стоит его посмотреть ещё раз?
> SMT и ИКГ
Давай рассмотрим простую задачу. Имеется тип W и функции:
    set: W → int → int → W
    get: W → int → int
Допустим, их реализация неизвестна, но известно, что:
    (1): for all (w: W) (key value: int), get (set w key value) key = value
Пусть имеется функция:
    uncount w key =
      let
        value = get w key
      in
        if value > 0 then uncount (set w key (value - 1)) key
        else w
Я хочу доказать, что для любого key, принадлежащего int, будет верно, что get w (uncount w key) key = 0. Как это сделать, используя ИКГ?

Я не знаю, как задать тип для (1). А так (1) — это satisfability modulo theory, и её можно напрямую вводить, например, в CVC4.

>>30366
Это сути не меняет.
>> No.30373 Reply
>>30369
Все эти ваши солверы, брутфорсеры и прочий подобный хлам -
это классика сверху-внизанья: "давайте сделаем хаос и неограниченное императивное питушение, а потом сверху попытаемся прикрутить какие-то проверялки",
теоретики же поумнее народец - они снизу-вверх делают: "какой фундамент следует выбрать, чтобы на нём строить гарантированно корректные программы?".
Именно поэтому агдочки и coq'и так много могут по сравнению с бесполезными контрактами.
>> No.30374 Reply
>>30372
Почему не
uncount w key
  | get w key > 0 = set w key 0
  | otherwise     = w
? Случайность, или тебя тут что-то специфическое интересует?
>> No.30375 Reply
Ах да,
> Я хочу доказать, что для любого key, принадлежащего int, будет верно, что get w (uncount w key) key = 0.
Никак, просто потому, что это неверно (если get w key < 0).
>> No.30382 Reply
И я не совсем вредничаю, делая вид, что не догадываюсь, что там подразумевается Nat вместо Int...
На этом надо сакцентировать внимание, чтобы подумать о зависимостях между данными и свойствами которые тебя интересуют.
То, что ты описал - это вперемешку definitional equality твоего свойства (1) с пропозициональными свойствами конкретного типа значения.
Может лучше абстрагироваться от типов ключей и значений и задуматься, какие минимальные их свойства тебя устроят и дальше плясать от этого?
>> No.30383 Reply
> Переношу обсуждение программных аспектов сюда.
Ну довайте пообсуждаем программные точки зрения здесь.

Привет двач, есть одна тян. Тян называется машинный базис или набор инструкций целевого микропроцессора. Допустим, случайное искажение памети програм называется мутацией. Допустим, мутация приводящая к резкому снижению значений большинства целевых функций программы называется негативной. Допустим, мутация, не приводящая к снижению значений целевых функций - нейтрально-позитивная. Не встречились ли тебе, двач, пейперы в который написано как делать такие машинные базисы, в которых отношение нейтрально-позитивных мутаций к негативным было бы максимально?
>> No.30393 Reply
>>30373
Ну и что ваши агдочки могут?
Показывай промышленное применение.
>> No.30394 Reply
File: 181785.jpg
Jpg, 36.84 KB, 225×267 - Click the image to expand
edit Find source with google Find source with iqdb
181785.jpg
>>30373
> теоретики же поумнее народец - они снизу-вверх делают: "какой фундамент следует выбрать
> implying переписать все заново на языке для проверки правильности факториалов
>> No.30396 Reply
>>30369
> Писать с контрактами
Они проверяются в рантайме.
> статических проверок контракта
MS для этого использует Z3. А в Mono этого вообще нет. А MS .NET под ОПЕРАЦИОННОЙ СИСТЕМОЙ не работает.
>>30370
Написать я могу действительно за пару вечеров. Только работать не будет.
>>30374
Можно добавить аргумент-функцию, которой будет передаваться w на каждой итерации, например, если тебе так проще будет.
>>30375
Вот, уже есть бага. Пусть вместо int будет nat.
>>30382
Не понял. Так как будет выглядеть тип (1)? И какую из функций get и set им ограничивать?
>> No.30402 Reply
>> No.30403 Reply
>>30333

Бери жабу, языков под жвм хоть жопой жуй, и динамических, и функциональных + куча готового лоснящегося жирного энтерпрайза, которого заказчики не боятся. Береж джейбосс ас7 (или там джейбосс еап 6, что то же самое только с техподдержкой за бешеные бабки, это если у заказчика горит) и скажем хуярищь рестфул-эпликейшон в функциональном стиле на кложуре и скакалке. На клиентской части можно кофескрипт в сочетании с ехтжс или должей, если там кучу крудов, таблшичек и прочих бухгалетрских 1сок с проводочками пилить.
>> No.30405 Reply
>>30396
> Написать я могу действительно за пару вечеров. Только работать не будет.
Во-первых, если твои руки прямы, а голова растёт из нужного участка тела, то будет.
Во-вторых, даже если какое-то из условий из пункта 1 неверно, то на доведение этого кода до работоспособного состояния ты потратишь гораздо меньше времени, чем на метанирование луж и кукаретические выкладки ITT.
>> No.30412 Reply
>>30402
То есть, они вообще свою проверялку пилят? Но это же тупо!
>>30403
Java — это .NET без быстродействия и контрактов.
>>30405
> на доведение этого кода до работоспособного состояния ты потратишь гораздо меньше времени
ORLY? Практика показала, что на проверку и исправление даже простейшей функции из двух строчек времени и чернил уходит в 20 раз больше, чем на её составление. (Я потому и начал искать инструментарий для автоматизации формальной проверки, что писать много.) Или что ты имеешь в виду под доведением до работоспособного состояния?
>> No.30421 Reply
File: tumblr_mjxionDfdp1rgxxuxo1_500.jpg
Jpg, 102.50 KB, 500×417 - Click the image to expand
edit Find source with google Find source with iqdb
tumblr_mjxionDfdp1rgxxuxo1_500.jpg
>>30358
> Алсо, я сейчас занимаюсь больше поиском, чем изучением.
Формальные методы не панацея от косяков. Они работают в том случае, если дизайн ПО укладыватеся в формальную модельку, которую можно верифицировать (в граф, к примеру) конкретным инструментом. И проверяют только модельку, и ничего более.
> К тому же, в Ruby меня не устраивает только возможность опечататься в названии функции.
У меня тогда плохие новости для тебя.
капча: добролис набгродие
>> No.30422 Reply
>>30421
> Формальные методы не панацея от косяков.
Панацея.
> Они работают в том случае, если дизайн ПО укладыватеся в формальную модельку
Любой дизайн укладывается. Вопрос только в сложности соответствующих формальных систем.
Пока что они настолько сложны, что не подходят для широкого промышленного применения.
> в граф, к примеру
Икспертиза.
>> No.30423 Reply
>>30422
> Вопрос только в сложности соответствующих формальных систем.
Вот этому доброго чаю. Попробуй хотя бы начать формально описывать C, да даже HACHKELL — пупок развяжется. Собственно, это одна из причин, почему я хочу сделать свой язык.
>> No.30461 Reply
>>30423
В книге троя приведен полный листинг КА, описывающих C90. Problems?
>> No.30464 Reply
>>30461
Что-то не гуглится. Дай ссылку.
>> No.30470 Reply
>> No.30473 Reply
>>30461
А что такое КА?
>> No.30474 Reply
>>30461
Алсо, не могу найти для скачки. Тратить деньги ради возможного кота в мешке не хочу.
>> No.30483 Reply
> >>30474
> Тратить деньги ради возможного кота в мешке не хочу.
> 154руб
лол.
>> No.30484 Reply
>>30473
Конечные автоматы
>> No.30485 Reply
>>30461
Язык программирования C90 обладает полнотой по Тьюрингу, в то время как конечные автоматы - нет.
>> No.30486 Reply
>>30485
ВАТ?!
>> No.30487 Reply
>>30461
Емнип, регулярные языки описываются КА, а контекстно свободные (коим является сишка) - автоматами с магазинной памятью.
>> No.30494 Reply
>>30483
На 150 рублей можно неделю жить.
>> No.30500 Reply
>>30487
зато граматика вполне описывается
>> No.30502 Reply
>>30500
Нахрена бы мне грамматика? Ты мне семантику опиши. Формально. Чтоб я мог взять программу:
#include <stdio.h>
int main()
{
    char name[1024];
    printf("What is your name?\n");
    scanf("%s", name);
    printf("Hello, %s!\n", name);
    return 0;
}
и путём простых синтаксических преобразований привести её к виду:
for all x, x is string -> program(x) = "What is your name?\nHello, " ++ x ++ "!\n",
где "++" - операция конкатенации.

Проблема C в том, что в нём даже очевидная, казалось бы, конструкция "a + b", где a и b объявлены как int, имеет мат. описание на полстраницы, причём разное для разных вычислителей. И уж конечно это описание не вполне соответствует тому, что мы учили в школе о сложении.
>> No.30506 Reply
>>30502
Это следствие того, что в С нет контроля за сайд-эффектами. И в большинстве мейнстримных языков тоже нет. Тебе нужен полный контроль за сайд-эффектами (как в хачкеле, к примеру), чтобы нормально провести верификацию.
>> No.30507 Reply
>>30502
няша, тебе интерпритатор надо написать или компелятор? Половина этих двух страниц - не изменяющее семантику понижение степени и подобные вещи
>> No.30508 Reply
>>30502
алсо, КА грамматики хватит, чтобы сделать программу на лиспе, после чего надо будет только строчить макросы и функции
>> No.30509 Reply
>>30507
>>30508
Чего?
>> No.30513 Reply
>>30506
Почитай внимательно, что пишет твой несмышленый друг в >>30502
> и путём простых синтаксических преобразований привести её к виду:
> for all x, x is string -> program(x) = "What is your name?\nHello, " ++ x ++ "!\n",
Он сводит программу к ее побочным эффектам (что, очевидно, неверно), а не к виду main = 0, с которым уже можно иметь дело.
> полный контроль за сайд-эффектами (как в хачкеле, к примеру)
Дело вовсе не в побочных эффектах. Статический анализ, как и анализ потока выполнения возможен и для си, просто реализация сложнее. Для "нормальной" проверки язык, на котором написана программа, должен быть худым по Тьюрингу, иначе проблема останова и всё такое.

>>30508
Что такое "КА грамматика"?

>>30500
> зато граматика вполне описывается
Описывается, например, так http://www.lysator.liu.se/c/ANSI-C-grammar-y.html. Cказать-то чего хотел?

>>30486
Говорить не обучены? Только тявкать можем? Типичный фурфаг.

>>30487
Когда имеешь в виду грамматику, используй именно слово "грамматика" вместо "язык". Тут полон тред не различающих первое и второе.

>>30373
1) Из полноты по Т. следует неразрешимость задачи проверки в общем случае.
2) Давай я выложу небольшое приложение на C#, а ты проверишь его курочкой или петушком?
>> No.30514 Reply
>>30509
того. Парсишь при помощи большого КА, который использует меньшие, результат образует дерево, превращаешь дерево в лишп, побеждаешь. Объемное мат описание как у >>30502 описывает не только семантику кода, но и много других интересных вещей, которые тебе нафиг не вперлись, если ты не задрачиваешь скорость работы. Если задрачиваешь - чувак, ты ведь понимаешь, что подобное умеют делать только microsoft, и то для дотнетов, языки которых преоктировались под интерпритатор
>> No.30517 Reply
>>30514
> и то для дотнетов, языки которых преоктировались под интерпритатор
Ты ведь знаешь, что I в аббревиатуре CIL означает intermediate, а не interpretable? Или ты зелёный-жирный, который делает вид, что не знает про JIT в дотнетах?
>> No.30524 Reply
>>30517
Нет, это ты поехавший. JIT как раз одна из таких оптимизаций, задроченных под скорость интерпритации
>> No.30526 Reply
File: 1348047979567.jpg
Jpg, 52.84 KB, 400×313 - Click the image to expand
edit Find source with google Find source with iqdb
1348047979567.jpg
>>30514
Ничего не понял.
> Парсишь
Так, парсю.
> при помощи большо
Насрать.
> результат образует дерево
Наверно, имеется в виду дерево разбора. Так!
> превращаешь дерево в LISP
OK, представляю деревов виде LISP, так.
> побеждаешь
Падажи, ёбана. Там же ещё где-то свернуть надо было.

Дальше я вообще ничего не понял.
> Объёмное мат. описание
С хуя ли оно объёмное? Чувак, заказчик просто хочет, чтобы программа выполняла задачу. А чтобы не возниаало разночтений, он сформулировал её в виде математической теоремы.
> описывает не только семантику кода
Торагой, мне как раз семантика и нужна.
> подобное умеют делать только Microsoft
Microsoft умеют только пиздить у компьютерных сайентистов и опенсурсников. Рассматривать программы как функции, денотированные от конкретного языка, и доказывать на них теоремы придумали задолго до них.
>> No.30527 Reply
>>30526
> Падажи, ёбана. Там же ещё где-то свернуть надо было.
Любое дерево является синтаксически корректным кодом на лиспе, тебе осталось написать функции
> С хуя ли оно объёмное? Чувак, заказчик просто хочет, чтобы программа выполняла задачу. А чтобы не возниаало разночтений, он сформулировал её в виде математической теоремы.
И эта хуйня есть описание того как обрабатывается a+b в Сишке? Нуну
> Торагой, мне как раз семантика и нужна.
Так нафига тебе эта гребаная двухстраничная статья? Идешь и складываешь а и б без выебонов.
> Microsoft умеют только пиздить у компьютерных сайентистов и опенсурсников. Рассматривать программы как функции, денотированные от конкретного языка, и доказывать на них теоремы придумали задолго до них.
Какие теоремы, приехавший?
>> No.30533 Reply
>>30527
> > Падажи, ёбана. Там же ещё где-то свернуть надо было.
Это из Д. Гайдука.
> И эта хуйня есть описание того как обрабатывается a+b~
Не, ты точно поехавший. Не буду с тобой разговаривать.
>> No.30534 Reply
>>30524
JIT - не оптимизация и не интерпретация, а компиляция в машкод. А CIL у мелкомягких дебилов только из-за того, что они васик для дотнета поддерживают.
>> No.30535 Reply
>>30534
JIT это рантаймовая компиляция в машкод, что является оптимизацией интерпритации
>> No.30536 Reply
>>30535
> Интерпретация — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы
При JIT же вся исходная программа либо байт-код компилируется в машкод и дальше он сам работает.
>> No.30541 Reply
>>30536
схерали? JIT оптимизирует ботлнеки, причем опирается в том числе и на профилирование
>> No.30549 Reply
>>30535
JIT и интерпретация - это разные вещи, ибо JIT компилирует код хоть и в рантайме, но блоками и с каким-никаким анализом работы этого кода.

Олсо, вижуал-барсик - это всего лишь один из языков для дотнетов, и кроме него существуют как минимум C++, C# и F#. Будут пруфы, что эти языки тоже
> преоктировались под интерпритатор
?
>> No.30553 Reply
>>30549
C++ нет, остальные да.
Тот же C# появился до JIT
фшарп проектировался хз для чего, но он не конпелируется полностью
Алсо, давно ли C++ совместим с дотнетом?
>> No.30554 Reply
>> No.30555 Reply
>>30554
Странно, а почему ханабира превратила ссылку на конкретную статью (ruwiki://C++/CLI) в ссылку на поиск?
Попробуем так (http://ru.wikipedia.org/wiki/C%2B%2B/CLI): ruwiki://CLI
>> No.30561 Reply
File: soga_singing_setz.jpg
Jpg, 565.50 KB, 831×620 - Click the image to expand
edit Find source with google Find source with iqdb
soga_singing_setz.jpg
Я читал очень мало этого треда, но уточню, что „интерпретатор“ CLI интерпретирует не код на C#|F#|VB, а промежуточный байткод, в который компилируются эти языки. JIT-компиляция в данном случае подразумевает трансляцию этого байткода в машинные инструкции.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]