自分でプログラミング言語を設計する(言語処理系の設計ではなく言語そのものの設計)なら、どんな言語にしたいですか?
抽象的なアイデアでも具体的な機能でも構いません。
皆さんのアイディアをできるだけ詳しく聞いてみたいです。
その「理想プログラミング言語」の動作環境として、現在において十分に実用化されているコンピューターを想定します。
量子コンピューターのようなパラダイムが大きく異なる環境は考えません。
DOMAIN{
10 IMPUT A
20 FEAST XXX
30 PRINT B
40 END
}
CELEBRATE:ZXXX{
10 B=A*2
20 ROUTINE
}
DOMAINはプログラムの本体。
CELEBRATEはBSICのサブルーチンみたいな物。
BASICはプログラム全体の関数名を統一しないといけませんが、CWLEBRAYE内の関数は外から見えないので、おかしかったらCELEBRATEだけを書き直せる。
ROUTINEでDOMAINに戻る。
このプログラムでは、最初に入力した数字の倍数が出ます。
現在使われているプログラム言語はあまり知りません。
JavaやC#のようなマネージド言語でなら、非Null型を持った言語がいいですね。
非Null型は、参照型でありながらNullが代入されていることがないと保証されている変数や、Nullを返さないことが保証されている関数の型です。
あるクラス Object の非Null型を Object! と表現するなら、
というルールで矛盾なく実現できそうです。
JavaやC#に追加することもできそうな仕様ですね。
現実的には無理っぽい話になりそうなのですが、XMLで書けるようなプログラミング言語。
たとえば、
<program> <class> <var name="length" type="float" scope="private"> </var> <property name="getArc" type="float" get="true" set="false"> <return code="length * 2 * 3.14"> </property> <method name="toString" type="string"> … </method> </class> …
のような書き方ですね。
ちょっと書き方が乱雑ですが(笑)
昔書いた日記から引用します
http://ruby.g.hatena.ne.jp/garyo/20080813/p2
コンテキスト指向言語
「日本語とオブジェクト指向」
http://satoshi.blogs.com/life/2004/09/post.html
ここを読んで思った。
オブジェクト指向の次はコンテキスト指向が来ると面白いな。
空気を読むプログラムというか
オブジェクトがおかれた状況をみて必要なメソッドを判断する。
ファイルオブジェクトにファイル名を渡すと開いてくれるとか
「ファイルオブジェクトさん、ファイルを・・」
「これですか、開けばいいんですね」
UMLやフローチャート(今時古いけど)を描いたらそれをコンパイラが解釈し実行ファイル(.exe)を生成してくれる。
要はUMLやフローチャートそのものがプログラム言語であること。そうすれば、今いるプログラマという人たちがあまり必要なくなり、ソフト作成にかかる人件費が大幅に削減できると思う。
言語自体をローカライズ”できる”言語を作りたいですね。
今は英語記法が当然のようになっていますから。
まぁ現実化するにはコンピュータの文字コードにも絡んでくるので難しいと思いますが…。
ローカライズすることで可読性(とっつきやすさ)も上がるんじゃないかと思います。
あとは、そういう言語を作ることで、関数名を変えられる、とか需要は無いのかなぁ。
for → ループする
for(i=0;i<=10;i++)
ループする(相=0;相が10以下;相に1足す)
というような言語とか面白いなぁと考えました。
>van-dineさん
既にMicrosoftから製品として出荷されていますよ。
XAMLやWPFやSilverlightでググって見てくださいな。
言語自体を拡張する機能を持ったプログラミング言語が既にいくつも存在していますが、
自分は今は全く流行っていないVPLを更に無駄に拡張した3DなVPLが作りたいですね。
宇宙のステルヴィアをはじめとしたアニメ等で見られるような、
レゴブロックを組み合わせるようなプログラミングがしたいです。
普段は普通の言語を書いていて、
細かい作業をしたい時だけ、仮想アセンブラに切り替えられる。
Javaみたいに仮想マシンで動くアセンブラが作れるかどうかは分からないですが、
書き方は、
10 IN BASIC
20 INPUT A
30 INPUT B
40 C=A+B
50 IN ASSEMBLER
60 MOV AND PjうわなにをするやめQあWせDRFTGYふじこ・・・
70 IN BASIC
80 PRINT C
みたいな感じです。
コメント(3件)
そのソースをコンパイルすると設計書とバイナリが出力されることが望ましい
# 例えば、JavaDocのhtmlとclassファイルは常に同期して出力され、
# JavaDocが間違っているとコンパイルすら出来ない
言語を設計できる奴はプログラマではなく、ハッカーかウィザード
今でも幾つもプログラム言語は生産されているが、普及するのは数個だし
10年後、20年後も生き残れる言語はあるかどうかも分からない
DOMAIN{
10 IMPUT A
20 FEAST XXX GET C
30 PRINT C
40 END
}
CELEBRATE:XXX{
10 B=A*2
20 ROUTINE
30 END
}
CELEBRATE:XXXは、DOMAINに入力された数値を二倍にする関数で、
その答えはBですけど、DOMAINはそれを受け取るってからCと名付けます。
調べてみたら、CやJavaですでに同じ事をやってるみたいです。
IN C
C言語で書きやすいプログラム
IN JAVA
JAVAで書きやすいプログラム
IN COBOL
COBOLで書きやすいプログラム
}
こんな事は出来るでしょうか