LISPを代表とする、関数型言語。 順に実行が基本のBASIC、C、Java、Pythonに代表される手続き型プログラミング言語と違って、関数型プログラミング言語は純粋に計算する世界。 必要になものだけ計算するので効率が良く、時間軸による副作用をないためマルチコア時代の並列実行に有利です。

多言語サポートを進めるGeo3x3は、いろいろなプログラミング言語に触れる良い機会。 実装して貢献してもらった、関数型言語 HaskellElixirRacket(LISP系) をベースに学び、OCamlErlang版を作りました。

下記はOCaml(オーキャムル)で作った、Geo3x3のエンコードとデコードです。手続き型言語からの移行用の優しさか、関数型っぽくない記述もありますが、ひとまず動作したので登録しています。 関数型言語、関数型的思考がだんだん掴めてくる間隔が楽しいので、何かの機会に遊んでみることをオススメします。大容量データ時代、超並列時代に使い所がありそうです!

open String;; let encode lat lng level = if level < 1 then "" else let (res, lng1) = if lng >= 0.0 then ("E", lng) else ("W", lng +. 180.0) in let lng2 = lng1 in let lat2 = (90.0 -. lat) in (* 0:the North Pole, 180:the South Pole *) let rec loop i lat lng unit = if i >= level then "" else let x = int_of_float (lng /. unit) in let y = int_of_float (lat /. unit) in let n = x + y * 3 + 1 in let lng2 = lng -. (float_of_int x) *. unit in let lat2 = lat -. (float_of_int y) *. unit in (string_of_int n) ^ (loop (i + 1) lat2 lng2 (unit /. 3.0)) in res ^ (loop 1 lat2 lng2 (180.0 /. 3.0));; let decode code = (* (35., 135., 14, 0.1);; *) let clen = String.length code in if clen < 1 then (0.0, 0.0, 0, 180.0) (* err *) else let c = code.[0] in let (flg, beg) = if c = '-' || c == 'W' then (true, 1) else if c == '+' || c == 'E' then (false, 1) else (false, 0) in let rec loop i lat lng level unit = if i >= clen then (lat, lng, level, unit) else let unit2 = unit /. 3.0 in let n = (int_of_char code.[i]) - 49 in (* ignore err check *) let lat2 = lat +. (float_of_int (n / 3)) *. unit2 in let lng2 = lng +. (float_of_int (n mod 3)) *. unit2 in loop (i + 1) lat2 lng2 (level + 1) unit2 in let (lat, lng, level, unit) = loop beg 0.0 0.0 1 180.0 in let lat2 = lat +. (unit /. 2.0) in let lng2 = lng +. (unit /. 2.0) in let lat3 = 90.0 -. lat2 in let lng3 = if flg then lng2 -. 180.0 else lng2 in (lat3, lng3, level, unit);;

29言語サポートまで増えた「Geo3x3」ですが、まだまだおもしろいプログラミング言語がいっぱいあります。 古の言語を使ってみたり、新しいプログラミング言語の使い心地を見てみるのにも活用できそう!

日本語も話しながら覚えたように、プログラミング言語もまずは作ってみることからトライするのが近道です。

Geo3x3(ジオスリーバイスリー)のプロモーションのため、無料で使える様々なプログラミング言語を巡り。OpenVBS、Scala、R、GAS、Nimに対応、サポート言語は合計20になりました。

R言語Scalaの比較。だいたい同じような感じであることが分かると思います。 たくさんあるプログラミング言語ですが、コンピューターにやってほしいことを書くという本質は一緒です。

RubyHaskellは、プルリクいただいたもの! ご貢献、ありがとうございます!ぜひお気に入りの言語、気になる言語が無いなーって方、奮ってご参加ください。テストコード追加、ライブラリとしての登録なども大歓迎です。 CC0のパブリックドメイン、お好きなようにご活用ください!

Geo3x3 言語対応の仕方
1. ターゲットとなる言語を決める
2. 似た言語のプログラムをコピーして拡張子だけ変える(ファイル名規約をチェックし大文字小文字合わせる)
3. encodeとdecodeを移植する(セミコロンありなし、カッコかbegin/endか、変数と定数、整数と小数変換、文字と整数変換、まとめかたを検索して解決する)
4. 実行方法をドキュメントに記述して完了!

それぞれの言語の特徴を体感できて楽しいですよ!


天気のいい日は、外でプログラミング!


ステキにリニューアルした、鯖江商工会議所地下1F


大きなスクリーン&プロジェクターが使えます!


配信スタジオもあります!

2021.2.26(金)18:30- Cyber Friday @ 鯖江商工会議所 地下1Fへ、ぜひどうぞ!
コンピューター好きな方、ぜひお話しましょう!
Geo3x3:E3792198838339


Geo3x3コードを入力するたびにズームするようにしてみました。こちらの使い勝手もどんどん上げていくと良さそうです。

CC0にしたGeo3x3、より使ってもらえるためには、いろいろなプログラミングへのサポートが大事かも? サポート言語を一気に14言語まで増やしました!

JavaScript / TypeScript / C / C++ / C# / Swift / Java / Python / Ruby / PHP/ Go / Kotlin / Dart / Rust で、使えます!
それぞれの言語の学習サンプルとしてもご活用ください。


Geo3x3 - src on GitHub


CyberValley サイバーバレー は、E379219
2.26金曜日18:30-、サイバーフライデーとして、鯖江商工会議所 SCC B1Fでミートアップ
コンピューター好きのみなさん、ぜひどうぞ!

コンピューターが本当にわかる言葉は0か1のカタマリ(2進法)で表現されたマシン語だけです。

どのような2進法表現でどう動くかはコンピューターによって違います。


IchigoJam Rで使っているコンピューターは、16コの0か1のカタマリ(16bit/16ビット)で動きをコントロールします。

0000010100000101

これはX10レジスタというコンピューターの一時記憶の1番目に1を足すというマシン語です。(RV32C RISC-Vマシン語表

最初の3bitと最後の2bitが足し算をしろという命令コード(c.addi)、一つ飛ばして5bitが使うレジスタの番号、残りの6bit(bit12とbit6-2)が足す数です。

000 0 01010 00001 01

これをPOKE文を使ってメモリに書き込みます。

POKE#700,`00000101,`00000101

#700はメモリの位置を表します。`は2進法で数値を表します。
下位の8bitを先に、上位の8bitを後に書くのがこのコンピューターのルールです(リトルエンディアン)。

動かすにはもう1つ命令が必要です。IchigoJamからの呼び出しから戻って来いという命令です。 (BASICのGOSUBに対して、RETURN的なもの)

1000000010000010

この呼び出し元に戻るマシン語も同じようにメモリに書き込みます。

POKE#702,`10000010,`10000000

準備ができたので実行してみます。

?USR(#700,1)

結果に正しく2と返って来ましたか?
マシン語は間違えると、IchigoJamのシステム自体が停止してしまいます。
安全策が無い分、コンピューターのフルパワーが出せるのがマシン語の最大のメリットです!
長いプログラムをつくった時は、保存してから動かしましょう。

USRコマンドは呼び出しメモリ位置と、渡す数を指定します。100を渡して結果を確認してみてください。

?USR(#700,100)

メモリを書き換えて5足すプログラムに変更してみましょう。(ビット演算で2bitずらし、c.addi命令を表す末尾01を足す。リトルエンディアンなので後8bitがメモリ上では先にくることに注意)

POKE#700,5<<2+1 ?USR(#700,100)

足す数を変更できました。

このような計算命令や、計算した結果によって処理を変更する命令などのマシン語でコンピューターは動いているわけです。

応用編「IchigoJam Rβでも輝くWS2812B、RISC-Vマシン語で10ナノ秒単位で制御する
RISC-V版マシン語はじめのいっぽの連載、はじめます!

- 連載、IchigoJamではじめる、Armマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語
8. アセンブラを使って楽しよう
9. マシン語で高速SPI
10. マシン語を制するもの時間を制す
11. 画面をイチゴで埋め尽くす12の方法
12. レジスタ不足に上位レジスタとスタック操作
13. コンパイラはじめのいっぽ、EVAL実現法とマシン語生成
14. サイズを取るかスピードを取るか、割り算のアルゴリズムとマシン語実装
15. マシン語化で1万倍速!? セットで学ぶアルゴリズムとコンピューター

- 参考リンク
命令一覧「Cortex-M0 テクニカルリファレンス マニュアル - Arm
マシン語の仕様「Armv6-M アーキテクチャ リファレンス マニュアル - Arm」 - 登録するとダウンロードできます
マシン語の仕様(日本語)「Armv5 Architecture Reference Manual Japanese - Arm」 - バージョン違いですが、日本語です
Arm Cortex-M0 1,500円 BASICパソコン 「IchigoJam
福野ツイート「プログラミングをC言語からはじめるのは、免許取っていきなりランボルギーニ乗るようなもの

In Cyber Valley, Japan. We've started Homebrew Computer Club again!
サイバーバレーにて、自作コンピュータークラブはじめました。

Today, we successed to build VGA and mini-IchigoJam on Raspberry Pi Pico.
ラズパイPicoでVGA表示とミニIchigoJamのビルド成功!


@yrm__ and @kristopher did it! (やった!)


soldered VGA socket (はんだづけしたVGAソケット)


make the circuit on the breadboard... (ブレッドボードで回路を組んで・・・)


Wow @EbenUpton ! (動かしてみたらなんと、ラズパイ創始者エベン!)


LED1 working on the simple IchigoJam for Raspberry Pi Pico! (LED1に対応したミニIchigoJam on Pico)


I blink the LED in Nython (Python like) on IchigoLatte for IchigoJam Rβ, released by @yrm__ today! (まったさんから今日リリースIchigoLatte for IchigoJam Rβで、PythonライクなNythonでエルチカ!)


also JavaScript / Ruby / FORTH! (各種言語風も!)

Welcome to our event "Cyber Friday", Feb 26, 18:00 in SCC!
自作コンピュータークラブに興味ある方、SCCにて開催、2/26サイバーフライデーへどうぞ!

links
- おめでとう HHKB x IchigoJam!新しい typeR で JavaScript, FORTH, Ruby, Python を楽しもう、IchigoLatte R β リリース! – about yrm
- 実は10コア!? Raspberry Pi Pico はじめのいっぽ on Mac
- IchigoJam R & IchigoSand 発表、HHKB他USBキーボード対応するRISC-V版、Zen言語でかんたんマシン語両対応 zen4ij

Linuxが動かないラズパイ、Raspberry Pi Pico が登場!

Arm Cortex-M0+を2つ搭載、更にプログラマブルな入出力「PIO」として、ミニミニコンピューターが8つ搭載! 合計10コアを使ったプログラミングが楽しめます。

まずは、MicroPythonを使ったお手軽開発
1. Raspberry Pi Pico をUSBで接続するとUSBメモリ的に認識します(二回目以降はBOOTSELを押しながら差し込み)
2. MicroPythonファームをコピー
3. CoolTermなどで、シリアル接続(115200bps/RTS off/DTR on/local echo off)
4. MicroPythonでプログラム!(LEDをON、OFF)

from machine import Pin led = Pin(25, Pin.OUT) led.value(1) led.value(0)

5. ミニミニコンピューターもPIO向けインラインアセンブリ言語(マシン語の元)を使って開発可能!
長いプログラムは、Ctrl−E を押してからペーストして、Ctrl-D で終了。

フルカラーLED、WS2812Bもこの通り!(sample src on GitHub)

次に、Picoのフルパワーを活用するC/C++での開発。環境構築からエルチカバイナリ生成まで on mac。

brew install cmake brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc cd ~/ mkdir pico cd pico git clone -b master https://github.com/raspberrypi/pico-sdk.git cd pico-sdk git submodule update --init cd .. git clone -b master https://github.com/raspberrypi/pico-examples.git cd pico-examples mkdir build cd build export PICO_SDK_PATH=../../pico-sdk cmake .. cd blink make

blink.uf2ファイルをBOOTSELボタンを押しながら挿し認識した RPI-PI2 にコピーすればOK!
詳細は、公式ドキュメント「Getting started with Raspberry Pi Pico」をどうぞ!

新しいコンピューター、ワクワクしますね!


IchigoJamの基板の上に載せてみました。
The IchigoJam on Raspbery Pi Pico project started!

PCN仙台の荒木さんと訪問した仙台高専の縁で実現、小中学生向けローカルプロコン「みやぎプロコン」。 第二回目「みやぎプロコン2020」のオンラインプレゼンをオンライン審査!

オンライン参加してくれたこどもたちも含めて記念撮影!高専企画のローカルプログラミング&電子工作コンテスト、オススメです!ぜひ、高専生にも審査員してもらいましょう。

PCN仙台でのキラキラワークショップ」こどもたちの喜ぶ顔に応えたIchigoJamのコマンド、WS.LED。IchigoJam Rでも対応します!

パラメーターを調整し、WS2811にも対応!
IchigoJam BASIC 1.5b02 ファームウェア (RISC-V版 IchigoJam R用)
- IchigoJam 1.5β2
WS.LED対応、IOT.IN()/IOT.OUT対応(未検証)、VER(2)でキーボード状態が反映されないバグ修正

書き込み方はこちら参照、または「IJUtilities」でどうぞ!

WS2811/WS2812B前期/WS2812B後期とちょっとずつパラメータが違いました。だいたい大丈夫なように調整。

2811 (PL9823) 0 high 200nsec-500nsec, low 1200nsec-1500nsec 1 high 1200nsec-1500nsec, low 200nsec-500nsec reset 50,000nsec 2812b before 0 high 150nsec-550nsec, low 700nsec-1000nsec 1 high 650nsec-950nsec, low 300nsec-600nsec reset 50,000nsec 2812b new 0 high 220nsec-380nsec, low 580nsec-1000nsec 1 high 580nsec-1000nsec, low 580nsec-1000nsec reset 280,000nsec IchigoJam R 0 high 220nsec, low 1000nsec 1 high 1000nsec, low 580nsec

正式版をお楽しみに!バグ報告やご要望、お待ちしています!

マシン語の楽しさはコンピューターをフルに使い切れること。1秒間1億回、約100MHzで動作するIchigoJam RとWS2812Bで実験です!(仕様上の最高性能は108MHzですが、現在は96MHzで動作させています)

IchigoJam RのLEDは、ピン配置を見ると汎用入出力(GPIO)のポートAの14番(PA14)を使っていることがわかります。


GD32VF103のドキュメントより」
コンピュータの仕様書にメモリにマップされたアドレスが記載されています。このアドレスに対して書き込むことで出力を変更できます。 まずは単純に付けてみましょう。出力制御のGPIOx_BOPを使います。PA14は、#40010810の14bit目を1にすればONにできます。(Arm版の例)

MODE RV32C R11=#4 'R1=#40010810 R11<<=12 R11+=1 R11<<=8 R11+=8 R11<<=8 R11+=#10 R12=1 R12<<=14 [R11+0]L=R12 ' set BOP RET

みけCATさんが、RISC-V版にも対応してくれたasm15を使ってアセンブルできます。


Volume 1, Unprivileged Spec v. 20191213より」
RISC-Vのレジスタは31コ(X0は0固定)。X10〜X17がパラメータ、X10/X11が返り値かつ、元の値を保存せずに使えます。RV32Cの16bit縮小命令で使える範囲外ですが、X5〜X7/X28〜X31も元の値を保存せずに使えます。 asm15ではX??レジスタはR??レジスタとして記述します。

LEDを消すときは上記のset BOP を下記のように変更します

[R11+1]L=R12 ' clear BC

続いて、WS2812Bを制御しましょう、データシートを見ると、1コに付き24bitを、0の時は短く(220ナノ秒)ON、1の時は長めに(580ナノ秒)ONの後、しばらく(580ナノ秒)OFFという制御をすればいいことがわかります。 96MHzで動くRISCアーキテクチャーのコンピューターは1命令を10.417ナノ秒でこなします。220ナノ秒待つためにループを使います。

R10=100 R10+=-1 IF R10 GOTO -1

これで100回ループします。R10-=1という命令はないので、-1を足し算します。フラグがない代わりにレジスタが0じゃないかどうかで判定してのループです。

Armでは1ループ4clockでしたが、RISC-V(GD32VF103)ではどうなるでしょう?割り込みを禁止して、10秒間停止させる実験をしたところ、分岐は1clock短縮の2clock、つまり1ループ、3clockです。

あとは、Arm版のWS2812BのドライバをRISC-V用に改造です。

' LED WS2812B R11とR5を変更でOUTnに変更可能 ' R10 - 開始アドレス 送信byte数low,送信byte数high,G1,R1,B1,G2,R2,B2 .... ' R11 - base address (初期はRAM offset) ' R12 - temp ' R13 - data value ' R14 - data count ' R15 - bit count ' R5 - OUT value ' R8 - wait count ' R9 - wait count MODE RV32C @WS2812B SP+=-2 PUSH R8,0 PUSH R9,1 CPSID R10=R10+R11 'R11=#40010810 R11=#4 R11<<=12 R11+=1 R11<<=8 R11+=8 R11<<=8 R11+=#10 R5=1 R5<<=14 R14=[R10+0]W R10+=1 @LOOP_DATA R15=#8 R15<<=4 R10+=1 R13=[R10+0] @LOOP_BIT [R11+0]L=R5 R9=20 '3clock*20=60 <- 58-100 R8=20 '3clock*20=60 <- 58-100 R12=R13&R15 IF R12 GOTO @SKIP R9=8 '3clock*8=24 <- 22-38 @SKIP R9+=-1 'wait R9*3 clock IF R9 GOTO -1 [R11+4]L=R5 ' *offset 4byte R8+=-1 'wait R8*3 clock IF R8 GOTO -1 R15>>=1 IF R15 GOTO @LOOP_BIT R14+=-1 '+6clock IF R14 GOTO @LOOP_DATA CPSIE POP R9,1 POP R8,0 SP+=2 RET

CPSID/CPSIEに対応させたasm15を使うとアセンブルできます。

WS2812B光りました!12コのWS2812Bの実験プログラム for IchigoJam Rβ

10 POKE#700,61,113,34,192,38,194,243,119,4,48,51,5,181,0,145,69,178,5,133,5,162,5,161,5,162,5,193,5,133,66,186,2,3,87,5,0,5,5,161,71,146,7,5,5,131,70,5,0,35,160,85,0,209,68,81,68,51,246,246,0,17,226 20 POKE#73E,161,68,253,20,253,252,35,162,85,0,125,20,125,252,133,131,237,243,125,23,113,251,243,103,4,48,146,68,2,68,5,97,130,128 30 POKE#800,12*3,0 40 FOR I=0 TO 11:POKE#802+I*3,I,12-I,0:NEXT:?USR(#700,#800):WAIT30 50 FOR I=0 TO 11:POKE#802+I*3,0,12-I,I:NEXT:?USR(#700,#800):WAIT30 60 FOR I=0 TO 11:POKE#802+I*3,12-I,0,I:NEXT:?USR(#700,#800):WAIT30 70 GOTO 40

WS.LED命令として組み込む準備ができました。

PCNの新製品発表会にて、新型IchigoJam「IchigoJam R」発表!

PCN新製品発表会


じゃん、こちらがIchigoJam R x IchigoSand


目玉はUSBキーボード対応!


IchigoSand、鯖江のメガネテクノロジー、人肌にやさしい石油を使わない素材、アセテートを使ったIchigoJam R専用ケース by EIGHT SENSE!


メガネ同様、いろいろな柄がかわいい!


テクニカルな大発表、IchigoJamは、ArmからRISC-Vへ。
2014.4.1誕生から長らく使ってきたCPU、NXP社のLPC1114、Arm Cortex-M0アーキテクチャーに加え、オープンなアーキテクチャーRISC-Vに対応!
(LPC1114向けサポートも続きますのでご安心を!)


なんとインタプリター、10倍速!
CPU周波数が倍、ビデオ信号の出力が、DMA(Direct Memory Access)によって空いちゃいました。


RISC-V Internationalメンバー、コネクトフリー社代表、Zen言語開発者、帝都久利寿!


Zen言語は、C言語に代わる、安全、快適、高速なプログラミング言語。


Zen言語zen4ij を使って、プログラムは全く一緒で、RISC-Vマシン語をコンパイルできます!

例えば、引数を1足すだけのシンプルなZen言語プログラム

export fn main(param: i32) i32 { return param + 1; }

Arm版 (make build; make dump)

0000000 1c40 4770

RISC-V版 (make buildr; make dump)

0000000 0505 8082

共に16bitのマシン語命令、オープンなアーキテクチャーなので、学習教材としても本気開発環境としてもフリーに大いに活用できます。
比べてみよう、RISC-VとArm、RISC-V対応かんたんマシン語「asm15r」

One more thing...


エンジニア大好きHHKB(Happy Hacking Keyboard)のPFU社、松本さん出演!
USB接続するHHKBにも対応したのを記念した、HHKBxIchigoJam コラボ!(USBハブ機能付きは未対応)


HHKB x IchigoJam コラボ企画 - Happy Hakking with Kids
なんと、Twitter投稿でIchigoJam R 墨とHHKBが当たる!


IchigoJam R 墨、かっこいい!

加速する、こどもプログラミング環境、こプサミレポートへ続く!
プログラミングは水泳の如し、全学年10時間カリキュラムに挑戦「クイズ タシテ テン!」

links
- こども達と楽しくプログラミングしよう!USBキーボードに対応した新「IchigoJam R」で、HHKB墨とのコラボ決定!Happy Hacking with KIDS! – about yrm
- 今年最後のイベントは「IchigoJam R」の発売発表 | SABAE CREATIVE COMMUNITY

日本社会にテクノロジーが根付かない原因は信頼か? 独自開発のIoTとZen言語による解決を目指すコネクトフリーCEO、帝都久利寿さん。 マイクロソフトと任天堂があるシアトル出身、5才からプログラミングし、10代で会社を売却し、単独来日、再び創業。 日本&技術好きの同志。

プログラムが使うメモリ、使ったまま忘れたり、使ってはいけないところを触るとソフトウェアは停止する。 このいわゆるバグは、アプリを使う人をイライラさせ、車や社会インフラなどで起きると多大な影響を引き起こす。

現在主力となっているプログラミング言語の解決方法に、自動的にメモリを回収する仕組みを使う方法(GoやTypeScriptなど)、所有権という概念を入れて管理する(Rust)という方法がある。 Zen言語はそのどちらでもなく、後片付け構文とメモリ確保の明確化で安全にするというアプローチ。

IchigoJam BASICでは、そもそも使うメモリ量を固定化しているため問題が起きない。 Zen言語はこの古典定期かつ堅牢なメモリ使用方法を、一段上位で管理するイメージ。

GCを使う言語はランタイム(作ったプログラムを動かすために必要なベースプログラム)で容量が大きくなってしまうが、ZenはRust同様、ゼロランタイム。 IchigoJamなど、小さな組み込み用途にも使える。


zen4ij - Zen language for IcihgoJam
早速実験「かわくだり」のZen言語版が動いた。コンパイル済みバイナリ124byteと小さい。
(参考、Rust版 132byte、C版 116byte、Ruby版 325byte + runtime 2,376byte)

const ij = @import("std15.zen"); export fn main() i32 { ij.cls(); var x: i32 = 15; var score: i32 = 0; while (true) { ij.locate(x, 5); ij.putc(236); ij.locate(ij.rnd(32), 23); ij.putc('*'); ij.putc(10); ij.wait(3); const c = ij.inkey(); if (c == 28) { x -= 1; } if (c == 29) { x += 1; } if (ij.scr(x, 5) != 0) { break; } score += 1; } return score; }

IchigoJam BASICのかわくだり 150byteとの比較

10 CLS:X=15:S=0 20 LC X,5:?CHR$(236) 30 LC RND(32),23:?"*" 40 WAIT 3 50 C=INKEY() 60 X=X-(C=28)+(C=29) 70 IF SCR(X,5) ?S:END 80 S=S+1 90 GOTO 20

@マークで始まるものはZenの組み込み関数、std15.zenにてIchigoJamのAPIを定義している。 例えば、1文字表示するij.putcは、下記のように定義し、IchigoJam APIと接続している。

pub fn putc(x: u8) void { const addr = @intToPtr(*u16, 0xC4); const f = @intToPtr(fn(u8) void, addr.*); f(x); }

u8は、符号なし(unsigned)8bitの意味。Rustに似ているが、関数の返り値型に"->"が不要でよりコンパクト。 @intToPtrを使うことで、物理メモリにもアクセスできるので、OSづくりにも対応できる。(Rustではunsafeを使用する)


Zen言語のドキュメントだけでなく,コンパイラのエラーも日本語対応!優しい! (コンソールで export LANG=ja と設定してみよう)
ごきげんよう、Zenへようこそ | Zen Language Documentation


IchigoDyhookがあれば、亀蔵でもサクっと取り出し、 IchigoJam BASIC プログラミング!
久利寿氏、超久々のBASICでPRINT/GOTOループを決めているところ。

社会のあちこちで活躍するソフトウェアだが、本領発揮はまだまだこれから!
日本のソフトウェア技術力、どんどん上げていこう!


@yrm__ (IchigoLatte MINIScript)、 @kristopher (Zen language)、 @taisukef (IchigoJam BASIC)
国産言語プチサミット in 鯖江!

links
- C言語よりコンパクトに! Zen言語開発者からのプルリクとマシン語の気持ち

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS