C/C++の世界に閉じこもっていたオジサンがPythonに触れてみる ~基礎編~ 第1/10回
はじめに
こんにちは、NTTデータに勤務する一人のオジサンです。
これまでC/C++言語を使って、がっつりとポインタやら参照やらに向き合いながら、プログラムを書いてきました。構造体と仲良くなり、クラスに振り回され、newとdeleteに責任を持つ。そんな人生でした。
しかし時代は変わり、AIだ、データサイエンスだ、機械学習だと騒がれる中、「とりあえずPythonに触れないとまずい」という危機感に駆られて、Pythonの世界へ足を踏み入れた。。。
そんなオジサンの独り言です。
開発スタイルの違いを噛みしめる
まず、C/C++とPythonの大まかな違い、こうして並べてみると。。。
項目 | C/C++ | Python |
---|---|---|
抽象度 | 低い(ハードウェアに近い) | 高い(人間に近い) |
記述量 | 多くなりがち | 少ない・簡潔 |
言語スタイル | 手続き型、オブジェクト指向型 | 基本オブジェクト指向、スクリプト的にも使える |
まずは抽象度か。
C/C++:低い(ハードウェアに近い)
Python:高い(人間に近い)
C/C++は、ハードウェアに近い。やけに近い。
メモリも、レジスタも、アドレスも。。。全部、自分に見せてくれた。
裸で歩いてる機械のようで、こっちも覚悟を決めて付き合わなきゃならない。
一方Pythonは。。。何も言わずにそっと布団をかけてくれるイメージか。
「何も気にしなくていいんだよ」と、言わんばかりに内部の仕組みを隠してくる。
まるで、やさしいコンシェルジュだな。
私が付き合って行きたいのはアルゴリズムか、それとも機械そのものか
今、問い直されている気がする。
次は、記述量だな
C/C++:多くなりがち
Python:少ない・簡潔
C/C++は、言いたいことを伝えるまでにやたらと時間がかかる。
構文、ヘッダ、ポインタ、セミコロン。。。書いても書いても、まだ足りない。
一行のために、五行くらい準備運動させられるような、そんな世界。
Pythonは。。。少しだけコードを見たことがあるが
# python
x = 10
print(x)
たった、これだけ。たったこれだけで、もう結果が出るらしい。
まるで会話じゃないか。
「これ、やって」って言うと、「うん」と返ってくる感じ。
余計な確認も、回りくどい説明もいらない。
初対面なのに、妙に気が合うタクシー運転手のように
無口だけど、目的地にはちゃんと連れて行ってくれる、そんな感じ。
最後は、言語スタイル。
C:手続き型 / C++:オブジェクト指向型
Python:オブジェクト指向、でもスクリプト的にも使える
Cは手続き型。それは昭和の職人。
一から十まで、自分で手を動かして、順番に仕上げていく。
無骨だけど、芯がある。嫌いじゃない。
C++のオブジェクト指向は、ちょっと小洒落てきた感じ。
名前を付けて、設計図を描いて、物事をモデル化していく。
一番自分が得意としてきた所だ。
Pythonは。。。オブジェクト指向にもなるし、気軽なスクリプトにもなる。
冷やし中華でもチャーハンでも対応してくれる街の中華屋みたいだ。
「どっちでもいいんです」それがPythonのスタンス。
自由すぎて、かえって身構えてしまっている自分がいる。
おわりに
C/C++とPythonには、どちらにも良さがある。
少し違いがわかってきたが、次回もう少し踏み込んでみるか。
デジタルテクノロジーディレクター®

NTT DATA公式アカウントです。 技術を愛するNTT DATAの技術者が、気軽に楽しく発信していきます。 当社のサービスなどについてのお問い合わせは、 お問い合わせフォーム nttdata.com/jp/ja/contact-us/ へお願いします。