
【IT】Linuxを生み出したリーナス・トーバルズが考える「優れたコード」とは何か?

- 1
侵攻終結には「成果」必要 ウクライナ即時停戦に難色―ロ大統領1 : 2025/05/19(月) 17:04:55.70 ID:byQYFJw+9 ロシアのプーチン大統領は18日放送の国営テレビのインタビューで、ウクライナ侵攻を終わらせるには、望ましい「成果」...
- 2
【埼玉三郷】小学生4人ひき逃げ事件 逮捕の中国籍男 「外免切替」で日本の免許取得1 : 2025/05/19(月) 16:57:03.74 ID:XCAml5Da 埼玉県三郷市で下校中の男子児童4人がひき逃げされた事件で、逮捕された男は、外国の運転免許を切り替えて日本の免許証を...
- 3
万博、防犯カメラの前で堂々と盗難 大使が公開の映像にネットため息「ええ年こいた大人が恥ずかしい1 : 2025/05/19(月) 17:19:52.61 ID:i91yuTmW9 https://video.twimg.com/amplify_video/192319793809391616...
- 4
割安な韓国車・中国車があるのに日本車ばかりがベストセラーになる…ASEAN地域で日本車が圧倒的人気のワケ1 : 2025/05/19(月) 16:51:55.11 ID:XCAml5Da 日本車が世界でも人気なのはなぜか。モータージャーナリストの鈴木ケンイチさんは「アセアンには、日本車よりも割安な韓国...
- 5
車が子どもの列に突っ込んだか 小学生含む5人搬送 福岡 筑紫野1 : 2025/05/19(月) 17:06:30.13 ID:fjjeh0NG9 消防によりますと、19日午後3時半ごろ、福岡県筑紫野市で「車が子どもの列に突っ込んだ」と通報があったということで...
- 6
【マクドナルド】ハッピーセットの「早期終了」を発表 横行する転売 モラルのない行動に第2弾販売への不安広まる1 : 2025/05/19 15:57:47 ??? 日本マクドナルドは5月18日、ハッピーセット「ちいかわ」「Minecraft(マインクラフト)」第1弾の早期販売終了を発表しました。16日の販...
- 7
蓮舫氏、農水大臣の「コメ買ったことない」発言に「こりゃないわ」「お米の値段の高さもわからない大臣」批判1 : 2025/05/19(月) 16:52:27.00 ID:oV3dIzf+9 https://www.sankei.com/article/20250519-DGMWUSC34JD3ZA55...
- 8
参議院選挙 わずか125議席 どこに投票する? 石破自民党 親中國派 立憲民主党1 : 2025/05/19(月) 15:45:34.14 ID:h+9lvIta0 2025年夏の参議院選挙 183人が立候補予定 日経調べ 参議院の総議席数は **248議席** であり、 そ...
- 9
安倍晋三を射殺した山上徹也は 有罪 無罪 どっちやろ?1 : 2025/05/19(月) 15:52:03.32 ID:h+9lvIta0 どっち 画像 ps://i.imgur.com/nPCth87.jpeg https://www3.nhk.or...
- 10
石破「残念ながら日本の財政はギリシャより悪いです」1 : 2025/05/19(月) 16:33:33.82 ID:lIxgQv+u0 石破首相 消費減税に伴う社会保障費への国債充当「好ましくない」日本の財政は「ギリシャよりよくない」と強調 htt...
- 11
永野芽郁、余波広がる 大河&ラジオ出演辞退で杉村太蔵氏 「ちょっと過剰反応じゃ」「本人、否定してますから」1 : 2025/05/19(月) 16:31:31.03 ID:XrRJVl/29 https://news.yahoo.co.jp/articles/923032f97be45a7deed600...
- 12
【映画】東村アキコ、『かくかくしかじか』永野芽郁の“すごさ”を力説「北島マヤがここにいると思って」1 : 2025/05/19(月) 16:33:33.95 ID:oV3dIzf+9 https://news.yahoo.co.jp/articles/f219689425c88ba139cbae...
- 13
吉岡里帆さん、もう32歳。まだ誰のものでもありません1 : 2025/05/19(月) 16:29:48.92 ID:yFEMJIc40 【吉岡里帆】「なんという可愛さ」白猫とたわむれるオフショットを公開 「私も猫になりたい」「里帆ちゃんという特等席...
- 14
イラストをXに投稿したらパース警察にキレられたんだが【2ch】イラストをXに投稿したらパース警察にキレられたんだが【2ch】 とまとニュースまとめ速報
- 15
【東亜日報】 韓国も未開発の「空対空ミサイル」、北朝鮮が実射撃訓練 朝鮮中央通信報道1 : 2025/05/19(月) 12:57:28.85 ID:iZ8nyrAP 北朝鮮が戦闘機から発射する空対空ミサイルの実射撃訓練を初めて公開した。空対空ミサイルは、韓国軍もまだ開発できていな...
- 16
大阪万博のフランス館の美術品に虫が大量発生、元宝塚女優が苦言「フランスに謝りたい」1 : 2025/05/19(月) 16:27:02.86 ID:oV3dIzf+9 https://news.livedoor.com/article/detail/28782213/ 2025年...
- 1 : 2020/12/09(水) 22:10:29.77 ID:CAP_USER
プログラミングをする上で、コメントをきちんと残したり、わかりやすい変数名をつけたりして「読みやすいコード」を目指す作業は重要です。しかし、「読みやすいコード」と「優れたコード」の間には、時として構造上の大きな違いがあるのも事実。そんな「優れたコード」に対するLinuxの開発者リーナス・トーバルズ氏の考え方について、エンジニアのmkirchner氏が説明しています。
トーバルズ氏は2016年のTEDインタビュー内で「連結リストの実装方法」を例とし、自身の「優れたコード」に対する考えを説明しています。連結リストはデータを線形につなげたリストのことで、データを扱う構造のひとつ。具体的には「4」や「12」といった値そのものと「次の値」を示すポインタで構成される「ボックス」を順番につなげたものが連結リストです。
連結リストをC言語で実装したコードは以下。値そのものである「value」と次の値を示すポインタ「next」で「IntListItem」構造体が作られており、IntListItem構造体からボックスが生成されます。「IntList」構造体はリストの先頭を表す変数「head」を持っています。
この連結リストからあるボックスを消去する処理について、スタンフォード大学の計算機科学講義「Computer Science 101(CS101)」で紹介されていたコードが以下とのこと。
上のコードが行っている処理はこんな感じ。まずはコードの以下の部分で「消去したいボックス」をリストの先頭から探索します。連結リストはリストの先頭からしか値をたどることができないので、まずリスト先頭のボックスのアドレスを「cur」ポインタに格納し、「prev」ポインタはNULLで初期化。curポインタが消去したいボックスのアドレスと一致するまで、curポインタを次のボックスのアドレスへと移しながら照合していきます。
先ほどの処理のイメージを図で表したものが以下。ちょうどprevポインタとcurポインタがリスト後部のボックスへスライドしていくようなイメージです。
以下ソース
https://gigazine.net/news/20201208-linked-list-good-taste/- 2 : 2020/12/09(水) 22:18:15.40 ID:RTL5tQs5
- あんまり条件分岐を作っちゃいけないんだな。それは解る。
- 4 : 2020/12/09(水) 22:25:15.90 ID:WntZ5Pi0
- >>2
サイクロマティック数ってやつだな - 3 : 2020/12/09(水) 22:24:08.28 ID:eXttlEXM
- かと言ってメンテ性より効率性に拘りすぎたソースは逆に使いにくい
集団でコーディングする場合は - 5 : 2020/12/09(水) 22:29:50.24 ID:KsAvao0z
- この人が亡くなったらLinuxどないなるんやろね
- 7 : 2020/12/09(水) 22:39:50.63 ID:LT0kIIel
- >>5
Linux EoLになる
Linusはもう何もやってない
10年以上前から広報担当しかしてない
KernelのメンテナンスはRedHatがやってるし、非採用バージョンもRedHatがブランチを出してる
そもそも、debianが超優秀なのでLinusは用済み - 12 : 2020/12/10(木) 00:10:26.19 ID:DRrDxoyR
- >>7
『debianが超優秀なのでLinusは用済み』ってどういうこと?
debianはカーネルよりも上の層という理解なんだけど、違うの?
Linusさんて、カーネルよりも上の層の開発とかもやっていたの? - 8 : 2020/12/09(水) 22:56:39.27 ID:lalfKSee
- NULLPO
- 9 : 2020/12/09(水) 22:59:29.34 ID:q3ulBKbX
- >>8
ガッ(ベージコレクション)! - 10 : 2020/12/09(水) 23:16:38.33 ID:3IvtsZB0
- Gコード(´・ω・`)
- 11 : 2020/12/09(水) 23:35:57.63 ID:IA5LH6VM
- ポインタのポインタ
- 14 : 2020/12/10(木) 00:20:04.45 ID:SCHSpxjk
- carとcdr
- 20 : 2020/12/10(木) 01:09:03.94 ID:+nAR4sQk
- >>14
そうで コンス - 26 : 2020/12/10(木) 01:34:46.27 ID:5E63aR78
- >>20
Lispだっけ? - 16 : 2020/12/10(木) 00:45:47.58 ID:/1StOwEX
- 童貞・学歴・免許スレは伸びるのにこういうスレは全然伸びないな
テレビと大差ない - 18 : 2020/12/10(木) 00:54:23.74 ID:O7Ah3Gqc
- 優れたコードは、複雑な処理と考えガチなものを見方を変えてシンプルにする。
つまり、refactor(因数分解)って感じだねー
まーしらんkど
- 19 : 2020/12/10(木) 01:02:22.22 ID:tGsCzTXv
- 変数名がpじゃなかったら完璧
- 21 : 2020/12/10(木) 01:15:50.61 ID:J3xH0wAA
- C言語ではポインタの比較ってしちゃいけないんじゃなかった?
x86みたいなセグメントつきのアドレスだとおかしな事になる。 - 22 : 2020/12/10(木) 01:16:38.48 ID:JpU5m4mP
- たまには変数名 x,y,z,zz,zzzとか言うのをデバッグしてみろ
- 23 : 2020/12/10(木) 01:24:31.06 ID:Fzxl3UKe
- ポインタのポインタは昔一部の界隈でハンドルって言ってた。
- 28 : 2020/12/10(木) 02:07:18.53 ID:smidZUMs
- >>23
Win32APIでハンドルって単語がやたら出てきたのはそのことだったのか - 24 : 2020/12/10(木) 01:28:54.63 ID:fwJx6gro
- NULLぽしてるから優れたコードではない
- 25 : 2020/12/10(木) 01:29:00.92 ID:9kfzNoak
- 「優れた」の基準が明らかじゃないとな
Cとアセンブリ言語でカツカツにチューンしたコードが速いのは間違いないし
高級言語で読みやすいコードが引き継ぎやすいのには変わりないからな - 27 : 2020/12/10(木) 01:51:37.22 ID:O/kczejv
- そんなことより、スペースでのインデントとか、コードブロック開始時の
{ をいちいち改行して1行費やす書き方に辟易している。
コードの文字数や行数で金貰っているのが多いのか? - 29 : 2020/12/10(木) 02:09:02.59 ID:kFAZ8Rs4
- >27
自分はそれで脱落したけど
頭いい人は逆に分かりやすいのかな… - 30 : 2020/12/10(木) 02:45:00.68 ID:/iUNfJqw
- 最初は環境依存Unixをdos/v用にリサイズしただけなんじゃないんか?
カーネルの主要部しか作ってないんじゃないのけ?リーナスさんは
- 31 : 2020/12/10(木) 06:31:47.63 ID:IVydVJrD
- 2つのポインタを連動させて矛盾なく参照先をずらす処理と、
ポインタのポインタを使った二重の間接参照と、
どっちが「優れている」とも言い難い気がするがのう。“イディオム”として見慣れているかどうかの問題な気が。
もちろん「どっかから動くコード断片をコピーしてくればいい」とは違う話。
コメント