recommendation_unreadable_code



recommendation_unreadable_code

0 0


recommendation_unreadable_code


On Github iorionda / recommendation_unreadable_code

山の話をします

しません

おまえら読みやすいコード書いてるか?

捨てろ

Unreadable code のススメ

Created by Iori ONDAhttp://twitter.com/120reset

読みにくいコードの世界

  • Esolang
  • Obfuscated Code
  • Quine
  • ...

Esolang

難解プログラミング言語 (なんかいプログラミングげんご)とは、意図的に読解が困難なように設計されたプログラミング言語である。英語では、Esoteric programming language (略してesolangとも)と言われる。

基本的には、実用性を目指したものではなく、冗談プログラミング言語

代表的な Esolang をいくつか紹介

みんな知ってる

Brainfuck

Hello world

+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.
------------.<++++++++.--------.+++.------.--------.>+.

おなじみ

Whitespace

Hello world


昨日知った

قلب(Qalb)

hello world

(قول "مرحبا يا عالم!")

タミル語

எழில்(Ezhill)

hello world

# தமிழில் ஒரு எடுத்துக்காடு

பதிப்பி "வணக்கம்!"
பதிப்பி "உலகே வணக்கம்"
பதிப்பி "******* நன்றி!. *******"
exit()

じゃあこれは?

#include <stdio.h>
#include <stdlib.h>

int loop() {
    puts("Hello, world!");
    exit(0);
}

そうだね、Ruby だね

それはそうと

今日はQuineの話

Quineとは?

クワイン(英: Quine)は、コンピュータプログラムの一種で、自身のソースコードと完全に同じ文字列を出力するプログラムである。 Ken Thompson チューリング賞受賞の公演では「Quine を書いたことが無いのなら、自分で書いてみることを強くお勧めする」とのこと。

Q. 何が面白いの?

A. 考えるな、感じろ

具体例

Ruby

eval s=%q($><<"eval s=%q(#{s})\n")

RubyでQuineを書いてみる

eval

RubyにはQuineを書く為に用意されたevalというメソッドがあります

基本的なアイデアは eval する文字列を変数に代入しておいてevalの中でその文字列を表示する

例えば

eval(q='puts q')

と書くと

puts q

が得られるなので、puts q の左側(eval(q=)と右側()を出力してやればいいことがわかる

%p記法

RubyにはQuineを書く為に用意された%pという記法があります

%pを文字列に対して使うと、"で括られた文字列を生成してくれる

つまり

eval(q="puts 'eval(q=%p)'%q")

を実行すると

eval(q="puts 'eval(q=%p)'%q")

を得ることが出来る

%w 記法

RubyにはQuineを書く為に用意された%wという記法があります

これと Array と Join を使えば、好きな位置に空白を入れることができる

eval %w"p
ut s 


'He
   ll
     o
             Wo
r
ld'
".join

#=> HelloWorld

AAを書くのに便利😤

基本はそんなとこ

当然、Ruby以外の言語でも出来る。自分は最初の Quine は C言語で書いた。

まとめ

A. 考えるな、感じろ