X



データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
垢版 |
2016/06/19(日) 14:47:29.63ID:5KvSKdL/
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

データ構造,アルゴリズム,デザインパターン総合スレ 2
http://echo.2ch.net/test/read.cgi/tech/1362301811/

【関連スレ】
3Dアルゴリズム全般
http://toro.2ch.net/test/read.cgi/tech/1164171086/
<集大成>アルゴリズム大辞典
http://toro.2ch.net/test/read.cgi/tech/1086272325/
アルゴリズム総合スレ in ム板
http://toro.2ch.net/test/read.cgi/tech/1217773415/

アルゴリズムとデータ構造 - Kaneko Lab.
ttp://www.kkaneko.com/adp/algo/index.html
アルゴリズムとデータ構造 - ソースコード探険隊
ttp://www.codereading.com/algo_and_ds/
各種アルゴリズムの C++ による実装 - Spaghetti Source
ttp://www.prefield.com/algorithm/
アルゴリズムとデータ構造 - プログラミングスレまとめ in VIP
ttp://vipprog.net/wiki/algo_and_data_const.html
0767デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:09:02.25ID:croU9pw3
ちょっと質問させてください。
状況: トータル1000行くらいある巨大メソッドの改修
言語; PHPだがどの言語でもそう関係のない内容

・まずコントローラのアクションメソッドがあって

public function action(引数){

/* 500行くらいの既存コード */

/*今回改修を加えたい50行位のコード */

/* 500行位の既存コード */
}
となっている。
0768デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:16:40.00ID:croU9pw3
・ここで、改修要件は、中間にある「/* 50行くらいの既存コード */」を
  if文で分岐させて分岐次第で違う処理を入れる。というもの。
  したがって、

public function action(引数){

  /* 500行くらいの既存コード */

  if(条件1){
    /* 新規追加コード */
    if(条件1-1){
      /* 新規追加コード */
    }else{
      /* 既存コード */
    }
  }else if(条件2){
    /* 新規追加コード */
  }else{
    /* 既存コード */
  }

  /* 500行位の既存コード */
}

みたいにひたすら条件分岐して既存コードと新規追加コード
が何回も実行されるようにしたい。
0769デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:22:57.90ID:croU9pw3
・ここで、俺は「/* 既存コード */」の中身を知っている必要は
 ないと思った。だから、このコードの詳細を読まずに「func()」
 として「action()メソッド内部」に切り出した。
・外部に切り出したのではなく、内部に切り出したのはその処理が
 他のアクションメソッドでは共有されるような汎用的なものではないだろうと
 判断したのと、そのメソッド内で処理を追いやすいようにというのを
 優先させたため。何より、その処理内で使っている関数内ローカル変数の
 依存性の関係上そうせざるを得ないと思った。

public function action(引数){

  /* 500行くらいの既存コード */

  private function __legacy(){
    /* 50行くらいの既存コード */    
  }

  if(条件1){
    /* 新規追加コード */
    if(条件1-1){
      /* 新規追加コード */
    }else{
      __legacy();
    }
  }else if(条件2){
    /* 新規追加コード */
  }else{
    __legacy();
  }

  /* 500行位の既存コード */
}
0770デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:31:59.59ID:croU9pw3
・【訂正】上記で「func()」として切り出したと言っているが、
  「__legacy()」に変更しました。すみません。
・上記のように改修した所、レビューを受けたときに怒られた。
・まず、「この__legacy()の中身ちゃんと読んだ? 把握して書いている?」
 という指摘。
・そして「ここメソッド内だけどどうして関数定義しているの?
 他の人そんなことしてないでしょ。どうして変わったことするの?」
 という指摘。

・まず1つめの指摘に対して異議がある。
 ブラックボックス化しなければ大規模なコードは書けないんじゃない?
 ということが言いたい。ライブラリとかフレームワークの機能も全部
 先に中身をよくよく読んでおかなければ使ってはいけないことになるじゃん。

・2つの指摘に対して、
 「周りの人がやっていること」が正しいとは思えない。
 処理を切り出していないから1000行もある巨大なメソッドになっていて、
 汚いコメントで汚しながら機能追加しまくっているんじゃないのかと。
 ローカル変数を使いまくりの同じ処理を何回も実行するのに
 他に良い手段があるとしたら皆さんに教えて頂きたい。
0771デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:24:11.47ID:d+M5RyEv
汎用的でない50行のコードをコピペしてるんなら関数化してもインライン化してもどっちもどっちだな
DRYを意識したのかもしれんがKISSが抜けてる
それにブラックボックスが許されるのは有名なライブラリやフレームワークのようなテストにテストを重ね、かつ多くの利用者による実績があるものだけだよ
社内コードなんて大概クソコードだしブラックボックスにしても後で痛い目を見るのは自分や他の開発者
何なら単に今把握するだけじゃなくて、未来の自分や開発者のためにわかりにくいところをコメントで説明書きしてもいいくらいだ

あと関数内関数より無名関数を変数に代入した方がいいんじゃね
そもそも新規追加したif文も詳細はわからないがデータよりもロジックに寄っててわかりにくそうな匂いがプンプンする

それに上司には理由を聞かれてるんだから同じローカル変数に別の値を入れて使い回すことの危険性、関数化による参照透明の確保や保守性、メンテナンス性の向上を論理的に答えればいいだけ
0772デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:31:29.00ID:ZUclbhk1
>>770
レビュアーが言ってることを正しいと仮定すれば
・1つ目の指摘は既存のコードがカプセル化されてないからだ
・2つ目の指摘はリファクタリングするだけの時間やお金や技術がないからだ
という前提が必要になるから、まあそういうことなんじゃなかろうかと

残念なコードっていうのはあるからね
それを修正する費用と修正して得られる効果を比較対照して
これだけの効果があるんだからこうするべきだと提案をまとめて
説得するのがいいのだろうけど、技術に理解のある人がいないとなかなか難しいね

レビュアーの立場で考えると以下の作業があるんじゃないかと
・改修要件を満たす改修
・既存のコードをカプセル化する
・リファクタリングする

レビュアーは既存のコードとの一貫性を維持しつつ
改修要件を満たす最小の改修をやって欲しいのだろうね

たとえ汚らしいコードであってもいままで動いてきた実績があると
変更に対しては既存のコードをできるだけ変えないようにと保守的になるものだよ

レビュアーがそれをきちんと説明できればいんだけど
コードはクソ、レビュアーもクソなんてことはザラにあるんですよこれが
0773デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:35:53.06ID:croU9pw3
>>771 なるほど勉強になります。
少し質問したいが、
・「KISSが抜けている」と言うのはどこらへんでしょうか?
・関数内関数と無名関数の変数化の違いがわからないので教えてください。
 (面倒なら調べます。)
・あなたならどう対応する?
・「理由を聞かれてるんだから答えればいいだけ。」
 →多分論理的に説明したら「じゃあもう何も教えないよ。好きにやって」
  が返って来ると思われる。
  そう言われると、必要な情報も来なくなるし聞けなくなる。
0774デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:38:47.27ID:croU9pw3
>>772
なるほど、俺自身が「既存コードのカプセル化」と
「改修要件」という概念と「改修要件を最小に満たす」という
ことについて詳しくないことに問題がありそうだね。
ありがとう、ここらへんをキーワードにして調べてみます。
0775デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:55:23.50ID:d+M5RyEv
>>773
多分もっと細かく汎用的な(publicにできる)関数の集まりに分解して、汎用的でない部分は最小限に出来るんじゃないかなーって思った
実際のコード見てないから予想だけど

関数内関数だとわざわざprivateかけないと外からアクセス出来ちゃうし、元の親関数抜けても子関数が死なない

そもそも上司とあんまり仲良くないの?
論理的にメリットを売り込んだときに感情論で否定されるくらいの関係性だと下っ端プログラマーはしんどいよ?
まぁ俺ならその段階なら折れて普通にコピペして、もっと実績残して仲良くなってから似たような案件のときに改めて売り込むかな
0776デフォルトの名無しさん
垢版 |
2017/12/24(日) 16:09:59.00ID:RfRGBvGh
ひとつのメソッドに1000行も書かせる会社はまず危ない

アルゴリズムとかそれ以前
0777デフォルトの名無しさん
垢版 |
2017/12/24(日) 16:57:23.08ID:croU9pw3
>>775
なるほど、「まるまる関数化」というのが
ちゃんと機能を意識してカプセル化していないってことか。
一応privateは欠けているけど、関数オブジェクトと
関数定義の違いはあまり詳しくないね。そうか、親関数が抜けたとき
子関数が死ぬか否かの違いがあるわけね。
入りたてだから人間関係はいいも悪いもない。
ただ、本来責任ある人はバタバタしていて、経験ある人が自分の意志で
新人のレビューをバラバラに行っている感じ。

>>776
会社がそうさせているというよりはそれぞれの人員が
これまでの追加の仕方を真似て機能追加した結果メソッドがブクブクと太っている
という状況に見える。
メソッド内で各追加機能がコメントで区画されていてそれなら
別関数にすりゃいいのにって思っている。
俺をレビューした人も、別に会社の工程でそうなっているわけでなく、
進捗を見たかったからだと思うが、書き直しを要求してきて困惑している。
ただ彼は業務要件については圧倒的に俺より詳しいから無視すべきではないと
思っている。
0778デフォルトの名無しさん
垢版 |
2017/12/24(日) 17:21:20.21ID:d+M5RyEv
>>777
カプセル化はオブジェクト指向において関連するものをまとめる作業だから、ちょっと違うかな?
どちらかというと今回の話は関数型プログラミングの考え方に近い
まぁぶっちゃけ職場のコードなんて割り切らんとやってけんよ
出世してコーディングスタイルに口を出せるようになる日を待つしかない
0780デフォルトの名無しさん
垢版 |
2017/12/26(火) 20:02:37.53ID:IVX+3dWv
名前だらけのコードってどうやって解読すればいいんだ?
変数化するとそのデータの型が何なのか物量的にどれだけの
規模が格納されているかが見えない。
もちろんログに吐けば見えるが、吐き出さなければパッと見で
何をどう処理しているのか分からない。
0782デフォルトの名無しさん
垢版 |
2017/12/27(水) 07:26:44.87ID:uxDwhrz8
関数型言語の仕様書ってUMLで良いの?

データと振る舞い分離してるからクラス図使って良いのかなと
0784デフォルトの名無しさん
垢版 |
2017/12/28(木) 07:02:18.99ID:THqyhi+6
>>783
英語敷居たけえ

まあデータと振る舞いを書いたクラス設計は関数型言語でも同じように使えるし問題ないか
0787デフォルトの名無しさん
垢版 |
2018/02/03(土) 08:08:45.43
今どきデザインパターンって死語なの?
ちょっと参照したいことがあって書店でデザインパターンの本を探したけど見つからなかった。
リファクタリングの本はあって多少はデザインパターンの話も出てきたけど。
結局は家に帰ってから10年前に買ったデザインパターンの本を参照するしかなかった。
0790デフォルトの名無しさん
垢版 |
2018/02/03(土) 12:22:10.78ID:ROxRBp/z
デザパタは元々バカの為にまとめられたものだったけどバカには無理だった代物
一方リファクタリングはバカ程好むからなかなか廃れない
0791デフォルトの名無しさん
垢版 |
2018/02/03(土) 19:53:28.27ID:4eWkMwg8
21世紀最新のデザインパターン本て誰か書かないかね
Singleton→大抵はstaticでOK
みたいなの
0793デフォルトの名無しさん
垢版 |
2018/02/04(日) 00:33:23.10ID:P/Ibpspu
デザインパターンて結局何だったんだ?
高い本まで買ったがほとんど身に付かなかったな
0794 ◆QZaw55cn4c
垢版 |
2018/02/04(日) 00:43:54.12ID:p5zvJFKF
>>793
もともと C++ 界隈で発生したテーマですので、C++ をやっているとデザパタの意義がよくわかります
C++ は細かしいことまで自分で記述しなければならないので、こういう大枠思考がもてはやされたのだと思います
0795 ◆QZaw55cn4c
垢版 |
2018/02/04(日) 00:44:42.44ID:p5zvJFKF
ああ、でも C++ はテンプレートの世界観に移行してしまったので、デザパタ、今はあんまり使いません!
0796デフォルトの名無しさん
垢版 |
2018/02/25(日) 14:54:54.10ID:LHXgrTbX
>>793
アルゴリズムの話するときの共通語が必要になって
ついでに良し悪しもまとめておこうという話になった
0798デフォルトの名無しさん
垢版 |
2018/02/25(日) 18:39:48.45ID:hAg+nb3o
デザインパターンそこに至る考え方を身につけないと
というわけで、オブジェクト指向のこころをオススメしとく
0800デフォルトの名無しさん
垢版 |
2018/03/05(月) 21:38:39.67ID:aiLdZy6r
『アルゴリズムイントロダクション』を読んでいます。

ヒープソートのところに、

「サイズ n のヒープ上の MAX-HEAPIFY の最悪実行時間が Ω(lg n) であることを示せ。」

という問題があります。

最悪実行時間が Θ(lg n) であることはすぐに分かります。
なぜ、 Ω(lg n) であることを示せという問題なのでしょうか?

最悪実行時間や最良実行時間については、 Θ 記法で書くのが自然だと思います。
0801デフォルトの名無しさん
垢版 |
2018/03/06(火) 01:54:34.90ID:bDrXTt4P
まるちんこ
0802デフォルトの名無しさん
垢版 |
2018/03/07(水) 21:29:45.52ID:ukyKg6LA
セジウィックさんはいい加減ですね。

近代科学社から出ている『アルゴリズムC』の最小全域木のところを読んでいますが、
同じ重みの辺が2つ以上あると議論が破綻するところがありますね。

Wayneさんと共著の『Algorithms』では、すべての重みが異なるという仮定をおいていますね。

いずれにしてもひどい本です。
0803デフォルトの名無しさん
垢版 |
2018/03/07(水) 21:31:54.51ID:MzP8rhu8
キミはまだアルゴリズムの勉強していたのか。

人には向き不向きというのがあってだな。
0804デフォルトの名無しさん
垢版 |
2018/03/07(水) 21:33:49.91ID:ukyKg6LA
すべての重みが異なるというのは異常な仮定ですよね。
0805デフォルトの名無しさん
垢版 |
2018/03/07(水) 22:27:03.62ID:ukyKg6LA
茨木俊秀著『アルゴリズムとデータ構造』を読んでいます。

この本のクラスカルのアルゴリズムの正しさの証明に使われる補題の証明ですが、
読んでも分からなかったのですが、やはりおかしかったんですね。

同じ著者の『Cによるアルゴリズムとデータ構造』を読むと補題の証明が修正されています。

この分野っていい加減な本が多いですよね。
0806デフォルトの名無しさん
垢版 |
2018/03/08(木) 19:38:26.94ID:NHHLXFak
任意の連結無向グラフ G = (V, E) は |E| ≧ |V| - 1 を満たすことを示せ。
0807デフォルトの名無しさん
垢版 |
2018/05/12(土) 10:59:28.10ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/
0808デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:11:35.70ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

BU06O
0809デフォルトの名無しさん
垢版 |
2018/06/24(日) 11:32:17.25ID:cbD8du/l
AVL木について詳しく載っている本は何ですか?
0810デフォルトの名無しさん
垢版 |
2018/06/24(日) 14:42:02.78ID:/GtGgmfo
詳しいと言えるかどうかは別にしてAVL木に関する説明が分かりやすいと思ったのは次の本の該当箇所(§6.3)だ

浅野哲夫『データ構造』、アルゴリズムシリーズ1、近代科学社 (1992)
0811デフォルトの名無しさん
垢版 |
2018/06/24(日) 15:07:06.81ID:F1zD07yq
ステマ
0812デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:09:33.44ID:gFgZc5FG
C5O
0814デフォルトの名無しさん
垢版 |
2018/07/21(土) 20:42:50.98ID:4Q935nRZ
1つ言えるのはオブジェクト指向のなんかよりも
データ構造とアルゴリズムの方がよっぽど重要だということ。
昔はオブジェクト指向の勉強を頑張っていたけどそのときは
全然プログラミングがうまくならなかった。
現代の世の中はガチガチに設計されたライブラリを使って
コードを書くだけだから生半可なオブジェクト指向の知識なんて
ゴミ同然だよ。80年代90年代に考えられた思想とか、もうゴミに
なってしまった思想が多くて有害だよ。
結局現場でやることは「メソッドの使い方を求めてQiitaやStack OverFlowを
漁って成功するコードを見つけるまで疲れ果てる」ことに変わりはない。
せっかく勉強した内容が時代遅れで「裏切られる」ことのほうが多い。
0815デフォルトの名無しさん
垢版 |
2018/07/21(土) 20:51:29.70ID:4Q935nRZ
一方、データ構造とアルゴリズムをガッツリと勉強してから
様々なデータ構造の使い方、問題の解決がうまくなった。
ブロックチェーンのアルゴリズムの理解や
データ分析の数学的演算がコーディング
できるようになってプログラミングが格段に楽しくなった。
スマートにオブジェクト指向で設計する力なんかより
「ゴリゴリとアルゴリズムを書く力」の方がよっぽど重要。
「再利用性」?「変更の影響」だって?そんなものゴミだね。
それは自分以外の人間のメリットのための技術であって、
自分へ還元されるためのメリットではない。
再利用性は自分の書いたコードなら信頼できるしコピペして使えばいい。
自分の書いたコードのコピペは全然ありだと思う。
適したメソッドが見つからなかったらQiitaを漁ったりせずに
自分でゼロから実装したほうが速い。
その場で手っ取り早くコードを生成しているから、
どんな既存コードにも頼っていないから俺の実装したコードは
依存性は低い。
0817 ◆QZaw55cn4c
垢版 |
2018/07/21(土) 21:58:56.02ID:vWALYQin
>>815
一つ重要な視点を提供しましょうか
自分の記憶などあてになりません、3ヶ月前自分が書いたコードは、もはや他人が書いたコードとなんら変わりありません
0818デフォルトの名無しさん
垢版 |
2018/07/21(土) 22:06:10.19ID:BkDv2dG7
>>814-815はすでに解いたことのある問題なら
忘れたとしても、少し時間をかければ解けると考えている

つまり誰かが出した出題を解くという作業をしている
0819デフォルトの名無しさん
垢版 |
2018/07/21(土) 22:34:33.64ID:4Q935nRZ
>>>817, 818
自分のいつも使うアルゴリズムのパターンが身についていれば
そのパターンや命名規則から何をやっているかは解読できる。
読みにくくなるのは外部から取り込んだ機能の実行や
継承している部分。
0820デフォルトの名無しさん
垢版 |
2018/07/21(土) 23:12:43.54ID:BkDv2dG7
>>819
やっぱり「解読」してるんだw

すでに証明済みの問題を自分の力で証明するという
お勉強をやってるだけだね
0821デフォルトの名無しさん
垢版 |
2018/07/21(土) 23:21:07.94ID:evbWgLmC
研究者で無い限り新しい証明考える必要ないっしょ
0822デフォルトの名無しさん
垢版 |
2018/07/21(土) 23:22:28.87ID:evbWgLmC
解読の工程は業務でも必要であるし
遊びとしても面白い
それが勉強になるならとても有益じゃん
0823デフォルトの名無しさん
垢版 |
2018/07/21(土) 23:34:47.51ID:4Q935nRZ
「車輪」は大きさ、材質、シャフトの接合部の形、色…大まかな形や役割は似ているが微妙に違うものが無数にある。
ちょっとでもこれらの特徴がずれたものは他への転用を考えるとすぐに不具合となって使い物にならない。
車輪を最初に「発明」した人物はこれらの無数の車輪を全て発明したわけではない。
だから他の人が死ぬほど似たようなものを作っていたとしても自分で作る必要がある。
他人が作った車輪は無条件で役にたつわけがない、
手直しして組み込むより「自分の規格で」作った方が早い。
0825デフォルトの名無しさん
垢版 |
2018/07/22(日) 00:34:31.50ID:J1Nh86LO
車輪が小さかったからゴム巻いたらなんとかなった
これがオブジェクト指向です
0826デフォルトの名無しさん
垢版 |
2018/07/22(日) 02:15:34.77ID:+JtpRhMz
時代が違うからな。アルゴリズム考えてうんうん唸る時代は終わってるんだよ
今はそういうアルゴリズムが実装されたライブラリを組み合わせて
アプリを作る時代だってMITも言ってる

MIT「今は基礎よりライブラリ組み合わせてアプリ作る時代」 [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1462443213/





MITがSICPを教えなくなった理由
http://cpplover.blogspot.jp/2016/05/mitsicp.html

今日では、状況が変わっている。

今のエンジニアは、自分が完全に理解していない複雑なハードウェアのための
コードを日常的に書いている(そして、大抵の場合、企業秘密により完全に理解するのは不可能である)。

ソフトウェアでも状況は同じだ。プログラミング環境は、多大な機能を提供する
巨大なライブラリ群の集合として存在している。

Sussmanの今日の生徒は、その時間の大半を、ライブラリのマニュアルを読み、
どのように組み合わせれば目的が達成できるのかを把握することに費やしている。

Sussman曰く、今日のプログラミングは、「より科学に近い。ライブラリを持ち寄って、
つっつき回すのだ。プログラムを書くには、突っつき回して、どのように動作するかを観察する。
そして、「目的を達成するために改造できるか」と考えるのだ」。

SICPの「合成による解析」という物の見方である、小さな、単純な部品を組み合わせて大きなシステムを作るということは、
もはや今日の状況にそぐわなくなった。今や、我々のプログラミングはつっつき回すことで行われている。
0828デフォルトの名無しさん
垢版 |
2018/07/22(日) 06:11:43.36ID:+JtpRhMz
そうだね。そもそもソフトウェアは他の製品と違って
完全に同じものを複製するのに技術がいらないからね
コピーすればいいだけだし。

その点、何かを作る職人とはぜんぜん違うよね
そいういう寸分違わないものを作り出す職人は不要な業界
0829デフォルトの名無しさん
垢版 |
2018/07/22(日) 09:02:23.96ID:XlZUepQP
>>825
そして、今は鉄道以外のほぼすべてのタイヤの接地面はゴムです。
そういうところもオブジェクト指向と、似てますね。
0831デフォルトの名無しさん
垢版 |
2018/07/22(日) 13:32:55.77ID:snsF+l1o
>>826
この論理は完全にお花畑。
完全無欠のライブラリがありそれが唯一無二なら
つつっつき回すだけでいいだろうさ。
だけど現実はほぼ似たような機能で構文が違う、
それに加え実行環境もバージョンも違うライブラリたちが乱立してるんだぜ、
それに加わりローカルで作られた野良ライブラリがある。
当然人によってそれらの使い方の認識に齟齬が生まれる。
信用できるのは、自身の即興のデータ構造定義能力と、
アルゴリズム構築能力だけだ。
0832デフォルトの名無しさん
垢版 |
2018/07/22(日) 13:34:08.83ID:LiIRy0eu
今必要なのは解読ではなくて解脱
0833デフォルトの名無しさん
垢版 |
2018/07/22(日) 14:02:08.11ID:+JtpRhMz
>>831
> だけど現実はほぼ似たような機能で構文が違う、
> それに加え実行環境もバージョンも違うライブラリたちが乱立してるんだぜ、

乱立しているからなんだっていうんだろう?
乱立してるから自分で作れってことにはならないよな?
何が言いたいんだろう

> それに加わりローカルで作られた野良ライブラリがある。

自分自身で作成したもの = 他人から見れば野良ライブラリだからね
野良ライブラリは作るべきじゃないね

だから乱立されている中のどれかを使うってことになるわけだけど
そういう結論を言いたかったんだよね?
0834デフォルトの名無しさん
垢版 |
2018/07/22(日) 14:02:42.93ID:YGqHpPTt
>>831
データ構造作るだけだと付加価値が低いというか
ただの作業員でしかなくない?
新しい仮想通貨作るとかだったらすごいけど
0835デフォルトの名無しさん
垢版 |
2018/07/22(日) 14:06:57.17ID:+JtpRhMz
まあ言えるのは、データ構造やアルゴリズムを作るだけの仕事なんて無いってことだな

やりたいからといって、それで金がもらえるわけじゃない
金を出す方がやってもらいたいことをやって金が出る

似たようなものを自作して、乱立させたって
そんなものに金を出す人はいない
0836デフォルトの名無しさん
垢版 |
2018/07/22(日) 14:18:22.79ID:LiIRy0eu
>>835
うむ

>>834
やったことないやつには判らんよ
0838デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:42:32.79ID:bmpyz9fo
>>827
いや、ちょっと違う
プログラマという職業が、車輪を一から設計できる職人群と
それを再利用する専門家へと二極化していくというお話だよ

この二極化は以前から言われていたことだけど、
それを天下のMITが言い切って行動に移したことに>>826の意義がある
0839 ◆QZaw55cn4c
垢版 |
2018/07/22(日) 18:20:24.01ID:+jM3tBOE
>>838
「職人」と「専門家」が逆ではないですか?
0840デフォルトの名無しさん
垢版 |
2018/07/22(日) 19:59:44.17ID:bmpyz9fo
いや、逆ではないよ

MITは計算機工学に特化しているわけでもなく、
機械工学、ロボティクス、生産工学、データ解析といった
あらゆる工学分野の専門家を養成し輩出している

そういった(計算機工学を除く)大半の「専門家」の卵達にとって、
優先すべきは(旧コースでSchemを使って学んでいた)計算機の動作原理ではなく、
計算機の利用方法である、という趣旨
彼ら「専門家」は決して計算機工学の専門家ではないが、
それぞれの分野に特化した高度な専門技術を有し、
与えられた問題を解決する道具として計算機を効果的に活用できる
0842デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:07:14.12ID:+JtpRhMz
どんな仕事でも、その道の研究者ってのはいるだろう。
例えば数学者とかな。だけど世の中で必要とされてるのは
塾の数学の先生だったりするわけさ

もっとも大学に行った人の殆どは、大学で専攻していたものとは
関係のない仕事をしているわけだけどな
0844デフォルトの名無しさん
垢版 |
2018/07/22(日) 23:03:00.98ID:snsF+l1o
たとえばjsでオブジェクト構造をサーバに送りたいとする。
たったこれだけのことなのに邪魔くさい余計な機能が多すぎる。
わざわざ専用のクラスからインスタンス作って
専用の構文使ったりhttpヘッダー設定したりだ。
それでいてサーバ側では糞みたいな細かい仕様認識の違いでリクエストの内容が空だったりする。
サーバ側のコンフィグ見直したりjs側のコード見直したりするわけだ。
ログからライブラリのコード追っていくと大抵
過剰に技法使われてるから自ずと疑うべき探索
範囲は広くなる。
書き方はjQueryベースやangular typescriptなんかが混在してきて文法のちょっとした勘違いなんてのも生まれてくる。
だったらそんなライブラリ鼻っから信用しなけりゃいい。
ライブラリのインスタンスを介さずに多少原始的だが
文字列、数値 for文if文だけで大抵の問題は解決できる。
自力でJSON文字列に情報をぶち込んで送信してやれば、必ずサーバ側で取得できる。
サーバ側も下手なライブラリにパースさせないで自力でパースした方が慣れれば断然こちらの方が早い。
自力で作ったアルゴリズムは信用できるから
関数化しておいてまた似たような問題があったときに
使える。
俺が使うための自作ツールは他人は使わなくていいよ、どうせ価値観が違うんだからな。
自分で作ったもの以外はそりゃ不便だろうよ。
0847デフォルトの名無しさん
垢版 |
2018/07/22(日) 23:58:50.05ID:8Bgo+1zG
はい。このように他人の成果を利用して
目的を達成するのが今は重要って話です。
0848デフォルトの名無しさん
垢版 |
2018/07/23(月) 00:05:17.20ID:jaGQY9G3
>>844
> だったらそんなライブラリ鼻っから信用しなけりゃいい。

とりあえずお前が自力で作ったライブラリは
鼻っから信用しててないよ
0849デフォルトの名無しさん
垢版 |
2018/07/23(月) 00:19:04.74ID:jaGQY9G3
>>844
> 俺が使うための自作ツールは他人は使わなくていいよ、どうせ価値観が違うんだからな。
> 自分で作ったもの以外はそりゃ不便だろうよ。

価値観の問題じゃない。単にお前が作ったコードに
バグがあるから使えないだけ。使わないんじゃない。使えない。

反論するならバグがない証拠を出すこと
テストコードをかけという話ね。


> だったらそんなライブラリ鼻っから信用しなけりゃいい。
お前が書いたコードは鼻っから信用できない。するしないじゃない。できない。
0850デフォルトの名無しさん
垢版 |
2018/07/23(月) 06:43:27.98ID:LtlhEJ9n
みなさんお気づきだろうか
>>844>>849は同じことを言っている
0851デフォルトの名無しさん
垢版 |
2018/07/23(月) 07:32:08.19ID:LtlhEJ9n
jQueryはブラウザの差異を吸収するからね
同等のもの作ろうとしたら大変だよ

自前のコードを実装するのが汎用ライブラリを使うよりも早いとするなら
自前のコードは汎用ライブラリよりも機能が少ないものになる

要件がシンプルなら自作するのは効率が良いかもしれないね

システムをユーザのニーズに合わせてたら要件が複雑になり自作するメリットが得られない
ユーザがシステムの都合を忖度するならうまくいく
開発者にとっては桃源郷

開発者の幸せか、ユーザの幸せか
ぼくらはその選択を迫られてるんだ
0852デフォルトの名無しさん
垢版 |
2018/07/23(月) 09:47:19.69ID:nk4BkCBO
役所が作る神エクセルなんてのはユーザがシステムの都合に合わせてる典型例じゃないか、自作コードに拘るのは神エクセルを作るのと変わらぬよ
0853デフォルトの名無しさん
垢版 |
2018/07/23(月) 11:01:38.63ID:eU1p7hr8
>>842
自己紹介ですね
0854デフォルトの名無しさん
垢版 |
2018/07/23(月) 12:24:24.98ID:jaGQY9G3
>>851
> 要件がシンプルなら自作するのは効率が良いかもしれないね
それは正しくない。要件はシンプルでも実装が大変なことがある。
そもそも「ライブラリの一機能の独自実装」などという要件は
実際には発生しない。これらは単に道具

要件を実装するのに、道具を使うか使わないかの問題
シンプルな要件でも、道具は使ったほうが効率は良いよ

もちろん道具を使えない人であれば、道具を使えるようになるまで時間が
かかるけど、それは素人がプロに速度でかなわないという人間の問題にすぎない
そう道具を使えないなら素人なんだよ。
0855デフォルトの名無しさん
垢版 |
2018/07/23(月) 12:29:27.63ID:aoV6LMU9
>>850
ヒント:バカは皆がオンリーワン
0856デフォルトの名無しさん
垢版 |
2018/07/23(月) 12:36:13.41ID:jaGQY9G3
>>850
同じことは言ってないな

>>844はよくわからないのはライブラリのせいだ
自分で作れば、そのライブラリよりもわかりやすくなるはずだ
って机上の空論を言ってるだけ
0858デフォルトの名無しさん
垢版 |
2018/07/23(月) 15:02:52.51ID:EWSlu15m
りんごをむくのにピーラーを使うのもいいが、一度ナイフで剥くのを試すのも重要だし、かじってみるのもいい。
道具が解決する問題がなんなのか、体験することは、多くの人にとって有益だと思う(経験主義者)
0859デフォルトの名無しさん
垢版 |
2018/07/23(月) 15:32:18.18ID:1W7qAEKf
そこでピーラーを作るのは大変だとか見当違いの所に流れていくやつがいる。

ピーラー(ライブラリ)を使うか、ナイフを使うかだ

ライブラリ?中見たけどわけのわからないことをしてる
理解できない。ナイフのほうが単純だ。ナイフなら作れる。
なぜか作る話になってしまっている。
■ このスレッドは過去ログ倉庫に格納されています

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