■■■いいとこ取り新言語の仕様を考るスレ■■■
■ このスレッドは過去ログ倉庫に格納されています
0001*.ini
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNGこれでいいのか?
0009デフォルトの名無しさん
NGNGObjective-Cは?
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGそれってBaicと同じ・・・
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG新人に型の説明するのもいいかげん飽きてきた。
数学でも、変数の型は重要ではない。
重要なのは、その変数がどういう意味を持つのか である。
0016デフォルトの名無しさん
NGNGコンパイラ作る人の身にもなると(以下略
0017デフォルトの名無しさん
NGNGどうやって?
文字列とかは?
0018デフォルトの名無しさん
NGNG貴様!!
M$の手先だな!!
0019デフォルトの名無しさん
NGNGfor 文でも省略を可能にしよう。
for 0 to 10
print;
このように。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGfor 0..10 do
print $_;
構文2
for 0,1,2,3,4,5,6,7,8,9,10 do
print $_;
構文3
for 0..5,4,5,22,4 do
print $_;
0024デフォルトの名無しさん
NGNG整数〜複素数の混在演算を許す。
0025デフォルトの名無しさん
NGNG後から見るとどの引数がどんな意味をもっているのか
その関数を知っていないと分からない。
そこで以下のような書き方を希望
従来
GetWindowText( GetTopWIndow(), *string, size )
新文法
GetWindowText(
#Handle: GetTopWindow() ,
#StringAddr: string,
#Size: size
);
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGサイズを明示的に指定したり
サイズが固定されたりするのはやだね。
0029デフォルトの名無しさん
NGNGそれから、Σ関数のサポートも。
二乗和なら
sum := sigma (k=0 to 100 do k^2);
0030デフォルトの名無しさん
NGNGobject s = Add(12,24,5,25)
のようにAdd(数値)にする。+(プラス)は禁止
0031デフォルトの名無しさん
NGNGメリットは?
カンマで区切るか、プラスで区切るかの違いにしか…
優先順位の問題か?
0032デフォルトの名無しさん
NGNGなにそれ・・・
0033デフォルトの名無しさん
NGNGただし右辺から左辺を引くこと。
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGこのように変数宣言にはかならず接頭 dim をつける。→変数宣言である事を明示する。sum関数は、括弧を使用しなくとも良い。従って、
sum関数をネストする事は許されない。
0036デフォルトの名無しさん
NGNGメモリの割当をOSに依頼する部分は言語側で吸収する。
0037デフォルトの名無しさん
NGNG4.(5+3) は 4.8 と同じ。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG変数の宣言に"dim"を使うの反対!
あれを見ると頭が痛くなってくる。
そもそもあれは配列宣言用の命令(?)で、"dimension"から来てるんだから。
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGobj
object
Dim
local
new
どれがいい?
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG(;´Д`)
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGdim a = 4;
a.lock;
ここの区間、aは読取専用
a.unlock;
a には代入可能
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG変数やないやん・・・
0048デフォルトの名無しさん
NGNG1次元=直線= dim a[10]
2次元=平面= dim a[10,10]
問題ないじゃん。整合性はある。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG心で。
0052デフォルトの名無しさん
NGNGPascalのcaseを採用。
0053デフォルトの名無しさん
NGNGそうか?
あれはあれでいいんじゃないのか?
0054デフォルトの名無しさん
NGNGAdaのランデブを勉強して来い。
0055デフォルトの名無しさん
NGNGついでに列挙型も採用ってか。いらねー。
つーか、switch廃止に一票。
if文だけで最適化はコンパイラが頑張る。
0056デフォルトの名無しさん
NGNGelsif xxxx
elsif xxxx
.....................
糞コードだ(藁
0057デフォルトの名無しさん
NGNGさらに、begin end で囲まなくてもすむようにすれば吉。
あと case のラベルに
文字列を使用可能にしよう。
case message of
'逝ってよし':
print "オマエモナー';
'荒らし':
println 'このスレは'; println 'めでたく';
println '終了しました';
'誹謗中傷,'個人情報':
println 'あぼーん';
end;'
0058デフォルトの名無しさん
NGNG16読め。
005955
NGNGんなこたねーっての。
オブジェクト指向な言語なら、switchなんていらん。
ふだんJavaだけどswitchなんてつかったことない。
0060デフォルトの名無しさん
NGNGライブラリは糞になりそう・・・
0061デフォルトの名無しさん
NGNGIncludeなどの宣言をしないでいきなり使える。
0062デフォルトの名無しさん
NGNGメタランゲージ最高!
0063デフォルトの名無しさん
NGNG006455
NGNGJavaのライブラリの中にswitch文あるか数えてみ。
やったことないけどさ^^
0065デフォルトの名無しさん
NGNG名前は同じだが、中身Java(藁
0066デフォルトの名無しさん
NGNGFOR - NEXT
WHILE - WEND
REPEAT - UNTIL
と、ループを閉じる命令を個別に用意する。
こうするとネスティングの対応が見やすい。
Cの
}
}
}
とかPascalの
end
end
end
だと対応関係を見つけるのが大変。
0067デフォルトの名無しさん
NGNGそれは慣れじゃないかと・・・
0068デフォルトの名無しさん
NGNG演算子をオーバーライド
本気にするなよ(藁
0069デフォルトの名無しさん
NGNGいや、全然楽だって。閉じてる命令が違うと。
0070デフォルトの名無しさん
NGNG007167
NGNGちゃんとしてればそこまで気にならないとおもう・・・
0072デフォルトの名無しさん
NGNG激同意。
0073デフォルトの名無しさん
NGNGswitch
case x
〜
end switch
end function
のほうが楽。
0074デフォルトの名無しさん
NGNGKL1参考にして。
0075デフォルトの名無しさん
NGNG言語自体見直す必要が・・・
0076デフォルトの名無しさん
NGNG(DIM文に制御が来た時にサイズを確定してメモリを確保)
ソースの段階で確定しなくてよい。
(BASICと同じ)
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGついでに、Delphiのような開発環境も欲しい
…なんか、それぞれの長所というよりは、
短所をしょいこんだ言語が生まれそうだな
0080デフォルトの名無しさん
NGNGswitch case を文字列に対応させるなんて めっちゃ簡単だよ。
プリプロセッサ使って、
case V of
A: begin 処理A end;
B: begin 処理B end;
C: begin 処理C end;
end
を、
if V=A then 処理A goto L1; endif;
if V=B then 処理B goto L1; enfif;
if V=C then 処理C goto L1; endif;L1:
に置き換えるだけでよい。
0081shige
NGNG0082◆3DelPhIM
NGNG0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGそんなの開発環境の入力支援でやれば良い。
0085
NGNGC++のtemplate
は便利。
0086デフォルトの名無しさん
NGNGコンパイラなんか作らなきゃいいんだよ。smalltalkやrubyみたいにする、と。
型の概念は変数じゃなくObjectの中に(暗黙のうちに)存在する。
気にせんで済まそうと思えば済ませられる。
>>22
Cなんぞの文法を採用したらSchemeの存在意義が消し飛ぶだろ。
無名関数(へのポインタ)も作れない言語だぞCは。
それとも、「CそのものじゃないがCに似た」のがよいということなら、
LUAっていう言語なんぞを見ておくと吉。
>>25-26
たしかにその悩みはSmalltalkで一発解決するわな。
その手の悩み持ってる人は、悪いこと言わぬから、一度(だけ)Smalltalk見ておけ。
>>29
そんなもの、イテレータさえあれば、もっと器用で有用なことが一杯やれるぞ。
とりあえずrubyあたりの眺めておけ。
>>36
そんなの珍しくもなんともないな。Cしかやったことないの?
#そのCですら、mallocはシステムコールのラッパー(+α)だが。
>>42
勘弁してくれ。配列をデフォだと思うのは。
>>44
点(広がりが無い)を0次元って呼ぶんだってば。覚えとけ。
>>66
その考えは、「同じ種類の」ループをネストした途端に、破綻するぞ。
同じ終了単語が並ぶことになるから、元の木阿弥な問題が発生するだけのこと。
viみたいに「対応するカッコを一発で探す」機能のついた(Programing用の)マトモなエディタを
常用していれば、そういう下らない発想は沸いてこない。
厨房は多分、ループの種類ってのは言語仕様に含まれたたかだか数個しか存在しない、と
信じているんだろうな。あんなもん、ちょっと柔軟性のある言語なら、
「幾つでも自作できる」んだぜ。そういう世界で終了単語をいろいろこね回していると
穴掘って埋める刑務所仕事みたいな気分になってくるぜ。
>>79
OOPと関数型って、合体きつくない?
ましてGUI RADは、Objectの状態を目の前に晒す発想だ。
0087デフォルトの名無しさん
NGNGTOWNSで動いてたHI-Cでは(書き方は違うけど)実現してた。
0088無名λ式
NGNG> オブジェクト指向なScheme
goops
http://www.gnu.org/software/guile/gnu-guile-projects.html#Core
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGScheme なんかのほうがよさげ。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGHSPにオブジェクト指向
作者が作れば間違いなしさ(藁
0096デフォルトの名無しさん
NGNG関数や命令の範囲がどこまであんねんってのがわからなきついんでカッコ分化マンセー
あと、変数の頭に必ず指定の接頭詞つけなきゃコンパイルエラーとか。
厨の多くはこれで抑制できる
↓と
(°д°)ウマー
0097perl perler perlest
NGNG> 省略形の一切できない言語が業務的にうれし。
ガ━━(゜д゜;)━━ン!
0098デフォルトの名無しさん
NGNGRUBYのスコープ=接頭辞ってのはわりと良いアイデアだと思う
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG今 漏れは言語を作っているのだが、不幸なことにそれは「いいとこどり」なものではない。
漏れのかわりに誰かいいとこどりなのを作ってageてくれぃ。
…
実際は、いいとこどりなんて無茶な発想だ、と皆が判っているので、手をつけてないだけだろ。
2つの言語の「いいとこ」が必ずしも仲良く合体できるとは限らないし、
人によって「いいとこ」の捉え方もばらばらだから、
>>1だけにとってヨイ言語が出来るだけだろう。
01051
NGNG俺のためにみんな、ありがとう。後は勝手にやってくれ。
0106デフォルトの名無しさん
NGNG別にアンタのタメにやってたわけじゃないだろう。
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGスパゲッティプログラムの読み方
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=997717227
の人ですか?
0109デフォルトの名無しさん
NGNG皆がいいと思うものはできないと思う。
というわけで、斬新なアイディアで新しい言語を考えよう。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG作ろう。
0116デフォルトの名無しさん
NGNG本気ならお前がアイデア出せ。
0117デフォルトの名無しさん
NGNGI write "HelloWorld".
とかいう風にするとか。
変数の定義は
I make 型 変数名.
て感じで・・・・・・
こんなアイディアでどうでしょう。
非常に書きやすく、読みやすくなると思うのですか。
0118デフォルトの名無しさん
NGNGCOBOLつかえ。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG科学技術計算用。(OSとかドライバとかは書けなくていい)
0121デフォルトの名無しさん
NGNGAPLつかえ。
0122デフォルトの名無しさん
NGNGプリプロセッサ使えばできると思うんだが・・・
つか、あまり書きやすくも読みやすくもないと思うぞ・・・
0123デフォルトの名無しさん
NGNGAPL ってこれか
http://member.nifty.ne.jp/ysaigusa/jp/apl/guide/intro/index.html
0124デフォルトの名無しさん
NGNGすみません、勘弁して下さい。
ttp://member.nifty.ne.jp/ysaigusa/jp/apl/guide/index.html
っていうのを見てみましたが
私にはとても使えそうにありません。(読めねーっ。)
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG何故
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGんじゃこりゃーーーーー
0130128
NGNG言語を作成中だから
0131デフォルトの名無しさん
NGNG作成中なら、この場でみんなで語りあってよりいっそういいもの
にしませんか。
0133デフォルトの名無しさん
NGNG>いや、仕様書から自動的にコードが生成されるような仕組みに…
仕様書そのものが言語になるようにする。
フォーマットに従い仕様書をつくったら、そのままコンパイラへGO
0134デフォルトの名無しさん
NGNG自分で客先に行って必要事項をまとめてくれる自律型仕様書きぼーん
0135デフォルトの名無しさん
NGNGそれが更に進歩すると自律型お客様+自動作成ソフトになって、
プログラマやSEがシツギョーン。
0136デフォルトの名無しさん
NGNG明示的でないイテレーションていうと Lisp の map系関数とか、同じことが
Smalltalk や Ruby のブロックでできるけど、もっと過激なやつでこういう
のはどうでそ。
例えば三角関数 sin(x) は実数を引数に取って実数を返す関数ですよね。
これに実数を要素とする配列などの任意のコレクションを与えると、暗黙に
イテレートされて復帰値としては結果が格納された配列が返るようにする。
Java 風に書くと
double[] x = {0.1, 0.2, 0.3};
double[] y = Math.sin(x);
もちろん組込み関数だけじゃなくて、ユーザが定義した関数やメソッドも
自動的にこの機能が使えることにする。
int hoge(int n) { .... }
int[] m = {1, 2, 3, 4};
int[] n = hoge(m);
これが可能であるためには、Java のような型の強い言語でなきゃダメだし、
また配列だけでなくコレクションクラスを統一的に扱える必要があるかも。
実はこれ MATLAB や Speakeazy 系の数値計算パッケージでは以前から
やってることだけど、なぜか一般の高級言語では見たことない。
便利だと思うんですけどね。それともすでに可能な言語あるのかな?
0137デフォルトの名無しさん
NGNG新しい関数を自動生成する方式でよかったら、
Schemeあたりすぐに実装できそうな気が。
(define maped-sin (make-maped-function 'sin))
(maped-sin aCollection)
...みたいな。
同じ関数が値にも集合にも使えるというのはどうだろう?
集合を引数にとって集合を返す関数にそのような機能を
自動的に適用しようとすると、おかしなことになりそう
な気がする。
0138デフォルトの名無しさん
NGNG(define hoge (lambda (n) (...)))
(map hoge listm)
もしくは
(map (lambda (n) (...)) listm)
0139138
NGNG137が自分より建設的で高級な提案をしてるよ
Hazukasi〜Yo〜
0140デフォルトの名無しさん
NGNGmap系の関数は知ってまふが、暗黙にできるとこがミソなのですが。
ダメかな・・・。
>>137
> Schemeあたりすぐに実装できそうな気が。
なるほど make-maped-function てのがあるんですね。
> 集合を引数にとって集合を返す関数にそのような機能を
> 自動的に適用しようとすると、おかしなことになりそう
> な気がする。
確かに Lisp, Ruby など型付けの弱い言語では混乱が起こる
のですが、Java, C++ などの強い型の言語ならば問題ないの
てはないかと・・・。
0141140
NGNG0143デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG>これが可能であるためには、Java のような型の強い言語でなきゃダメだし、
>また配列だけでなくコレクションクラスを統一的に扱える必要があるかも。
(ソースだけじゃなくバイナリレベルで)統一的に扱うためには、
型が強かったら却って不都合じゃないの?
混乱を強型で防げるのかなあ。再帰的な構造のデータを突っ込まれたときに、
どっちの挙動をすべきか?の判断は、型だけでは結局判断できないよね。
0146136
NGNG> ソースだけじゃなくバイナリレベルで)統一的に扱うためには、
> 型が強かったら却って不都合じゃないの?
うーん、どうでしょう。あまりその辺ははっきりイメージしてないけど。
例えば全てのコレクション(配列も含めて)はクラス Collection から
派生するようにして、list や set クラスは、Collection への暗黙の
型変換を可能にすれば C++ や Java で実現してる程度のことはできる
のではないでしょうか。あるいは Java のように Collectionable イン
ターフェースを実装したクラスがコレクションと見なされる、というように。
> 混乱を強型で防げるのかなあ。再帰的な構造のデータを突っ込まれたときに、
> どっちの挙動をすべきか?の判断は、型だけでは結局判断できないよね。
最悪、ネストは1レベルだけのマッチングに限定するとか(使いモンに
ならない?(^^;)そして C++ のテンプレートのように無限の再帰定義を
不可能にする。例えば変数は
list<int> li1
list<list<int>> li2;
list<list<list<int>>> li3;
のように型を明示して宣言されなければならない。ここで
Collection<int> hoge(Collection<int> ci)
という関数があったとき、Collection<int> ≡ list<int> がマッチング
するんだけど、li3 は一皮剥いたときに list<int> にならないから
hoge には渡せない。li1 はそのまま渡され、li2 は暗黙にイテレート
されて渡される、とか。
0147デフォルトの名無しさん
NGNGAdaなら引数の型が違えば別の関数として認識してくれるから
同じ名前で引数の異なる関数が複数作れるけど。
function sin(x: vector) return vector is
...
end sin;
function sin(x: matrix) return matrix is
...
end sin;
これじゃダメ?
0148136
NGNGはい、強い型の言語はこういうことができますね。C++ でも可能です。
ただ今回の話は明示的にではなく暗黙にやってほしいということです。
で、それで気がついたんだけど、こういう多重定義を許すと hoge(int)
と hoge(list<int>) が両方とも明示的に定義されていた場合、
list<int> ls;
hoge(ls);
はどっちの hoge が呼ばれるのかという曖昧性がありますね。
まあ、こういう多義性に関わる曖昧さは、ある程度暗黙の型変換を許す
C++ なんかだと baka(char) と baka(long) があったとき baka(10)
という呼び出しは曖昧になるわけで(型付けが極めて強力な Ada なんか
では起こらないのかも)、まあ、これは決めの問題でどうにでもなるでしょう。
それと曖昧性でもう1つ気がつきまし。
Object というクラスは全てのクラスの基底クラスであるとすると
hogehoge(Collection<Object> co)
という関数に対して >>146 の li3 は
list<list<list<int>>> li3;
だったから
hogehoge(li3) という呼び出しは可能なんですが、このとき直接
list<list<list<int>>> ≡ Collection<Object>
とマッチするのか、一皮剥いて(外側の list<> が暗黙にイテレートされて)
list<list<int>> ≡ Collection<Object>
とマッチするのかやはり曖昧になります。
まぁ、これも最外側マッチングのルールとか決めればいいのかな。
だんだん苦しくなってきたかも (^^;
0149デフォルトの名無しさん
NGNGhttp://slashdot.org/developers/01/08/15/234223.shtml
0150デフォルトの名無しさん
01/09/02 05:54ID:3bXnTTWA↓
そのままコンパイル
↓
(゚д゚)ウマー
0151デフォルトの名無しさん
01/09/02 19:06ID:o3BNP3Lw> VISIOでフローチャート書く
フローチャートはやめとけ(笑
ただいわゆる完全なグラフィカルプログラミングってのも興味あるのだが。
LabView とか、その作りというか発想はなかなか画期的だとは思う。
でも、実は使いにくいのよねん。
0152デフォルトの名無しさん
01/09/03 21:25ID:wy3QSGS6関数型言語は非常に多機能だから、関数型言語からλ抽象(無名関数)、高階関数、
抽象データ型、遅延評価、パターン評価、などなどの特徴を取り入れる。
んで、C++のSTLのようなことするために関数型言語から多相型を取り入れる。その代わり、
オブジェクト指向を取り入れたいので、副作用は有りにする。モナドとか言っても
誰もわかってくれないだろうし。
Schemeみたいにしたいのはやまやまなんだけど、リストによる記法が見難いので、
普通の命令型のような中値記法を取り入れる。そのかわり、プログラムはリスト
として扱えるし、マクロも取り入れる。ちょうどDylanのような感じかな。
型有り、型無しのそれぞれの特徴を生かすため、宣言があれば型有り変数、無ければ
型無し変数ということにする。Perl6がそうなるらしいね。
あとは、C#のボクシングとか、オブジェクト指向の機能とかを取り入れていけば
いいんじゃないかなあ。
0153デフォルトの名無しさん
01/09/04 00:38ID:FYWyf6W.>>152
> 型有り、型無しのそれぞれの特徴を生かすため、宣言があれば型有り変数、無ければ
> 型無し変数ということにする。
変数宣言を必須にする動機の1つに、変数名のスペルミスをコンパイル時に
検出するためってのがあると思うんだけど、宣言のない変数を暗黙に型無し
変数として有効にしちゃうと、それができなくなって型有り言語のメリットが
薄れるんじゃないかな。
0154デフォルトの名無しさん
01/09/04 00:53ID:taq6YMMsスペルミスは、なにもコンパイル時にチェックする必要は無いじゃん。
スペルミスチェッカーでも別に付けとけば?
0155デフォルトの名無しさん
01/09/04 01:00ID:7wOQam5w0156デフォルトの名無しさん
01/09/04 01:04ID:taq6YMMs0157デフォルトの名無しさん
01/09/04 01:45ID:RaNfIHXgそうだね。そうだとすると、型無しだと宣言する方がいいね。
0158デフォルトの名無しさん
01/09/04 02:23ID:ih5eONCogoto文が「逝ってよし」だったり、
default文が「名無しさん」だったり、
return文が「あぽ〜ん」だったりするのだろうか。
0159デフォルトの名無しさん
01/09/04 02:35ID:JE/PAhhI14: 数値←キー入力
15: もしも(数値 が1)ならば80へ逝ってよし
20: もしも(数値 MOD Iがゼロ)ならば
30: 数値=数値÷I
40: 表示(数値+スペース)
50: そうでなければ
60: I=I+1
70: 15へ逝ってよし
80: 糸冬了
0160153
01/09/04 03:56ID:z5/49YHM> スペルミスチェッカーでも別に付けとけば?
まーね。要するに、その言語をどういう用途に使うかっていうポリシーの
問題だから。色々なアプローチがあってもよいとは思う。
多人数で分担して大規模なシステムを開発するような場合は、コンパイル時に
厳密にチェックできるようにした方がよいだろうし、そうでないならお気楽な
方がよいって考えもあるわけで。
外部のチェッカはアラームを上げることまでしか出来ない。似たよな変数名が
あったとき、意図的にそういう名前を付けてるのか typo なのかは作った人間に
しか最終的な判断はできないわけで、コンパイル時にエラーにできる構文なら
実行時までバグが見逃される危険が減るのは確か。
0161デフォルトの名無しさん
01/09/04 04:39ID:F8eDitgE宣言と初期化を同時にするのはどうでしょう?
0162153
01/09/04 05:45ID:z5/49YHM> 宣言と初期化を同時にするのはどうでしょう?
意義なしだけど…。C++ みたくブロックの途中で変数宣言できるようにすれば
さらに嬉しいでしょうね。
でも宣言時の初期化を必須にするという意味?
それだと効率至上主義の人から文句が出ることがあるかも。
例えば C/C++ の場合
int c = 0; /* 初期化は必須? */
char lastChar = 0; /* 初期化は必須? */
while((c = getchar()) != EOF) {
lastChar = (char)c;
}
if (lastChar == ....) {
....
}
変数 c の宣言は、まあ構文をなんとかすれば while のところでできるかも
しれないけど、最終入力文字を格納する変数 lastChar は、whileブロック内で
宣言すると その下の if 文ではスコープから外れるので、どうしても whileの
外で宣言せざるを得ない。この場合 lastChar = 0 という初期化はムダなわけ
だよね(書き方によっては回避できるかもしれないけど)。
コンパイラの最適化処理が十分賢ければ、前もって lastChar を初期化する
必要はないと判断してムダなコードを生成しないようにできるかもしれない
けど…、どうかな。
0163153
01/09/04 05:46ID:z5/49YHM○異議なし
0164153
01/09/04 05:49ID:z5/49YHMムダじゃないなぁ。例が悪かったゴメソ。
0165デフォルトの名無しさん
01/09/04 22:48ID:ddDwxAtA画面上で電子ブロックみたいな部品を配置するやつってあったよね?
0166デフォルトの名無しさん
01/09/04 23:23ID:OYi1KVOE副作用ありの遅延評価か。デバッグ楽しそうだね。ついでだからスレッドについ
てはADAのランデブとJavaのモニターともうちょっとプリミティブな奴を好きに
組合せて使える。もちろん、ユーザレベルスレッドとカーネルレベルスレッドと
混合のどれでも同じように動いてくれる。
それから、SQLもCORBAもライブラリじゃなくて言語レベルで組みこんじまえば完
璧だね。perlがこれだけ流行っても誰も使わないあの謎のレポート機能も欲しい
な。
こんな言語のコンパイラを本気で開発したら、もの凄い工数が必要になって日本
の失業率下がるぞ。
0167デフォルトの名無しさん
01/09/05 00:32ID:wY.x.P2I> 画面上で電子ブロックみたいな部品を配置するやつってあったよね?
昔 LabView を 2,3ヶ月使った感じでは、主な用途は計測制御用ではあるものの
汎用言語としての記述力も十分で、システムとしては画期的。これ作った人尊敬
する、のだけど…
視覚的で分かりやすいのはプログラムが単純な場合で、ちょっと複雑になると
途端にゴチャゴチャしてきてメンテナンス性も低下するという欠点がある。
おそらくビジュアルプログラミング一般に共通する問題じゃないかな。
まあ今後に期待したいとこではある。
参考までに既存ビジュアルプログラミング環境のリンクを揚げとく。
他にも沢山あると思うが。
LabView
http://www4.airnet.ne.jp/quattro/char.html
VisualControl
http://www.kealyn.com/vcgra.htm
AVS
http://www.kudpc.kyoto-u.ac.jp/Services/AVS/Guide/node7.html
SoftWire
http://www3.astrodesign.co.jp/softwire/softwiretop.html
IntelligentPad
http://www.pads.or.jp/ip/tutorial/timer02.html
必ずしもオフィシャルでもトップページでもなく、スクリーンショット
のあるページ。
0168デフォルトの名無しさん
01/09/05 00:46ID:/gpTLwPESchemeも副作用ありの遅延評価だけど・・・
0169デフォルトの名無しさん
01/09/05 02:57ID:jFtajofc>それから、SQLもCORBAもライブラリじゃなくて言語レベルで組みこんじまえば完璧だね。
なおさらScheme(というかlisp)の思想の様な気がするけど?
0171デフォルトの名無しさん
01/09/05 19:59ID:zoyp8Lbo持ってないわけだから、機能を追加してもパーサに手を入れる必要が
ほとんどない。
どんなに機能を追加しても Lispという言語のアイデンティティに何ら
影響しないってのは、考えてみればスゴイ言語だ。
0172デフォルトの名無しさん
01/09/05 23:21ID:.VljIIMQ追加しようとしたって無理だよね。
後者二つはSchemeにあるけど、仕様としてはじめから組み込まれてるものだし。
0173171
01/09/05 23:56ID:zoyp8Lbosyntax レベルでは Lisp には S式しかないってことなんで
> でもCommonLispにコンパイル時型チェックや継続や遅延評価などを仕様をいじらず
この辺は semantics のレベルなんじゃないかな。
■ このスレッドは過去ログ倉庫に格納されています