型あり言語と型なし言語
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG手軽に使う(スクリプト言語とか)なら型がないほうがいいと思いません?
作るほうも楽だし。(藁
入り込んだ?やつを書くなら型はあったほうが良いと思いますです。
その辺の議論をしましょう。
0002名無しさん@お腹いっぱい。
NGNG0003ということで
NGNG0004じゃあ、議論を展開する為に
NGNGむしろ手軽に使うものにこそ型はあるべきだ。
何故なら手軽に使うということは、使う頻度も高くより効率的な処理を求められるからだ。
入り組んだヤツを書く場合は型は省略するべきだ。
何故ならヴァリアブルにすることで余分な変数宣言が減り使いまわせ、ソースが簡潔になるからだ。
0005展開する価値はない
NGNG** 終わり **
0006名無しさん@お腹いっぱい。
NGNG00074
NGNGでも、今思ったけど、言語に型有りとか型無しとかあんの?
型無し(variableのこと?)って、それも使える言語があるということでは?
0008>7
NGNG0009500h.
NGNG型宣言「できても」いいと思う。
つまり、どっちでもいいように作られているのが理想ですね。
#となるとVBが理想か・・・。ケッ。
0010>7
NGNGそりゃ、無理矢理な理論展開してもダメに決まってるがな。
0011名無しさん@お腹いっぱい。
NGNGBasic 系の「型無し」とは、「型宣言の必要なし」のことだろう?
または実行時型チェックしか実装されていない。
まぁ、厳密には、Lisp だって「1種類の型」を持っているわけで、
「型無し」とはいえないなぁ。
0012>9
NGNG0013名無しさん@お腹いっぱい。
NGNGある変数にすべての型のインスタンスを代入可能っていう意味だと
おもうんだけど、どうでしょうか?
0014名無しさん@お腹いっぱい。
NGNGとか弱い(weakly-typed)とかいう言い方もする。
いくら型宣言できても、単一の記憶領域を異なる型として参照できて
しまえば、それはとてつもなく弱い型である。
0015名無しさん@お腹いっぱい。
NGNG0016>14
NGNGのインスタンスを代入できない言語までありますよね。
0017名無しさん@お腹いっぱい。
NGNG0018500h.
NGNGA$ = A%
なんてできないわけだし。
しかし、型の話題してるときに、LINGO(LISP系)で配列の初期化を
a = [0@`0@`0@`0@`0]
dim = [a@`a@`a@`a@`a]
とした場合(つまり、記憶領域の確保を行おうとした訳です)に
dim[1]、dim[2]、dim[n]が同じ結果になるっていう現象に悩まされました(笑)
これ、言語仕様的には正解なんだろうけど、マニュアルに書いてないぞー(涙)
まあ納得しましたけど。
しかし、LINGOって
a = "文字列だったり"
a = 999
a = 999.999
a = [1@`2@`3@`4@`5]
a = [a#:1@`b#:2@`c#:3]
a = (書けないけど、インスタンスのアドレスとか)
この構文を許すんだけど、どうやって記憶領域の確保してるんだろう?
って思いますです。変化する都度に動的に割り当てて、ガベージコレクションかな?
a = 99.9999
a = "STRING"
a = 100.000
a = "クソ長い文字列"
なんて事を繰り返すと、いつかメモリがなくなってしまうのであろうか(笑)
っていうのも、LINGOはコンパイルするという概念が御座いまして・・・。
00191
NGNGそうです。
variable o;
o = 1;//oはintの1
o = "string";//文字列に変化
こんなイメージなんですけど・・・
>>18
struct{
unsigned char type; // 0=integer@`1=string
union
{
int integer;
char *string;
} data_area;
}variable;
こんなふうに管理してるんじゃないかな?
LINGOてJavaVMみたいなので動くんですか?
0020>18
NGNGバリアントOLEVariantそのものに思えますよ
0021500h
NGNGなるほど。
LINGO(Director)自体はクロスプラットフォームなので、
VMみたいなもので動く、が正解ですね。
(プロジェクターという実行ファイルにすると巨大な
ファイルが出来ます。といっても2MB程度のものですが。)
ソース自体をPコード的な中間言語に置換していると思います。
余談ですが画像ファイルなども独自の形式で圧縮して持っているはずです。
0022pcode 本店
NGNG0023つれづれ
NGNGそれ以外はアドレスを持っていて、その先に型の識別があるって
感じでしょうね。
バイトコードについては、ASCIIから出てるLittleSmallTalkの
本なんかが参考になるかも(あと、ブルーブック、でしたっけ?)
GCは欠かせないでしょうね。
0024500h
NGNG呼んでません。
でも、宜しくご教授ください。
色々と(笑)
0025>18
NGNGdim = [a@`a@`1@`1.234@`"test"]
とかも出来ます。値以外は全て参照を記録してる感じですな
つまりaを複数書くと同じaを差しちゃうんですな
aの複製を作らなければいけないという事ですな
0026名無しさん@お腹いっぱい。
NGNG感じられると思うけど?
002726
NGNG型無しが有利かは用途によると思います。
CGIなら入り組んでいても形無しのPerlで書くほうが、
Cで書くより大抵の場合楽です。
0028名無しさん@お腹いっぱい。
NGNGあったとして、これらのどれを変数に代入(?)してもよい、っていうのがあるです。
最近使ったもんで。
0029名無しさん@お腹いっぱい。
NGNG導出ってどういう意味?
ってか
この場合導出って言葉が派生と同義なら
型有りでも当たり前にできる事が多いと思うがどうか。
(つーかオレはC++とJavaしかしらんがどっちもできるでよ)
003029
NGNGC++はポインタで指すことができるだけでさすがに変数に代入までは
できなかったよなたしか。
シッタカしてしまってすまんこってす。
0031名無しさん@お腹いっぱい。
NGNG0032名無しさん
NGNGPerlとCでCGIを書くときで比較しちゃうか...
大抵の人はperlって答えると思うけど、
それって文字列の扱いとか外部コマンドによる支援
が楽とかそういうのも影響しちゃって
うまく型付けの特長だけ抽出した比較じゃ
ないんじゃないかな。
どう考えてもchar*での文字列の扱いが
楽なんて人はいないよね。C++/Javaのstring
ならいざしらず。
0033名無しさん@そうだ謙虚にいこう
NGNG確かにそうなのかもしれませんが、型の有り無しとは関係ない気が
します。
オブジェクトの参照に対する言語の実装の仕方?というか。
気をつけないといけないのは確かにそうですね。
Javaでよくひっかかりました。
>28さん
確かに便利ですが、型の有り無しとは関係ない気がします。
言語の一機能というか。
派生できる言語が便利なのはほんとにそうですね。
型には、Classとprimitiveな型とがあると思うのですが、
primitiveな型はtypedではなくて、Classはtypedされて
いる言語があるのでしょうか?
#型あり型無しという場合はほとんどprimitiveな型のことですよね?
003427>32
NGNGCGIやテキスト処理を型有言語で書くと面倒な変換が
たくさん入りますが型無言語で書くと楽です。
0035エロリ・ザ・男爵
NGNGperlだとバイナリファイル吐き出すのにpack()なるものを使わないといけなくて面倒だった。
俺が使い方知らないだけかも知れないけど。
003627
NGNGによって型有り形無しの適性が決まってくるとしか言いよう
が無いと思う。
003727>35
NGNGCGIや処理の一部にはCの方が簡単に書けるものもあるか
もしれませんが、バイナリファイルを扱うCGIでもそのCGI全体
としてはPerlの型を意識しないで済む点が有利に働くものが
ほとんどのように思います。
0038名無しさん@お腹いっぱい。
NGNG社内ユースのWebアプリケーションとして大規模なCGI組むと書式指定のテキスト
処理が鬼のようにあるから結局なんらかのメソッド呼び出しが必要に
なって型なしだから楽ってことはないんだよ。
003938
NGNGがあやふやになってくるといやだからやっぱ型が強い言語を使いたく
なるんだよな。
ってことで1に逆戻り。
004027>38
NGNG型有りだともっと大変だと思うけどね。
最初から結論決めてそれ以外を認めない人とは話しても
無駄ですね。
004127
NGNGします。
入り組んだWebアプリケーションだからといって、
書式指定のテキストが必ず山ほどあるわけでも、
書式指定ばかりだというわけではないのが普通だよなぁ。
書式指定よりそれ以外の方が多ければどう考えても
型無しの法が楽だよなぁ。
結局プログラムの用途しだいだよなぁ。
0042名無しさん@お腹いっぱい。
NGNGこれが煽りの典型です
0043>42
NGNG0044名無しさん@お腹いっぱい。
NGNG0045>44
NGNGお互い数レス目からイヤミを入れだしたら議論にならんよ
0047名無しさん@お腹いっぱい。
NGNG0048名無しさん@お腹いっぱい。
NGNG0049名無しさん@お腹いっぱい。
NGNGhttp://www.egroups.com/message/extremeprogramming/7094?threaded=1
0050名無しさん@お腹いっぱい。
NGNG0051>47
NGNG0052>49
NGNG■ このスレッドは過去ログ倉庫に格納されています