◆結論
◆遺棄殺
RustでReadLineを書くことについて思いを馳せていて。
System.IO.StreamReader.ReadLine() ってどうやって「一行」を読み込んでんのと思った。だって \r と \n と \r\n が入り乱れておるわけだから。まぁどうせゴリゴリのゴリゴリのゴリゴリのゴリに書いてるんだろうけども、それにしたってどのようにゴリゴリしているのかが気になった。
byteゴリゴリ、stringゴリゴリ、charゴリゴリ。果たしてそこにはどんなゴリラが生息しているんだろうか。気になるゴリよ。
.NET Framework でいえば Reference Source っつー便利サイトがあるわけだが、.NET Core はそれに類するものあるわけ?それとも github にあがってるわけ?
それっぽいページ見つけたけど要領得ねぇし。「マジでビルゲイツそういうとこやぞ」と2分くらい連呼しつつ号泣しながらWebの海を揺蕩っていたところで stack overflow のページを発見。
曰く、
After 2 years as this question is opened, I personally found very excellent search fatures to navigate on NET Core sourse code the official web site https://source.dot.net/
You can just search any Type of class, vars, interfaces etc and get in a second the complete source.
Hope this will help.
Where can I find the ASP.NET Core 2 source code?
とのこと。あぁーもう You are my help ですわ。それどころか You are my sunshine で My only sunshine だし You make me happy when skies are gray ですわ。すき。これが2位の回答に書かれていたわけです。2位に。ええんかそれで!よーし全員でてこい!一人ずつケツぶっ叩いてやっからさ!
おっしゃらぁああああああああああああああっあああ!!!!
しこうして、「https://source.dot.net/」を見つけたのであった。どっとはらい。
◆使い方
左上の検索窓に名前空間とか打ち込めばよいよ。
変数名とかクリックするとハイライトされてカッコいいし、ダブルクリックすると定義にジャンプできて卑猥。ちゃんとURLも変わってくれるからシェアも簡単。イェイイェイ。
◆ReadLineがどうであったか
あんまり…
ってか.NET Frameworkでの実装と変わらねぇじゃねぇか。
いやまぁ…可読ではあるが。「おー。キレイね。」って思わない。do whileが気に食わねぇー。whileループで書けやぁカスぅ。
あとこれ、何らかのアルゴリズムを駆使すればもっと効率的に読めるんじゃねぇのか?でかいファイルをシコるときにもっとガリガリにチューニングされたモジュールがあってもいいかもね。コンパイラ通したらまだセーフな感じになるのかなぁ。
◆余談を許してくれ
StreamReader.cs で言えば DetectEncoding も興味深いね。エンコードを判定するコードなんだが、BOM見てるんだふーんって感じだし、なんでお前ここにいんの?って感じ。
StringBuilderのAppend が unsafe してんのも面白いな。面白い。
コレ見ながら酒とか飲めるよね。関東の近郊で .NET Core の実装を肴に酒が飲めるエンジニアいたら、至急、DMくれや。土方姿のまま浣腸して、糞だらけでやろうや(錯乱)。
あと、
Generated by https://github.com/KirillOsenkov/SourceBrowser.
とか書いてあったからその SourceBrowser を見に行ったら、Roslyn版もあるんやね。全然読んでないけど掘れば楽しそう。というのと、このSourceBrowser はキミこれ中々に凄いものだね?
◆結論(にかいめ)
そういやもっこり半兵衛の5巻が昨日発売されてたよ。4巻の終わり方が最終回っぽかったから恐れていたのだが、無事にリリースされてよかった。相変わらず電子書籍のみだけどな。全くオススメできない漫画だから読まなくてもいいんだけど買ってね。
コメントを残す