X



コレクションが最高にイケてる言語を作ろう [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/04/07(金) 00:05:23.53ID:FMSUelHn
コレクションの良しあしは言語の生産性に直にかかわってくる。
例えば配列しかないCは最低の言語だ。
コレクションが最高にイケてる言語仕様をみんなで考えよう。
0013デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:38:13.43ID:wG8v5Zr7
コレクションに対してそれを表現するリテラルがあると使い勝手がかなり違う。
シリアライズ、デシリアライズなどの機能を有する言語は結構あるが、
あんな感じでそれをそのままリテラルとして書けるようにするというのはどうだろう。
0015デフォルトの名無しさん
垢版 |
2017/04/10(月) 22:29:21.07ID:imUoe1w7
コレクションという観点だと
動的型付けと静的型付けは
どちらに軍配があがるかな
0017デフォルトの名無しさん
垢版 |
2017/04/12(水) 00:58:22.70ID:1JOc28FD
(配列の配列はしばしばジグザグ配列になって演算速度の低下につながるので)ダメです
0020デフォルトの名無しさん
垢版 |
2017/04/15(土) 00:39:27.42ID:v99qvGb2
既存言語で一番コレクションが使いやすい言語ってなによ?
C#はかなりいいと思うが。
0022デフォルトの名無しさん
垢版 |
2017/04/16(日) 15:55:43.93ID:z1TgtbB7
>>19
コレクションクラス(とそのサブクラス群)のネタ元はSmalltalkで培われたものって意味では?
0023デフォルトの名無しさん
垢版 |
2017/04/17(月) 18:05:28.45ID:v9quCy+G
配列でありリストであり連想配列でありキューでありスタックであるJavaScriptの配列が最強でイケイケだと思う
0029デフォルトの名無しさん
垢版 |
2017/04/22(土) 20:01:03.57ID:MD8NWs/L
>>26
オブジェクト指向言語としての初の試みであって実用性は無いからな
0032デフォルトの名無しさん
垢版 |
2017/04/23(日) 12:49:06.59ID:EiQ7XooB
>>26
最近だとPharoというSmalltalk処理系のコミュニティが活発です
国内でもスタートアップに使われたりして話題になっています。(pharo.orgが落ちているみたいなのでキャッシュで失礼)
http://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
0033デフォルトの名無しさん
垢版 |
2017/04/24(月) 09:16:50.97ID:RdOcyrB3
>>26
今週末、ちょうどこんな催しもあります
春のSmalltalk初心者向けのハッカソン | 第99回Smalltalk勉強会
https://smalltalk.connpass.com/event/55260/

もし東京近郊にお住まいでご都合が合えば参加されてみてはいかがでしょう

Smalltalkは独学で試行錯誤するのも(旅先でわざと道を外れて迷ってみる程度の愉しみとしては)悪くないのですが
効率的に何かの学びを得ようとするには、思いの外時間を無駄にすることにもなりお薦めできません
実際に使っていてよく知っている人に疑問をどんどんぶつけて解消してしまうのが一番です
0036デフォルトの名無しさん
垢版 |
2017/04/25(火) 08:58:59.48ID:5ILiyJO9
>>35
> カオスすぎ

>>32のコレクションのクラス階層についてでしたら、ほとんどは抽象クラスや特殊用途のクラスなので
とりあえずこちらの図の黒枠のだけを押さえておけばよいかと
http://imgur.com/a/liiNB

OrderedCollectionは要素が追加可能なだけのArrayです
Dictionaryは他言語ではHashとかMapとか呼ぶことがあります
Setは重複を許さない集合
Bagがちょっと特殊ですが要素の数も覚えてくれるSetで他言語ではMultisetと呼ぶものもあります
0037デフォルトの名無しさん
垢版 |
2017/04/25(火) 09:25:33.87ID:5ILiyJO9
>>36
> 要素の数も覚えてくれるSet

Bagについてはたとえば文字列(仮に 'SMALLTALK')を構成する文字とそれぞれの出現数を多い順に知りたいとき
文字列(やはりコレクション)をBagに変換する(asBag)などして、こんなふうに書くことができます

'SMALLTALK' asBag sortedCounts
"=> {3->$L . 2->$A . 1->$K . 1->$M . 1->$S . 1->$T} "
0038デフォルトの名無しさん
垢版 |
2017/04/26(水) 23:16:35.99ID:H7jXi739
OrderedCollectionって順序付きコレクションってことだよね?
ツリーならsequenceableというのは若干違和感あるが…
先頭から順にたどれるから間違ってはいないのかな…
0039デフォルトの名無しさん
垢版 |
2017/04/26(水) 23:57:14.04ID:yZOF+1hb
>>38
OrderedCollectionはツリーではなく最近の言語にはよくある動的配列の一種です
内部にちょっと大きめの配列を持っていてそれを使って要素の追加や削除、挿入などの機能を模しています
固定長配列からさほど劇的には速度を落とさず使えるのがウリです
0041デフォルトの名無しさん
垢版 |
2017/04/27(木) 07:01:43.40ID:1+VMbtmi
>>40
Smalltalkは言語のルールや変更不可能な動作中核(VM)部分をできるだけ小さく保って、
GUIやIDEを含む処理系(元々はダイナブック向けの暫定仮想OS)のほとんどを自身で記述するのが方針でした

▼Smalltalkの底を流れる設計思想
http://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に転用されています
そんなわけで、すごい高速なコアに頼ってそこそこの速度で動いているというのが現状です
0043デフォルトの名無しさん
垢版 |
2017/05/05(金) 18:00:36.59ID:oGFFYBoD
コレクション使ってて使いづらいと思うことも最近は減ってきたよな
昔より言語が進歩してるんだろか
0044デフォルトの名無しさん
垢版 |
2017/05/05(金) 21:23:00.44ID:Qc8J8Hpx
>>43
でもねぇ、世の中にはコレクション操作が使いづらい
退化した最悪な言語が存在する

http://d.hatena.ne.jp/edvakf/20090405/1238885788

元々は手続き型として設計された簡潔な言語だったけど、
オブジェクト指向やら関数型やらを行き当たりばったりに増築し続けたおかげで、
コレクション操作に関する「一貫性」という設計哲学が破綻してしまった例だね
0045デフォルトの名無しさん
垢版 |
2017/05/05(金) 21:52:01.71ID:Qc8J8Hpx
[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))))
0047デフォルトの名無しさん
垢版 |
2017/05/06(土) 07:38:32.83ID:gBi5/Vqg
[Pharo Smalltalk]
(a sort reverse collect: [:x | x asString]) joinUsing: '-'
(a sort reverse collect: #asString) joinUsing: '-'
0049デフォルトの名無しさん
垢版 |
2017/05/11(木) 21:34:24.03ID:645iMSZy
C#も文字列結合joinはあんま美しくないかな。
String.Join("-",list)

やっぱRuby最強かな
0050デフォルトの名無しさん
垢版 |
2017/05/13(土) 18:41:35.29ID:Jd7eipCz
C#だとString.IsNullOrEmpty(str)とかもあんまり美しくないかな。
便利だし慣れたらそれほど気にならないけど。
0053デフォルトの名無しさん
垢版 |
2017/05/13(土) 21:49:29.63ID:Jd7eipCz
>>51
メソッドチェーンで書きたいじゃんやっぱ。
とはいえ、nullにIsNullOrEmptyなんてメソッド持たせるのは無理だろうから
現状の形でしょうがないとは思う。
005857
垢版 |
2017/05/22(月) 20:50:49.74ID:OyhChPaS
世の中にはnull結合演算子なんてものもあるのか。
0059デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:50:11.81ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

0SKW4
0060デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:18:22.40ID:gFgZc5FG
LL7
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況