【日本語・フランス語・ラテン語】英語以外でコーディングしてみた

以前、こんな記事を読みました。

「プログラミング=英語」という状況は正しくない。多言語でコードを書ける世界が求められている|WIRED.jp

ということで、今回は英語以外で Python をコーディングして遊んでみたいと思います!


翻訳元となる英語のコード

素因数分解をするプログラムを英語の Python で書いてみます。

1
'This is a program which implements prime factorization.'
2
 
3
 
4
from math import ceil, sqrt
5
 
6
 
7
def is_prime(n):
8
'judge if n is a prime'
9
if n == 2: return True
10
if n % 2 == 0: return False
11
for i in range(3, ceil(sqrt(n)) + 1, 2):
12
if n % i == 0:
13
return False
14
return True
15
 
16
 
17
def primes(n, start):
18
'primes from start to n'
19
for i in range(start, n + 1):
20
if is_prime(i):
21
yield i
22
 
23
 
24
def prime_factorize(n, start):
25
'implement prime factorization'
26
while n % 2 == 0 and n != 2:
27
print('2 *' , end=' ')
28
n //= 2
29
for i in primes(ceil(sqrt(n)), start):
30
if n % i == 0:
31
print(f'{i} *', end=' ')
32
prime_factorize(int(n // i), i)
33
break
34
if is_prime(n):
35
print(int(n))
36
 
37
 
38
while True:
39
num = input('Input an integer larger than 1.\n')
40
if num.isdigit() and int(num) > 1:
41
break
42
else:
43
print('That is invalid input. Try again.')
44
 
45
 
46
print('=')
47
prime_factorize(int(num), 2)

自作のカッペリーニコードですがお気になさらず!

ちなみに出力はこんな感じです。

実行画面
  関連記事PCAP – Certified Associate in Python Programming を受験した
PCAP – Certified Associate in Python Programming を受験した

各言語に翻訳

翻訳の精度は目をつむってください笑

日本語

私にとって一番馴染み深い日本語から。

ja

なるほど、日本語は後置修飾型の言語だということを再認識しました。

「関数」「もし」を省くと、一見するだけでは条件文なのか定義文なのか反復処理なのかわからないですね。

可読性のためには語順が大切なんですね。

ところでクラス内部だと「関数」は「メソッド」になるのでしょうか…

そう考えると、定義する 素数である(イ):みたいに倒置した形で書いていくほうがいいのかも。

あと、書くときは地味に全角と半角の切り替えが辛いので、やるなら全角で統一したほうがいいですね。

ちなみに、日本語プログラミング言語にはなでしこプロデルなどがあります。

フランス語

フランスの他にもアフリカ西北部やカナダの一部などで話され、多くの国際機関の公用語としても用いられているフランス語です。

文法とか間違ってたらごめんなさい🙏

fr

rccrは racine carrée (平方根)、défは définir を略したものです。

ここには出ていないのですが、notとか面白そう。

si ne a < b et a*b > 2 pas:みたいな。

ne と pas で挟まれた部分が否定されるので、括弧いらずです。

フランス語のプログラミング言語にはLinotteなどがあるようです。

動詞は不定形としましたが、これ見た感じだと命令形がいいのかな…?

ラテン語

何世紀にも渡って今日のヨーロッパ・北アフリカの大部分を支配下に置いた古代ローマ帝国の公用語で、

その後も学術用語として広く用いられてきたラテン語です。

la

格変化、合ってるかなあ…笑

rdqdは radix quadrata 、dēfは dēfīni の略。

せっかくなので、もうちょっとクラシックにしてみますか。

classical la

もともとは単語の分かち書きもしないのですが、それだとプログラムが動かなくなりそうだし、すでに十分暗号です。笑

ちなみにラテン語のプログラミング言語にはLingua::Romana::Perligataという、Perl のラテン語版があるそうです。


言語の壁

個人開発なら面白そうですが、今のところはお仕事はやっぱり英語のほうが喜ばれるでしょう。

もちろんグローバルな作業環境では英語のプログラミング言語を使っていくのが共有しやすくていいんでしょうが、

ローカルの地元の人しかいなくて英語を全然使わないような環境なら、わざわざ英語でプログラミングする必要がないと思うんですよね。

あと、のちのち英語版を使うことになるとしても、他言語版は教育目的で使えると思います。

英語ができないからプログラミングができない!となってしまうのは非常にもったいないことだと思うので、

BabylScriptみたいなのが増えてくると素敵だなと思います。

最後までありがとうございました!

それではまた👋