C言語プログラマのためのPython 入門講座

中之島
この講座は、普段、C言語でソフトウェアを開発されている「組み込みソフトウェア技術者」の皆様に向けて、pythonの活用方法をご紹介する講座です。

筆者は以前、C言語による構造化/階層化設計 入門講座 を本サイトに掲載させて頂き、その冒頭ページで、TIOBEIEEEの2017年12月時点のプログラミング言語の人気ランキングをご紹介しました。今から9年前のことです。そのときのランキングは以下でした。

言語 ランキング
C 共に2位
C++ 3位と4位
Java 1位と3位
Python 1位と4位
C# 共に5位

あれから9年経ち、今回、pythonの本講座を始めるに際して、TIOBE と IEEEの2024年のランキングがどうなったか気になりまして、あらためて確認したところ、結果は以下でした。

言語 ランキング
Python 共に1位
C 2位と9位
C++ 3位と4位
Java 4位と2位
Rust 18位と11位

えっ? C言語って TIOBEでは未だ人気ランキング2位なの?。

組み込みソフトウェア開発者向けにPythonをご紹介する理由

AIによる「組み込みソフトウェア開発の大変革」を見据えた事前準備

昨今の生成AI、LLM(大規模言語モデル)の技術革新により、近い将来、AIは人間に替わって組み込みソフトウェアのソースコードを自動生成できるようになると予想されます。そのとき、要求仕様はどういう手段でAIに伝えれば良いでしょうか? 現時点では 人間がPythonやExcelで仕様書を書き、AIがそれを解釈してC言語ソースコードを生成する流れが主流になると(個人的に)予想しています。

将来を待たずとも、今現在でも/プログラミング言語で書かずとも、日本語/英語のような自然言語で書いた仕様書でも、ChatGPTはそれを読み、そこそこまともなC言語ソースコードを生成してくれます。
ただ、相手がAIであったとしても、厳密に仕様を表現する上で、自然言語よりも(より厳密に仕様を表現できる)プログラミング言語の方が、より適していると言えます。

※勿論、要求分析の段階では、自然言語であいまいな要求仕様を書き、そこをAIに読んでもらい、より厳密な仕様書をプログラミング言語で書いてもらう…というような流れも可能と思います。

少し前、Pythonは、機械学習/深層学習(ディープラーニング)の開発言語として大いに注目されました。今もその傾向は変わらないのかも知れないのですが、著者が上記で述べた「PythonによるAIの活用」は、そういう話とは「別次元」の話でありまして、上記の目的でAIを活用する上で、我々はAIのAPI/ライブラリは使う必要は無く、(勿論、使っても良いのですが…)「我流」で決めた「厳密なルール」に基づいてPythonとExcelで仕様書を書くだけで、AIが所望のC言語ソースコードを生成してくれることを想定しています。

将来を待たずとも/AIなしでも/今直ぐにでも、PythonでC言語ソースコードを自動生成/解析できる!

すみません、前節でAIの話をしましたが、本講座はAIの講座ではありませんので、ここで軌道修正させて頂きます。

前節でAIの話をさせて頂いた理由は、 近い将来、AIは人間に替わって組み込みソフトウェアのソースコードを自動生成するようになる「未来予測」を皆さんにお伝えしたかったためです。

今現在、AIの商用利用に際しては、著作権、機密保持、信頼性 他、未ださまざまなハードルが存在します。がしかし技術的には、AIの活用は、変えようの無い流れになっている…その事をお伝えしたかったのです。

これを受けて「そうか…組み込みC言語プログラマの自分達は、近い将来、仕事が無くなるのか…」とお嘆きになる方もおられるかも知れません。筆者は「これまでの多くの仕事は無くなる」と予測しています…がしかし、それに代わる「別の仕事が生まれる」と予測しています。それは、たとえば以下のような「AIと人間のコミュニケーションにPythonを利用」する前提での以下のような仕事です。

  • Python/Excelによる仕様書の自動生成
  • (上記のアウトプットとして生成した)仕様書とPythonによるC言語ソースコードの自動生成
  • PythonによるC言語ソースコードの自動解析
  • Pythonによるテストケースの自動生成

本講座では、最終段階で以下を目的としたPythonソースコード作成にトライします。

  • Excelで仕様書を書き
  • Pythonでそれを読んで、C言語ソースコードを自動生成する

この開発手法は、今現在の多くの開発プロジェクトに直ぐに適用できますが、「類似した規則の繰り返し」が多い「仕様」もしくは「規則性のあるC言語ソースコード」で無い限り、人間が手作業で「C言語ソースコードを書く/読む」方法に比べると、生産性が落ちてしまいます。これは現時点で「コンピュータによる業務の自動化」を進める上での共通課題です。

…がしかし、上記の説明をご覧頂いた上で、あらためて今開発中の仕様書/C言語ソースコードを良く見てください。「類似した仕様/規則の繰り返し」が沢山含まれていないでしょうか? 着眼点を変えれば、Pythonで自動生成/自動解析するに相応しい仕事が今直ぐに/沢山見つかるはずです。

このような「AIなしでのPythonによる自動化」で得られた経験/課題は、間違いなく、次世代の革新的なAIを利用した開発手法にスムーズに繋がって行くと期待しています。

Pythonによるプログラミングは楽しい、C言語プログラマなら直ぐに習得できる!

最後の理由ですが、著者がこの講座を始めたいと感じた、個人的な理由はこれです。実際のところ、Pythonでソースコードを書き始めると、「えっ? 今まで人間が手作業で行っていた仕事は、こんなに簡単に実現できるのか!」と、その生産性に驚かれると思います。

また(自画自賛になりますが…)これまで幾つかの書籍/Webページを拝見しましたが、既にC言語を習得済のプログラマにとって、読み易い/とっつき易い教本は見当たりませんでした。本講座の第1回では、C言語の言語仕様と比較する形で、Pythonの特徴を少ないページ数でご紹介します。これを読んで頂けたC言語プログラマの方々は、次のステップとして「Webで検索しながら実際にPythonのコードを書く」ことが可能になると思います。Pythonは今現在、人気No.1のプログラミング言語ですので、その種の情報は、ネット上に溢れています。

以上、著者が本講座をはじめるに際してのご挨拶でした。暫くの間、宜しくお付き合い願います。

本講座へのリンク

第1回 Pythonの言語仕様(C言語との比較)