Python
C
C++

pythonでデータの中身を意識しないということ

Abstract

Python、C、C++で中身を意識しないということについて私なりに感じたことを書きます。

型を意識しないとは

C、C++なら
int a=8;
なんて変数を宣言することが多いんじゃないでしょうか。
この場合には整数型ですので、「数字が入る」ということを考えながら書くと思います。
一方、Pythonなら
a=8
でokなわけです。
「とりあえず、数字を入れる変数作っとこー」
ぐらいならとても楽なわけですね。

メリット

簡単な例で、値を表示するということを考えてみましょう。
Cなら
printf("%d",a);

-出力-
8
とでてきてくれるわけです。
「なんか数字がでてくるとか意識しないといけないな…」

そんなあなたに!

朗報です!

Pythonなら
print(a)
-出力-
8
が出るんです。
とりあえずのデバッグには便利ですね。

C++では
std::cout<<a;
-出力-
8
です。
型を意識しなくていいのは時代の流れなのかもしれませんね。

デメリット

なんとなくなときはいいんですが、8進数で表示するとき(そんな場面ある?って話ですけどね)
pythonでは
a=0o8
-追記部分-
失礼しました。8進数なので10ですね。
@shiracamus さんご指摘ありがとうございます。
-ここまで-

a = 0o10
print('%o' % a)

と書く必要があります。

Cでは
printf("%x",a);
-追記部分-
失礼しました。16進数になっていましたね。
@shiracamus さんご指摘ありがとうございます。
-ここまで-

int a = 010;
printf("%o", a);

C++では

int a = 010;
std::cout << std::oct <<  a;

と書けばokです。

このように
-追記部分-
例が良くなかったので打ち消します。
-ここまで-
pythonでは予めどんなプログラムを書くのか方針がきっちり決まってないと
書き直すのが結構大変な印象を受けました。
一方で、方針が決まっていてともかく書くというときには楽かなーと思います。

結論

データの中身を意識しないことにはメリットとデメリットがあります。
メリットは煩わしい数字の変換などを意識せずにシステムがやってくれること。
デメリットは意識しないゆえに中身の正体がわからなくなってしまうこと。
一長一短というとこかなと。

方針が決まっていればPythonは便利だが、仕様変更があると書きづらいかもしれないな、という感想です。

変数の命名でカバーするとわかりやすいかもしれません。

「こんな工夫すると変数名から中身がわかりやすいよー」とか
「書き方がそもそも悪いんじゃない?」とかありましたらコメントいただければと思います。