ついでにつらつらと

  • ilink32でリンクすると実行時パッケージOFFどころかフルアセンブラで書いた.objでランタイム一切使わなかった場合ですらPACKAGEINFOリソース作るのやめて欲しい。いやまあ勿論後からいくらでも消せますけど……。
  • 次のバージョンはText型とfile型の中に記録されてるファイル名もUnicodeなんでしょうね?
  • いっそfile型を拡張しまくってTStreamなんかいらんと言える状態にして欲しい。具体的にはText型のようにカスタムして使いたいです。
  • ebp付き関数ポインタ。構文はtype t = procedure of procedureあたり希望。いにしえの教科書Pascalにあるprocedure引数でもいいです。
  • for..inも、D言語みたくしてくれたら。あと地味ながら配列のSlice*1使えるとか。
  • case文で全要素が列挙されてなくてelseも無かったら警告出して欲しい。勿論部分範囲型の場合は部分範囲だけ対象で。OOPとは完全に逆行しますが、静的チェックの入るcaseと部分範囲型の相性は最高なんです。
  • 暗黙のTypeInfo付き型無し引数やらTypeInfoとPointerが組になった変数やら。
  • 初期化/終了処理の不要な型についてもTypeInfoを作る指令。
  • 今からでも動的配列はコピーオンライトして欲しいなー。
  • 動的配列にInsertやDelete使いたいなー。
  • StringにLowとHigh使いたいなー。単に1とLengthの別名で。
  • set of WideChar。
  • 今のclassは重装備過ぎて.exeサイズを思えば気軽に例外用classを宣言できないのでVMTのマイナス領域の情報を大幅に減らした軽量版classが欲しい。interfaceやpublishedあたりが一切使えないやつ。もしデバッガで表示できるならですけど型名も記録しないでいいです。
  • class helperで仮想関数を足したい。Win32で。Delphi.NETでできるのは知ってるから。
  • class helperを全ての型に使えるように。
  • object型でオーバーライドする際にvirtualではなくoverrideと書きたい。
  • object型の仮想クラスメソッドとメタクラス
  • object型でinterface実装したい。_QueryInterfaceや_AddRef、_Releaseを毎回自分で書かないといけない形でいいから。

object型でInitialize/Finalizeを必要とする型から派生してInitialize/Finalizeを必要としないフィールドしか足さないとTypeInfoが生成されないのはバグの予感。どなたかQCに入れてください。人任せですが……バグレポートだけなら問題なくできますが、それで相手に直す気にさせるのは、別次元の問題ですので……。

レコードが継承できてデストラクタも書けてNew(P, Init)やDispose(P, Done)なんて書けるようになってあと暗黙のCreateを廃止してくれたら(要するにrecordがobjectの全機能をカバーしてくれたら)object型はいらないですけどね。当たり前ですね。

  • あと次のスプラッシュはDelphi3風のを見たいです。
  • Kylix for FreeBSDVCL for Web付きで欲しいです。普通のVCLやCLXはなくていい。これは絶対需要あると思う。(←商売になる程の絶対数があるかは別)
  • wineがsakuraに入らないかな。

LINQやgenericは、要らないと思います。
既にDelphiにはクロージャも多相型もありますし。(←異論は受け付けません)
少なくとも型宣言にだけはやめて欲しいです。Pascal系にもgenericのある既存言語は沢山あるので、せめてAdaぽく(T)かEiffelぽく[T]かOCamlぽく単なる併記に……。文法ぐらいPascal系から拾いましょうよ……。

ついき
この殴り書きで誰かに届くと思ってたら私は相当にイタイ奴になってしまうと思うが如何なものか。つかそう思われてるのかorz
この仕様はこの方がいいんじゃね?と好き勝手な事を言うネタは今までに何度もやってますので、いただいたコメントが正直新鮮です。ごめんなさい。

*1:AdaやGPCみたいなスライシング構文じゃなくてSlice関数のほう。オープン配列みたいにfor E in Slice(A, 5) doな感じ。