HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0508
しまGOTO文系に替わるスクリプト実行をジャンプできる命令文・関数に関して1解決


しま

リンク

2022/5/8(Sun) 19:30:55|NO.96317

 投稿は、はじめての方(ほう)ですみませんが
他のプログラミングで推奨しているかもしれませんが「GOTO」に替わる
命令文・関数も対応・検討していく段階になってきているかもしれない
と思います。自分としては「GOTO」文は利用しやすかったので良い
のですがスクリプトの流れや見やすさから考えれば致し方無いのかなと思います。

 具体的には
◆「CONTINUE」や「BREAK」などで変数などパラメータを追加して
様々な変化にも対応できるような入力任意オプションを取り入れる
(「BREAK」の場合はジャンプ先のラベル名前も指定できるようにするなど)
◆C言語系の「Defer」系列文や「Try〜Catch」系列文の導入、実装
◆「RETURN」文でジャンプ先のラベル名も指定できるようにする
(実際、過去の「RETURN」ではジャンプ先も指定できるBA●IC系もあった)
など

 自分は昔のPCのBA●IC系を利用したりもしていたせいなのかGOTO命令文、GOSUB
命令文が実装していて利用しやすかったということもあり、本当にありがたく思って
おりますし、ゲーム系の制作にもHSPは適していると思っています。

もっと「HSP=プログラミング言語」「HSP=hot Soup Processor」という事を
多数の人達に認識できるようなプログラミング言語になっていただければ幸いです



この記事に返信する


雪月夜

リンク

2022/5/14(Sat) 23:58:33|NO.96367

HSPが新しいものを取り入れて進化していくのは、私も大賛成です。
ですが、HSPの強みの一つは古い言語を使っていた人や、しまさんのようなGOTOを好んで使う人にとってもとっつきやすい点にあるので
昔から使われてきたGOTO構文は残しといた方が良いと思います。
GOTOが使えなくなると、過去に作られたコードが実行できなくなる問題とか発生するでしょうし…

今のHSPでもご要望通りの動作をさせることは(多分)可能です。
一例として、以下のプログラムはJAVAなどで実装されている、ラベル付きbreakの動作を再現しています。

#undef repeat #undef break #undef loop #define repeat(%1=-1,%2=0,%3="") %trepeat %i = %2 : %i0 %s1 %s3 *%i : if %p2 <= %p4 { goto *%p3 } : mref %i,65 : %p = %p2 + "0" %o0 #define break(%1="") %trepeat mref %i,65 : %p = %1 %o0 : goto *%p3 #define loop %trepeat %p4++ : if refstr = %p1 { goto *%p3 } : goto *%o : %o0 %o0 *%o %o0 randomize repeat 10,0,"b" repeat 10,0,"a" redraw 2 color 255, 255, 255 : boxf : color pos rnd(600), rnd(400) : mes "Hello World!" redraw 1 wait 20 break "b" ;指定した文字が設定されたrepeat文まで抜ける loop loop



ONION software Copyright 1997-2023(c) All rights reserved.