2021-03-17
電源入れたら即起動するBASIC!私が小学3年生の時に出会ったのはマイクロソフト社製 MSX BASIC でしたが、当時のパソコンは皆同様。 BASICがなければ現在のエンジニア数はまるで違ったもの、つまり、まるで違った世界になっていたでしょう。

その気軽に使える系譜を勝手に引き継いだのがIchigoJam BASICだとすると、そのまま言語的に進化したのが仮想マシンMono上で動作するVisual Basicです。 VB.Netとも呼ばれ、C#に近い記述力を持ち、今でも社会でよく使われるプログラミング言語として上位にランク。 MonoはWindowsだけでなく、Macや、Linuxでも動作します。

Visul Basicで記述するGeo3x3の変換プログラムはこんな感じです。

Public Class Geo3x3 Public Shared Function Encode(lat As Double, lng As Double, level As Integer) As String If level < 1 Then Return "" End If Dim res As String = "E" If lng < 0.0 Then res = "W" lng += 180.0 End If lat += 90.0 Dim unit As Double = 180.0 Dim i As Integer For i = 1 To level - 1 unit /= 3.0 Dim x As Integer = CInt(Math.Floor(lng / unit)) Dim y As Integer = CInt(Math.Floor(lat / unit)) Dim n As Integer = x + y * 3 + 1 res = res & n.ToString lng -= x * unit lat -= y * unit Next Return res End Function

IfやForなど、IchigoJam BASICでもおなじみな単語、先頭だけ大文字で書くのが標準となっているようですが、昔ながらの全部大文字でも、他言語で主流な全部小文字でもOKです。


ストレージに余裕がなかったり、インストールが困難な人には、VBScriptという、Windows標準で使える言語があります。 文法はほぼ同じで、型を指定しなくてよい分よりシンプルです。

Function Geo3x3_encode(lat, lng, level) If level < 1 Then Return "" End If res = "E" If lng < 0 Then res = "W" lng = lng + 180.0 End If lat = lat + 90.0 unit = 180.0 For i = 1 To level - 1 unit = unit / 3.0 x = Int(lng / unit) y = Int(lat / unit) n = x + y * 3 + 1 res = res & n lng = lng - x * unit lat = lat - y * unit Next Geo3x3_encode = res End Function WScript.Echo Geo3x3_encode(35.65858, 139.745433, 14)

上記を「Geo3x3.vbs」というファイル名で保存し、コマンドプロンプトを起動して、cscriptコマンドでファイル名を指定すると動きます。

> cscript Geo3x3.vbs

ROM BASICに近い手軽さですね!(src on GitHub)


OpenVBS -The Script Engine for the BASIC-2020-
IchigoJam育ての親、まったさんが開発したOpenVBSは、このVBSをオープンソースで実装し、MacやLinuxでも動くようにするプロジェクトです!(Arrayが未対応のため、JSONオブジェクトとして実装 src on GitHub


かんたんIchigoJam教室
おっちゃん先生こと、大阪府立高専の土井さんによるYouTubeチャンネル「簡単マイコン教室」の新コーナー、開封の儀からスタート! なんと週2回更新!? おっちゃん先生のプログラミングの出会いも小学生の時のBASIC!MSXは偉大でした。


【IchigoJam:002】いちごジャム・はじめのいっぽ 第409回
こちら第二回のはじめのいっぽ!

インターネット接続が当たり前になり、様々なプログラミング言語が気軽に試せるようになりました。 ぜひ、お気に入りの言語を見つけましょう!

お気に入りの言語が見つからない!?ないなら、つくってしまいましょう!オープンライセンスなオープンソースのプログラミング言語は改造も自由です。
Geo3x3への実装プルリクも大歓迎です!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS