Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

シナリオとかは書けないけど、こういう誰も読まない無意味な文章だったらいくらでも書けるんだなぁ ちのを

  • Wikipedia項目とかちゃんと読んだら、VHDLはALGOLの流れをくむAda系、一方Verilog HDLはCやPascalに似てるって書いてあり申した。確かに、なんかif文だけはVerilog HDLの方がPascalっぽいかなーelseifもないし、でもthenキーワードがないのはやっぱりC的なんだよなーとは思ってた。for文なんて for ( i=0; i<5; i=i+1 ) begin~end とかって*1…お前CなのかPascalなのかはっきりしろや的な。
  • ま、つまり単純な話、ブロックが {~} じゃなくて begin~end になったCってことなんだけどな。なお{~}は2進数の合成に使うらしい。*2


  • FPGAを使って古いパソコンを再現することは、一瞬「エミュレータ」と呼んでしまいそうになるが、冷静に考えたらこれってエミュレーションというより単なる「互換機の製作」なのではないか⋯⋯
  • と思っていたのだが、抽象化の度合いや実装形態を問わず、オリジナルそのものではない模倣環境のことをエミュレータと呼ぶということなので、ソフトウェアのみで再現するのもエミュレータなら、FPGAを使うのもエミュエータ、EPSONのPC-286*3ももちろんエミュレータだし、今使ってるThinkpad X1 Nanoも一応DOS/V⋯⋯は言い過ぎか、とにかく何らかのWindowsが動作することを想定された原環境(?)のエミュレータ*4
  • (2022年4月12日追記)DOS/VはOSの名前ですよ⋯。PC/ATっていう機種の名前をすっかり忘れてた。なので↑のDOS/VPC/ATに読み替えてね!


  • 色々見えるようになってきたのはほんとにここ2ヶ月くらいのもんなので情報が遅いのだが、ESP32-C3ってやつがRISC-Vコアなのね。M5Stamp C3とかけっこう安くて触ってみたいが開発環境は⋯⋯一応ArduinoIDEでちゃんとやれるってことになってるのかな。まあM5シリーズだしな。相変わらずコンパイルがすっげー遅いんだろうけど。
  • 一方ESP32のメーカEspressif Systemsがリリースしてる公式の環境としてESP-IDFっていうのがあるらしい。検索したらまずPython入れろみたいなことが書いてあってPythonかぁ⋯と不安になるが、でも基本的にはCを使うらしい。何なんだ。まあとりあえずはArduinoIDEでやって、Arduinoでは全ての機能にアクセスできないから、それで困ったらそのとき初めてESP-IDFを検討すればよいとのこと。なるほど。
  • とにかくLongan nano、Wio Lite、AmigoといったRISC-Vボード群の環境がどうにも整わないみたいなので、とりあえずM5Stamp C3でも買ってくるかあ。


  • 最近、国内ニュースとかでもRaspberry Pi関連の話題をよく見かけるようになった⋯⋯と感じるのはマイコン界隈のサイトをよく見ているのをGoogleが捕捉していてそういうニュースを俺に見せるようになってるからかな。でもひろゆき(ほぼ同世代なので親近感を込めて呼び捨てにする)とかもちょこちょこ「Raspberry Piとかいいんじゃねーの」みたいな発言してたりするんだよね。ちなみに彼がArduinoに言及してるのを聞いたことはない。w(俺が聞いたことないだけかもしれんが)
  • しかし確かに、ここ数ヶ月のRaspberry Pi方面の展開はすげえ魅力的だ。とりあえずこのあたりのシングルボードコンピュータを使おうとするとまずキーボードが問題になったりするので、その問題を解決しているというのを誰が見ても一発で理解できるRaspberry Pi 400とか、そんでreTerminalなんて、Raspberry Piに触ったことなくてもとりあえず欲しくなっちゃうじゃんこんなの。
  • しかしRaspberry PiといえばPythonである。Pythonねえ⋯。
  • 別にやってもいいし、それなりに扱えるとは思うけど、やっぱりなんかいけ好かねえんだよなーPython。何がいけ好かないって、やることなすこと全てが圧倒的に正しいからだ。曰く、ある処理をPythonで書くと誰が書いても同じようになる、自分独自の奇妙な書き方を発明してはいけない、コメントは義務で、他人が読んでわかりづらいコードがあってはならない等々、いちいち正しい。絶対的に正しい。でもうるせえ! 俺はマジックナンバーを書きてえんだよ!
  • もうマジックナンバーを書くためにプログラムをやってると言っても過言ではないよね。2ピクセル足りないときは +2 って書きゃいいんだよ。0.3秒くらいかな? ってときは delay(300); って書きゃいいのさ。俺たちゃ悪(ワル)の道を突っ走るぜぇ~。
  • 折衷案としてはピン番号だけは整数リテラルで書かせてくれないか、というのが(けっこう本気で)ある。巷のソースを見るとほんのちょっとしたLチカ*5でも const int LED_PIN=1; とか #define LED_PIN 1 とかやってるけど普段からそんなことやるんか? やらんだろ?(どうかな…)
  • さもなくば、マイコン側に鉛筆で LED_PIN とか書いておきたくなる。DIPだとしてもたった2.54mmの幅に紙貼って書くのはなかなか難しいんだぜ⋯。


*1:VHDLVerilog HDLはどちらもインクリメント/デクリメント演算子がないっぽい。ちなみにVHDLにはシフト演算子もない。

*2:カンマ区切りで2進の値を列挙、例えば {v,w,4'b1010} って書くと、左から変数vの内容と変数wの内容と"1010"が並んだ2進配列の値になる。「4'b」は「これから書く数字は4ビットの2進数ですよ」の意。

*3:筆者にとっての「互換機」の原体験である。

*4:ThinkpadDOS/Vの正当なる後継機のひとつであるとギリギリ言えなくもないので、ひょっとしたらワンチャンあるかもしれないが。(何の?)

*5:Lチカ:LEDをチカチカさせるプログラム(あるいはスケッチ)のこと。初めてのマイコンを手に入れたときや初心者向けの説明においてやりがちで、PC界隈における「Hello, world!」にあたる。