2021年2月27日土曜日

IDEが好き

IDE・・Integrated Development Environmentの略 統合開発環境の意味 Wikipedia

PCでいろいろな言語を触って遊ぼうと思うと不可欠だと思う環境
特にエディタでコード支援が無いとまともに書けないへっぽこプログラマなので不可欠

またGUIの設計ツールも欲しいので余計にIDEにこだわることになる

最近は仕事はWindows、空いた時間の趣味はmacbookと棲み分けているので言語をいじるときは両者で動くIDEが良いと思っている
MSのVisual StudioはmacではC#のGUIが共通で動かないので残念
スクリプト系は最近はvisual studio codeで書くことが多い

以前実験的に使っていたSmalltalkのPharo(もしくはSqueak)とJavaのNetbeansに再び食指を伸ばそうかと思っている(いずれもmacでもWindowsと同じ様に動く)

さてどうしようか?

(210308) 追記
 そもそもmacとwindowsであまり違いを感じずにいろいろなソフトの記述を共通化して楽しむのならむしろpythonによるシステム開発的なものの統合化を図る方がずっと面白そう

python+tkinter( or pysimplegui)+openpyxl+SQLAlchemyぐらいを自由に使えるようになればかなり面白い環境が構築できるかもしれない


2021年2月8日月曜日

MSXで・・

 何するわけでもないけどとりあえずその「遅さ」を体感してみた。

題材はretro-pcさんもご利用のmandelbrot風のasciiart

msx-basicでやってみた。手元に実機もないのでオンラインのエミュレータwebMSX
(最初横の文字数が40文字しか出来ないと思って別バージョンを作ろうとしていたんだけどmsx-dosでmode 80って言うのがあるんで調べたらscreen 0でwidth 80でいいんだ)

最下行に所要時間を表示させてるけど実は何度も試すのに嫌気が差してスクロールで隠れる2行ほどを端折っているのでその分下駄を履かせた感じで時間が短くなっている。
本当の所要時間は838.217秒(13分58秒217)となる。
遅い原因はデフォのエミュレート機能はz80の3.58MHzクロックを忠実に再現しているからだと思う。(検証してないけどもしかしたらメモリーアクセス時のウェイトまで)
その上MSX-basicは10進計算で浮動小数が特に遅い。
同じWebMSXでcp/mの各言語でも同様の処理を走らせて比較してみると・・
mbasic 8分45秒
上記をBASCOMコンパイラにかけた実行ファイルだと 3分15秒弱
turbo pascal 3.01の生成する実行ファイルだと 4分11秒
hitech-c で生成したオブジェクトだと 2分9秒強
となる、最速のhitech-cを1とすると
hitech-c : bascom : tp3 : mbasic : msxbas =1 : 1.5 : 1.95 : 4 : 6.5
まだz88dkのcのオブジェクトとhitech-cのそれを比べてないけどcの優位性って凄いな
(まあ同じ処理を書ければだけどね)
ちょっと楽しいのでしばらくあれこれ実験をしてみようと思う。
(webMSXは[ALT]+[T]でCPUの[ALT]+[Y]でVDPのクロックを最大8倍までコントロールできるので実験段階やマンデルブロー集合描画のように結果が早く欲しいときは重宝しそうだ。)
ちなみに両方8倍にして昨日実験のhitech-c版のasciiartは15秒で書き終わる、素晴らしい

さらにz88dkのzccで作成したものとhitech-c版を比べてみたらzcc版は30秒ほどと2倍近くの時間がかかった 浮動小数を用いた演算が処理の大半だと思うのでライブラリーの差なのかな

hitech-cはプロンプトに対して c -v filename.cでfilename.comを生成してくれる。
(コンパイル環境に生成される実行ファイルが結構影響されるturbo pascalと違ってwindowsでcp/m playerを使ってコンパイルしてもcopyした先の環境ですぐに走る。)
z88dkの場合はzcc +msx -subtype=msxdos filename.c -o filename.comって感じだ。
実行の名前は変えられるので同じソースをコンパイルするときはfilename.comの部分を変えればよし。

2021年2月7日日曜日

z80とクロス開発環境z88dkとオブジェクト指向設計実践ガイドとrubyとpython

 随分「と」が多いタイトル

ちょっと前からあれこれcp/mのエミュレータなどを通してz80のプログラムをいじることがあった(まあ言語を通してだから直接アセンブラなどで弄ってるわけではないけど)
で、せっかくz80を考えるのならグラフィックなどに反映するのも面白いと思ってwindowsやmacOSでクロス開発環境を探していたらz88dkに出会った

z88dkはc言語とアセンブラなどでcp/mやMSXやPC-6001やSharp X1などを対象とした利用メディアに応じたアウトプットを選ぶことのできる開発環境

試しにDLしてgnuMakeと組合せてExampleの内容をコンパイルしたらMSXで動くサンプルとかがたくさん得られた。webMSXって言うonlineのMSXエミュレータで動かしてみるとちゃんと動くので感心した やはりグラフィックがあるとモチベーションが上がる

自分のOOP力を上げるために「オブジェクト指向設計実践ガイド」を読み始めた
副題が「Rubyでわかる進化しつづける柔軟なアプリケーションの育て方」なので一義的にはrubyで写経しつつ本文を理解してpythonでポーティングして理解を深めたい
※あって良かったWSL

しばらく上げてなかったのでまだまだ塊にならない実験しかしてないけどちょっとメモしておく

dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...