X



オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0861デフォルトの名無しさん
垢版 |
2018/03/31(土) 13:51:12.70ID:O6Ruc86y
オブジェクト指向の考え方を教えてください

指定した2点を通る線を描画するプログラムを作ろうと思っています。
・色
・線の太さ
こんなプロパティを持つクラス「DrawLine」を考えています。

さらにこのクラスを継承を用いて
・2点間のみ線を引く線分クラス
・2点を通る直線クラス
・2点のうち片方を始点に持つ半直線クラス
を派生させようかと思っています。

これとは別に描画のインターフェースを担うクラス「LineInterface」を用意しようと思っています
・線を引く
・線を消す
・2点の位置を変更を受け付ける
・色の変更を受け付ける
・線の太さの変更を受け付ける
・線分、直線、半直線の変更を受け付ける

さて、ここで疑問なのですが、インターフェースを担うクラス「LineInterface」は
内部に色や線の太さ、線分・直線・半直線の状態を記憶するbool値型のフラグ
ないしはenum型の値(線分・直線・半直線)を持つべきでしょうか?

最初はこの手のフラグには頼らない設計を心がけてみました。
色、線の太さ、線分・直線・半直線、これらの状態が変更されるたびに
クラス「DrawLine」のインスタンスを作成し直せばいいと思ったからです。
ただすぐに壁にぶち当たりまして、たとえば色を変更しようと思いクラス「DrawLine」の
インスタンスを作り直そうと思ったとき、それが線分クラスなのか半直線クラスなのか
直線クラスなのかは状態を記録しておかないと判断できないことに気付きました。
インターフェースクラスには最低限の内部状態はbool値enum値フラグとして保持しておくべきでしょうか?
0862デフォルトの名無しさん
垢版 |
2018/03/31(土) 14:36:01.69ID:c97ae/y4
筋が悪い
0863デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:08:51.89ID:jo8oJ0bD
まず>>862を先に読んで「もっと何か具体的に言ってやれよw」と思ったが
その後>>861を頑張って読んだら、言いたい事は既に>>862に書いてあった
0865デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:19:37.25ID:bjBtCztz
なぜか観てしまう!!サバイバル系youtuberまとめ
http://tokyohitori.hatenablog.com/entry/2016/10/01/102830
あのPewDiePieがついに、初心YouTuber向けに「視聴回数」「チャンネル登録者数」を増やすコツを公開!
http://naototube.com/2017/08/14/for-new-youtubers/
27歳で年収8億円 女性ユーチューバー「リリー・シン」の生き方
https://headlines.yahoo.co.jp/article?a=20170802-00017174-forbes-bus_all
1年で何十億円も稼ぐ高収入ユーチューバー世界ランキングトップ10
https://gigazine.net/news/20151016-highest-paid-youtuber-2015/
おもちゃのレビューで年間12億円! 今、話題のYouTuberは6歳の男の子
https://www.businessinsider.jp/post-108355
彼女はいかにして750万人のファンがいるYouTubeスターとなったのか?
https://www.businessinsider.jp/post-242
1億円稼ぐ9歳のYouTuberがすごすぎる……アメリカで話題のEvanTubeHD
https://weekly.ascii.jp/elem/000/000/305/305548/
専業YouTuberがYouTubeでの稼ぎ方具体的に教えます。ネタ切れしない方法は〇〇するだけ。
https://www.youtube.com/watch?v=Co9a9fHfReo
YouTubeで稼げるジャンルは〇〇動画です。YouTube講座
https://www.youtube.com/watch?v=_Nps8xb5czQ
0866デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:23:11.79ID:c97ae/y4
test
0867デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:28:08.71ID:vu/Huc/I
長文書いてしまう人はもうちょっと図や箇条書きして考えまとめた方がいいな
0868デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:04:12.88ID:fnj+62QA
とりあえずC#で書くとこんな感じか

class abstract LineBase{
 public float width{get; private set;}
 public Color color{get; private set;}
 public Point start{get; private set;}
 public Point end{get; private set;}

 // 初期値をセット
 public LineBase(引数){}
 public LineBase(LineBase instance){}

 // 共通メソッドを実装
 public void SetWidth(int width){}
 public void SetColor(Color col){}
 public void SetPoint(Point start, Point end){}
 public void Eraser(){}

 public virtual void Draw(){} // 仮想メソッド
}

class SegmentLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 線分の描画処理を実装
}

class StraightLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 直線の描画処理を実装
}
0869デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:07:03.50ID:fnj+62QA
>>861
何のクラスかは正直どうでもいい
こんな感じで基底型のインスタンスをコンストラクタに渡してコピーしとけ

// 線分クラスを生成
LineBase segment = new SegmentLine(初期値を渡す);

// 線分のデータで直線クラスを生成
LineBase straight = new StraightLine(segment);
0870デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:42:41.66ID:O6Ruc86y
>>869
最初線分を描いて、途中で気が変わってやっぱり直線を描きたいな、となったときは
インスタンスsegmentを消去したのち、インスタンスstraightを選択してDraw()を実行する
という理解でよろしいでしょうか?

さらにその状態で色を変えたいときはインスタンスstraightを選んだまま色を変えるということでしょうか?

インスタンスsegmentとインスタンスstraight、いま選んでいるのはどちらか?という情報は
どこかに格納しておくべきでしょうか?
0871デフォルトの名無しさん
垢版 |
2018/03/31(土) 19:12:42.71ID:NUZUQ+fU
>>861
・線の引き方の違いを継承で実装する
・線のデータをフラグで持つ

特にこの二点はオブジェクト指向として筋が良くない

・線の引き方はメソッドで実装
・データはフラグじゃなくオブジェクトで渡す

こっちの方がオススメ
0872デフォルトの名無しさん
垢版 |
2018/03/31(土) 19:51:14.18ID:O6Ruc86y
>>871
クラス「DrawLine」は単純なDraw()メソッドは廃止して代わりに

DrawStraightLine()…直線を描画するメソッド
DrawSegmentLine()…線分を描画するメソッド
DrawHalfLine()…半直線を描画するメソッド

を実装し、インターフェースからクラス「DrawLine」には

・2点の情報が格納された構造体
・色、線の太さの情報が格納された構造体

を渡す。

という理解でよろしいでしょうか?

ちなみにインターフェース上では線の引き方はフラグ等で格納しておいても構いませんか?
ユーザーがインターフェースに対して
SetSegmentLine()
などの命令を実行したらそれに応じてbool値に記憶させておくというのが常道でしょうか?
0873デフォルトの名無しさん
垢版 |
2018/04/01(日) 03:19:52.65ID:qrIxuUzF
>>872
前半はそう。継承を使うのはダメじゃないんだけど
継承を使いこなすのは非常に難しいので
慣れるまではメソッドをたくさん生やす方が分かりやすい


後半はフラグとかいらない
そういう発想がまだないんだろうけど
デザインパターン勉強するとよく分かる

オブジェクトの生成と使用を分けて
なるべく値の設定を生成の一回だけで済ますと
フラグの不整合のバグが減ってソフトが安定する
これがオブジェクト指向を使うメリットのひとつ

特にオブジェクトが常に動き回るゲームとかじゃなくて
作図ソフトだったら基本的に一度オブジェクトを作ったら
そのまま静的な図になるから位置は不変データにして
もし位置を修正するときにはオブジェクトを再生成する

なんでそうするかっていうとフラグがバラバラ増えていくと
どこで値を変更したのか不明で後でメンテが困難になってくるから
できる限り生成時に一括で設定するようにするの
0874デフォルトの名無しさん
垢版 |
2018/04/01(日) 11:40:58.30ID:eiVy9NnE
>>873
こんな感じでどうでしょうか。

インターフェースを担うクラス「LineInterface」から
実際に線を描画するクラス「DrawLine」に向けて
新たに以下のような3番目のクラス「Information」を作成し、このインスタンスを投げようかと思います。
クラス「Information」には2点の位置座標、色、線の太さ、半直線か直線か線分かの情報が格納されています。

Class Information
{
public:
  double x1, y1, x2, y2;
  int color;
  int lineWidth;
  bool leftExtendFlag, rightExtendFlag;


};

線を描画するのに必要な情報は全てこのクラスに格納・隠蔽します。
ユーザーから線に関する新たな情報を受け付けたら
0875デフォルトの名無しさん
垢版 |
2018/04/01(日) 11:44:40.29ID:eiVy9NnE
あ、失礼。途中で書き込んでしまいましたorz

ユーザーから線に関する新たな情報を受け付けたら
クラスInformationに用意した専用メソッドを通してメンバ変数にデータがセットされます。
直接メンバ変数を操作するわけではないので(bool型のフラグを直接いじることはない)
安全面でも良いかと

このインスタンスを受け取った「DrawLine」クラスはメンバ変数を直接読み込み(publicで
宣言したのでアクセス可能)、線を描画します。
書き換えはせず、新たなデータを受け取とるたびに「DrawLine」クラスのインスタンスを
新規に作成しようと思います(なのでデータはコンストラクタで受け取るのみ)。

こんな感じでオブジェクト指向になるでしょうか?
0876873
垢版 |
2018/04/01(日) 20:00:03.25ID:qrIxuUzF
>>874
>>875
細かいこと言うと第三のクラス名はまだしも「LineInfo」とかだろうね
実用ソフトだと「Line」だけじゃなく「Box」とか「Circle」とか増えてくから

細かいとこでキリがないけど
でもそれで組んでみればいいんじゃないの

OOPの要点を一言でいうと疎結合にすることで
ゴチャゴチャするようだったらまた設計を見直していく
0877デフォルトの名無しさん
垢版 |
2018/04/01(日) 22:44:15.70ID:eiVy9NnE
>>876
> 細かいとこでキリがないけど
> でもそれで組んでみればいいんじゃないの

了解しました、この方向で組んでみます

> OOPの要点を一言でいうと疎結合にすることで
> ゴチャゴチャするようだったらまた設計を見直していく

プログラムに関する本はちまたに溢れかえっているんですが
オブジェクト指向の設計に関する本ってなかなか見かけませんね
学ぶだけでなく説明する方も難しいのかもしれません>オブジェクト指向
0878デフォルトの名無しさん
垢版 |
2018/04/01(日) 23:09:11.53ID:qrIxuUzF
>>877
>オブジェクト指向の設計に関する本
探せばいっぱいあるよ

でも本格的なのはたいてい翻訳書で
分厚くて高くて難しいから読むの大変だとは思う
0880デフォルトの名無しさん
垢版 |
2018/04/01(日) 23:54:31.59ID:voVzLJKC
>>877
多分そもそもオブジェクト指向を「学ぶもの」と思っている時点で間違い。
あれは悟るものだ。

>>861
おそらくOOPの練習なのだろうけど、そもそも題材も悪い。
オブジェクトの切り方は例えば .NET でも見てみればいいでしょ。
Graphicクラスに全部メソッドが付いている。
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics(v=vs.110).aspx
というか、線分と半直線と直線を別のオブジェクトにする意味が分からない。
余計使いにくくなるだけだ。何をどう抽象化(共通化)すべきなのか、全く分かってない。

ただな、OOPを「初心者」が理解するのは不可能なんだよ。
心は>>873に書いてあるとおりだが、要するに、

・なかなか複雑になってメンテが辛くなってきた物を、多少なんとかするもの

であって、
初心者が組める範囲で複雑になることなんてあり得ないから、理解しようがない。
だから、「頭でっかち」方式で最初に学ぶのはかなり無理。
デタラメでもいいからやってみて、
自分で「ああこういう事をすると苦労するのか」と地雷を全部踏んでみれば納得するだろうし、
おそらくそっちの方が早い。そうしているうちに上達もするだろうし。

OOPで一番重要なのは「分割」だ。(粗結合化)
ところが初心者が組める規模では「分割」する必要なんてないから、
初心者は常に「継承」をこねくり回して練習しようとするが、それは明確な間違いだ。
それをいくらやっても意味がない。
「分割」しないと手に負えない規模の物を早く組めるようになり、
それを上手く「分割」出来るように努力することだ。
ここら辺の話は「プログラミング言語C++」に書いてある。
(今のOOPはC++作者が再定義したものだから当然ではあるが)
0882デフォルトの名無しさん
垢版 |
2018/04/02(月) 00:22:40.39ID:zddvN9B7
>>881
まあ君はやろうとしているだけかなりマシだよ。
やろうとせずに知ろうとだけする奴も多いからね。
そもそも、

・これこれこうで、後はよきにはからえ

と処理を投げられる物をオブジェクトにするべきであって、
逆に、そうでない物をオブジェクトにしても余計に話が混乱するだけ。
「隠蔽」も、初心者はとにかく「隠蔽」しようとするが、これも間違いで、
(外部から使うときに)そもそも見たくも知りたくもない物を「隠蔽」するんだよ。

といっても、やらないと分からないだろうから、まずは頑張れ。
0883デフォルトの名無しさん
垢版 |
2018/04/02(月) 04:18:10.81ID:3ewhMOuh
>OOPはC++作者が再定義したもの

元凶だよな
Javaも再定義してるけど
0884デフォルトの名無しさん
垢版 |
2018/04/02(月) 08:32:10.05ID:i02Vx/uo
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル
0886デフォルトの名無しさん
垢版 |
2018/04/03(火) 00:23:48.15ID:cU9BUIMs
電気の部品が誤訳か
0887デフォルトの名無しさん
垢版 |
2018/04/03(火) 07:27:20.27ID:93hqFpFO
>>883
C++(というかその設計者)はSmalltalk(同)のメッセージングのOOPを
ユーザー定義型(=抽象データ型)のOOPとして再定義したわけだけど
JavaはOOPの何を再定義したの?
0891デフォルトの名無しさん
垢版 |
2018/04/03(火) 16:24:37.04ID:R6gDm2yr
一番上手くやってるのは Objective-C だと思う
0892デフォルトの名無しさん
垢版 |
2018/04/03(火) 19:48:24.93ID:J58Y9OWc
Obj-C好きなのだが中身がC丸出しなのがなぁ…
swiftは文法モダンに!でまた“ここで処理投げてます!”が
わからないようにする悪弊組み込まれちゃったし…
(それは退歩なんだってば)
0893デフォルトの名無しさん
垢版 |
2018/04/03(火) 20:48:38.44ID:MVEz7YW1
20年前はObjcet-Cなんて一部の物好きの研究者しか使ってなかった

FORTANやPascalと共に滅亡して時代はC++かJAVAの二強になると
堅く信じていた当時からすれば今のObject-Cの人気ぶりには隔世の感がある
0894デフォルトの名無しさん
垢版 |
2018/04/03(火) 21:27:13.17ID:/J95OWxU
objcが人気なんじゃなくてiPhoneが人気なだけ
swiftの普及の早さを見ればわかるでしょ、みんな嫌々objcを使ってたって
0895デフォルトの名無しさん
垢版 |
2018/04/03(火) 21:53:44.19ID:xHu3FOx+
使われているかどうかと人気があるかどうかは別だからね
嫌いだけど選択肢が少ないから仕方なく使っているって人も多い

だって実際に

> 嫌われる傾向が強いほかの言語には、「PHP」「Objective-C」
>「CoffeeScript」「Ruby」などが挙がっている。


https://builder.japan.zdnet.com/tool/35109803/

> Stack Overflowは、この嫌われている言語ランキングに
> 使用したデータを、求職情報ページの「Developer Story」ページから
> 集めた。Developer Storyは、開発者が自分の職歴や実績などを
> まとめて公開できるサービスだが、このページには使いたい言語と使いたくない言語のタグを追加できるようになっている。
>
> 嫌われる傾向が強いほかの言語には、「PHP」「Objective-C」
>「CoffeeScript」「Ruby」などが挙がっている。
>
> 一方、嫌う人が少ない言語には、「R」「Kotlin」「TypeScript」
>「Rust」「Bash」「Clojure」「Swift」「Python」「JavaScript」「Go」などが並んだ。
0896デフォルトの名無しさん
垢版 |
2018/04/03(火) 21:59:40.75ID:xHu3FOx+
こっちは別のデータ

https://news.mynavi.jp/article/20170330-a133/

> fossBytesに3月28日(米国時間)に掲載された記事「Which Are The Most Loved and Most
> Hated Programming Languages|2017」が、Stack Overflow Developer Survey 2017の
> 調査結果を引き合いに出し、開発者に愛されているプログラミング言語と嫌われている
> プログラミング言語のトップ25を伝えた。愛されているプログラミング言語1位は
> Rustで、これにSmalltalkとTypescript、Swift、Goが続いている。
>
> 嫌われているプログラミング言語トップ25は次のとおり。

> Visual Basic 6
> VBA
> CoffeeScript
> VB.NET
> Matlab
> Objective-C
> Assembly
> Perl
> Lua
> Hack
0897デフォルトの名無しさん
垢版 |
2018/04/04(水) 03:20:59.36ID:h2UR4/YM
>>895
なんでVBとかVBAが入ってないし
0898デフォルトの名無しさん
垢版 |
2018/04/04(水) 03:22:51.75ID:h2UR4/YM
>>896
そっちも Java がスルーされてるな
CoffeeScript は悪くないと思うんだけど
D とか Julia は呼ばれてないな
0902デフォルトの名無しさん
垢版 |
2018/04/04(水) 09:52:34.51ID:xIeCjOW7
お前のツッコミも余計
手ぶらの批判は誰でもできる
事実としてPharoの処理系は更新され続けてる
0903デフォルトの名無しさん
垢版 |
2018/04/04(水) 13:33:18.19ID:1Ww7GQWk
最近ようやくしょぼい専用VCS諦めてしょぼいGitHubクライアントを組み込みにしだしたみたいだね
0906デフォルトの名無しさん
垢版 |
2018/04/04(水) 16:15:15.27ID:Vp4f9mRG
インスタンス造り機に「このクラスのインスタンスを作れ」ってぶち込むより
クラスに自分のインスタンス造る機能が入ってて
「おまえのコピーをこの名前で作れ」の方が個人的には関与する言語機能が減って好き。
0907デフォルトの名無しさん
垢版 |
2018/04/04(水) 17:04:03.96ID:Pmay6Vdj
javascriptか
0908デフォルトの名無しさん
垢版 |
2018/04/05(木) 00:06:12.16ID:gzVEs0yB
>>902
> 事実としてPharoの処理系は更新され続けてる

更新されているからと言って現役ということにはならない
あたりまえのこと言わせんな
0909デフォルトの名無しさん
垢版 |
2018/04/05(木) 00:08:00.87ID:gzVEs0yB
>>906
> 「おまえのコピーをこの名前で作れ」の方が個人的には関与する言語機能が減って好き。

コピーしかできないのか?
なにもないところから作ることはできないのか?
コピーを作った後に、値を変更してインスタンスを完成させるのか?
0911デフォルトの名無しさん
垢版 |
2018/04/05(木) 09:23:27.96ID:ZXf9eqYN
それを言うなら Test.Default().Clone() とか Test.Default().Copy() かと

> 作った後に、値を変更してインスタンスを完成させるのか?

これってプロトタイプベースだから必要なわけではなく、クラスベースでもコンストラクタで普通にやってる作業だよね?
0912デフォルトの名無しさん
垢版 |
2018/04/05(木) 09:31:20.59ID:ZXf9eqYN
>>908
他の言語の場合は、更新程度なら必要条件にすらならないかもしれないけれど
Smalltalkみたいにドックフードとして食らうことが避けられず
動的かつ可塑性を最大の利点にしている言語・環境に限れば
更新(変化)し提供され続けていることは少なからぬ人に使われている証拠として十分だろうね
0913デフォルトの名無しさん
垢版 |
2018/04/05(木) 09:36:41.34ID:zY62GpOZ
ドックフードとして食らうことが避けられず
動的かつ可塑性を最大の利点にしている言語・環境
0920デフォルトの名無しさん
垢版 |
2018/04/05(木) 23:45:55.89ID:YZZKvgKX
>>912
作る人がいることの証明にはなってるが
使う人がいることの証明になってないよ

誰も使って無くても、更新し続けることはできるんだから
0921デフォルトの名無しさん
垢版 |
2018/04/06(金) 07:23:27.16ID:LPJ18IcZ
たとえばMatzはRubyをほとんど使わないけどRubyに変更を加え続けていたしそれは容易だ
Rubyに限らず通常の言語の場合たとえ使う人がゼロでもリリースし続けることは理論的に可能

しかしSmalltalkの場合、Smalltalkを使わずにそれに変化を加えることはできないんだよ
0922デフォルトの名無しさん
垢版 |
2018/04/06(金) 07:32:26.80ID:8wNEeXKm
>Smalltalkの場合、Smalltalkを使わずにそれに変化を加えることはできない

それが正しいとしても
Smalltalk処理系の開発者はその処理系を使い続けている
ってことになるだけで
Smalltalk処理系の開発者以外の人がその処理系を使い続けている
かどうかは分からないよな
0924デフォルトの名無しさん
垢版 |
2018/04/06(金) 09:04:24.09ID:MsWWfJyW
>>922
他の言語では 処理系開発者=利用者 には必ずしもならないが
Smalltalkではその特殊性から 処理系開発者=利用者 がほぼ成り立つ
したがって、Smalltalkは更新されリリースされていれば利用者は必ずいる

上にもあるがこれだけだよ君はいったい何と戦っていて何を証明したいんだ?
「利用者」の定義をしぼればいつかはSmalltalkの利用者はゼロにできるけど
それだと「俺ほどの人間のアンテナにひっかからないSmalltalkは死滅しているも同然」という情弱識者とたいしてかわらんぞ

もし本当にSmalltalkが実務等で使われているか知りたければ sorabito "smalltalk" とかでググるか
http://pharo.org/success/ にアクセスして事例を精査してみればいいと思うけど
実際のところSmalltalkがどうあろうが端から興味なんてないんだろ?
0925デフォルトの名無しさん
垢版 |
2018/04/06(金) 09:42:07.15ID:sTfZcU1Y
>>911
プロトタイプベースでもコンストラクタ定義すればいいだけだよな
0927デフォルトの名無しさん
垢版 |
2018/04/06(金) 10:15:31.78ID:MsWWfJyW
>>926
たぶん>>924 の = の誤りの指摘だと思うんで念のためお詫びと訂正しておくと、
これは「〜ならば」の間違いなので申し訳ないけど適宜読み替えてほしい
Smalltalkであっても利用者 = 処理系開発者 の関係は必ずしも成り立たない
ついSmalltalkのメッセージ式っぽく考えて交換法則を忘れてしまった^^;

まあ屁理屈をこねればSmalltalkにおける開発とはすなわち言語や環境の拡張に他ならないので
利用者はすべて処理系開発者だとも言えなくもないけどそれはさすがに言い過ぎだろうしここで主張したいことではない
0928デフォルトの名無しさん
垢版 |
2018/04/06(金) 10:22:42.82ID:ZnmviTnR
Smalltalkは
海外だと事例けっこうあるんだけどね
日本だとあんまり使われてない
0929デフォルトの名無しさん
垢版 |
2018/04/06(金) 10:39:28.53ID:8wNEeXKm
xがSmalltalk処理系の開発者ならばxはそのSmalltalk処理系の利用者である

というのが正しいとしても、処理系開発者以外に利用者がいるとは言えない
>>908>>920が言ってるのも「処理系開発者以外の利用者」についてだと思う
0931デフォルトの名無しさん
垢版 |
2018/04/06(金) 10:44:41.31ID:MsWWfJyW
>>929
こだわるね^^;
では処理系開発者をその言語の利用者にカウントしてはいけない合理的な理由を述べてよ
0933デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:01:06.13ID:8wNEeXKm
>>931
>処理系開発者をその言語の利用者にカウントしてはいけない

誰もそんなことは言っていないわけだが

利用者が処理系の開発者だけの状況を、その言語は現役とか
その言語は普及しているとか言わないだろ
>>908>>920が言ってるのもたぶんそういうこと
0934デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:48:03.10ID:MsWWfJyW
>>933
まず君の思う「現役」の定義を明確にしてよ
これまで誰も主張していない「普及」をいきなり持ち出してきたけど、それが答え?
もし一定のシェアをとっていない言語を「現役」と言ってはいけないって法があるなら
今のSmalltalkは誰が見ても明らかに違うだろうこれで満足?

ただシェアこそないがコミュニティはかつてないほど活発だしまして「死滅」からほど遠いのも事実
これをもって「今でも現役」と表現することも決して間違いではないと思うが違うのか?

そもそも>>900の「現役」は>>899を受けての「死滅」なぞしていないという意味でしかない
その文脈を読めてない>>901が自分の考える「現役」と違うってだけの単純な話を
なにをそんなにこだわって執拗につっかかり続けるのかわからん
Smalltalkが今も「現役」を名乗ると個人的になにか不都合でもあるの?
0935デフォルトの名無しさん
垢版 |
2018/04/06(金) 11:59:37.86ID:3wQ1F3ea
Objective-CがiOS絡みで再び出てきた時に自分が理解できず
「変態言語!変態言語!!」ってほざいてた頭ゆるいアンチApple老人が
いやあれはねとsmalltalkerが擁護するの見て
『ならsmalltalkも俺の敵だ!』ってやってるだけだからw
0936デフォルトの名無しさん
垢版 |
2018/04/06(金) 12:27:10.77ID:8wNEeXKm
>>934
912>更新(変化)し提供され続けていることは少なからぬ人に使われている証拠として十分だ

とか言い出すからおかしくなる
処理系が更新されてるから少なからぬ人に使われているのは間違いない、だから現役だって主張だろ
「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい

処理系が更新されているからと言って現役ということにはならないのだから
0937デフォルトの名無しさん
垢版 |
2018/04/06(金) 12:52:57.07ID:MsWWfJyW
>>936
なるほど「少なからぬ」を文字通り「普及」や相応のシェアを持っているという主張だと短絡して反発したわけね
これもやはり 「死滅」=利用者ゼロあるいは数名 に対し「そんな少なくはない」という程度の意味だと思うけど

では何人くらいが使っていれば「現役」を名乗っていいわけ?とにかくそれを明確にしてよ
0938デフォルトの名無しさん
垢版 |
2018/04/06(金) 12:58:53.40ID:8wNEeXKm
>>937
知らん
俺が言いたいのは

処理系が更新されているからと言って「少なからぬ人に使われている」ことにはならない
「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい

ってだけだし、>>908>>920が言ってるのもたぶんそういうこと
0940デフォルトの名無しさん
垢版 |
2018/04/06(金) 13:50:08.64ID:JkCTmz46
ってか利用者ゼロもしくは数名じゃないなら現役なんだったら、やっぱりDは現役じゃん
0941デフォルトの名無しさん
垢版 |
2018/04/06(金) 15:10:21.25ID:EuPCLdj/
>>938
改めて訊くけど処理系開発側になったらもう利用者としてカウントされなくなるのはなぜ?
利用者が処理系の気にくわない部分に手を加えてそれが採用されるパターンとかよくあると思うんだけど
それともその程度なら開発側とは考えなくても良いの?その場合の線引きは?
0942デフォルトの名無しさん
垢版 |
2018/04/06(金) 15:28:16.59ID:8wNEeXKm
>>941
なぜたったこれだけのことを理解できないのだろう

>処理系が更新されているからと言って「少なからぬ人に使われている」ことにはならない
>「少なからぬ人に使われている証拠」とかいうのがあるなら最初からそれを出せばいい
0944デフォルトの名無しさん
垢版 |
2018/04/06(金) 17:33:39.79ID:A2hg00U/
Smalltalk や Pharo をGoogleトレンドで調べてみると、Windows 95の 1/3 でWindows 3.1 やD languageと同等くらい
(なお、言語だけじゃなくOSと比較したのはSmalltalkは環境であるってのに敬意を評して)

https://trends.google.co.jp/trends/explore?q=Smalltalk,Windows%2095,Windows%203.1,Pharo,D%20Language

Smalltalk、もしかしたらWindows 3.1と同じくらいのユーザ数に使われてるかも知れんね。凄いね!
0947デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:13:21.34ID:3wQ1F3ea
「売れてるアニメが勝ちなんだから売れてる証拠をおまえが出せよな!」
(相手にされない)
「ほらDVDの円盤の販売数を調べたぞ!ほっら売れてないからおまえの負け〜俺の勝ちー!」
(一同失笑)
0948デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:39:10.60ID:BhlurXrp
脈絡なくアニメで例え出すのも意味不明でキメェし、
別のSmalltalkerがそれに普通に乗っかるのもキメェ
0949デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:45:48.91ID:gJMJciRt
>>941
> 改めて訊くけど処理系開発側になったらもう利用者としてカウントされなくなるのはなぜ?
「処理系開発側になったらもう利用者としてカウントされなくなる」とは言っていない


話の順番が逆で
先にお前が「処理系開発側を利用者としてカウントする」などと
おかしなことを言ったから、お前の間違い指摘しただけ

ここでお前が言ったことを改めて言い直してみようか?

「利用者数がわからないので、処理系開発者を利用者に含めていいですか?」

良いというわけがなかろう?
0951デフォルトの名無しさん
垢版 |
2018/04/07(土) 10:19:42.41ID:f0JiZPxN
メーリングリストの投稿者数(重複除く)から見積もると
Pharo Smalltalkの利用者は数千人くらいはいる

Haskellのだいたい半分くらい
0954デフォルトの名無しさん
垢版 |
2018/04/07(土) 11:49:47.91ID:sP9L7wqi
それ人気が低い順にランキングで並べて表示してるだけで、利用者数の絶対値じゃないよ
Smalltalkは約20位でHaskellが約40位だけど、これはSmalltalkとHaskellの間に他の言語が20個あるという意味でしかない

そのリンクの下方にrawdataがあるけど(http://www.dataists.com/wp-content/uploads/2010/12/language_ranks1.csv)、
この中で絶対値はtagcountだけで、それだとsmalltalkが189に対しHaskellが1896で10倍の差がある
0955デフォルトの名無しさん
垢版 |
2018/04/07(土) 12:42:55.45ID:Of9pall5
複数のプログラミング言語を使いこなしてる奴なんて世界でも僅かだろ。
比較する資格すら持たない連中がシェアなるもので一喜一憂するのは何で?
0959デフォルトの名無しさん
垢版 |
2018/04/07(土) 13:44:56.97ID:Ohs7bjSh
>>924
"sorabito smalltalk" でググったら、

ベンチャーで最初にいたエンジニアがsmalltalkerでsmalltalkを採用したとか、
そのエンジニア(元CTO)は去年12月に辞めたとか、
いまの採用ページにはsmalltalkに一言も触れてないとか、

色々あったんだろうなって想像できて面白かったわ。ありがとうw
レス数が950を超えています。1000を超えると書き込みができなくなります。

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