Много дней назад я увидел этот код на качестве открытого исходного кода:Какой язык программирования используется в этом коде?
frq =: [:-.[:(2:|+/)\''''&=
sp =: (#@[)([:<[}.[:>])"0 0[(]</.~[:+/\E.*.[:frq]),
spf =: [:<[:([:','&sp[:-.&')'=&'('{"0 1,.&',')>
cl =: #~[:-.e.&(33{.a.)*.frq
parse =: [:([:<[:(([email protected]{.),(}.`([:<[:([:<[:spf"0[:'),'&sp>)"0[:');'&sp[:>{:)@.(2:=#)))[:':-'&sp>)"0 _1:}.[:'.'&sp cl
isVar =: [:(91&>*.64&<)[:a.&i.[:{.>
replace =: ((]i.~[:{.[){([:{:[),]`([:<[$:[:>])@.([:32&=[:3!:0[:>]))"2 0
gp =: [:>[:{.>
gv =: [:(#~[:+./"1 isVar"0),.
suit =: ([(0:`(([:(#=[:#[:~.[:{.|:)[:~.[:(#~[:-.[:isVar"0[:{:|:)gv)*.([:*./[:+./[:(isVar"0,=/),:))@.(([:#[)=[:#]))[:gp])"1 0#]
sr =: [(](replace~[:|:])"2[:(([:-.[:isVar{:)"1#])[gv~[:gp])"1 0 suit
groupVars =: [:([:<]$~2:,~[:-:#)"1[:>[:([:<[:;(>@[)([:<,"1 1)"1 2(>@]))/]</.~[:{.|:
isRuleTrue =: ([:+./([:*./](isTrue~[:>])"1 0[:>[)"0 1)`(0:<[:#getVarsFromRule)@.(0:<#@[email protected];@;@[)
isTrue =: ]((a:&[email protected]])+.[:+./[(isRuleTrue~[:>])"1 0[:-.&a:])[:{:[:|:[:-.&(a:,a:)[:(0 2$a:)&,[:>sr
getVars =: ;(([:<[:~.(>@{[email protected][)gv[:gp])`((>@{[email protected][)$:(<@<@[email protected]])([replace~[:|:[:>])"0 0(}[email protected][)getVarsFromRule~[:>[:{:[:>])@.([:<:[:#[:>]))"1 0 sr
getVarsFromRule =: ](([:{.])#~[(isRuleTrue~[:>])"1 0[:{:])[:|:[(],[:<[replace~[:|:[:>])"1 0[:]`[email protected](0:<#)[:~.[:;[:;]([:<[getVars~[:>])"1 0[:;[
goal =: ([:<S:0[:{.[:parse[:,&'.'])([:{&(>'No';'Yes')isTrue)`([:(]`((>@{.),[:' = '&,[:>{:)@.(2:=#))"1[:>getVars)@.([:+./[:isVar"0[)([:parse[)
Я искал .j
на этих страницах: (http://filext.com/file-extension/J), (http://fileinfo.com/extension/j). Они сказали, что написаны на языке Java.
Но, это называется: interpreter.j
; и в его репозитории определено: Objective-J
.
Я спросил некоторых людей: «Это написано в Objective-J?». Они спросили меня: «Неужели этот код был запутан?».
Какой язык программирования используется в этом коде?
Это определенно J, и я считаю его запутанным. Это толчок, наполненный [cap] (http://www.jsoftware.com/jwiki/Vocabulary/squarelfco) ('[:'), который для меня означает, что кто-то запускал все через явный-молчащий конвертер J. – hoosierEE
Посмотрите, как код реализует [простой интерпретатор Prolog] (http://sysmagazine.com/posts/201470/), хотя, для перспективы J-программиста, с каким-то чертовски уродливым кодом (мой прием - @hoosierEE правильный: это Парень изначально написал парсер в явном J, а затем использовал 13: чтобы преобразовать это в молчаливое J, чтобы он мог «хвастаться» своими навыками в своем блоге. Не понимая или конечно, что результаты использования 13: для преобразования больших проходы явного J для молчаливого J примерно такие же, как и результаты преобразования больших отрывков с русского на английский: они воспринимают эту идею попеременно, но нелепо.) –