コードのインデントにスペースを使う開発者はタブを使う開発者よりも高収入という調査結果 226
ストーリー by headless
給与 部門より
給与 部門より
Stack Overflow 2017 Developer SurveyのデータをStack OverflowのデータサイエンティストDavid Robinson氏が分析したところ、コードのインデントにタブを使う開発者よりもスペースを使う開発者の収入が高いという結果が出たそうだ(Stack Overflow Blogの記事、
The Registerの記事、
Ars Technicaの記事)。
回答者51,392名のうち、インデントにタブを使うかスペースを使うかという設問に回答したのは28,657名。プロの開発者の回答に限定すると40.7%がタブ、41.8%がスペース、17.5%が両方となっている。このうち12,426名が給与(年間)の情報を回答している。
給与の中央値はインデントにスペースを使用する開発者が59,140ドル、タブを使用する開発者は43,750ドルとなっている。両方使用する開発者の数値は記載されていないが、計算してみたところ43,939ドルとなった。
コードを書く仕事の経験年数別にみてもスペースを使用する開発者は給与の中央値が高く、タブを使用する開発者と両方使用する開発者は全体に同レベルとなっている。国や開発内容、開発言語別でもスペースを使用する開発者の方が給与の中央値が高いようだ。
このほか、学歴やオープンソースへの貢献・趣味でのプログラミングの有無、会社の規模などを加味して推計すると、タブではなくスペースを使用することで給与は6.8%高くなるという。別の表現をすると、タブの代わりにスペースを使用することは2.4年分の経験に相当するとのこと。
ちなみに日本からの回答者では、この設問に回答したプロの開発者は122人で、タブ21.3%、スペース62.3%、両方16.4%という結果だ。給与額を回答したのは122人中48人と少ないが、中央値はタブ28,663ドル、スペース39,086ドル、両方26,579ドル。1万ドル未満を除外した場合はタブ31,269ドル、スペース44,298ドル、両方36,809ドルとなっている。
スラドの皆さんはコードのインデントにタブを使用するだろうか、それともスペースを使用するだろうか。
回答者51,392名のうち、インデントにタブを使うかスペースを使うかという設問に回答したのは28,657名。プロの開発者の回答に限定すると40.7%がタブ、41.8%がスペース、17.5%が両方となっている。このうち12,426名が給与(年間)の情報を回答している。
給与の中央値はインデントにスペースを使用する開発者が59,140ドル、タブを使用する開発者は43,750ドルとなっている。両方使用する開発者の数値は記載されていないが、計算してみたところ43,939ドルとなった。
コードを書く仕事の経験年数別にみてもスペースを使用する開発者は給与の中央値が高く、タブを使用する開発者と両方使用する開発者は全体に同レベルとなっている。国や開発内容、開発言語別でもスペースを使用する開発者の方が給与の中央値が高いようだ。
このほか、学歴やオープンソースへの貢献・趣味でのプログラミングの有無、会社の規模などを加味して推計すると、タブではなくスペースを使用することで給与は6.8%高くなるという。別の表現をすると、タブの代わりにスペースを使用することは2.4年分の経験に相当するとのこと。
ちなみに日本からの回答者では、この設問に回答したプロの開発者は122人で、タブ21.3%、スペース62.3%、両方16.4%という結果だ。給与額を回答したのは122人中48人と少ないが、中央値はタブ28,663ドル、スペース39,086ドル、両方26,579ドル。1万ドル未満を除外した場合はタブ31,269ドル、スペース44,298ドル、両方36,809ドルとなっている。
スラドの皆さんはコードのインデントにタブを使用するだろうか、それともスペースを使用するだろうか。
なるほど。つまりそういうことか! (スコア:5, おもしろおかしい)
偉い人がインデントに全角スペースを使ってくださりやがるのは、高給取りだからなんだね!
言葉ではなく、体と魂が理解した!!!
Re:なるほど。つまりそういうことか! (スコア:1)
まあ、冗談なんだろうとは思うけど、ここで話題になってるのはコードだよね。
その偉い人とやらは、どんなコードに全角スペースでインデントしたの?
HTMLとか?
Re:なるほど。つまりそういうことか! (スコア:1)
そーゆー人達が居るね。
で、そーゆー人達って「偉い人」なの?
どう言う意味で「偉い」の?
Gitはともかく、全角スペースなんてのは、昔からあるトラブルネタだよね。
初心者ならともかく、「偉い人」がやらかすかね?
やらかしたとしても、何度も繰り返したりはしないだろ?
# 作り話としも、リアリティがねえ。
Re:なるほど。つまりそういうことか! (スコア:2)
現場から遠いのにコミット権限があるというところから、何となく「偉い」のは察されますねえ。
昔はよく「管理者より役職が上だから、俺にも管理者権限をよこせと言われた」というような寓話がありました。その現代版でしょう。
ストーリのタブとスペースの違いも、使ってる言語とか環境の違いのような気がちょっとしますね。
叩き上げより企画から下りてきた方が給料が良いとして、下りるには高水準言語の方が都合が良くて、とりあえずタブが使えなくてスペース派だとすると。
丸きりの邪推ですが。
Re:なるほど。つまりそういうことか! (スコア:1)
んー、それはGitの話だよね。
それなら解らなくもない。
でも、全角スペースの話とは関係ないよねえ…
Re:なるほど。つまりそういうことか! (スコア:1)
全角スペースを使う場合、
A. うっかり入れてしまう
B. 仕様でそうなっている
の2種類がある。
2枚のプリントアウトを光に透かして「ほらここがズレてる」とか言われてみ…
それどころか「1〜9月の表記は数字部分を全角、10月〜12月の場合は半角にすべき」とかを
ガイドライン≒公的テンプレにすべく、真剣に話し合っている連中を見ているとね…
# 確かにあいつら省庁役人、弁護士、医者でエライ人たちだったな
高くなる理由 (スコア:4, おもしろおかしい)
タブだと1byte、スペースだと4や8bytes。
開発費の見積もりを文字数ベースで行うとスペースの方が高額になる。
ここまでスマートタブなし? (スコア:4, おもしろおかしい)
絶対に誰かが言ってると思ったのに・・・
https://www.emacswiki.org/emacs/SmartTabs [emacswiki.org]
リンク先ページのトップにある3コマ漫画はプログラマーなら誰しもニヤリとするはず!
IDE (スコア:3)
Re:IDE (スコア:1)
同じく、エディタにまかせてタブキーを押してスペース入れる派
Re:IDE (スコア:1)
ああすみません、そのとおりです。
私の悪しきプログラマ脳が発動して、
「キータイプからコンパイルに入る前までに解決されるならば、いつ行われれても同じことである」
という論理が展開されてしまったようです。
Re:IDE (スコア:1)
> 勝手にタブに変えるVisualStudioは絶滅してほしいんだけど
勝手にスペースに変えられた記憶しかない。
設定で変更できるので、いつも変えているが、
たまに忘れて、、、、。
もっとも、4Tab と8Tabが混在したまま、スペースに変えられて、
無残なことになってるコードも良くあった。
... あ、一行の後ろに、コメントがある場合。
Re:IDE (スコア:1)
昔のハードウェアの設定は、 8Tab だった筈。
で、コマンドプロンプトでも 8Tab。
もしやと思って、PowerShell、、、、無視された。(Windows10環境)
もっとも Window10のPowerShellは、Ctrl-M が Enterにならない。(標準設定)
時代と共に変わっているようで。
そう言えば、 2Tabを使うグループもあったと思うが、どうしたろうか?
Re:IDE (スコア:1)
> つーか今手元のVS2015Community見たら、全言語ともタブの設定になってんな。
> これデフォルトだっけ?少なくともVBはスペースを好む文化圏だと思ってたが。
VS2017Communityの設定を確認しましたが、C#,VB等は空白挿入設定になってました
最近OSごと再インストールしたばかりなのでまっさら設定のはずです
もしかしたら昔の設定が引き継がれているのかもしれませんね
タブはエディタ(の設定)によってインデントの幅が違うけど (スコア:2)
でもタブ派
Re:タブはエディタ(の設定)によってインデントの幅が違うけど (スコア:1)
むしろタブなら、自分の好みに合わせて幅を変えられるから好き。
HTMLはインデント深くなるから、スペース2文字分が好み。
editorconfigほんと神だわ。
Re:タブはエディタ(の設定)によってインデントの幅が違うけど (スコア:1)
ただし行頭に限る派
言語によってかな (スコア:2)
基本スペースだけど、HTMLなどのテキスト系はタブ。
COBOLの人が高収入 (スコア:2)
と嫁様がおっしゃっていました。本当かどうか知らん :)
ちどりの「ち」きっての「き」…
Re:COBOLの人が高収入 (スコア:3)
※自分含む
言語の違いとかは? (スコア:1, すばらしい洞察)
言語ごとのスタイルマニュアルとかで、タブorスペースの片方が推奨されてて、でこの言語はこういう業界でよく使われてて、でこういう業界は平均賃金が他所よりも高くて…みたいな話じゃないかなぁ。
正直、タブorスペースなんて自分でどうこうするものじゃないから、それで影響が出るとは思えないけど。
Re:言語の違いとかは? (スコア:1)
ソース元見てください
どの言語もタブ派以上にスペース派が稼いでいます(よりではない)
どの言語においての話か定義されていない以上は残当 (スコア:1, すばらしい洞察)
まずそもそもインデントをタブでするか、スペースでするかなどいう話は、言語によって個別に変えるような奴の方が稀
そして例えばHaskellやPythonのように、タブでインデントしていると想定していない動作を起こす可能性がある言語があり
対象がそれらの言語を習得していたとすれば、インデントをタブでなくスペースで入れるのは当然
また一般的にいって多くの言語を使えるプログラマの収益が多いのも当然
すると当然の帰結として、コードのインデントにスペースを使う開発者はタブを使う開発者よりも高収入という調査結果になるというだけの話
これが例えばC言語にのみ限った話だったりすると、そういう調査結果にはならないだろ
スペースでインデントするだけでビル・ジョイやゲイツやジョブズやクヌースよりも高収入になるなどありえないし
それどころかタブインデントでも異端中の異端派の8タブ使いLinusを越えることさえ至難の技
むしろこの設問に回答したプロの開発者は122人とやら全員の生涯給与を合わせたって、ゲイツの総資産の1割にも満たないと断言できる
go fmt が勝手にやってくれるから (スコア:1)
昔は (スコア:1)
Re:昔は (スコア:1)
8(16も?)ビットパソコンの時代を知らないだろ。
ビルド以前に、ソースを編集できるかどうかの瀬戸際みたいなこともあったのだ。
いえ、ぼくは当時子供だったので、経験はないですけど。
混ぜるな危険 (スコア:1)
自分で一から作る場合はスペース。
Linuxカーネルとかいじる場合は、既存ソースに合わせて概ねタブ。
タブ幅も合わせる。混ぜると危険なので。
とりあえず (スコア:1)
タブキーを投げ捨てる
インデント幅は、文字色や文字サイズの様に各々の好みが反映されるべき (スコア:1)
インデントにはタブ記号を使いましょう。
インデント幅は、文字色や文字サイズの様に各々の好みが反映されるべきだ、と私は考えております。
(コードを複数名で共有している場合であっても、エディタ設定を統一する事は殆ど無いと思います)
仮に、特定のインデント幅が狭いと読み辛いと感じている人が居るとして、インデントにタブ記号を使っていれば、
その人のエディタで読み易い幅に変更しても共有コードに対する変更には成りません。
逆に、インデントに複数スペースを使っていれば読み辛いと感じる人は大きな不満を感じるでしょう。
以上をまとめると、共有され得るコードにはタブ記号利用、
が良いのではないでしょうか
# 複数スペースを求める方々は、文字色統一、文字サイズ統一、フォント統一みたいな事をしていると思います
# 共有を前提としない個人的なコードには当てはまらないですので、自由にスペースを使ってください
# 私はタブ記号利用、幅は半角スペース3個分にする事が多いです
Re:TABはありえない (スコア:1)
まさに正論
TABは環境依存というのを分かってない人が多すぎる
スペースによるコード量の増加なぞ現代では気にする必要はまったくない
Re:TABはありえない (スコア:2, すばらしい洞察)
TABを4文字固定にするのが正義。
コード量の増加なんかより、スペースでインデントされていると、カーソルが移動できる地点が増えちゃうのが鬱陶しい。
インデントの途中、3文字目、みたいなところにカーソルが留まるべき理由は一切ない。
何かの操作でそんな中途半端な場所にはまり込んだ時に、矢印キーをたくさん押さないと脱出できないとか面倒くさい。
左右の矢印キーなりを押したら、インデントの深さを単位としてカーソルが移動すべき。
おっと、「じゃあ、そこがインデントとして挿入された空白ならそのように飛び飛びで移動する設定にするなり、
そのようなキー操作を追加で定義すりゃいいじゃん」とか言わないでよ。
それより良いアイデアが有って、TABという特殊記号を使う、というのがそれだ。
各種IDEが、ソースコード中では今後はこの幅で固定、異論は認めない、というルールを押しつけりゃ良かったんだ。
どうせ今後使わないなら、スペース4個分に当たる1インデントを表す便利な新たな記号を定義しましょう
→ ああ、こないだ葬り去って過去のものにしたTABというキーがちょうど良いですね、で済むし。
Re:TABはありえない (スコア:1)
古の時代には、
入力したコードを表示するに、cat とか、type とか、more ,,,,, 使ってが、
ここで、4文字タブが入ると不幸だった。
印刷も同じ。タブコードが入ると、次の8文字目の位置に印字位置が移る。
まあ、変更できるのは知っているが、ただのリストでそこまでする人は皆無。
一時、頑張っていたのを思い出した。只の悪あがきだったか。
Re:TABはありえない (スコア:1, 興味深い)
TAB派とスペース派は捕鯨やオスプレイの賛成派と反対派ぐらいには相容れなく、お互い相手の理屈が理解できない。
タブで何の表示がずれるのかはわからんが、何の表示がずれて何が困るのだろう。よくわからない。
タブはインデントを表現するもので、そこにスペースを4つとか8つとか入れる理由がわからない。
Re:TABはありえない (スコア:3)
インデントをスペースで行うと、『意味』が分からなくなる。
Re:TABはありえない (スコア:2, おもしろおかしい)
pythonは意味がわかってるみたいですよ
Re:TABはありえない (スコア:1)
機能を理解している人のコードはタブでもスペースでも表示が崩れたりしないよね。
スペースでも頭のおかしいコードはインデント奇数行が続いてるとか頭のおかしい事になってる。
要は流儀よりも、理知的なテキストを書いているかどうかだと思う。
Re:TABはありえない (スコア:3, すばらしい洞察)
ここにぶら下げようかな。
それは機能を理解していない人がコードを書いてるんじゃなくて
コーディングルールを徹底してないせいで、編集した人によってスペースかタブかがカオスなことになってるだけだと思う
SVN管理すると下手に既存コードを変えると、重要な差分とそうでない差分がごっちゃになってdiffが取りづらくなるから
下手に変えられないってことでカオスなコードがカオスなまま引き継がれる
そういう状況になるからこそチーム作業でやるとタブ入れるやつは嫌われる
社内・プロジェクトでコーディングルールを強制するなら、フォーマッタに任せれば良いんですよ。チェックインする前にフォーマッタに掛けるルールにするとか、チェックイン時に自動でフォーマッタが掛かる様にして置くとか。そういうルールが確立されていれば、フォーマッタを掛けた後にインデント等が崩れていたら、そのコードを書いたヤツを全員で思いっきり叱責・非難すれば良いんです。
ただ思うのは、8カラム以外でインデントしてるコードを書く人って、保守性の悪いコードを書く傾向があるのではないかと。つまり、コードの書き方とかの表層的な話ではなくて、アルゴリズムとか機能分割とかの面で劣ったコードを書くのではないかという話。ネストが深い、あまり見通しの良くないコードを書く素地があるから、インデント幅を4カラムとか2カラムとかにする必然性が生じるんじゃないかな。
Re:TABはありえない (スコア:3)
引数を揃えるなら、
void very_long_function_name(
int a,
double b
);
こうじゃないかな…。
ほえほえ
Re:TABはありえない (スコア:2, おもしろおかしい)
あ・・・
すいません気を付けます
それじゃ今までのも直しますか
コードの書き方の注意とか できればもっと早めに言っていただけると・・・
Re:TABはありえない (スコア:1)
インデント 2 は勘弁して欲しい。
どことどこが対応してるのか、パッと見て解らない。
4 くらいが好き。
たぶん、ブロック開始と終了が離れてる私のコードが問題なんだろうけど。
Re:TABはありえない (スコア:1)
namespace
class
method
switch
case
break
言語がクソですよねわかりますん。
まあループの重多段はクソだけど、構造表現で深くなるのは悪では無いので、つまり本質的に↑の形のものを
構文糖で浅く書けたところで意味は同じなので、インデントが深い=クソとは言い切れないだろう。
Re:TABはありえない (スコア:1)
画面の横幅が増えても人間の短期記憶領域が増えるわけじゃないからな。一行に情報を詰め込み過ぎると読みにくくなる。特にdiffの前後を横に並べて表示すると、幅を決めておかないと行内改行ばっかりになって、Wikipediaの差分表示みたいになる。
https://ja.wikipedia.org/w/index.php?title=%E6%94%B9%E8%A1%8C&type... [wikipedia.org]
こういうやつね。1行が80文字だと差分を見る際の作業効率が段違いだよ。んで、世の中作業の大半は差分にしかないわけだから。パッチをメールで送る時も楽だしね。80文字制限を外すのがむしろ極論だと思う。
Re:TABはありえない (スコア:1)
協調性ってのは他人に求めるものであって自分が発揮するものではないからね。
Re:環境の違い (スコア:1)
タブ派とスペース派、どうして(収入に)差がついたのか。慢心、環境の違い
Re:環境の違い (スコア:1)
タブよりスペースの方がソースファイルサイズが大きくなるからたくさん仕事したように見える、とか間抜けな理由ではないだろうな。
Re:環境の違い (スコア:1)
あらかじめタブをスペースに変換してから作業するよね。
自分のコードしかいじらない人との差が出てるとか?
他人が書いたコードに手を加えるのに勝手にタブをスペースに変えないでほしい。
Re:環境の違い (スコア:2)
前任者のコードを引き継いだ場合じゃない?
さすがにパッチあてる程度の作業で変換されたら困る
Re:んなもん (スコア:1)
言語毎のコーディング規約に従うで解決する話じゃないか…
言語毎に必ず決まってるもんでも無いと思うが。
プロジェクトでコーディング規約決めて、それに従えばいいだけだろ。
プロジェクトでIDEを決めれば、その既定値に従う、とかでもいいしさ。
Re:日本人でStackOverflowにアクセスするような (スコア:1)
Re:インデントしないという選択肢 (スコア:1)