見出し画像

No. 0 C++による最適化ソフトウェア開発で学ぶプログラミング学習開始!

※忙しい人はタイトルと太字部分だけ読めば大体OK

 プログラミング勉強法の記事が思ったより伸びたので,需要ありそうだなとこのような企画を立ち上げました.やることはC++による最適化ソフトウェアの開発とその様子の記事化です!
 筆者はC++を始めて日が浅く,何か作る度に新しいことを学びながら進める毎日です.モチベーションを保ったり効率的な書き方を模索したり・・・つまり,プログラミングの学習法を作りながら開発も同時にやっているようなものなのです.
せっかくならそのプログラミング学習+開発様子をお届けして,読んでいる皆さんへのハウトゥー提供と自分のモチベアップを両立しようという目論見です.同時に,以前まとめたオリジナルのプログラミング勉強法を実践する人体実験も兼ねています.
 記事はマガジンにまとめておきますので,よければお付き合いくださいませ.


目的がなければプログラミング学習は続かない!

 目的がないとプログラミングなんて学べないというのは以前にも書きました.これ,本当に重要なことです.「英語を話したい」から勉強する人なんて本当はいないはずなのと同じで,プログラムを書くには明確な目的が必要なのです.同時に,筆者は遠近2種類の目的を立てることを提案していました

  • 近い目的:〇〇が作りたい,など目先の明確な目的

  • 遠い目的:作ったもので**万円稼ぎたい,など達成に少し時間のかかる目的

2種の目的設定で,今やることと欲しい未来が明確化されモチベーション維持に役立ちます.ということで,自ら提案した手法に倣って目的を立てましょう:

  • 近い目的:最適化ソフトウェアをC++で開発する

  • 遠い目的:開発したソフトウェアを自分や教え子が使い,研究成果を出す

最適化ソフトウェアに関する説明は次に回すことにしますが,とにかく問題の最適な答えを探してくるソフトウェアです.作るものはこれ,近い目標です.遠い目標は,作ったソフトで成果を出す,それも自分や教え子が,ということになります.

最適化ソフトウェアとは?

 工学における「最適」の意味は,何かしらのコストを最小(もしくは最大)化するということです.例えばy=x^2+1という数式のyをコストとすれば,yを最小化するx(つまり最適値)は0ということになりますよね.ちなみに,yを最大化するxは求められません.この最適値を見つける問題を自動的に解いてしまうのが,最適化ソフトウェアなのです.どうせなら,超強力なソフトウェアを開発してやろうと思います😎

作ろうとしているのはx=0を自動で探してくるソフトウェア

なんでC++?

 今回はC++での開発を行います.理由は,最も普及している言語の一つであるC言語並みに高速で同じ文法も使え,かつ機能が多いから.現状,C++での開発がメインになっており,ソフト開発と同時に勉強もやってしまえるので都合が良いのです.また,他の言語への移植性も良いのでメリットだらけですね.
 パイソン使わないの?という質問が出そうですが,筆者は実行速度を大事にする人なので,コンパイル不要な代わりに実行速度が出ないパイソンは見送っています.データ処理ならパイソンほど強力な言語もないでしょうが(本当はMATLABの方が強いが値段が高い),数値計算をパイソンでやる発想にはなりません.

開発環境など,どんな感じで進める?

 気ままに進めようと思います.といっても仕事で使う気満々なので,ある程度のペースで開発はやっていきます.記事化する暇がないかも,という意味ですね.
開発環境について,使用するソフトは基本的に無料のものだけパソコンはMacBookProを使う予定です.WindowsでもMacでも,どちらでも動くように作ろうかなと.ただ,MacでC++環境を構築するのはちょっと大変なので,初心者の方はWindowsで始められた方が良いと思います(gccに偽装したclangというものが走っており,並列計算がしづらい).

まとめ

 C++による最適化ソフトウェア開発の様子をnote記事としてお送りしていこうと思います.開発の様子が皆さんのプログラミング学習法の参考になれば幸いです.

K. HISAKAWA

いいなと思ったら応援しよう!