記事内に広告が含まれています

【プログラミング】【C++とpythonぜんぜん違うぞ!~C++経験者が最初に戸惑ったお作法をご紹介~】

プログラミング
スポンサーリンク
  • 広告を含む場合があります

こんな人に読んでもらいたい記事です.

・プログラミング経験はあるけど,事情によりほかの言語も触る必要がある!

・特に「C++」には慣れているから「python」を触ってみよう

よいう人

結論

・「C++」と「python」はお作法の面から全然違う!
りゅういえんじにあが最初に戸惑った「そもそもポイント」をご紹介します.

・python初心者向けに「他の言語とはこんなところが違う!」という
ところを紹介します.

python独自のお作法が難しい

こんにちは,りゅういえんじにあです.

プログラミング言語pythonで
実験用の簡易プログラムを扱うことになりました.

正直,これまで学生時代や業務でC++の経験があるので,
そこまで苦労する必要はないだろ,とたかをくくっていたのですが,
そんなことは全然なく,大変な思いをしております.

もちろん内部の処理が難しいというのがあるのですが,
そもそもpython独自プログラムの書き方,お作法に大変苦労している状態です.

そこで今回は実際にpythonでプログラミングをするときに
「そもそもこんなお作法があるんかいな!」
と驚いたポイントをご紹介します.

細かく言えば
「Python はインタプリータ言語であり,C++ はコンパイラ言語であるから
処理速度などなどで差があります」などという話はあるらしいですが,
それ以前の入門段階で苦労している話,としてお読みください.

上にも書きましたが,りゅういえんじにあはプログラミングの経験が全くないわけではないので,
その辺の経験を踏まえて驚いた点をご紹介します.

C++経験者がpythonを触って戸惑ったお作法

(1)「ベクトル」(行列)と「スカラー」の足し算引き算が平然と出てくる

今回会社の業務で使うプログラムを引き継いだので,
数値計算を行うモジュール「numpy」を使っています.

pythonでは比較的利用頻度の高い機能が
「モジュール」として提供されており,
それらを活用することで実用的なプログラムを簡単に組むことができます.

その機能として「ベクトル」(行列)と「スカラー」の足し算引き算があるのですが,
プログラムを解読していて初めてみたとき何じゃこりゃ!と思ってしまいました.

高校数学のお話ですが,「ベクトルとスカラーの足し算引き算はできないはず」ですよね?

いくら可読性を重視したとしてもそりゃないだろ,という感じです.
このようなローカルルールを作られると,後で知らない人は読めないだろうなと感じました.

ちなみにC++を使っていたときはベクトルの計算をするための,
関数を別途用意して厳密に定義していたので,
最初は面倒くさかったですが理解はスムーズにできてました.

モジュールのインストールについては以下のリンクも
御覧ください.

(2)変数の型の指定をしないでいきなり使う

pythonで変数を宣言するときはintとかdoubleなど変数の型の宣言をしません.

C++を使っていたときはマイコンなどのプログラムをしていて
メモリの容量を気にしなくては行けなかった関係で,
変数の型にはかなり気をつかっていました.

pythonを触りはじめて急にそのようなことをしなくて良い
(引き継いたプログラムがそんなことをしていない)
環境になったので違和感が満載です.

pythonではあまり細かいメモリの管理とかはしないからOKということなのでしょうか.

(3)処理の塊がわかりにくい

CやC++では一つの処理の塊(if文やfor文)をカッコ({})で囲んでいました.
見やすさのために,インデントで文頭を揃えたりしていました.

一方pythonはそのインデントで処理の塊を分けているそうです.
つまりうかつにインデントを変えてしまうと,処理が変わってしまう…

これまでプログラムの中身を読むのに{}の塊ごとに内容を把握するようにしていたので,
pythonで引き継いだプログラムの中身を読むのに苦労しそうです.

おわりに

今回C++の経験者が初めてpythonを触って,戸惑った点をご紹介しました.

始めて触る言語なので,多少の戸惑いは覚悟していましたが,
ここまでルールというかお作法が違うとは思いもしませんでした.

こういったお作法は
「知ってたらふーんで流せるけど,知らなかったら迷宮に迷う」類の
ものだと思います.

他の言語を触っていたけど始めて
pythonを触る方の理解の手助けになればよいと思い記事にしました.

今後も気づいたことは記事にして行きたいと思います.

参考になればうれしいです.

ありがとうございました.

 

 

コメント

タイトルとURLをコピーしました