1 名前:デフォルトの名無しさん [2017/04/07(金) 00:05:23.53 ID:FMSUelHn.net] コレクションの良しあしは言語の生産性に直にかかわってくる。 例えば配列しかないCは最低の言語だ。 コレクションが最高にイケてる言語仕様をみんなで考えよう。
2 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 00:13:41.62 ID:FMSUelHn.net] 例えば空コレクションでMaxとか呼ぶと普通例外だよね? ヌルオブジェクトパターンとかつかって綺麗に解決できないだろうか。
3 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 00:14:44.33 ID:FMSUelHn.net] エギソンという言語があってリストとかが色々便利にかける。 こういうのも面白い。 https://www.egison.org/
4 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 06:47:50.17 ID:ZgSaSKBc.net] >>1 ディクショナリ オブジェクト 配列 セット タプル リストとか既存言語のまとめてみて 言語によって同じものを違う名前で呼んだり紛らわしい
5 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 21:39:18.48 ID:A4pCb4U0.net] ジェネリクス対応の配列、ディクショナリ、セットがあれば大概の用途で事足りる と言うことで、ほとんどの言語で問題ない
6 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 22:57:02.31 ID:FMSUelHn.net] >>4 既存言語って候補はこれくらいか? まともにやるとクソ大変だが… wikiのプログラム言語一覧から抜粋 Bash,BASIC,C,C#,C++Caml,Clojure,COBOL,CommonLisp,D Dart,Delphi,Erlang,Forth,FORTRAN,Go,Haskell,Java, JavaScript,Julia,Miranda,Objective-C,Pascal, Perl,PHP,PL/I,PowerShell,Prolog,Python,R,Ruby,Rust, Scala,Scheme,Smalltalk,Swift,
7 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 23:02:55.18 ID:j5QgAAcl.net] すまんそれライブラリで良くね?
8 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 23:23:26.28 ID:FMSUelHn.net] C++だとmapに突っ込むときoperator<とか定義しなきゃいけないけど そういうのもなるべく言語でデフォルトのものを用意してほしい。
9 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 23:51:13.53 ID:FMSUelHn.net] C#のSystem.Collections.Generic 名前空間 https://msdn.microsoft.com/ja-jp/library/system.collections.generic(v=vs.110).aspx
10 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 23:58:40.35 ID:jBafhBvv.net] Smalltalkでさんざんいじられた結果なもんでさ
11 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 10:39:56.79 ID:wG8v5Zr7.net] C#のLinqとかはコレクションが使いやすくなる良構文だとおもう。
12 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 19:23:27.58 ID:wG8v5Zr7.net] >>8 haskellのderivingというのがあるが参考になるだろうか
13 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 20:38:13.43 ID:wG8v5Zr7.net] コレクションに対してそれを表現するリテラルがあると使い勝手がかなり違う。 シリアライズ、デシリアライズなどの機能を有する言語は結構あるが、 あんな感じでそれをそのままリテラルとして書けるようにするというのはどうだろう。
14 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 22:15:51.86 ID:xeKqw9Ld.net] 俺のコレクション見たい?
15 名前:デフォルトの名無しさん mailto:sage [2017/04/10(月) 22:29:21.07 ID:imUoe1w7.net] コレクションという観点だと 動的型付けと静的型付けは どちらに軍配があがるかな
16 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 21:18:37.12 ID:m/oJQzNS.net] 俺は多次元配列は配列の配列があれば要らない派
17 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 00:58:22.70 ID:1JOc28FD.net] (配列の配列はしばしばジグザグ配列になって演算速度の低下につながるので)ダメです
18 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:49:29.52 ID:ymAyZSnB.net] 冪集合や直積も言語でサポートしてほしいな。
19 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 22:37:17.25 ID:S/dW7TnL.net] >>10 smalltalkがなんの関係があるの? 詳しく
20 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 00:39:27.42 ID:v99qvGb2.net] 既存言語で一番コレクションが使いやすい言語ってなによ? C#はかなりいいと思うが。
21 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 12:49:58.72 ID:njyBHlwQ.net] C♯っていうか.NETな。 C♯がすごいんじゃない。.NETがすごいんだよ。
22 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 15:55:43.93 ID:z1TgtbB7.net] >>19 コレクションクラス(とそのサブクラス群)のネタ元はSmalltalkで培われたものって意味では?
23 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 18:05:28.45 ID:v9quCy+G.net] 配列でありリストであり連想配列でありキューでありスタックであるJavaScriptの配列が最強でイケイケだと思う
24 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 19:46:53.34 ID:4UmS+KBL.net] javascriptはプログラム組んでてなんかもやっとするw
25 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 20:17:41.16 ID:4UmS+KBL.net] 型の境界線がもやっとしてるよねjavascript 整数と実数の区別とか。
26 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:17:11.63 ID:A2U3H+Qf.net] small talkってやったことないな。 噂は聞くが。 かじってみるかな。
27 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:18:34.05 ID:Re4upQlq.net] >>26 やめとけ時間の無駄だ
28 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:19:18.69 ID:A2U3H+Qf.net] >>27 まじで
29 名前:デフォルトの名無しさん [2017/04/22(土) 20:01:03.57 ID:MD8NWs/L.net] >>26 オブジェクト指向言語としての初の試みであって実用性は無いからな
30 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 20:07:13.82 ID:M051jVFH.net] >>29 Core CLRのソースに含まれててびっくりしたけどね
31 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 21:03:10.84 ID:2QNaIclJ.net] 機能をどっさり削った go でも map だけは特別扱いだからな。 一理はある。
32 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 12:49:06.59 ID:EiQ7XooB.net] >>26 最近だとPharoというSmalltalk処理系のコミュニティが活発です 国内でもスタートアップに使われたりして話題になっています。(pharo.orgが落ちているみたいなのでキャッシュで失礼) webcache.googleusercontent.com/search?q=cache:bXBcfw6f0PYJ:pharo.org/success/AllStocker コレクションについては英語が苦手でなければチュートリアル「Pharo by Example」のこちらの章が参考になるかと https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/Collections/Collections.html
33 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 09:16:50.97 ID:RdOcyrB3.net] >>26 今週末、ちょうどこんな催しもあります 春のSmalltalk初心者向けのハッカソン | 第99回Smalltalk勉強会 https://smalltalk.connpass.com/event/55260/ もし東京近郊にお住まいでご都合が合えば参加されてみてはいかがでしょう Smalltalkは独学で試行錯誤するのも(旅先でわざと道を外れて迷ってみる程度の愉しみとしては)悪くないのですが 効率的に何かの学びを得ようとするには、思いの外時間を無駄にすることにもなりお薦めできません 実際に使っていてよく知っている人に疑問をどんどんぶつけて解消してしまうのが一番です
34 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 09:54:40.35 ID:RdOcyrB3.net] >>33 ×今週末 → ○明後日
35 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 23:15:32.53 ID:iqoCzYpO.net] カオスすぎんだろsmall talk w じっくり勉強すれば理に適ってるのか?
36 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 08:58:59.48 ID:5ILiyJO9.net] >>35 > カオスすぎ >>32 のコレクションのクラス階層についてでしたら、ほとんどは抽象クラスや特殊用途のクラスなので とりあえずこちらの図の黒枠のだけを押さえておけばよいかと imgur.com/a/liiNB OrderedCollectionは要素が追加可能なだけのArrayです Dictionaryは他言語ではHashとかMapとか呼ぶことがあります Setは重複を許さない集合 Bagがちょっと特殊ですが要素の数も覚えてくれるSetで他言語ではMultisetと呼ぶものもあります
37 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 09:25:33.87 ID:5ILiyJO9.net] >>36 > 要素の数も覚えてくれるSet Bagについてはたとえば文字列(仮に 'SMALLTALK')を構成する文字とそれぞれの出現数を多い順に知りたいとき 文字列(やはりコレクション)をBagに変換する(asBag)などして、こんなふうに書くことができます 'SMALLTALK' asBag sortedCounts "=> {3->$L . 2->$A . 1->$K . 1->$M . 1->$S . 1->$T} "
38 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 23:16:35.99 ID:H7jXi739.net] OrderedCollectionって順序付きコレクションってことだよね? ツリーならsequenceableというのは若干違和感あるが… 先頭から順にたどれるから間違ってはいないのかな…
39 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 23:57:14.04 ID:yZOF+1hb.net] >>38 OrderedCollectionはツリーではなく最近の言語にはよくある動的配列の一種です 内部にちょっと大きめの配列を持っていてそれを使って要素の追加や削除、挿入などの機能を模しています 固定長配列からさほど劇的には速度を落とさず使えるのがウリです
40 名前:デフォルトの名無しさん mailto:sage [2017/04/27(木) 00:46:55.31 ID:gwcfT8Ye.net] small talk て速度重視言語なの? 長い歴史の中で必要に迫られたんだろうか?
41 名前:デフォルトの名無しさん mailto:sage [2017/04/27(木) 07:01:43.40 ID:1+VMbtmi.net] >>40 Smalltalkは言語のルールや変更不可能な動作中核(VM)部分をできるだけ小さく保って、 GUIやIDEを含む処理系(元々はダイナブック向けの暫定仮想OS)のほとんどを自身で記述するのが方針でした ▼Smalltalkの底を流れる設計思想 web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24# そのため、当初から速度は潜在的な課題のひとつでしたが1970年代はAltoやDoradoという10年後のPCのスペックを想定した 「タイムマシン」を金をかけて作ってそこでSmalltalkを動かすことで、柔軟性を損なう最適化を避けるようにしていたようです ▼The Future Doesn't Have to Be Incremental https://github.com/matthiasn/talk-transcripts/blob/master/Kay_Alan/NonIncrementalFuture.md https://pbs-h2.twimg.com/media/C6cMkr4U4AAEDoJ.jpg 1980年代にはそういうことはできなくなったので、VMの高速化技術が試行錯誤されました その成果が90年代のJavaのHotSpotや00年代のJSのV8に転用されています そんなわけで、すごい高速なコアに頼ってそこそこの速度で動いているというのが現状です
42 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 21:26:50.07 ID:oDhQrrTb.net] 設計思想は素晴らしい。 のかな?
43 名前:デフォルトの名無しさん [2017/05/05(金) 18:00:36.59 ID:oGFFYBoD.net] コレクション使ってて使いづらいと思うことも最近は減ってきたよな 昔より言語が進歩してるんだろか
44 名前:デフォルトの名無しさん [2017/05/05(金) 21:23:00.44 ID:Qc8J8Hpx.net] >>43 でもねぇ、世の中にはコレクション操作が使いづらい 退化した最悪な言語が存在する d.hatena.ne.jp/edvakf/20090405/1238885788 元々は手続き型として設計された簡潔な言語だったけど、 オブジェクト指向やら関数型やらを行き当たりばったりに増築し続けたおかげで、 コレクション操作に関する「一貫性」という設計哲学が破綻してしまった例だね
45 名前:デフォルトの名無しさん [2017/05/05(金) 21:52:01.71 ID:Qc8J8Hpx.net] [Ruby] a.sort().reverse().map{|x| x.to_s}.join('-') [JavaScript] a.sort().reverse().map(function(x) { return x.toString() }).join(“-“) [Python] '-'.join(map(lambda x: str(x), reversed(sorted(a))))
46 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 00:47:46.27 ID:feNHzNcv.net] [Ruby] a.sort().reverse().map(&:to_s).join('-') map{|x| x.to_s} map(&:to_s)
47 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 07:38:32.83 ID:gBi5/Vqg.net] [Pharo Smalltalk] (a sort reverse collect: [:x | x asString]) joinUsing: '-' (a sort reverse collect: #asString) joinUsing: '-'
48 名前:デフォルトの名無しさん mailto:sage [2017/05/06(土) 17:44:28.43 ID:fFyXczFW.net] パイソン駄目言語なのか〜 一応人気あるらしいが… ルビィは俺も好き。
49 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 21:34:24.03 ID:645iMSZy.net] C#も文字列結合joinはあんま美しくないかな。 String.Join("-",list) やっぱRuby最強かな
50 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 18:41:35.29 ID:Jd7eipCz.net] C#だとString.IsNullOrEmpty(str)とかもあんまり美しくないかな。 便利だし慣れたらそれほど気にならないけど。
51 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 20:15:39.61 ID:IutQ3qOG.net] >>50 どう美しくないの?
52 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 20:16:44.40 ID:cg00FUZZ.net] 49 = 50
53 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 21:49:29.63 ID:Jd7eipCz.net] >>51 メソッドチェーンで書きたいじゃんやっぱ。 とはいえ、nullにIsNullOrEmptyなんてメソッド持たせるのは無理だろうから 現状の形でしょうがないとは思う。
54 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 21:58:59.13 ID:U/ufHPaa.net] >>53 拡張メソッド
55 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 19:30:38.67 ID:Vq1LD+5r.net] >>54 なにこれキモイ
56 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 21:13:54.47 ID:U14IiR72.net] >>54 なにこれキモチイイ
57 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 20:55:00.46 ID:Hvbhp0e0.net] nullはもっと進化してほしいよね。 現状、nullチェック面倒すぎ。 とくにjava?
58 名前:57 mailto:sage [2017/05/22(月) 20:50:49.74 ID:OyhChPaS.net] 世の中にはnull結合演算子なんてものもあるのか。
59 名前:デフォルトの名無しさん [2018/05/23(水) 22:50:11.81 ID:Au5e7VGg.net] 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 0SKW4
60 名前:デフォルトの名無しさん [2018/07/04(水) 23:18:22.40 ID:gFgZc5FG.net] LL7