プログラミング言語話題ランキングでBashが急上昇 54
ストーリー by hylom
いまこそシェルプログラミングを学ぶべき……? 部門より
いまこそシェルプログラミングを学ぶべき……? 部門より
あるAnonymous Coward 曰く、
マイナビニュースによると、TIOBEによるプログラミング言語話題ランキングでBashが急上昇しているという。TIOBE Indexを見ると、Bashは48位から12位への急上昇である。なんとLuaを超えるという大躍進なのだが、いったいBashに何があったのだろうか。
すぐわかる結論 (スコア:4, 興味深い)
13位以下は1%以下の雑魚ばっかりだから
# 12位から5位までアップしたらびっくりしてやる
Re: (スコア:0)
言葉の意味はよくわからんがとにかくすごい自信だ!
初めて使うわこの台詞
Re: (スコア:0)
クリスですねわかります
Re: (スコア:0)
こんなのケツ拭く紙にもなりゃしない。もちろん食い物になるはずもない。
ニュースにした奴を吊るせ。
順位じゃなく率を見るんだ。
Re: (スコア:0)
へのつっぱりはいらんですよ
シェルスクリプトをプログラミング言語として採用する開発手法 (スコア:4, 参考になる)
具体的にどのようなものがあるのか気になりました。
無印良品の会社の情報系システムはbash
http://d.hatena.ne.jp/nobusue/20090802/p1 [hatena.ne.jp]
とか?
Re:シェルスクリプトをプログラミング言語として採用する開発手法 (スコア:1)
こんな会社もあります。
http://www.usp-lab.com/index.html [usp-lab.com]
Re:シェルスクリプトをプログラミング言語として採用する開発手法 (スコア:5, 参考になる)
その会社がまさしく無印良品のbashベースのシステムを開発した
元祖だと思いますよ。
http://www.atmarkit.co.jp/news/200909/07/lltv03.html [atmarkit.co.jp]
Re:シェルスクリプトをプログラミング言語として採用する開発手法 (スコア:1)
こちら [usptomo.com]もステマしておかねば
-------- tear straight across --------
配列が使いやすい (スコア:2, 興味深い)
配列がとても使いやすいです。
bash で書いて、あとで c で書き直しましたが、ポインタを意識して配列を扱いましたのでとてもよかったです。
変数が文字と数がゴッチャなところは、良し悪しがありますけど、いい意味でいい加減なところが使いやすいです。
初心者にはコマンドを並べるだけでプログラムできるってところがいいんじゃないでしょうか。あとは制御できるように条件分岐などを覚えればいいだけですし、初心者向けには悪くない言語だと思います。
でも、なんで今?とは思います。
Re:配列が使いやすい (スコア:2, 参考になる)
ただ、変数のスコープに気をつけないといけないんだよね。
何かというと、パイプラインの途中で設定したのは余所から見えないってところ。
これ、実は自分も一度引っ掛かって結構悩んだ。
Re:配列が使いやすい (スコア:2)
> 何かというと、パイプラインの途中で設定したのは余所から見えないってところ。
http://shellscript.sunone.me/tips.html#tips-8 [sunone.me]
この手の話ですね。
たまにこの手の問題に引っかかる事ありますよね。
Re: (スコア:0)
それと、do...doneループの中は子プロセスだから、内部で設定した変数は引き継げないと言う事。
# もちろん、ループ内でreturnすると、ループ脱出。
Re:配列が使いやすい (スコア:1)
do...doneループの中は子プロセスだから
えっ
違うと思うけど…
# mishimaは本田透先生を熱烈に応援しています
Re: (スコア:0)
失礼、whileループですね。
# forを忘れていた。
Re: (スコア:0)
自己レス。
> 失礼、whileループですね。
> # forを忘れていた。
取り消します。
#2342653のリンク先の情報が正解です。
Re: (スコア:0)
=0=
=1=
=2=
3
はて…
Re:配列が使いやすい (スコア:1)
ぐぐったらこんなのが出てきました。ナンダコレ
http://www.usptomo.com/PAGE=20120425SCOPE [usptomo.com]
Re: (スコア:0)
リンク先にある実験を自分でもやってみた。
1つ目のwhileの実験は、別コメで指摘されているように、9行目でechoからパイプでつないでいるのが問題みたいですね。
echoからのパイプをはずして、whileの条件を別の方法で設定するとforと同じ結果になりました。
Re:配列が使いやすい (スコア:2)
Re:配列が使いやすい (スコア:1)
いやそこでreturnは使えない。
まあ別のコメントで答えは出てるけど、パイプラインにするとそれは別プロセス起動だから。単にforやwhileなら大丈夫。
他にも、{}と()の違いに注意しないといけない、とかあるかな。
Re: (スコア:0)
http://image02.wiki.livedoor.jp/e/7/ebatan7/b6ac0b977de4ce6c.jpg [livedoor.jp]
上半期に何かある (スコア:2)
http://www.tiobe.com/index.php/paperinfo/tpci/Bash.html [tiobe.com]
2012年上半期にもBashがジャンプアップしてますな
上半期に思わずBashのスクリプトが書きたくなる何かのイベントがあるとか
# なわけねー
Re:上半期に何かある (スコア:2)
3月で定年を迎える諸先輩方が管理してきたバッチジョブを引き継ぐのに
必死になってシェルスクリプトの作法を覚える時期とか・・・・
#私にもそんな時期がgesaku
Re: (スコア:0)
「48位から12位への急上昇」の「48位」が去年の3月の結果なんで、季節的なものではないだろうね。
13位以下がLisp、PL/SQL、Delphiって連中で、Bashがこういった言語より下だったことの方が不思議かもしれない。
GoogleがBashと一般的なシェルスクリプト関連の情報を紐付けて表示するようになった、なんてオチじゃないかな。
shebang が #!/bin/sh なのに (スコア:1)
bash固有の機能(数値演算)を使ってる奴は何なの?
…あ、俺の上のひとだw
Re:shebang が #!/bin/sh なのに (スコア:2)
$(( EXPR )) の事なら、POSIX標準ですが…
HIRATA Yasuyuki
Re: (スコア:0)
> $(( EXPR )) の事なら、POSIX標準ですが?
そうですね。元のACがそんなつまらないことを指摘したはずがありません。
bashのPOSIX非互換arithmetic expressionについては
お手許のbash.infoに書いてありますので、次の投稿の前にご一読ください。
Re: (スコア:0)
> …あ、俺の上のひとだw
というのは#2342603 [srad.jp]のことで
> for i in [0..30]
を
for i in $[0..30]
と読み間違えたのだろう。
$[expr]というのはbash独自のarithmetic expressionで
> bash固有の機能(数値演算)を使ってる奴は何なの?
という彼の言葉とも合致する。
このコードにはtypoがあって正しくは
for i in {0..30}
な訳だけど。
真相は「脊髄反射で悪態ついたらコード読み間違えてて大失敗」かな。
単月で見るよりも (スコア:0)
この表よりも、右に小さく出てる TIOBE Index の方が興味深いですね。
2002年以降の動向がグラフ化されているのですが、
Java や C++ が減少傾向にあるのに対し、Objective-C が急に増加しているとか
日本では、まだPHP が優勢ですが、グラフで見ると、減少化が始まっているようとかね。
Re: (スコア:0)
2010年以後のActionScriptの統計がない!
http://www.tiobe.com/index.php/paperinfo/tpci/ActionScript.html [tiobe.com]
Linux の起動時の不具合を修正するために使いたかった? (スコア:0)
bash を使うとしたら、他の言語が立ち上がらない状況、
即ち起動時の、おかしな現象を小手先で修正したかったとか?
私も起動時に NFS が上手くマウント出来ない場合があるのを修正しています。
yum様 (スコア:0)
昔、red hatで標準ではyumが使えなかった頃、システムのアップデートをするだけにbashで数十kstepにもなる自動アップデートプログラムをbashで書いたことがある。yumが使えるようになってからは、数百stepの環境設定管理用スクリプトとyumでアップデートできるようになって、大いに助かった思い出がある。
まあ、Linuxのシステム運用をやるなら、bashで運用の自動化ぐらい組めないと、話にならないよね。
Re: (スコア:0)
そういえば、昔富士通が変なアップデートツールをドライバと一緒にサポート契約ユーザに配っていた時期があったなあ。
Re: (スコア:0)
もう忘れ去られたup2date
Re: (スコア:0)
だって、up2dateはインターネット接続ないとまともに動作しないじゃん。
連番生成が助かります (スコア:0)
ほんとに簡単なベンチマークとか
for i in [0..30]
do
time (hoge;hoge;hogegege;>/dev/null) 2&> $i.txt
done
# つい最近も使ったなぁ
Re:連番生成が助かります (スコア:1)
× [0..30]
○ {0..30}
seqのほうが便利。seq -w だと 00, 01, 03, ... 29, 30 みたいにケタ合わせしてくれるし。
for i in `seq -w 0 30`; do
...
みたいな。
Re: (スコア:0)
seq -wだと001 ~ 099みたいなときに対応できないので、
range () {
echo $(seq $1 $2 | xargs printf "%.$3d$IFS")
}
みたいなのを作っといて、for x in `range 1 10 2`; ...みたいに使うと便利です。
# perlで書けるともっとスマートなのかもしれない
Re:連番生成が助かります (スコア:2)
つ
seq -w 1 099
uxi
Re:連番生成が助かります (スコア:1)
Re: (スコア:0)
for ((i=1;i=99;i++));do x=`printf "%03d" $i`; ... ;done
Re: (スコア:0)
> # perlで書けるともっとスマートなのかもしれない
perl -e 'for (01..30) {printf "%03d\n",$_}'
とかですかね。スマートなのかどうかは微妙。
Re:連番生成が助かります (スコア:2)
こんな感じで。
perl -e 'print "$_\n" foreach("01".."30")'
HIRATA Yasuyuki
Re: (スコア:0)
# perlで書けるともっとスマートなのかもしれない
perl -e 'for($x="001";$x le "099";++$x){ hogehoge $x;}' かな。
perlらしいところでは
perl -e 'for($x="AA00";$x ne "ZZ99";++$x){ print "$x\n";}'とかもできるところ。
'I'や'O'をskipしてくれないとか,数字は後ろである必要があるとか痒い所に手が届かないところはあるが。
Re: (スコア:0)
勉強になります!
欲しいと思ったものは誰かが作ってるんですね。
seqならbashに依存せずにすむから嬉しいな。
Re:連番生成が助かります (スコア:2)
seqが入っていないシステムもあるので、移植性はそれほど高くないという… BSD系だとjotというコマンドが似た用途に使えますが、オプションの指定方法が全く違います。
HIRATA Yasuyuki
判断基準はなんなんだろう?? (スコア:0)
エンジニアの数以外に検索エンジンも判断基準の一つみたいだけど、
何を根拠にしているのだろう??
ひょっとして、最近Linux用の無償版のソフトウェアなんかだと
シェルアーカイブ形式のものが多いような気がするので、行数カウント
だったらおかしなことになってるかも・・・・、と妄想してみました。
単純に考えれば (スコア:0)
単純に考えれば、経費節減じゃないの?
難しく考えても仕方が無いような。
bashなんて勉強しなくてもたいてい触ったことぐらいはあるし、ちょっとした作業で大仰なプログラムを組むのはコストがかかるから単純にすまそうという需要にマッチしたんじゃないか?
要するに
JAVAなら、C#ならいろんな事出来ますよ、と言われても金のあるときならいいけど金無いから、「最低限できりゃいいっす。」と言われたら、やっぱりbashだろ。
はでなGUIで大人数で操作しなくても、「月末にsyuukei.sh実行して。」で片付く作業は多い。
Re: (スコア:0)
そんなケースがあるとは思えんけどね。
「はでなGUIで大人数で操作」するようなもんなら、どうせジョブ組んでやってるし。
bash の出番は、裏方では地味にあり続けてるけど、開発現場的には増減するような
要因が見当たらない。