以前、こんな記事を読みました。
→ 「プログラミング=英語」という状況は正しくない。多言語でコードを書ける世界が求められている|WIRED.jp
ということで、今回は英語以外で Python をコーディングして遊んでみたいと思います!
翻訳元となる英語のコード
素因数分解をするプログラムを英語の Python で書いてみます。
1'This is a program which implements prime factorization.'234from math import ceil, sqrt567def is_prime(n):8'judge if n is a prime'9if n == 2: return True10if n % 2 == 0: return False11for i in range(3, ceil(sqrt(n)) + 1, 2):12if n % i == 0:13return False14return True151617def primes(n, start):18'primes from start to n'19for i in range(start, n + 1):20if is_prime(i):21yield i222324def prime_factorize(n, start):25'implement prime factorization'26while n % 2 == 0 and n != 2:27print('2 *' , end=' ')28n //= 229for i in primes(ceil(sqrt(n)), start):30if n % i == 0:31print(f'{i} *', end=' ')32prime_factorize(int(n // i), i)33break34if is_prime(n):35print(int(n))363738while True:39num = input('Input an integer larger than 1.\n')40if num.isdigit() and int(num) > 1:41break42else:43print('That is invalid input. Try again.')444546print('=')47prime_factorize(int(num), 2)
自作のカッペリーニコードですがお気になさらず!
ちなみに出力はこんな感じです。
各言語に翻訳
翻訳の精度は目をつむってください笑
日本語
私にとって一番馴染み深い日本語から。
なるほど、日本語は後置修飾型の言語だということを再認識しました。
「関数」「もし」を省くと、一見するだけでは条件文なのか定義文なのか反復処理なのかわからないですね。
可読性のためには語順が大切なんですね。
ところでクラス内部だと「関数」は「メソッド」になるのでしょうか…
そう考えると、定義する 素数である(イ):
みたいに倒置した形で書いていくほうがいいのかも。
あと、書くときは地味に全角と半角の切り替えが辛いので、やるなら全角で統一したほうがいいですね。
ちなみに、日本語プログラミング言語にはなでしこやプロデルなどがあります。
フランス語
フランスの他にもアフリカ西北部やカナダの一部などで話され、多くの国際機関の公用語としても用いられているフランス語です。
文法とか間違ってたらごめんなさい
rccr
は racine carrée (平方根)、déf
は définir を略したものです。
ここには出ていないのですが、not
とか面白そう。
si ne a < b et a*b > 2 pas:
みたいな。
ne と pas で挟まれた部分が否定されるので、括弧いらずです。
フランス語のプログラミング言語にはLinotteなどがあるようです。
動詞は不定形としましたが、これ見た感じだと命令形がいいのかな…?
ラテン語
何世紀にも渡って今日のヨーロッパ・北アフリカの大部分を支配下に置いた古代ローマ帝国の公用語で、
その後も学術用語として広く用いられてきたラテン語です。
格変化、合ってるかなあ…笑
rdqd
は radix quadrata 、dēf
は dēfīni の略。
せっかくなので、もうちょっとクラシックにしてみますか。
もともとは単語の分かち書きもしないのですが、それだとプログラムが動かなくなりそうだし、すでに十分暗号です。笑
ちなみにラテン語のプログラミング言語にはLingua::Romana::Perligataという、Perl のラテン語版があるそうです。
言語の壁
個人開発なら面白そうですが、今のところはお仕事はやっぱり英語のほうが喜ばれるでしょう。
もちろんグローバルな作業環境では英語のプログラミング言語を使っていくのが共有しやすくていいんでしょうが、
ローカルの地元の人しかいなくて英語を全然使わないような環境なら、わざわざ英語でプログラミングする必要がないと思うんですよね。
あと、のちのち英語版を使うことになるとしても、他言語版は教育目的で使えると思います。
英語ができないからプログラミングができない!となってしまうのは非常にもったいないことだと思うので、
BabylScriptみたいなのが増えてくると素敵だなと思います。
最後までありがとうございました!
それではまた