静的型付け言語の潜在開発生産性は今の100倍
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/03/03(日) 18:17:29.51これが生産性を上げる最大の方法。
コンピュータは間違わない、同じ事を何度も高速に行える。
その為に、コンピュータがコードの意味を正確に
認識できる方法が必要。実行しないとわからないことは
コンピュータは認識できない。
すなわち静的型付け言語であれば、実行しなくてもわかるので
コンピュータが理解できる。そうすれば様々な
コンピュータの高度な情報支援が得られる。
コンピュータのバックアップを受け、人間の生産性は
限りなく向上する。
0232デフォルトの名無しさん
2013/03/17(日) 00:41:34.20> ローカルでもレキシカルでもどっちでもいいって、ホントにプログラマの発言かよ。
お前日本語がわからないんじゃね?
この場合は、ローカルとレキシカルの区別は付けなくてもいいとかいう話じゃなくて、
スコープが広い方が影響範囲が大変という話において、
ローカルとレキシカルはどっちも影響範囲は狭いから、
どっちでも大した違いがないって意味だろ。
0233デフォルトの名無しさん
2013/03/17(日) 00:42:33.90> で、ファイルが違ってもレキシカルに特定できるなら問題ないけど、何か?
ファイルが違っていてレキシカルに特定できる場合って?
具体的なコードでお願い。どの言語でもいいよ。
0234デフォルトの名無しさん
2013/03/17(日) 00:48:22.88ヒントあげるよ
レキシカルスコープ/ダイナミックスコープ
スコープの広さはぜーんぜん関係ありませーん
0235デフォルトの名無しさん
2013/03/17(日) 01:01:18.58そんなこと知ってる。
その上で、お前がちゃんと答えを出せるか聞いてる。
0236デフォルトの名無しさん
2013/03/17(日) 01:25:42.35> 範囲が狭いなら、それは人力でもなんとかなるんだよね。
> 普通にローカル・レキシカルよりも広いスコープでしょ?
> 分かりやすく言うのなら、修正対象のファイル以外。
> ローカルとレキシカルはどっちも影響範囲は狭いから、
こんだけ馬鹿さらしておきながら
>> スコープの広さはぜーんぜん関係ありませーん
> そんなこと知ってる。
いやー、そりゃ無理すぎでしょ。3アウトですよ。
0237デフォルトの名無しさん
2013/03/17(日) 01:56:38.77始末に負えない馬鹿だなこりゃ。
0238デフォルトの名無しさん
2013/03/17(日) 02:30:58.24228あたりでそんな雰囲気は漂っているが230で確定、以降は単に弄って遊ばれている。
0239デフォルトの名無しさん
2013/03/17(日) 02:33:07.85レキシカルに特定できる
言語いったら?w
0240デフォルトの名無しさん
2013/03/17(日) 02:50:57.960241デフォルトの名無しさん
2013/03/17(日) 02:55:33.370242デフォルトの名無しさん
2013/03/17(日) 06:46:01.540243デフォルトの名無しさん
2013/03/17(日) 08:05:36.52クロージャの中で別ファイルの変数/関数を参照したり、
生成したクロージャを別ファイルの中で利用したり出来ないってことか。
すげーな。そんな言語見た事ねぇ。
0244デフォルトの名無しさん
2013/03/17(日) 13:07:35.32http://whatis.techtarget.com/definition/lexical-scoping-static-scoping
要約:
静的有効範囲とは、変数の有効範囲を
翻訳前にCode block内部だけに制限する管理方式。
対となる変数の管理方式として、動的有効範囲( Dynamic Scope )が存在する。
こちらは、Code blockの外部からでも変数を操作することが出来る。
注:
静的有効範囲は、一般に言うタダのScope
動的有効範囲はEmacs lispなどでも使われている方式。関数の呼び出し元によって
見える変数が変化する。このため動的という言葉が名前が付く。
で、ここで言ってるLexical scopeってなんぞえ?
0245デフォルトの名無しさん
2013/03/17(日) 13:13:03.09構文を意味する。つまり構文に基づく有効範囲という意味になる。
0246デフォルトの名無しさん
2013/03/17(日) 13:21:07.420247デフォルトの名無しさん
2013/03/17(日) 13:22:15.64で、君が主張するレキシカルには分析できないような、静的型付けでしか不可能な補間機能というのを説明してくれたまい。
0248デフォルトの名無しさん
2013/03/17(日) 13:26:29.26そもそもなんで、ローカルスコープの話に
レキシカルが出てくるの?
0249デフォルトの名無しさん
2013/03/17(日) 13:27:33.07>>225へのレスが>>226だから
0250デフォルトの名無しさん
2013/03/17(日) 13:28:26.15void foo(KURASU kurasu) {
kurasu.hoge(); ← KURASU型だとわかってるから補完できる。
}
void foo(kurasu) {
kurasu.hoge(); ← 何型かわからないから補完できない。
}
0251デフォルトの名無しさん
2013/03/17(日) 13:29:18.48静的型付けならファイルを超えてレキシカルな構造を特定できるが
動的型付けだと無理だ、と言いたかったんだと思うよ
なんでそんな発想に至ったのか理解不能だけどwww
0252デフォルトの名無しさん
2013/03/17(日) 13:30:36.04普通にできるけど?あほ?
動的型のマトモな環境使ったことないの?
0253デフォルトの名無しさん
2013/03/17(日) 13:31:39.73普通にモジュール化とimport機能がある言語なら
普通に補完もタイポ検出も可能だよなー
0254デフォルトの名無しさん
2013/03/17(日) 13:31:49.24foo(KURASU1)
foo(KURASU2)
KURASU1にはhogeがあるが
KURASU2にはhogeがない
void foo(kurasu) {
kurasu.hoge(); ← 何型かわからないから補完できない。
}
0255デフォルトの名無しさん
2013/03/17(日) 13:33:03.40foo(KURASU2)
KURASU1にはhogeがあるが
KURASU2にはhogeがない
void foo(kurasu) {
kurasu.hoge(); ← この部分でブレークしてもKURASU2が入っている時に、KURASU1が入った場合のhogeは補完されない。
}
0256デフォルトの名無しさん
2013/03/17(日) 13:33:59.41信頼性がない。
0257デフォルトの名無しさん
2013/03/17(日) 13:35:20.67その候補以外でもコンパイルに通ってしまう。
実行時じゃないと本当にエラーにすべきかどうかわからない。
0258デフォルトの名無しさん
2013/03/17(日) 13:35:28.91環境と独立したSmalltalk言語なんていくらでもあるんですがね。
GNU Smalltalk然り、Dolphin然り、VistaSmalltalk(#Smalltalk)然り、Redline Smalltalk然り。
0259デフォルトの名無しさん
2013/03/17(日) 13:36:09.88普通にできるけど?あほ?
動的型のマトモな環境使ったことないの?
0260デフォルトの名無しさん
2013/03/17(日) 13:37:48.45じゃあやってみせてよw
ちなみに、fooの呼び出しは
fooの定義のレキシカルスコープ外に
あるものとします
0261デフォルトの名無しさん
2013/03/17(日) 13:38:59.48ばか?
コード補完に信頼性がないんじゃなくて
実際言語仕様的にそういうコードがvalidであり得るのだが?
これから君のことはKURASU君と読んであげよう。よかったね。
0262デフォルトの名無しさん
2013/03/17(日) 13:39:16.35{
value.Function(); //補完できない
}
0263デフォルトの名無しさん
2013/03/17(日) 13:39:20.96こうなったら!
動的型のマトモな環境使ったことないの?
(そんなの無いけどねw)
0264デフォルトの名無しさん
2013/03/17(日) 13:40:10.140265デフォルトの名無しさん
2013/03/17(日) 13:40:33.86それテンプレートじゃんw
マクロのようなものと考えればいい。
マクロがコード補完とか意味わからん。
マクロを使った時にコード補完されるから問題ないんだよ。
0266デフォルトの名無しさん
2013/03/17(日) 13:40:43.65くやしいねえ、KURASUくんww
0267デフォルトの名無しさん
2013/03/17(日) 13:41:06.170268デフォルトの名無しさん
2013/03/17(日) 13:42:21.04全てを物語っているよな。
0269デフォルトの名無しさん
2013/03/17(日) 13:43:51.89KURASU君みたいにアホ丸出しのコードをここに書き込んで
何かの証明になるとでも思ってるの?ばかなの?あほなの?
0270デフォルトの名無しさん
2013/03/17(日) 13:43:55.41動的型言語でinvalidなコードを書いてみて貰ったら良いんじゃないか?
なお、invalidってのは処理系にとって未定義な振舞いで、例えばseg faultするようなヤツな
0271デフォルトの名無しさん
2013/03/17(日) 13:43:58.40ふいたw
動的型にまともな環境無いじゃん。
いつもテキストエディタで書いてるじゃん
Smalltalkだけは例外でいいよ。
あれはIDEと実行環境が一体化した変な世界だから。
それ以外の動的型言語にまともな環境はない。
あるなら知りたいくらいだ。
いい加減テキストエディタの開発やめたいんだよね。
0272デフォルトの名無しさん
2013/03/17(日) 13:44:17.44{
puts( [value UTF8String] );//補完できる
}
template<class Type> void Example( const Type &value ) // 静的型付
{
value.Function(); //補完できない
}
0273デフォルトの名無しさん
2013/03/17(日) 13:44:35.91> なお、invalidってのは処理系にとって未定義な振舞いで、例えばseg faultするようなヤツな
それは違う。
0274デフォルトの名無しさん
2013/03/17(日) 13:45:14.50じゃあ、お前の定義は?
0275デフォルトの名無しさん
2013/03/17(日) 13:45:21.42詭弁だねぇ
0276デフォルトの名無しさん
2013/03/17(日) 13:46:15.83環境込みで動いてる
0277デフォルトの名無しさん
2013/03/17(日) 13:46:36.03>マクロを使った時にコード補完されるから問題ないんだよ。
意味がさっぱり判らん。もっと人間に優しく説明しておくれ
0278デフォルトの名無しさん
2013/03/17(日) 13:47:02.82想定外の動作をするコードだな。
0279デフォルトの名無しさん
2013/03/17(日) 13:47:54.76で、Smalltalk環境でできることが他の動的言語ではできない理由は?
ちなみにKURASU君が大好きそうなEclipseもSmalltalk由来だから
Smalltalkで作った環境がノーカウントだとするとEclipseもノーカウントだぞw
0280デフォルトの名無しさん
2013/03/17(日) 13:48:13.56違うというなら無効(invalid)以外の言葉で条件を定義したら?
異常終了とか。
0281デフォルトの名無しさん
2013/03/17(日) 13:48:22.20テンプレートってのは雛形。
コードそのものではなく、
コード生成機
コード生成器 → コード生成 → コンパイル
こういう流れだから、コード生成した時に
検出できるので問題ないという話。
0282デフォルトの名無しさん
2013/03/17(日) 13:48:34.10それって言語仕様や処理系にとって想定外ってことだよね
まさか言語がエスパーして人間の想定を考慮するはずないもんね
0283デフォルトの名無しさん
2013/03/17(日) 13:48:43.16「想定外」なんていう脳内仕様を要求する基準を持ち出す時点でアウトだなw
0284デフォルトの名無しさん
2013/03/17(日) 13:49:10.42補完の話してたろ都合よくすり替えるなよ
0285デフォルトの名無しさん
2013/03/17(日) 13:49:29.24それは悪魔の証明だな。
君が出来るという証拠を示せばそれで話は終わりだよ。
Smalltalk以外で。
できないなら、そういうことだ。
0286デフォルトの名無しさん
2013/03/17(日) 13:50:06.86まあ健康な脳を持つプログラマなら普通に気付く間違いだがw
0287デフォルトの名無しさん
2013/03/17(日) 13:51:41.780288デフォルトの名無しさん
2013/03/17(日) 13:51:43.72Objective-CとXcodeなら出来るぞ。
0289デフォルトの名無しさん
2013/03/17(日) 13:51:59.28つまりKURASU君の主張を裏付けるためには悪魔の証明が必要だと。
なんていい加減な主張をするんだろうね、KURASU君はw
「まともな環境はない」と断言したからには、ちゃんと理由を示せよww
0290デフォルトの名無しさん
2013/03/17(日) 13:52:15.05その証拠を出すんだ。
今なら勝てるぞ!
0291デフォルトの名無しさん
2013/03/17(日) 13:52:59.350292デフォルトの名無しさん
2013/03/17(日) 13:53:08.05いや、無いの証明をするのは難しいっていうのが
悪魔の証明ってやつだから。
そんなのを要求するほうが頭が悪いで話は終わるんだよ。
0293デフォルトの名無しさん
2013/03/17(日) 13:53:12.70いい加減Engrishみたいに横文字に執着すんのやめたら気持ち悪い
0294デフォルトの名無しさん
2013/03/17(日) 13:54:59.83Objective-CとXcodeなら[NSString s]と打ち込んだ所で、NStringの
selector一覧が出る。
0295デフォルトの名無しさん
2013/03/17(日) 13:55:42.28http://ja.wikipedia.org/wiki/Objective-C
弱い静的型付け
^^^^^^^^^^^^^^^^^
だぞ?
0296デフォルトの名無しさん
2013/03/17(日) 13:57:15.07落ちにワロタw
0297デフォルトの名無しさん
2013/03/17(日) 13:59:10.26Python Omni Completion
http://www.vim.org/scripts/script.php?script_id=1542
Features:
Dynamic type deduction (without actually evaluating statements) #動的に型を特定
Local visibility handling (will complete from all parent scopes). #親の可視範囲から型を特定
completeopt=preview support, displaying python docstrings # 略
Function argument completion (whenever possible) # 引数補完
0298デフォルトの名無しさん
2013/03/17(日) 13:59:22.13バラすなよ。
せっかくいい感じで
釣れたのにw
0299デフォルトの名無しさん
2013/03/17(日) 13:59:23.98Objective-CのCの部分は弱い静的型付けだが、
OO部分は完全にSmalltalk由来の動的型付けだ
0300デフォルトの名無しさん
2013/03/17(日) 14:01:31.95だからこういうことになるわけですね
http://ponpoko1968.hatenablog.com/entry/20101030/1288395400
> 実は、どうやら最新のバージョン2.8においても、objective-cの
> クラスやメソッドを認識する機能が実装されていないようで、
> C言語の関数しか補完候補に現れません。
0301デフォルトの名無しさん
2013/03/17(日) 14:01:49.61うんにゃそれはWikipediaの定義でしかないし、
Cの側面からみた定義でしかない。
あんたらの問題視している範囲から言えば動的型付言語だ。
じゃなにかい?Objective-Cも静的型付言語だから、
静的型付言語も実行時に型異常を起こすから危険って事でいいのかい?
0302デフォルトの名無しさん
2013/03/17(日) 14:02:41.590303デフォルトの名無しさん
2013/03/17(日) 14:03:01.84その下読んだ?
> 2010/11/1補記:
> どうやらobjective-Cクラス/メソッドも認識しているようです。
0304デフォルトの名無しさん
2013/03/17(日) 14:03:09.92もうXcodeは4.x時代ですが、時空の間に取り残された人ですか?
0305デフォルトの名無しさん
2013/03/17(日) 14:04:23.09いや、正確にはNSStringみたいな型定義がないと
補完できないわけでしょ?
0306デフォルトの名無しさん
2013/03/17(日) 14:04:26.250307デフォルトの名無しさん
2013/03/17(日) 14:05:25.16静的型付けと同じような、型定義が必要って話になってるんじゃね?
0308デフォルトの名無しさん
2013/03/17(日) 14:05:48.310309デフォルトの名無しさん
2013/03/17(日) 14:05:49.92> つーか、型定義がある時点で静的型付けでしょ?
馬鹿すぎ
0310デフォルトの名無しさん
2013/03/17(日) 14:08:25.16>>297
>>305
翻訳時に型解決してないので、どうあがいても動的型付けです。
それがわからないなら入門書で動的と静的の違いをもう一回お勉強したら?
0311デフォルトの名無しさん
2013/03/17(日) 14:10:21.780312デフォルトの名無しさん
2013/03/17(日) 14:11:34.76{
puts( [value UTF8String] );//補完できる
}
template<class Type> void Example( const Type &value ) // 静的型付
{
value.Function(); //補完できない
}
0313デフォルトの名無しさん
2013/03/17(日) 14:12:42.95Java厨が忌み嫌うエディタで出来るなんて我慢できないから
0314デフォルトの名無しさん
2013/03/17(日) 14:15:38.65そういう事が出来ない時点で、静的型付というか(というと失礼なので)Javaは糞だよ。
0315デフォルトの名無しさん
2013/03/17(日) 14:20:02.04型定義の重要性を再認識することになった。
0316デフォルトの名無しさん
2013/03/17(日) 14:20:41.390317デフォルトの名無しさん
2013/03/17(日) 14:20:58.35それは仕様通りに動くという意味じゃないだろう?
バグが有っても、バグと認識できずに動いてしまうという話だよね?
0318デフォルトの名無しさん
2013/03/17(日) 14:21:54.35別スレってことは
別のスレを立てろって言ってるのかい?
0319デフォルトの名無しさん
2013/03/17(日) 14:23:07.37建てたければ立てればいいんじゃないの?
0320デフォルトの名無しさん
2013/03/17(日) 14:23:37.00いや、名前は聞いたことあるけど仕組みは理解できてない、か
0321デフォルトの名無しさん
2013/03/17(日) 14:24:15.99NULL objectとかListener objectとかProxy objectとか仕様通りですけど。
0322デフォルトの名無しさん
2013/03/17(日) 14:24:48.30スレタイは「レキシカルスコープも型付けも分かりません、助けて!」に決定
0323デフォルトの名無しさん
2013/03/17(日) 14:25:11.89Active Recordというよりメッセージ転送の話だよ
0324デフォルトの名無しさん
2013/03/17(日) 14:26:09.03「型定義の重要性 〜 コーディングミス解決,補完,etc」
本質的ではないバグに翻弄される人々
タイプミスにどんだけ時間奪われたか計算してみ?
動的型付け言語であっても、型定義があることで
さまざまな問題を解決出来ます。
Objective-Cは定義が存在する動的型付け言語の一つです。
0325デフォルトの名無しさん
2013/03/17(日) 14:27:19.38NULL objectとかListener objectとかProxy object 以外では
仕様通りじゃないということですか?
0326デフォルトの名無しさん
2013/03/17(日) 14:27:54.86いいねそれw
それでいこう。
0327デフォルトの名無しさん
2013/03/17(日) 14:28:07.01そんなの実用的じゃないって返されないように有名な適用例をあげてみた
0328デフォルトの名無しさん
2013/03/17(日) 14:28:16.63javascriptとself、shell scriptぐらいか。
はようたててこい
0329デフォルトの名無しさん
2013/03/17(日) 14:29:04.99鳥でなければ空は飛べないのですか?
0330デフォルトの名無しさん
2013/03/17(日) 14:29:33.25ModelとActive Recordはis-a関係でないのに
Active Recordを継承してModelを作っている。
実用されているが、間違った例だ。
0331デフォルトの名無しさん
2013/03/17(日) 14:30:05.95LazyKも入れよう
■ このスレッドは過去ログ倉庫に格納されています