int a = 1;
a = "a"; ← エラーになる。
型がない言語ではできない芸当です。(爆笑)
人間がやっていたことを、コンピュータにやらせる。
これが生産性を上げる最大の方法。
コンピュータは間違わない、同じ事を何度も高速に行える。
その為に、コンピュータがコードの意味を正確に
認識できる方法が必要。実行しないとわからないことは
コンピュータは認識できない。
すなわち静的型付け言語であれば、実行しなくてもわかるので
コンピュータが理解できる。そうすれば様々な
コンピュータの高度な情報支援が得られる。
コンピュータのバックアップを受け、人間の生産性は
限りなく向上する。
前スレ
静的型付け言語の潜在開発生産性は今の100倍 ×4
http://toro.2ch.net/test/read.cgi/tech/1383572174/
探検
静的型付け言語の潜在開発生産性は今の100倍 ×5
■ このスレッドは過去ログ倉庫に格納されています
2013/11/24(日) 15:06:08.63
587デフォルトの名無しさん
2013/12/07(土) 19:55:54.02 どうせES6以降のコードはES5の実行環境では動かないのだから、use "ES6"とか
オプションつけたら変数スコープも常識的なブロックスコープになる機能が欲しい。
let導入で二種類の変数スコープが併存とか無意味すぎ。
もう今のvar相当はobsoluteで使ったらログに警告吐くぐらいの勢いで良い。
オプションつけたら変数スコープも常識的なブロックスコープになる機能が欲しい。
let導入で二種類の変数スコープが併存とか無意味すぎ。
もう今のvar相当はobsoluteで使ったらログに警告吐くぐらいの勢いで良い。
588デフォルトの名無しさん
2013/12/07(土) 20:16:20.87 JSは互換性にも配慮されているので問題ありません。
589デフォルトの名無しさん
2013/12/08(日) 15:40:27.33 低級言語の仕様を変えさせないという目的もある
高級言語を気が済むまで改変させることで低級言語が守られている
高級言語を気が済むまで改変させることで低級言語が守られている
590デフォルトの名無しさん
2013/12/08(日) 16:01:49.94 ?
591デフォルトの名無しさん
2013/12/08(日) 16:07:17.43 >>587
移行というのは前のをバッサリ切り捨てるやり方じゃダメなんだよ。
いきなり全てを変えるなんて出来やしない
両方共存出来る状態を作って少しずつ変化させていく。
こうやらないとだめ。
> どうせES6以降のコードはES5の実行環境では動かないのだから、
動く。Polyfill系なんかがそう。
動かないのはletなどを使ったES6専用のコードだけ(コンパイルエラーになる)
こうやって、部分的にES6対応コードに置き換えていく。
varに関してもletに単純に置き換えれるように
コードを整理することは可能。これでES6でもES5でも動くコードになる。
これはES6に早い段階から対応していくという方針のやり方。
逆に将来ES6が十分に普及してしまった後にレガシーなES5を移行する。というような場合でも
varとletの両方が使えるならば、徐々にES6コードに置き換えるていくことが可能になる。
移行というのは前のをバッサリ切り捨てるやり方じゃダメなんだよ。
いきなり全てを変えるなんて出来やしない
両方共存出来る状態を作って少しずつ変化させていく。
こうやらないとだめ。
> どうせES6以降のコードはES5の実行環境では動かないのだから、
動く。Polyfill系なんかがそう。
動かないのはletなどを使ったES6専用のコードだけ(コンパイルエラーになる)
こうやって、部分的にES6対応コードに置き換えていく。
varに関してもletに単純に置き換えれるように
コードを整理することは可能。これでES6でもES5でも動くコードになる。
これはES6に早い段階から対応していくという方針のやり方。
逆に将来ES6が十分に普及してしまった後にレガシーなES5を移行する。というような場合でも
varとletの両方が使えるならば、徐々にES6コードに置き換えるていくことが可能になる。
592デフォルトの名無しさん
2013/12/08(日) 16:16:41.68 まるでpythonみたい
593デフォルトの名無しさん
2013/12/08(日) 17:28:22.91 昔のことを覚えていなければ、いま新しいことをしているのかどうか分からない
594デフォルトの名無しさん
2013/12/08(日) 17:32:10.28 letは別に新しくともなんともなく単に普通なのであって、varも古い云々以前に単に変なだけ。
特に覚えておく必要も無い。
なのでuse strictの強化版のようなばっさり切り捨てる機能があって良い。
特に覚えておく必要も無い。
なのでuse strictの強化版のようなばっさり切り捨てる機能があって良い。
595デフォルトの名無しさん
2013/12/08(日) 19:25:18.31 オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://engawa.2ch.net/test/read.cgi/poverty/1386476617/
http://engawa.2ch.net/test/read.cgi/poverty/1386476617/
596デフォルトの名無しさん
2013/12/12(木) 22:08:17.68 最強のPythonが動的型言語なので
動的型言語の方が生産性が高い
動的型言語の方が生産性が高い
597デフォルトの名無しさん
2013/12/14(土) 00:49:28.23 普通は文字列は一次元で絵は二次元だけど
「実行しないとわからない」なら時間軸を追加して次元がひとつ増える
三次元は正確に認識できないことがあるので生産性が低い
それは時間軸が原因だともいえるし、絵が原因だともいえる
「実行しないとわからない」なら時間軸を追加して次元がひとつ増える
三次元は正確に認識できないことがあるので生産性が低い
それは時間軸が原因だともいえるし、絵が原因だともいえる
598デフォルトの名無しさん
2013/12/17(火) 20:07:17.91 オメーらあんまりgdgd言ってっと型に嵌めちまうぞッ
599デフォルトの名無しさん
2013/12/18(水) 02:34:16.63 Pythonも微妙になってきたな。
CG方面でなぜかデファクトだから仕方なく使う感じだ。
CG方面でなぜかデファクトだから仕方なく使う感じだ。
600デフォルトの名無しさん
2013/12/18(水) 02:38:51.00 >>591
> 移行というのは前のをバッサリ切り捨てるやり方じゃダメなんだよ。
> いきなり全てを変えるなんて出来やしない
そうとは限らん。そういう場合もあるというだけだ。
破壊的変更と非破壊変更は相互補完の関係にあって、どっちを偏重してもいかんのだよ。
現にMozillaも新言語Rustを作ってるしな。
つかどう見てもES4のときに一度ばっさり互換を切るべきだった。
あれがWeb Platform最大の失敗だったことは、無数のaltJS乱立によって証明済み。
> 移行というのは前のをバッサリ切り捨てるやり方じゃダメなんだよ。
> いきなり全てを変えるなんて出来やしない
そうとは限らん。そういう場合もあるというだけだ。
破壊的変更と非破壊変更は相互補完の関係にあって、どっちを偏重してもいかんのだよ。
現にMozillaも新言語Rustを作ってるしな。
つかどう見てもES4のときに一度ばっさり互換を切るべきだった。
あれがWeb Platform最大の失敗だったことは、無数のaltJS乱立によって証明済み。
601デフォルトの名無しさん
2013/12/18(水) 03:31:57.85 altJSって、2007年頃のLLブームに乗っかり、
いんぽqのに騙されたバカな魔法少女たちぐらいしか使わないんじゃねーの?
いんぽqのに騙されたバカな魔法少女たちぐらいしか使わないんじゃねーの?
602デフォルトの名無しさん
2013/12/18(水) 07:27:49.18 低能にはJSのウンコさが理解できない
603デフォルトの名無しさん
2013/12/18(水) 17:45:29.98 >>600
> 現にMozillaも新言語Rustを作ってるしな。
Rustへの移行が成功してから言えよw
現時点では前(JavaScript?)のをバッサリ切り捨てて
Rustを作ったが、ほれみろやっぱり移行していないではないか。
という実例になってるぞw
> 現にMozillaも新言語Rustを作ってるしな。
Rustへの移行が成功してから言えよw
現時点では前(JavaScript?)のをバッサリ切り捨てて
Rustを作ったが、ほれみろやっぱり移行していないではないか。
という実例になってるぞw
604デフォルトの名無しさん
2013/12/18(水) 17:47:42.68 > つかどう見てもES4のときに一度ばっさり互換を切るべきだった。
ECMAScript 4は互換を切ったよ。
だから仕様もまとまらなかったんだが。
それもまた、互換性をバッサリ切り捨てるやり方は
失敗するという、お前がいいたいのと正反対の実例だな。
ECMAScript 4は互換を切ったよ。
だから仕様もまとまらなかったんだが。
それもまた、互換性をバッサリ切り捨てるやり方は
失敗するという、お前がいいたいのと正反対の実例だな。
605デフォルトの名無しさん
2013/12/18(水) 20:09:07.21 JSは土管なんだから
後方互換性は何よりも大事だよ
後方互換性は何よりも大事だよ
606デフォルトの名無しさん
2013/12/18(水) 20:28:41.19 処理系間の互換性が崩壊してる言語で後方互換性がどんな意味を持つんだろうか
607デフォルトの名無しさん
2013/12/18(水) 21:11:41.22 ESがバッサリ互換切り捨てたらバージョン間互換すら出来なくなるよね
608デフォルトの名無しさん
2013/12/18(水) 22:07:24.13 コメントがなくてもわかるような
コードを書けってきかない?
コメント書くのは素人
コードを書けってきかない?
コメント書くのは素人
609デフォルトの名無しさん
2013/12/18(水) 22:13:07.62 >>608
よっぽどのその言葉気に入ったみたいだなw
よっぽどのその言葉気に入ったみたいだなw
610デフォルトの名無しさん
2013/12/18(水) 22:20:56.13 コメントの9割は無駄!〜アンチプラクティスから学ぶ洗練されたコメントの書き方〜 #code #コード
https://codeiq.jp/magazine/2013/12/3700/
番外編 プログラムのコメントは少なければ少ないほど良い?
http://www.appresso.com/now/column/2010/09/0009-1.html
先日、日経ソフトウェアで「プログラムのソースコードは20%を切ることが望ましい」
という記事を書きました。また、8月のMIJSでのディスカッションでも議論の中で
同じように「詳細設計書やプログラムのコメントは多い方が良いか、少ない方が良いか」という議論がありました。
この話は、私が大学時代に教官から「以前は、コメント率(ソースコード中のコメントの割合)は
50%を超えていないと品質が低いとされた」という話を聞いて衝撃を受けたことが発端となっています。
私自身は、詳細設計書やコメントは少なければ少ないほど良いと思っていたのに、
「コメント率は50%を超えなければいけない」と言われ、驚いたわけです。その頃は、
自分はプログラムは小学生の頃から趣味で色々と書いていたとはいえ、まだプロとしての
経験がないので理解できていないだけかとも思ったものですが、大学を卒業してプロとしての
プログラマーの経験を10年強積んだ今、以前にも増して「ソースコードのコメント率は
低ければ低いほど良い」という考えが強まっています。
ソースコード中のコメントは多いほうがよいのか、少ないほうがよいのか?
http://d.hatena.ne.jp/eel3/20130815/1376529541
https://codeiq.jp/magazine/2013/12/3700/
番外編 プログラムのコメントは少なければ少ないほど良い?
http://www.appresso.com/now/column/2010/09/0009-1.html
先日、日経ソフトウェアで「プログラムのソースコードは20%を切ることが望ましい」
という記事を書きました。また、8月のMIJSでのディスカッションでも議論の中で
同じように「詳細設計書やプログラムのコメントは多い方が良いか、少ない方が良いか」という議論がありました。
この話は、私が大学時代に教官から「以前は、コメント率(ソースコード中のコメントの割合)は
50%を超えていないと品質が低いとされた」という話を聞いて衝撃を受けたことが発端となっています。
私自身は、詳細設計書やコメントは少なければ少ないほど良いと思っていたのに、
「コメント率は50%を超えなければいけない」と言われ、驚いたわけです。その頃は、
自分はプログラムは小学生の頃から趣味で色々と書いていたとはいえ、まだプロとしての
経験がないので理解できていないだけかとも思ったものですが、大学を卒業してプロとしての
プログラマーの経験を10年強積んだ今、以前にも増して「ソースコードのコメント率は
低ければ低いほど良い」という考えが強まっています。
ソースコード中のコメントは多いほうがよいのか、少ないほうがよいのか?
http://d.hatena.ne.jp/eel3/20130815/1376529541
611デフォルトの名無しさん
2013/12/19(木) 00:03:28.61 コメント率50%とか正気の沙汰ではないな
ソースコードに詳細設計書をそのまま書いてるようなもんじゃん
ソースコードに詳細設計書をそのまま書いてるようなもんじゃん
612デフォルトの名無しさん
2013/12/19(木) 00:11:34.43 コメントを読む必要があるのはソースを読めないから。
つまり初心者。
つまり初心者。
613デフォルトの名無しさん
2013/12/19(木) 00:16:27.16 テストを徹底すればコメントは必要ない
614デフォルトの名無しさん
2013/12/19(木) 00:17:19.70 テストを徹底するのは不可能
まずこういう前提がある。
まずこういう前提がある。
615デフォルトの名無しさん
2013/12/19(木) 00:22:10.53 コメントを書く暇があったらコードを書こう
616デフォルトの名無しさん
2013/12/19(木) 00:23:23.85 なぜテストを徹底するのが不可能かというと
その数が極めて膨大になるから。
例えば条件分岐が16個あるとする。
その組み合わせは2の16乗で65536になる。
条件分岐が32個であれば4294967296
1つ1ミリ秒で実行できたとしても50日かかる計算になる。
この全ての組み合わせをテストするのは不可能。
一つのアプリで条件分岐はいくつあるだろうか?
普通は32個よりはるかに大きな数であろう。
だからテストを徹底するのは不可能という結論になる。
テストはその一部しか出来ないのは当然の話。
だからその一部で十分とみなせるようにしないといけない。
そのためにはアプリの作り方と静的なチェックが重要になる。
その数が極めて膨大になるから。
例えば条件分岐が16個あるとする。
その組み合わせは2の16乗で65536になる。
条件分岐が32個であれば4294967296
1つ1ミリ秒で実行できたとしても50日かかる計算になる。
この全ての組み合わせをテストするのは不可能。
一つのアプリで条件分岐はいくつあるだろうか?
普通は32個よりはるかに大きな数であろう。
だからテストを徹底するのは不可能という結論になる。
テストはその一部しか出来ないのは当然の話。
だからその一部で十分とみなせるようにしないといけない。
そのためにはアプリの作り方と静的なチェックが重要になる。
617デフォルトの名無しさん
2013/12/19(木) 00:26:43.45 Linuxならすべての組み合わせをチェックできる
618デフォルトの名無しさん
2013/12/19(木) 00:53:24.75619デフォルトの名無しさん
2013/12/19(木) 00:58:38.89 >>618
ホワイトボックスとブラックボックスの違いを知らないと
思った理由は?
なんでさ、知らないと断定するの?
それに、ホワイトボックス(またはブラックボックス)
だったらなんなのさ?
知らないだろうといっただけで、
お前は意見を何も述べてなよ。
ホワイトボックスとブラックボックスの違いを知らないと
思った理由は?
なんでさ、知らないと断定するの?
それに、ホワイトボックス(またはブラックボックス)
だったらなんなのさ?
知らないだろうといっただけで、
お前は意見を何も述べてなよ。
620デフォルトの名無しさん
2013/12/19(木) 01:02:43.76 >>619
雑魚は素直にハイと言っておけば良い
雑魚は素直にハイと言っておけば良い
621デフォルトの名無しさん
2013/12/19(木) 01:03:35.09622デフォルトの名無しさん
2013/12/19(木) 01:10:49.95 >>621
ブラックボックステストにも当てはまるぞ。
条件分岐を、チェックボックスと置き換えればいい。
32個のチェックボックスが存在する検索フォーム
例えばこんなのな
http://www.chintai.net/tokyo/search/en_101001/
テストを徹底するというならば全ての組み合わせを実行しないといけない。
特定の組み合わせでのみエラーが起きるというのは普通に存在する。
ブラックボックステストにも当てはまるぞ。
条件分岐を、チェックボックスと置き換えればいい。
32個のチェックボックスが存在する検索フォーム
例えばこんなのな
http://www.chintai.net/tokyo/search/en_101001/
テストを徹底するというならば全ての組み合わせを実行しないといけない。
特定の組み合わせでのみエラーが起きるというのは普通に存在する。
623デフォルトの名無しさん
2013/12/19(木) 01:11:50.88 Linuxならすべての組み合わせをテストできます
624デフォルトの名無しさん
2013/12/19(木) 01:26:57.51625デフォルトの名無しさん
2013/12/19(木) 02:17:02.59 コメントがなくてもわかるような
コードを書けってきかない?
コメントは
コードに情報を埋められない言語の逃げでしかない。
コードを書けってきかない?
コメントは
コードに情報を埋められない言語の逃げでしかない。
626デフォルトの名無しさん
2013/12/19(木) 07:49:00.61 名前を変に省略形にしたり、変数がアルファベット1文字だったり、tmpだったり、
さらにそれを同じメソッド内で別用途に使いまわしたり、
1つのメソッドor関数で多くの機能を入れ込んで、さらに上流と下流のコードが混在していて、
どのブロックが上流の下流のどの工程なのか熟読しないと分からないとか、
まあ、「リーダブルコード」を読め、ってことだ。
さらにそれを同じメソッド内で別用途に使いまわしたり、
1つのメソッドor関数で多くの機能を入れ込んで、さらに上流と下流のコードが混在していて、
どのブロックが上流の下流のどの工程なのか熟読しないと分からないとか、
まあ、「リーダブルコード」を読め、ってことだ。
627デフォルトの名無しさん
2013/12/19(木) 08:00:32.37 まあ業務系は客観的に見て暇な仕事だからコメントをウダウダ書いて暇つぶしする余裕があるww
余裕がないとか言っている奴は隣人や就職希望の奴の仕事を奪って忙しがってる小山の大将(バカ)
余裕がないとか言っている奴は隣人や就職希望の奴の仕事を奪って忙しがってる小山の大将(バカ)
628デフォルトの名無しさん
2013/12/19(木) 10:44:02.91 >>616
テスト専門企業のHP見れば判るけど、今はテストケースをどうやって減らすかがノウハウだよ。
テスト専門企業のHP見れば判るけど、今はテストケースをどうやって減らすかがノウハウだよ。
629デフォルトの名無しさん
2013/12/19(木) 11:55:30.20 統合環境にはチェックボックスが32個ぐらいあるんだな
シェルだったらコマンドが32個あっても組み合わせた場合の責任はユーザーに転嫁される
シェルだったらコマンドが32個あっても組み合わせた場合の責任はユーザーに転嫁される
630デフォルトの名無しさん
2013/12/19(木) 12:29:13.88 そもそもCPUもディスクもメモリもOSもデバイスドライバもランタイムライブラリもそこまでの品質に達していないからPCごと窓から投げ捨てろ
631デフォルトの名無しさん
2013/12/19(木) 22:37:22.96 LinuxのようなOSSは品質が高い
632デフォルトの名無しさん
2013/12/28(土) 01:17:06.39 Linuxの品質は高いが、OSSは総じて品質が低い
なぜだ?
なぜだ?
633デフォルトの名無しさん
2013/12/28(土) 13:55:07.64 ソースを公開する動機は品質向上というより、古いソフトの寿命を延ばすことだから
634デフォルトの名無しさん
2013/12/28(土) 14:02:15.19 数の問題
635デフォルトの名無しさん
2013/12/28(土) 16:50:28.30 おびただしいゴミの山から一握りの大成功だけをもってOSSと呼んでいる
流行に乗って何度もクソを取り上げてもてはやした過去は都合よく忘れている
流行に乗って何度もクソを取り上げてもてはやした過去は都合よく忘れている
636デフォルトの名無しさん
2013/12/28(土) 16:55:58.94 業務アプリとかの方がクソっぷりは上だけどねー
いやホントに
いやホントに
637デフォルトの名無しさん
2013/12/29(日) 00:06:12.98 いやいや捨てられて都合よく記憶からも消去されてしまうクソにはおよびませぬ
638デフォルトの名無しさん
2014/01/01(水) 10:16:24.21 今年はC++の1.5倍速いJSが馬のように勝つでしょう(^.^v)
639デフォルトの名無しさん
2014/01/01(水) 10:18:04.91 1.5倍遅いの間違いです
640デフォルトの名無しさん
2014/01/01(水) 10:23:30.46 Smalltalkも遅いしな。
動的言語が速い云々は特定ユースケースに絞った口先ばかりの話ばかりだ。
動的言語が速い云々は特定ユースケースに絞った口先ばかりの話ばかりだ。
641デフォルトの名無しさん
2014/01/01(水) 10:39:54.92 まあC#よりは速いんだからJSの速度は認めるしかないわな。
642デフォルトの名無しさん
2014/01/01(水) 11:35:39.56 実際C#と同等に動いてくれるならわざわざネイティブで作らんでもいいんだけどねぇ(´・ω・`)
643デフォルトの名無しさん
2014/01/01(水) 11:40:42.35 ちょっと話変わるけどC#とJSって近いよな
例えばUnityのJSはC#バインディングだし
同じ臭いがする
例えばUnityのJSはC#バインディングだし
同じ臭いがする
644デフォルトの名無しさん
2014/01/01(水) 11:49:45.70645デフォルトの名無しさん
2014/01/01(水) 13:47:35.88 Googleは情報を集めることを公言してるし、
何と言っても検索で情報を提供してる
またWidevineみたいな情報を閉ざす方にも力を入れてる
Googleは情報の管理人として最も相応しい存在として世界中で認められているので
Baiduの件に比べて問題が少ない
何と言っても検索で情報を提供してる
またWidevineみたいな情報を閉ざす方にも力を入れてる
Googleは情報の管理人として最も相応しい存在として世界中で認められているので
Baiduの件に比べて問題が少ない
646デフォルトの名無しさん
2014/01/01(水) 14:05:46.10 ×問題が少ない
○問題が大きすぎて思考停止している
○問題が大きすぎて思考停止している
647デフォルトの名無しさん
2014/01/01(水) 14:19:42.56 自動車の事故と同じ
多大なメリットを提供してくれるGoogle様にはさからえない
多大なメリットを提供してくれるGoogle様にはさからえない
648デフォルトの名無しさん
2014/01/01(水) 15:36:11.87649デフォルトの名無しさん
2014/01/01(水) 16:19:33.35 C#もJSも最終的に機械語になって実行されるんだから何も変わらん
650デフォルトの名無しさん
2014/01/02(木) 01:23:22.20 >>648
あるっちゃいっちゃあるけどな
あるっちゃいっちゃあるけどな
651デフォルトの名無しさん
2014/01/06(月) 07:35:27.64 静的言語はキャストがめんどうなんだよな。
あんなもの苦痛でしかない。
あんなもの苦痛でしかない。
652デフォルトの名無しさん
2014/01/06(月) 07:58:24.06 >>650
MS社内にあるだけで門外不出なんだろ?
MS社内にあるだけで門外不出なんだろ?
653デフォルトの名無しさん
2014/01/06(月) 08:47:28.73654デフォルトの名無しさん
2014/01/06(月) 11:02:24.41 この世はC#を無条件でWindows+.NET+Formsへと脳内変換する視野狭窄なドカタで満ち満ちている
ネイティブなどとほざいても絵空事にしかならない
ネイティブなどとほざいても絵空事にしかならない
655デフォルトの名無しさん
2014/01/06(月) 11:12:59.89 >>651
関数型がデフォルトイミュータブルなのと一緒でそれを不自由と見るか保証と見るかはあなた次第。
関数型がデフォルトイミュータブルなのと一緒でそれを不自由と見るか保証と見るかはあなた次第。
656デフォルトの名無しさん
2014/01/06(月) 11:52:50.24 わけわからん暗黙変換の方がウザイ
657デフォルトの名無しさん
2014/01/19(日) 01:28:02.63 >>1のコードだと、指摘したい内容に対して微妙に噛み合ってないような
実行前に(変数の)型が決まっているかどうかと
変数に型を持たせられるかどうかは、厳密には別の話だよね
大抵の動的言語は変数に型がないから、端的に示すには十分なんだろうけど
実行前に(変数の)型が決まっているかどうかと
変数に型を持たせられるかどうかは、厳密には別の話だよね
大抵の動的言語は変数に型がないから、端的に示すには十分なんだろうけど
658デフォルトの名無しさん
2014/01/19(日) 15:30:04.45 >>657
「型体系(type system)」と「型付け(typing)」の違いだね
これらはの概念は組合せ(直積)で考える必要がある
型体系(type system):
・単一型(型無し、とも言う)
・ただ一つの型しか存在しない、言い換えると型を区別しない
例:Tcl や Shell --> 文字列型のみで、1 と "1" はどちらも文字列
・素朴な型体系
・複数の原始型と僅かな複合型
例:Lisp、Prolog、JavaScript --> 数値や記号といった原始型(=アトム)と
リスト(Lispの場合)または項(Prologの場合)から構成される
・複雑な型体系
・複数の原始型と複合型
例:Pascal や C といった多くの手続き型言語、および
ML族のような初期の静的型付け関数型言語 -->
以下の3種類の基本構造から構成される
・直積:タプル、レコード(=構造体)
・直和:列挙型、合併型(=共用体)、代数型
・列:配列、リスト
・複雑で階層的な型体系
例:C++/Java/Smalltalk/Ruby といったクラスベースのオブジェクト指向言語、
および Haskell や Scala のようなアドホック型多相を基礎とする関数型言語など
型付け(typing):
・静的型付け:Pascal/C/C++/Java/C#/OCaml/SML/Haskell/Scala
・動的型付け:Lisp/Prolog/JavaScript/Smalltalk/Ruby/Python
・ハイブリッド:Objective-C
「型体系(type system)」と「型付け(typing)」の違いだね
これらはの概念は組合せ(直積)で考える必要がある
型体系(type system):
・単一型(型無し、とも言う)
・ただ一つの型しか存在しない、言い換えると型を区別しない
例:Tcl や Shell --> 文字列型のみで、1 と "1" はどちらも文字列
・素朴な型体系
・複数の原始型と僅かな複合型
例:Lisp、Prolog、JavaScript --> 数値や記号といった原始型(=アトム)と
リスト(Lispの場合)または項(Prologの場合)から構成される
・複雑な型体系
・複数の原始型と複合型
例:Pascal や C といった多くの手続き型言語、および
ML族のような初期の静的型付け関数型言語 -->
以下の3種類の基本構造から構成される
・直積:タプル、レコード(=構造体)
・直和:列挙型、合併型(=共用体)、代数型
・列:配列、リスト
・複雑で階層的な型体系
例:C++/Java/Smalltalk/Ruby といったクラスベースのオブジェクト指向言語、
および Haskell や Scala のようなアドホック型多相を基礎とする関数型言語など
型付け(typing):
・静的型付け:Pascal/C/C++/Java/C#/OCaml/SML/Haskell/Scala
・動的型付け:Lisp/Prolog/JavaScript/Smalltalk/Ruby/Python
・ハイブリッド:Objective-C
659デフォルトの名無しさん
2014/03/09(日) 14:07:19.05 現在プログラム板のID制導入の投票を実施中です
よろしくお願いします
プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
よろしくお願いします
プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
660デフォルトの名無しさん
2014/03/28(金) 02:09:27.84ID:NM8p3urQ メインで使う言語が Ruby から入って今は専ら Java だけど、
Rubyに戻りたくないな
やっぱ静的型付けは曖昧さがないから安心感が高くていいよ
オーバーロードも出来るし
開発環境もいろいろサポートしてくれるし
まぁでも Ruby はそれなりに良い言語ではるけどね
クロージャが書きやすいし(Javaでも書けるけど)
ミックスインも強力だし……そういえば Java8 でインターフェースのデフォルト実装来るのだろうか?
クラスがオブジェクトとして扱えて、クラスメソッドでポリモーフィズムが使えたり
うーん、懐かしいわ
Rubyに戻りたくないな
やっぱ静的型付けは曖昧さがないから安心感が高くていいよ
オーバーロードも出来るし
開発環境もいろいろサポートしてくれるし
まぁでも Ruby はそれなりに良い言語ではるけどね
クロージャが書きやすいし(Javaでも書けるけど)
ミックスインも強力だし……そういえば Java8 でインターフェースのデフォルト実装来るのだろうか?
クラスがオブジェクトとして扱えて、クラスメソッドでポリモーフィズムが使えたり
うーん、懐かしいわ
661デフォルトの名無しさん
2014/09/02(火) 15:20:17.74ID:gs4puFO8 NumOrString で何がやりたいの? Genericで型を作る事(IntやDouble とStringだけに制限かけるとか)でもできるし 何もしないでAnyでも良いだろ
Swift で Int を取りだす例
func getInt(v: Any)->Int{
if v is String {
return (v as String).toInt() ?? 0
} else if v is Int {
return v as Int
}
return 0
}
var numOrStr: Any = "100" // 文字列代入
println( getInt( numOrStr )+2 ) //102
numOrStr = 200 // 整数代入
println( getInt( numOrStr )+2 ) //202
Swift で Int を取りだす例
func getInt(v: Any)->Int{
if v is String {
return (v as String).toInt() ?? 0
} else if v is Int {
return v as Int
}
return 0
}
var numOrStr: Any = "100" // 文字列代入
println( getInt( numOrStr )+2 ) //102
numOrStr = 200 // 整数代入
println( getInt( numOrStr )+2 ) //202
662デフォルトの名無しさん
2014/09/02(火) 17:12:02.99ID:bBMTqV7b 動的型言語が急激にオワコン化しつつある
まだどっちにもメリット・デメリットがあるだの中立を気取る穏健派気取りも多いが
明らかにそんな段階超えてるっしょ。英語圏でもこんな記事が人気だ。
The abject failure of weak typing(弱い型の惨めな失敗)
http://techblog.realestate.com.au/the-abject-failure-of-weak-typing/
あと、静的型の連中はテスト書かんのか的勘違いしてる動的派たまにいるけどさー
型チェックして、静的解析して、その上でさらにCIもするに決まってるだろw
バグを減らすためのあらゆる手段を各段階に投入するんだよ。
それから、動的型の方が気楽に書けるだの速く書けるだのは妄言というほかない。
コードを実行するよりも前に、テストを走らせるよりも前に一定のバグチェックが働いたほうが
明らかにイテレーションが高速だろうが。常識で考えろ。
プロジェクトの規模が膨らむほど顕著になる。
つかせいぜい数千行で明らかに静的型の方が採算が良くなる。
リファクタリング一つ取ってもどうするつもりなのか。
静的型言語だとガチャガチャ数百行一気に組み換えて
コンパイルエラー何十個か潰して実行したら何の問題もなく動作するというようなことがままあるわけだが
RubyだのJavaScriptだのがメインの連中、そういう快感を知らないし想像もできないのだろう。
静的型で優れたIDEの恩恵をきちんと受ければどれほどの高速コーディングができるかも知るまい。
まして、プログラマは怠惰であるべきだから動的型マンセーwだの
Twitterでアホがツイートしてるのを見たときには
馬鹿じゃねえのかと思ったよ。本気で。
まだどっちにもメリット・デメリットがあるだの中立を気取る穏健派気取りも多いが
明らかにそんな段階超えてるっしょ。英語圏でもこんな記事が人気だ。
The abject failure of weak typing(弱い型の惨めな失敗)
http://techblog.realestate.com.au/the-abject-failure-of-weak-typing/
あと、静的型の連中はテスト書かんのか的勘違いしてる動的派たまにいるけどさー
型チェックして、静的解析して、その上でさらにCIもするに決まってるだろw
バグを減らすためのあらゆる手段を各段階に投入するんだよ。
それから、動的型の方が気楽に書けるだの速く書けるだのは妄言というほかない。
コードを実行するよりも前に、テストを走らせるよりも前に一定のバグチェックが働いたほうが
明らかにイテレーションが高速だろうが。常識で考えろ。
プロジェクトの規模が膨らむほど顕著になる。
つかせいぜい数千行で明らかに静的型の方が採算が良くなる。
リファクタリング一つ取ってもどうするつもりなのか。
静的型言語だとガチャガチャ数百行一気に組み換えて
コンパイルエラー何十個か潰して実行したら何の問題もなく動作するというようなことがままあるわけだが
RubyだのJavaScriptだのがメインの連中、そういう快感を知らないし想像もできないのだろう。
静的型で優れたIDEの恩恵をきちんと受ければどれほどの高速コーディングができるかも知るまい。
まして、プログラマは怠惰であるべきだから動的型マンセーwだの
Twitterでアホがツイートしてるのを見たときには
馬鹿じゃねえのかと思ったよ。本気で。
663デフォルトの名無しさん
2014/09/02(火) 18:57:07.42ID:O0bHgitW664デフォルトの名無しさん
2014/09/02(火) 22:03:49.35ID:f704CnQ2 「静的型言語」と言ってる時点ですでに穏健派の思う壺だよね
不特定多数の言語を指してるから
一つに絞り込む必要性が全く感じられない
複数選択可なら動的型言語も選んでみたくなる
不特定多数の言語を指してるから
一つに絞り込む必要性が全く感じられない
複数選択可なら動的型言語も選んでみたくなる
665デフォルトの名無しさん
2014/09/03(水) 17:26:16.99ID:Nxe4ujmI >>662
Javaって素晴らしいねw
Javaって素晴らしいねw
666デフォルトの名無しさん
2014/09/03(水) 18:06:54.24ID:SBztsgaC 動的言語が楽なのは環境作る手間だけであったな
667デフォルトの名無しさん
2014/09/03(水) 21:35:51.41ID:rgaFaXry TypeScriptみたいに、動的型言語なんだけど、
オプションで型を書いて静的型検査する言語は
どうなんだろう?
オプションで型を書いて静的型検査する言語は
どうなんだろう?
668デフォルトの名無しさん
2014/09/04(木) 12:45:33.60ID:Azi8pMDh 言語について静的と言っているのか、型付けについて静的と言っているのか、曖昧な表現を使うな。
「静的言語」か「静的型付き言語」の、どっちかにしろ。
「静的言語」か「静的型付き言語」の、どっちかにしろ。
669デフォルトの名無しさん
2014/09/04(木) 14:11:59.28ID:JrHf8QHD >>667 何を言ってるんだよ TypeScriptは単なるプリプロセッサ。
出てきたJavaScriptが動的言語と言うだけの事
そんな事を言ったら色んな言語がそうできる
C++他からJavaScriptとか(Emscripten)
或は各種動的プログラミング言語のコンパイル版 例えば Python のPypiとか
出てきたJavaScriptが動的言語と言うだけの事
そんな事を言ったら色んな言語がそうできる
C++他からJavaScriptとか(Emscripten)
或は各種動的プログラミング言語のコンパイル版 例えば Python のPypiとか
670デフォルトの名無しさん
2014/09/04(木) 19:50:15.73ID:pCjEdN1j 機械語レベルにまで変換したら、
すべての言語は型情報を持たない。
すべての言語は型情報を持たない。
671デフォルトの名無しさん
2014/09/04(木) 21:10:42.37ID:LeaFrZaO >>668
スレタイ読めよ
>>670
ハードで型チェックするマシンも(過去には)あったよ
http://ja.m.wikipedia.org/wiki/LISP%E3%83%9E%E3%82%B7%E3%83%B3
スレタイ読めよ
>>670
ハードで型チェックするマシンも(過去には)あったよ
http://ja.m.wikipedia.org/wiki/LISP%E3%83%9E%E3%82%B7%E3%83%B3
672デフォルトの名無しさん
2014/09/05(金) 07:01:12.38ID:vJ702ivD673デフォルトの名無しさん
2014/09/05(金) 07:18:25.88ID:BiMZcw/Q >>672
データの話だぞ
データの話だぞ
674デフォルトの名無しさん
2014/09/05(金) 09:11:47.35ID:kEmuiZox675デフォルトの名無しさん
2014/09/05(金) 20:07:48.66ID:vJ702ivD >>674
符号の有無もあるぞ。十分にデータ型の条件を満たしているが。
符号の有無もあるぞ。十分にデータ型の条件を満たしているが。
676デフォルトの名無しさん
2014/09/05(金) 21:35:01.68ID:kEmuiZox 符号がついててもビット情報にすぎない。
677デフォルトの名無しさん
2014/09/05(金) 22:22:52.52ID:vJ702ivD メモリ上のオブジェクトのビット幅と符号等のエンコーディングだけでは型じゃないというなら、
じゃあC言語の型は型じゃないのかよw
じゃあC言語の型は型じゃないのかよw
678デフォルトの名無しさん
2014/09/05(金) 22:40:11.75ID:F0C2JJRO BCD はとうの昔に忘れ去られたんだね‥あの系のフラグの上げ下げ、一生わからないだろーなー‥
679デフォルトの名無しさん
2014/09/05(金) 22:44:42.07ID:w1Ux2akp (どうしよう「ノイマン型コンピュータの最大の弱点はデータとオペランドが
同じメモリ空間に等しく並んでいることだ」なんて基礎中の基礎の議論を
一度も見たことがないような人間がビットはデータだ型だ言っててゲロ吐きそうw)
同じメモリ空間に等しく並んでいることだ」なんて基礎中の基礎の議論を
一度も見たことがないような人間がビットはデータだ型だ言っててゲロ吐きそうw)
680デフォルトの名無しさん
2014/09/05(金) 23:01:28.17ID:BiMZcw/Q >>675
メモリーのビット列見ただけで符号なのかわかるのか?
メモリーのビット列見ただけで符号なのかわかるのか?
681デフォルトの名無しさん
2014/09/06(土) 14:00:13.41ID:ASRhmvFn682デフォルトの名無しさん
2014/09/06(土) 19:12:57.93ID:2eQ4pr9G683デフォルトの名無しさん
2014/10/29(水) 15:25:06.29ID:jBixlkaY ダブルディスパッチなら型そのものに振る舞いを記述する必要はない
684デフォルトの名無しさん
2015/08/16(日) 17:31:30.16ID:i0k+NpdZ ここ最近の「型」って言葉、人によって指してるものが違うよね
言葉だけひとり歩きしてしまった感じ
このスレで言われているような「型」の認識だと、旧世代的な言語を想像してしまいがちだけど
Haskellの型クラスやScalaのトレイトみたいな、アドホック多相が表現可能な静的型付けのことでしょ
今いろんな人が注目してる「型」ってのはさ
言葉だけひとり歩きしてしまった感じ
このスレで言われているような「型」の認識だと、旧世代的な言語を想像してしまいがちだけど
Haskellの型クラスやScalaのトレイトみたいな、アドホック多相が表現可能な静的型付けのことでしょ
今いろんな人が注目してる「型」ってのはさ
685デフォルトの名無しさん
2015/08/30(日) 06:16:25.67ID:4622E1Z6 ユニバーサル多相からアドホック多相に退化して何がうれしいの?
686デフォルトの名無しさん
2015/12/19(土) 13:37:57.71ID:a/6r0NiU r、_Lヽ___
/ \
/ \
| __ l___ l
. | /^-⌒ヽ、r-、/-|
| ヽ |
/ ̄ヽ / ___ヽ r .|
ヽ -v | l  ̄|j
ヽ--、、ヽ / ̄ヽ_)
 ̄ー- __/.三l ミl
| ⊥イ _三l ミl
|_ ヘ/ lヽー ァ'
/ l  ̄
| /
ヽ 、
| |ヽ )
/_|/___(_
ゝ ヽ ___っ二l
'┴┴┴'
/ \
/ \
| __ l___ l
. | /^-⌒ヽ、r-、/-|
| ヽ |
/ ̄ヽ / ___ヽ r .|
ヽ -v | l  ̄|j
ヽ--、、ヽ / ̄ヽ_)
 ̄ー- __/.三l ミl
| ⊥イ _三l ミl
|_ ヘ/ lヽー ァ'
/ l  ̄
| /
ヽ 、
| |ヽ )
/_|/___(_
ゝ ヽ ___っ二l
'┴┴┴'
687デフォルトの名無しさん
2015/12/24(木) 11:22:02.41ID:oyBoIX3w JSがCより早いとか言ってる奴はキチガイ
インタプリタがネイティブコードに勝てると思ってるの?
インタプリタがネイティブコードに勝てると思ってるの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★6 [BFU★]
- SuicaとPASMOのコード決済「teppay(テッペイ)」26年秋開始 🐧🤖 [少考さん★]
- 「ホストに貢ぎたい」と海外で売春する日本人女性 2カ月で2千万円稼ぐケースも [1ゲットロボ★]
- 【SNSでも政策の無駄募る】政府が新設 政策の財源探し 税制優遇など「見直し担当室」… [BFU★]
- 【速報】外務次官が中国大使と面会 [蚤の市★]
- 【東京・足立】盗んだ車で暴走、11人死傷 37歳男を逮捕 歩道乗り上げ歩行者はね、車道で追突 「車を買いたい」と販売店に3度来店 [ぐれ★]
- 台湾「習主席がトランプ大統領との電話会談で台湾問題を言及しなかったことは台湾にとって最良の結果」高市ハシゴ外されるwwwww [931948549]
- 【高市速報】コンバースのスニーカーが再びブームに🔥🔥wwwwwwwwwwwwwwww ここに着て履いてるやつが爆増 [573041775]
- ウクライナ、事実上の降伏。プーアノンと呼ばれていた人たちだけが世界情勢を俯瞰的に見ていた [805596214]
- 【速報】山上徹也、安倍晋三ビデオ動画で「絶望」、裁判で証言 [947332727]
- ウクライナ、復興費78兆円が必要に… [177178129]
- 山上母「統一教会に献金をしたことで兄も天国で幸せに暮らすことになった」 [268244553]
