プログラミング言語にほしい言語機能

ただの雑感です

最近C++C#以外の言語を調べているので、その中で「良いな~」と思ったものを
適当にリストアップしてみました

switch-caseの亜種

GoやHaxeのswitch-caseは基本的にbreakが要らない仕様になっています
わざわざ書かなくても勝手に排他的制御になるようです

switch文を使用する
=「たくさんの排他的分岐処理を記述したい。また後からcaseで処理を追加したい」
ときに使用することが多いので、私にはこちらのほうが直観的でよいと思いました
C言語系譜のswitch-caseもこういう構文をサポートしたものがほしいです

コンストラクタメンバ関数

たとえばC++コンストラクタを記述する場合、
返し値のないクラス名と同名の関数を定義することでコンストラクタになります
しかし、これがたまに非常に分かりずらいことがあります
久しぶりに見たクラスなどで、一瞬クラスのコンストラクタを普通のメンバ関数と勘違いすることがあります
他人の書いたクラスなどでは特によくあります

HaxeではコンストラクタNew()メソッド、TypeScriptではconstructor()メソッドが
クラス名によらずコンストラクタとなります
これは地味に便利で、例えばクラス名を変更した場合にコンストラクタ関数名を変更する必要がなくなります

retrunする変数を前方宣言

最終的にreturnされる変数を関数のブロック内ではない箇所に宣言しておくことで
リターンしたい変数をわかりやすくする記述
加えてreturnを省略することができます
(どの変数を返すのかすでに明示されているから)

最後に

これらの機能は、むしろ既存の言語に組み込むことが難しいのではないかと思いました。
switch-case文に関しては既存のものと全く逆の性質ですし、
多少名前を変更して同一機能のものを提供しても、熟練のプログラマはむしろ違和感を感じると思います
またコンストラクタ名に関しても、Newやconstrutorなんかは
いかにもすでにメソッドに使われてそうな名前です

こういった「変更の難しい。だけど変更したい」というちょっとした気が付きから
新しい言語が誕生するのかな、という感想を持ちました

本当に小学生並の感想ですが、以上です