JS Fuck je někdy řazen k ezoterickýcm programovacím jazykům, jako např.: BrainFuck, ale v případě JS FUcku se nejedná o nový jazyk, ale jen o dosti zvláštní způsob, jak psát v JavaScriptu. Všechny použité konstrukce JS Fucku jsou dostupnými příkazy JavaScriptu, jen jich je omezené množství a jsou, řekněme, velmi zvláštní. Pojdmě se na ně podívat! http://www.jsfuck.com/
( ) [ ] + !
- false => ![]
- true => !![]
- undefined => [][[]]
- NaN => +[![]]
- 0 => +[]
- 1 => +!+[]
- 2 => !+[]+!+[]
- 10 => [+!+[]]+[+[]]
- Array => []
- Number => +[]
- String => []+[]
- Boolean => ![]
Více příkazů na githubu.
Jak můžete vidět, všechny konstrukce se skládajíjen ze 6. příkazů. ()[]+!
Varování: tento článek není pro másla!
Jak to funguje?
Základem efektu jazyka JS Fuck jsou konverze datových typů v JavaScriptu. Chtějí-li v JavaScriptu spolu dva objekty nějak interagovat, je třeba, aby měly stejný datový typ. Mále-li tedy např. +[], pak chceme konvertovat pole na kladné číslo. Jenže pole jako takové není číslo. JavaScript se tedy pokusí konvertovat pole na numerickou hodnotu a tou je v tomto případě 0. S nulou již můžeme provést operaci +0 a výsledkem je 0. A takto pracuje JS Fuck. Využívá těchto konverzí až na dřeň. Nelze se zde bavit o efektivitě, optimalizci a ani úspoře, ale má to své přínosy.
K čemu je to dobré?
Psát v JS Fucku nějaké produkční komponenty asi nemá smysl, ale jednoznačně je to výtečný jazyk ke studiu zákoutí JavaScriptu. Schopnost tvořit kód v JS Fucku znamená chápat přesně co naše příkazy dělají a to je cesta, jak psát dobrý kód.
JavaScriptu je dlouhé roky přisuzováno mnoho nehezkých vlastností a mezi jinými jazyky je spíše v roli otloukánka. Tomu však nenasvědčuje celosvětová popularita, jelikož dle např.: http://githut.info/ se jedná snad o nejživější jazyk současnosti. Jeho pochopení je však nezbytné k dobrému kódu, jelikož jinak nám JavaScript umoňujě kód i pěkně prasit.
eBay na JS Fuck *****
Že by měli JS Fuck řešit i vývojáři v eBay dokazuje jejich npadnutý web, který šířil malware. K tomu útočnící využili JS Fucku, jelikož prošel skrze fitry vkládaného obsahu. To by samo o sobě nebylo tak zázračné a nové, avšak postoj eBay je mnohem zajímavější. Známou zranitelnost opravovat nebudou.
Alternativy?
Autor JS Fucku zmiňuje ještě jazyk Hyerogliphy, který staví na velmi stejných principech. Repozitář na githubu taktéž stojí za přečtení.
Další zdroje: