Jadawin 曰く、 "mishima氏は、氏の日記において、「俺言語」のあり方を論じていらっしゃいますが、皆さんは${俺言語:=自分が考える理想に近い言語}を考えてみたことはありますか?既存のどの言語をベースに考えますか?どのような問題点をどのように改善しようとおもわれましたか?どんな場面で使うと有効でしょうか?perlやrubyだって、既存の言語に対する不満から生まれてるわけです。色々と不満をぶちまけてみて下さい。"実装するならバックエンドにParrotを使うとか。
こんなのを考えてました。 (スコア:4, 興味深い)
この間、sedで200行程のプログラムを書いたのですが、用意されているコマンドがどうにも使えんですね。holdスペースが一つしかないとか、holdスペースとパターンスペースで複数行を扱えるくせにその扱い方がものすごく限定されていて使いにくいとか。じゃぁ発展型のはずのawkはどうかというと、高水準言語のくせに、ローカル変数が扱えないとか、嫌なところがあってperlかrubyの方に眼が行ってしまいます。
私が俺言語を作るのであれば、perlやrubyと同じ土俵で争うつもりは全くないので、sed程度に軽くてなおかつsedの制約を取りはらい、複数のキュー/スタックをもつforthもどきのsedもどきになると思います。
#いやぁ、変数がないというところがストイックでよいのですよ。
Re:こんなのを考えてました。 (スコア:1)
使えますよぉ。(;_;)
Re:こんなのを考えてました。 (スコア:1)
関数パラメータはローカルでも、関数の中でローカル変数を宣言できましたっけ?GNU awkのマニュアルを見れば書いてありますけど、オリジナルのawkでは、ローカル変数はなかったと思いますよ。GNU awkが使えるのは知ってるけど、あれはカッコ悪いので使おうとは思わないです。
#nawkでも同じはずだし、何時頃のawkだろう?
Re:こんなのを考えてました。 (スコア:1)
f(a);に対して
function f(a, b)とか書いてbをローカル変数に使うような感じ。
なんとなく (スコア:3, おもしろおかしい)
想像してしまった。
あれが発展してオブジェクト志向要素を取り入れたりしたら
オレ->カケ("オレ言語");
という感じになるのだろうか。
Re:なんとなく (スコア:1)
#HyperTalkの日本語で書いた奴とか。
「まあうまいことやってひとつよろしく」 (スコア:3, おもしろおかしい)
Re:「まあうまいことやってひとつよろしく」 (スコア:2, おもしろおかしい)
自己拡張および下部機構に報復をほのめかす自動制御機能で、クライアントのどんな無茶な要求にもなんとか応えてプログラミングさせてしまう、しかもプログラミングとほぼ同じくらいの歴史を持つ言語、Joe C (Japanese Odd EthiC、ジョーシと読んでね)のことを思い出しました。
いやあ、懐かしいな。当時はハマッたもん。あの妙な言語仕様、覚えてる人いる?
Re:「まあうまいことやってひとつよろしく」 (スコア:1)
Re:「まあうまいことやってひとつよろしく」 (スコア:1)
欲しいもの:GUI アプリ作成用言語(環境) (スコア:2, 興味深い)
環境を実現しています。
それまでは、C++ で STL を使ってがんばろうとしていたのですが、
Java や Ruby を知ってから、C++ が
"いかに分かりにくい(落とし穴の多い)言語か"
というのが身にしみて分かるようになり、あまり好んで使わなくなって
しまいました。(STL に関しては未だに魅力はありますが...)
私は、コンパイラや言語設計の勉強を全くしたことがなかったのですが、
Ruby を知ってから、"実は言語を設計するのって、結構面白いんだなぁ"
と思うようになりました。
GUI を使わないプログラミングに関しては、今はほぼ Ruby で不満なく
書けています。(不満なくというより、日々いろいろな発見しているので、
まだまだ潜在力があるかなと感じているところです。)
しかし、GUI アプリ作成に関しては、未だ不満いっぱいです。
いろいろ触ったけど、まだ決定打に近いものがない...
猛烈に欲しいのは、GUI アプリケーションがサクサク書ける
言語 & 環境かなぁ。
というわけで、いまは Apllo
http://www.users.yun.co.jp/~moriq/apollo/ [yun.co.jp]
に奮闘中。
GUI (スコア:2, 興味深い)
GUI じゃないけど、グラフィックなら、やっぱり N88BASIC(86) とかの、昔ながらの BASIC がいちばん落ち着きます。ああいう感じで手軽に使えるのって、ないでしょうかね。
いまどきの GUI アプリ作成は、長々といろいろ書かないといけないのがうっとおしいですよね。Tcl/Tk はだいぶ楽ですが、なにぶん、Tcl の言語仕様がへぼいし、X 用のはいまだに日本語の扱いがうまくいかないし (Windows 用のはとっくの昔に日本語に対応しているのに)。{Ruby,Perl,Python}/Tk ってのもありますが、どうなんでしょうか。(Windows でも使えたりするといいな)
Re:GUI (スコア:1)
Re:GUI (スコア:1)
私の使った範囲では無変更でSolaris, Linux, FreeBSD, Windowsで動作しました。
Re:欲しいもの:GUI アプリ作成用言語(環境) (スコア:1)
だめっすか?
はすかわ
FORTH系スクリプト言語 (スコア:2, 興味深い)
速度を要求する場面ではC程度に高級であれば十分なので, 俺言語が欲しいとすればインタプリタ/スクリプト系言語, それも1語ごとに動作が検証できるFORTH系がいいですね.
ただ, 元のFORTHは仮想スタックマシンのアセンブリ言語みたいな物で, 今日的基準から見れば低水準すぎるので
あたりは欲しい所です. 基本となるライブラリについての設計は少しずつは進めているんですが, この前ドキュメントの更新日付を見てみたら5年前だったりして...
Re:FORTH系スクリプト言語 (スコア:1)
FORTHで作ったという文を読んで大笑いした記憶が。
magicmirror
Re:FORTH系スクリプト言語 (スコア:1)
と思ってたらここ [ipsj.or.jp]にちょっとだけあった。
Re:FORTH系スクリプト言語 (スコア:1)
SteppingWindさんのおっしゃる枠組みで、正規表現クラスがついていたら、今すぐでも使いたい気がしますね。
#できれば、1+とか>0とか、addとかdivとかなしだと、さらに嬉しいのですが。
もう疲れた (スコア:2, おもしろおかしい)
Re:もう疲れた (スコア:1)
コンピュータから質問攻めにあって,
結局1からプログラミングするくらい時間がかかり,疲れたりして・・・
昔欲しかったモノ (スコア:1)
・ローカル変数
・再帰呼び出し
・連想配列
をサポートしたCOBOL。上2つを無理やりサポートした変態処理系は使ったことあるけど。
#もう十年もCOBOL使ってなくて、最近の規格は分らないや
Re:昔欲しかったモノ (スコア:2, おもしろおかしい)
COBOLも2002仕様だとOOがあったりするのだけど、COBOLでそこまでしてもなぁというのが正直なところ。COBOLと同じ領域を完全にカバーして、さらに便利な言語があればリプレースしたいけど、いまだにないのが寂しいところ。言語設計者がサボっているとしか思えない。
Re:昔欲しかったモノ (スコア:1)
>いうのが正直なところ。
ヘタにOOで書いて、メンテナンスや改造を他社に出したらパニックを起こしたりして。
#昔他社が書いたのCOBOLプログラムの改造を頼まれたら、仕様非公開のアッセンブラが
#インラインで書かれていて、かなりあせった。(^^;
>言語設計者がサボっているとしか思えない。
そういえば最近、「第四世代言語」って言葉を見なくなりましたね。
#他社マシンにも結構実装されたのに、何故RPGはIBM以外ではメジャーにならなかったんだろう?
4GLって (スコア:1)
COBOLは4GL的な面といわゆるプログラム言語的な面のバランスが良かったのが、生き長らえた理由ではないかと。
下の方でSQL云々と書いてあったり、Prologのような言語が流行らないということを見ると、やはり人間は「手順」が記述出来ないと満足出来ないのではないですかね。4GLはその辺がうまく書けないものだから、結局すたれてしまう。
不満 (スコア:1)
いろんな言語ごとに、本質的には同じ機能であるにもかかわらず、表現がわずかずつ違うのは、覚えるのが大変だから、やめてほしい。rnd() か rand() か、とか、elsif か elseif か、とか。for や while ループを制御するための表現が、C だと break と continue だけど perl では last と next とか。関数定義が Tcl/Tk が proc で、Perl は何もなしで、sh だと function で。
本質的な違いに伴った表現上の違いなら、仕方がないけど。
Re:不満 (スコア:2, 興味深い)
Re:不満 (スコア:2, 参考になる)
breakで抜けなかったループでは最後のelse節も実行する、という奴で、ループを条件に一度もひっかからないで抜けちゃった奴の後始末ができます。経験上同じことを他の構造化言語でやる場合それ用のフラグを用意したり、ループカウンターの値が脱出条件に達しているかどうかをチェックすることで代用したり(それで罠にはまったり)してることが多かったので、すごく便利そうに見えます。while/for/elseはいずれも他の言語にもある制御構造なのに、組み合わせの妙で、コロンブスの卵的だなあ、と感心していました。
#他の言語にも同等の構文があるのに私が知らないだけだったりするかも…。
Re:不満 (スコア:1)
私は未だに Visual Basic だけは、言語仕様が
覚えられない。(なんか一貫性なくないですか?)
しかし、世間ではあの言語が一番初心者に
使われている... 不思議だ。
Re:不満 (スコア:1)
Re:不満 (スコア:1)
やはり3つは知らないと比較できないんだけどな。
-- wanna be the biggest dreamer
Re:全部実装しちゃうっていうのはダメかな (スコア:1)
他人が書いたプログラムを読む時に、自分は普段breakを使っているとしたら、プログラム中でlastと書かれていても、瞬時には何の事だか分からないと思います。
開発環境で・・・(Re:全部実装しちゃうっていうのは (スコア:1)
こういうのは開発環境で実装したらいいんじゃないですかねー。
プリプロセッサでもいいのかなー。
---------- ------ ISHII Nayuta
Re:全部実装しちゃうっていうのはダメかな (スコア:1)
それをしちゃうと,書くときはいいんだけど,ソース読むのが他人だといきなり欠点になるとおもう.結局全部覚えなきゃいけなくなるんで. インデントみたいにスペースがいくつってなだけの話でも,これを統一しないと複数人での開発でモメるでしょ.
#俺言語だから,1人でつかうってな話ならいいかもしれないけど.
// kraymor
Re:全部実装しちゃうっていうのはダメかな (スコア:1)
IF IF = THEN THEN THEN = ELSE END
とか書けたよなぁ。
#本当は ELSE も書こうと思ったけど、 caps が多すぎるって怒られたよ。(笑)
Re:言語じゃないけど (スコア:2, おもしろおかしい)
- 0から数えはじめると、かくれんぼなどで不利になるし、お風呂でものぼせやすくなる
- 地上に立っていると、原点は左下(or右下)の方が感覚的にわかりやすい
- 左回りよりも右回りのほうが、時計と同じ方向と教えやすい
ってな問題が発生しますが…。#しまった、ネタとマジが入り交じってしまった……(x_x)
タブレット中毒者。
live (スコア:1)
いや本気だって(^^;
-- wanna be the biggest dreamer
Re:live (スコア:1)
#「ヘイ、みんなのってるかい?今日は言語のプログラムだ。まず、最初になんて書く?」
Re:live (スコア:2, おもしろおかしい)
そのあと 'include' と書くか '!/usr/local/bin/…' でもめ始め、
最後はいつもの宗教戦争。
Re:live (スコア:1)
じゃあ最後にアンコールを!」
作ったけど... (スコア:1)
以前、言語処理系の実装の講義を持っている時に、学生に「自分の好きな言語仕様を定義して実装せよ」って課題を出していたけれど、感動する程凄い仕様を考えた奴はいなかったなぁ。高専の5年生では無理っつー話もあるけど。月並な言語仕様のものは、いろいろ作ってくれたけどね。
ちっちゃい定義言語ものなら、日常的に「俺言語」は作っているけど、結局他人が使ってくれないと、いろいろと楽にならないから、いわゆる開発言語としてはもう作ろうとは思わないな。
各プラットホーム毎にネイティブな (スコア:1)
かつ、俺言語的にはプリミティブ型は無しで。
#どーせWrite once run anywareなんて幻想っぽいし
FX!32みたいな・・・(Re:各プラットホーム毎にネイテ (スコア:1)
私も、昔(今も現役か?)のAlpha用のWindowsNTにあったFX!32っぽいのをやってほしいなーなんて思った時期がありました(笑)。
# 完全にWrite once run anywareが実現されたら今度は寡占だーとか騒ぐのかな(笑)
---------- ------ ISHII Nayuta
不満といえば、 (スコア:1)
Re:不満といえば、 (スコア:1)
とはいえ、現行のEJBもストレージとしてふつうのRDB使うからそこらへんでパフォーマンスの制約があったりとか。
データ格納の概念から変えないと、データ検索の言語はいいの出来ないのかなぁ?データ格納のエレガントな概念って何かあったら拝聴したいっす。
よし、言語ならわしが作っちゃる! (スコア:1, 参考になる)
構文を拡張できる言語 (スコア:1)
演算子を追加定義できる言語ってのがあると便利かも。 演算子に使える文字というのを定義しておいて、その文字の列を識別子みたいに扱う。 LALR(1)とかを動的に変更するのは大変だから、算術式の部分だけ演算子順位法を使って独自に解析するってのはどうでしょう。
オブジェクト指向など、演算子の拡張だけで実装できるものはすべてライブラリとして実装できたりするんじゃないかな。
それって (スコア:1)
SSA 変換はそんなに大変ではないのでは? (スコア:2, 興味深い)
人間がΦ節を書くのは面倒ですよ。
あと、現在のコンピュータアーキテクチャーっておもいっきり非SSA 的ですよね。
だから、結局 SSA 逆変換がいります。
わたし的には「SSA 的コードをネイティブで受理するプロセッサ」が見てみたいです。
# 遅くて使い物にならないと思うけど。
コンタミは発見の母
Re:symbolのきれいな言語 (スコア:2, すばらしい洞察)
これからはオブジェクトファイルとは別に、オブジェクトファイルに書かれるシンボルと人間が読める名前との間の変換表が必要なのでしょう。コンパイラが変換表を出力し、デバッガはそれを読み込んで名前を表示するという具合に。べつにオブジェクトファイルの中に変換表が書き込まれていてもいいですが。
あと、プログラムを書く言語を選ぶ上で、どういう処理系があるか、処理系の完成度はどの程度かなどは重要な要素ですが、言語そのものと処理系とはとりあえず切り離して考えないと、新しい言語を作ることはできないと思います。
鵜呑みにしてみる?