【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その②⑧

読み終えるまで約3分

 

 

どうも、ちゃんなるです! 

今日も”デキる”プログラマになるべく勉強していきましょう!

 

今回は、次の書籍の一部を要約します。

プログラマが知るべき97のこと』

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、82~84番目の項目についてまとめます。

  1. 他人への思いやりを意識したコーディング(No. 82)
  2. UNIXツールを友にする(No. 83)
  3. 正しいアルゴリズムとデータ構造を選ぶ(No. 84)

 

①他人への思いやりを意識したコーディング

このテーマで述べられていたことは、

「他者への思いやりの気持ちを持った上で、良質なコードを追求しよう!」

ということです。

 

以下、要約です。

プログラマは1人で作業することが多いので、ついつい自分だけの解釈でコードを書きがちです。

しかし、他人がコードを拡張することもあるし、自分の書いたコードに依存して誰かがコードを書くこともあるという『ソフトウェア開発の社会的側面』を忘れてはいけません。

ソフトウェアを作るには技術が必要ですが、人との関わりも重要です。

 

人との関わりにおいてコミュニケーション能力が重要なのは言うまでもないでしょう。

そしてプログラマ同士のコミュニケーションの一つはプログラムコードです。

自分のコードが良質であると思っても、他のプログラマの存在を意識することでさらに改善できる余地が見つかるかもしれません。

 

プログラマ他者への思いやりを持たずにコードを書くことはありえない、ということを忘れてはいけませんよ!

 

 

UNIXツールを友にする

このテーマで述べられていたことは、

UNIXツールはIDEに比べ、できることの幅がとっても広い。UNIXツールを身につけることで、自分の表現できる技術の幅が格段に広がる!」

ということです。

 

以下、要約です。

もし無人島にIDEUNIXツールのどちらかしか持っていけないとしたら、迷わずUNIXツールを選びます。

なぜなら、UNIXツールは自分の発想次第でなんでもできるからです。

IDEはその開発者の考えたコマンドしか使えませんが、UNIXツールはそうではないのです。

 

UNIXツールの処理はシェルスクリプトにまとめることができ、シェルスクリプトならパイプを使ってコマンドの処理結果をループや条件分に渡すことができて非常に便利です。

さらに素敵なことに、UNIXコマンドはパイプライン処理として動作するので、現在のマルチコアCPUの場合は、複数のコアに負荷が自然に分散されるのです。

 

UNIXツールを学んでみてはいかがでしょうか?

 

 

③正しいアルゴリズムとデータ構造を選ぶ

このテーマで述べられていたことは、

「「動けば良い」ではなく適切なデータ構造・アルゴリズムを選択肢して「このデータ構造・アルゴリズムはこのように機能する」と深く思考しながらコーディングをできるのが理想。」

ということです。

 

以下、要約です。

「まずは動かすこと。早くするのはその後でいい」という格言があります。

局所的な最適化の落とし穴を避けるためには、この格言を心に留めておくことが大切でしょう。

しかし、「遅くてもいいから動かせ」という発想でコードを書いてはならず、たとえば下記のようなコードが生成されるでしょう。

 

for (i = 0; i < strlen(s); ++i) {

    if (... s[i] ...) ...

}

*文字のsは平均で数千文字の長さになる

 

このコードでは、strlenが呼び出されるたびに終端のnull文字に到達するまで、文字列sの中の一文字一文字が調べられることになります。

もしループ内でsに変更を加える必要がないならば、下記のようにするべきです。

 

n = strlen(s);

for (i = 0; i < n; ++i) {

    if (... s[i] ...) ...

}

 

先のような浅はかなコードを書かないためには、既存のアルゴリズムについて、またそのスケール特性について学ぶ必要があります。

プログラミングでは度々、「再利用」の重要性が説かれます。

しかし、いつ、何を、どのように「再利用」するかを理解しないと、いい結果は得られません。

それを理解するために、問題領域について、またアルゴリズムとデータ構造についての十分な知識が必要なのです。

 

 

まとめ

①いわゆるコーディングにおけるベストプラクティスを実践することは大事であるが、それだけでなく他者への思いやりを込めてコーディングすることが大切!

UNIXツールを使うことは、大袈裟にいって「所望の処理がなんでもできる」ということです!ぜひ学んでみましょう。

アルゴリズムとデータ構造の知識は、ソフトウェアのパフォーマンスというところに直結する。いいものを追求するというより、ダメなものを避けるという考えがいいでしょう。

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ