はじめに
ラズパイ4を購入したので気になっていたものを検証してみます。 ずっと心のどこかに引っかかって気になっていたのはこの記事
言語はPythonを使っているらしい。
パイソン?
なんだかPythonと言う言語が巷では流行っているらしく、本屋に行くと結構幅を利かせているのだが、
パイソンと言えば、にしき蛇なのかと思ったら、モンティ・パイソンから来ているようです。
だいたいふざけた名前の言語はダメなものなんですが、ふだんは C/C++しか使わないのですが、せっかくラズパイ4にはPythonの実行環境が最初からインストールされているので確かめてみました。
問題点
GPIOの27番につながった、LEDがプログラム通りに点滅しない。
コードを確認
GPIOというライブラリをインストール(インポート)して実行しているんですね。コードを見ると単純なコードで問題なさそう。
単純なコードで問題が起こった時ほど解決が難しいんですよね。初めてちゃんと読むパイソンのコードですが、ライブライを2つインポートしているので、ライブラリ競合もあり得る。(まあ、Arduinoならありそうだけど、さすがにラズパイでは無いか)
可能性の検討
下に行くほど根が深い。
- コードがダメ
- ボードがダメ
- GPIOの27番を誰かが使っている。
- GPIOのライブラリがダメ
- Pythonがダメ
- OSがダメ
そもそもC/C++なら逆アセンブルして、コードをアセンブラで見れば、最悪コンパイラのバグも判るものだが、スクリプト系はそれができない。それにこのライブラリがそもそも怪しい。ライブラリってのは天才が作ってそれを下々が利用するもので、本来気軽に作成しては。。。脱線しました。
わかった
ソースコードをGeany (RPi4の開発環境)でコンパイルしたらコンパイルエラー
GPIO.setup(27,GPIO.OUT) # green
おっと緑LEDの所に、見えない文字が入っている。
ということで原因は
パイソンが駄目
これだからスクリプト言語は。。。
一応 LEDが無いのでオシロで確認してみる。
OK 解決!これで眠れる。(僕は以外としつこいんです。)
ちなみに RPi4のGPIO27 はデフォルトではINになっているのですね。OUTにしていないときの ON/OFF動作は不定となります。
おわりに
パイソンは毒はないはずなのですが、やはり危険です。確かにカッコが沢山あるより読みやすいし段落に意味があって、コードを短くできるのは良い所なのですが、段落関係を見るのに高機能なエディタが必要になるのでバグが探しにくいと思います。多少読みにくくても特別な部分はカッコでくくって明確にしたくなってしまいます。ラズパイ+パイソンとなると、ダメにダメが重なるので、タダで使えるからと言って、プログラム言語の習得にラズパイが良いかというと疑問が残ります。
今日の標語
バグを憎んで人を憎まず。
おしまい
購入品情報
やっぱパイソン駄目だわ〜。Pythonってなんで作ったんかな?開発した人は悪魔くんですね。やっぱりモンティ・パイソン?JavaScriptでいいのでは?あっ逆なのね。
でもなんで今頃急に流行っているのかは謎ですが、AIブームかVBの代りかな?ただ駄目だからといって使えない訳ではありません。