- 【IT】MS、自然言語処理ライブラリをオープンソース化
14 :名刺は切らしておりまして[]:2019/05/18(土) 00:55:32.70 ID:+Z9G9NF5 - >>13
無難と平凡な実装はローレベルの言語だと、最適化チャンスをみすみす失うことになるから、高速化が売りの実装だとあまり好まれない C++に限ればMSのコード規格・ガイドラインは古いだけで無難で平凡と断言できるものはおそらく少ないだろうから、このソースコードがその無難さに該当するかは疑わしいところだ このレベルのソースコードでも外部ライブラリ(一部は最新のバージョン)を使っている以上は誰でも読めるとまではいかないし 誰でも読めるようなコードに作るのは機械学習では難しいことを割り引いても、このコードは特段努力した形跡が見られない 高速をうたう割にはコード面の最適化が弱く、ポータビリティも可読性も拡張性もベストとは言えない おそらくプロダクトの一部だけをリリースしているせいもあるかとは思うが、これなら最適化に熟練した連中が希望を持てるレベルだと言える
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
16 :名刺は切らしておりまして[]:2019/05/18(土) 08:42:56.45 ID:+Z9G9NF5 - >>4 >>14 >>9 >>10
一点付け加えると平均的な実装といっても最低でも5年以上はC++でコーディングしてCSのバックグラウンドがないと平均的なレベルにさえならないから 良く匿名掲示板で現れる半年かじった程度で一人前になったと勘違い・錯覚する連中のレベルとは比較にならない プロダクトレベルでコードする場合は職務記述書で7年以上+CSの基礎知識と記述されるのが一般的なようだから、それが目安となる
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
17 :名刺は切らしておりまして[]:2019/05/18(土) 08:51:57.83 ID:+Z9G9NF5 - >>15
一点付け加えると平均的な実装といっても最低でも5年以上はC++でコーディングしてCSのバックグラウンドがないと平均的なレベルにさえならないから 良く匿名掲示板で現れる半年かじった程度で一人前になったと勘違い・錯覚する連中のレベルとは比較にならない 該当するソースコード(https://github.com/MaggieQi/SPTAG-2 )を読もうとしても、匿名掲示板の自称凄腕では読むことさえできない連中が大半で「簡単」 にさえ見えないのが現実であり、素人に毛が生えた連中が希望に持てる連中は絶望のほうが大きいだろうから「簡単」という表現はミスリードだろう コードの何たるかを議論したいのであれば、例えばライブラリのレベルとしてはサブ標準であるBoostや標準実装ライブラリのレベルと比較すると、はるかに及ばないレベルであり、 読みにくく汚く、最適化が弱いということだ
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
18 :名刺は切らしておりまして[]:2019/05/18(土) 08:53:21.54 ID:+Z9G9NF5 - >>17
○該当するソースコード(https://github.com/MaggieQi/SPTAG-2 )を読もうとしても、匿名掲示板の自称凄腕では読むことさえできない連中が大半で「簡単」 にさえ見えないのが現実であり、素人に毛が生えた連中にとっては希望どころか絶望のほうが大きいだろうから「簡単」という表現はミスリードだろう
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
19 :名刺は切らしておりまして[]:2019/05/18(土) 09:51:37.12 ID:+Z9G9NF5 - >>18
平均的という言葉に過剰反応できるのはユースリーグ(年齢でなく技術レベルという意味で)までだろう 外部に公開するプロダクトレベルの「平均的」は、ネットにいるプログラミングを少し知った平均的素人 がかけるレベルではないし、読めるかさえ怪しいところだ よって相手がどの「平均」を話しているかを明示しないと話が通じないことになる 熟練というなら10年以上のコーディング経験は目安としたいところだが、その定義だと小学生から始めている大学生や院生にも熟練コーダーは当然いるわけだ 中華系のCS博士論文ではフレームワークやモジュールをコーディング・実装したものが多く、実装・コーディング重視はCSが理学でなく工学部に(多くの場合)所属する理由でもある
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
23 :名刺は切らしておりまして[]:2019/05/18(土) 11:44:14.82 ID:+Z9G9NF5 - >>20
Boostを読み込んで、同レベルのコードを少し書けるレベルなら(ライブラリ開発者として)中級以上と言えるとは思うが、単にコードを追って読んでいるだけだと退屈であり腕(実装の力量)も上がらないため厳しいだろう Boostモジュールのコーダーの技量にも差が結構あり、個々に癖もあるためBoost教科書化への反対意見は結構ある CSの基礎知識がないなら、そもそも正しい実装かのモデルチェックができるだけの技量が足りていないためコンパイラまかせになる傾向がある よってC++の文法だけが分析の対象となるため、最適化が思い込みによって行われる傾向が強くなり、どうでも良い文法のことで 正しくないだの間違いだのという議論が激しい応酬が行われる傾向があるが、アセンブリなりLLVM中間表現を読めるなら、何が重要で重要でないかの取り捨てができるようになる その上でキャッシュの最適化、ビットマジック、SIMD/GPGPU/タスク並列化、メタプログラミングというように技量を上げていく途上で誰でも読めるコード自体が不可能ということは分かるようになる C++二年目ということだが、CSをまだ学んでいないなら、そちらに時間を投資して基礎力をつける方が楽しく有意義であるため、いきなりBoostを読むことは大抵のケースでは悪いアイデアとなる
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
24 :名刺は切らしておりまして[]:2019/05/18(土) 12:14:23.51 ID:+Z9G9NF5 - >>22
C++の利点はC言語ライブラリとの抜群の相性の良さにあるため、システムプログラミングを拡張し変更修正が容易なコードベースを 開発するニーズに完全に答えることができる(TDD・アジャイルはC言語でもできる) 抑えるべきはオブジェクト指向とジェネリックプログラミング、型推定・型変換、ラムダあたりだ Boostではコンパイルタイムの計算が重要視されるから、ジェネリックとオブジェクト指向の組み合わせは普通に使われている TDDのための自動テストのマクロを自前で書いたりする連中も多いからマクロもある程度はできて当然な風潮もある ジェネリックは最新の規格ほど進化しているため、ライブラリ開発者にとっての比重の重さ(負担の重さ)はジェネリックが一番大きい よって新規さんがデザインパターンに時間を使いすぎることには反対する (昔はデザインパターン賛成派だったが、OSSを見てほとんどパターンが使われていない状況から理論よりも実践という観点から、ジェネリックを推したい) ただ最適化についてはアセンブリ言語が読めず、OS・CPUの知識がないと不毛な傾向(実権もせずこれが早いあれが遅いといった一般論は不毛) はあるため、文法や言語推奨・ガイドラインを暗記するよりCSの基礎力をつけるほうがはるかに学習効率が良い
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
26 :名刺は切らしておりまして[]:2019/05/18(土) 23:41:05.67 ID:+Z9G9NF5 - >>25
もう一度読んだ方が良いだろう そもそも「実装とか土方の仕事だからな(ID:gYvZ3Zl2)」と書いていたのが、実装した土方が天下のマイクロソフト様のPhDエリート様だと 判明した瞬間に機能がどうのこうのと言っているのに恥ずかしさを覚えないのか この場合、土方とはマイクロソフト様のPhDエリート様を指しているのであり、エリートの仕事が実装であるということだ 繰り返すが、エリートの仕事がコーディング・実装であるという単純な事実だ
|
- 【IT】MS、自然言語処理ライブラリをオープンソース化
27 :名刺は切らしておりまして[]:2019/05/18(土) 23:44:05.54 ID:+Z9G9NF5 - >>26
中華系のCS博士論文はフレームワークやモジュールをコーディング・実装したものが多く、 実装・コーディング重視はCSが理学でなく工学部に(多くの場合)属する理由でもある
|