1 :田杉山脈 ★:2020/12/09(水) 22:10:29.77 ID:CAP_USER.net
プログラミングをする上で、コメントをきちんと残したり、わかりやすい変数名をつけたりして「読みやすいコード」を目指す作業は重要です。しかし、「読みやすいコード」と「優れたコード」の間には、時として構造上の大きな違いがあるのも事実。そんな「優れたコード」に対する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/
66 :名刺は切らしておりまして:2020/12/10(木) 18:41:56.97 ID:iWCKGdvR.net
11 :名刺は切らしておりまして:2020/12/09(水) 23:35:57.63 ID:IA5LH6VM.net
58 :名刺は切らしておりまして:2020/12/10(木) 12:45:56.34 ID:60bG552F.net
2 :名刺は切らしておりまして:2020/12/09(水) 22:18:15.40 ID:RTL5tQs5.net
48 :名刺は切らしておりまして:2020/12/10(木) 09:55:55.46 ID:PggGVhVa.net
51 :名刺は切らしておりまして:2020/12/10(木) 10:38:29.61 ID:JejNo8QF.net
69 :名刺は切らしておりまして:2020/12/10(木) 22:55:56.89 ID:rVJ/ONiJ.net
50 :名刺は切らしておりまして:2020/12/10(木) 10:36:03.01 ID:zguu7azS.net
46 :名刺は切らしておりまして:2020/12/10(木) 09:50:37.60 ID:PggGVhVa.net
85 :名刺は切らしておりまして:2020/12/11(金) 19:21:06.97 ID:i4py4T/g.net
76 :名刺は切らしておりまして:2020/12/11(金) 01:26:46.19 ID:HrlNdNqL.net
14 :名刺は切らしておりまして:2020/12/10(木) 00:20:04.45 ID:SCHSpxjk.net
40 :名刺は切らしておりまして:2020/12/10(木) 08:19:49.14 ID:W/n0YzIZ.net
107 :名刺は切らしておりまして:2020/12/17(木) 10:56:40.76 ID:EDt31okk.net
100 :名刺は切らしておりまして:2020/12/13(日) 10:43:27.33 ID:tHJUk5lV.net
29 :名刺は切らしておりまして:2020/12/10(木) 02:09:02.59 ID:kFAZ8Rs4.net
80 :名刺は切らしておりまして:2020/12/11(金) 12:51:00.96 ID:ezWHgrzc.net
42 :名刺は切らしておりまして:2020/12/10(木) 09:07:58.46 ID:eYmMVUhx.net
22 :名刺は切らしておりまして:2020/12/10(木) 01:16:38.48 ID:JpU5m4mP.net
83 :名刺は切らしておりまして:2020/12/11(金) 17:33:22.07 ID:63dqwuEe.net
79 :名刺は切らしておりまして:2020/12/11(金) 02:19:41.46 ID:DUCu1g8t.net
75 :名刺は切らしておりまして:2020/12/11(金) 00:51:28.61 ID:FpNdM9w2.net
24 :名刺は切らしておりまして:2020/12/10(木) 01:28:54.63 ID:fwJx6gro.net
6 :Go Toトラベルは創価学会の仕業:2020/12/09(水) 22:38:37.27 ID:3uPNT3yj.net
94 :名刺は切らしておりまして:2020/12/12(土) 10:30:20.58 ID:ei2K8uap.net
65 :名刺は切らしておりまして:2020/12/10(木) 14:42:34.04 ID:MbmcFfws.net
35 :名刺は切らしておりまして:2020/12/10(木) 07:55:36.64 ID:VdAdyg+r.net
23 :名刺は切らしておりまして:2020/12/10(木) 01:24:31.06 ID:Fzxl3UKe.net
28 :名刺は切らしておりまして:2020/12/10(木) 02:07:18.53 ID:smidZUMs.net
7 :名刺は切らしておりまして:2020/12/09(水) 22:39:50.63 ID:LT0kIIel.net
38 :名刺は切らしておりまして:2020/12/10(木) 08:13:29.78 ID:QBurfjQl.net
106 :名刺は切らしておりまして:2020/12/17(木) 10:28:21.26 ID:PfyG4uVs.net
70 :名刺は切らしておりまして:2020/12/10(木) 23:08:40.40 ID:O8C6tWTP.net
91 :名刺は切らしておりまして:2020/12/12(土) 07:50:09.86 ID:jquYNH7b.net
105 :名刺は切らしておりまして:2020/12/16(水) 12:33:41.71 ID:pRy1BCFp.net
104 :名刺は切らしておりまして:2020/12/14(月) 15:19:00.15 ID:vQehMzgp.net
30 :名刺は切らしておりまして:2020/12/10(木) 02:45:00.68 ID:/iUNfJqw.net
52 :名刺は切らしておりまして:2020/12/10(木) 10:57:11.57 ID:C9U28Mos.net
77 :名刺は切らしておりまして:2020/12/11(金) 01:41:54.54 ID:Op29NcHz.net
78 :名刺は切らしておりまして:2020/12/11(金) 01:49:08.91 ID:ThyZPUnk.net
16 :名刺は切らしておりまして:2020/12/10(木) 00:45:47.58 ID:/1StOwEX.net
3 :名刺は切らしておりまして:2020/12/09(水) 22:24:08.28 ID:eXttlEXM.net
72 :名刺は切らしておりまして:2020/12/11(金) 00:23:26.48 ID:Sgtdk4k4.net
13 :名刺は切らしておりまして:2020/12/10(木) 00:14:07.38 ID:MLah/xT2.net
33 :名刺は切らしておりまして:2020/12/10(木) 07:29:14.65 ID:YNcF7Kw8.net
61 :名刺は切らしておりまして:2020/12/10(木) 14:12:00.40 ID:D7B2xVep.net
73 :名刺は切らしておりまして:2020/12/11(金) 00:28:21.26 ID:9kLsbMU5.net
67 :名刺は切らしておりまして:2020/12/10(木) 19:48:53.33 ID:M6pDwKgc.net
32 :名刺は切らしておりまして:2020/12/10(木) 07:01:51.04 ID:ygZtP0QD.net
103 :名刺は切らしておりまして:2020/12/14(月) 08:39:22.55 ID:qDYiMZWh.net
コメント