アカウント名:
パスワード:
AWKのAはAhoのAだとはじめて知った。「Aho Wa Koitsu」じゃなかったんだ
今でもgawk使ってるよファイルはgawk.exeひとつだけ、1Mbyteにも満たないサイズで面倒なインストールの手間も不要fatなスクリプト言語なんて使わなくても出来ることは多い
awk使ったことないわ。構文覚えるの面倒とかあるけど、sedで事足りるってのがでかい。
お前はC/C++プログラマではないな!?awkはC/C++を簡易言語化したような感じなので、C/C++使ってる人間には便利連想配列のおかげで助かることもある
sedもC++も使っているが、awkは合わなかったので Perlに行った。連想配列? Perlでも使えますが何か?
昔は(と言っても '90年代初頭だけどね) awk は OS に標準で入っていたけど、perl は自分でコンパイルして入れなきゃならなかったんだよ。というわけで、awk でできることが perl でできてもなんの自慢にもならんのだよ。
どうでもいいけど、
Perl:ハッシュPython:ディクショナリJava:マップ
呼び名統一してほしい。
出自の文化圏の違いからなのかなぁ。
Perl:ハッシュ → 古き良きLisp文化圏からPython:ディクショナリ → Amoeba/ABC文化圏の「わかりやすさ」からJava:マップ → C/C++文化圏の呼称をそのまま継承
あまり詳しくないので正しいかどうかわからんけど、wikipediaだとハッシュと呼び始めたのはPerlから [wikipedia.org]と書かれているな。
ハッシュは連想配列を作るアルゴリズムからで、マップは数学用語からで、ディクショナリはどちらかというと日常的な単語から。連想配列の実装のもう1つの定番アルゴリズムは木で、JavaのMapには、TreeMapとHashMapが別々に存在して好きな方を選んで使える。
C++には、「あらゆるオブジェクトのハッシュ値が必要に応じて計算できて、上手い具合にキャッシュされて何度も再計算されるような無駄が無い」という仕組みが備わっていないのでハッシュテーブルを実装するのは敷居が高くて最初は木を使ったMapしかなかった。後にハッシュテーブルを使ったunorderd_mapが追加された。
関係ないけどついでにPythonのリストは、リスト構造とは別物で誤解を受けやすいのがよろしくない…。偉大なるLispから採りました、というとマサカリが飛んできそうなので、日常的な単語から取りました、って事になってるのかな。知らんけど。
>日常的な単語から取りました
「ディクショナリ」と同じく、おそらくこれでしょう。
「これ」が何を指してるのかわからんです。
「ハッシュ」のことなら、単語自体は日常的だけど連想配列の「機能」ではなくそれを実現する「手法」を指したネーミングというのが、なんか引っかかるというか納得いかない
生きづらい性格で大変ですね。
> 生きづらい性格で大変ですね。(#4007758)が言葉足らずなのは(#4007807)のせいではないだろ。「これ」が何か考えて「リスト」のことだろうと予想はしたが、予想でしかない。
言葉に窮して人格批判
> 敷居が高くて難易度が高いと言いたいのでしょうが。言語システムに、オブジェクトのハッシュ値を計算する仕組みがあること、実装難易度は関係がないです。
連想配列てC・C++から縁遠いものだと思ってた
Cプログラマだけど、連想配列とか使うならシェルスクリプト書くかな。そこまででもないなら、sedやらのワンライナーで十分。それとawkのない環境は触ってたけど、sedのない環境は見たことない。
> 連想配列とか使うならシェルスクリプト書くかな
POSIX Bourne shell には連想配列機能はないんですけどね...bash にはありますが
私もawk使い続けて20年以上だ。awkとsedでかなりのこと(テキスト成型とか)ができるのですらっと一行で書けるのが便利。
#しかしawk言っていると先日の豚ストーリーのオークねたコメンテーターがまた沸いてきそうな話題だな
>> awkとsedでかなりのこと(テキスト成型とか)ができる
sed awkして船山に登る
> すらっと一行「awkは書かない たった一行」というやつですね。私も20年以上前に少し齧っていたのですが続いてません。こんなのsedかawkで十分だよなと思いつつ最近ならpythonを使ってたり。
awkですらっと1000行ぐらいのスクリプトを書いてしまう俺はアホですか?
# 俺はAhoではない
> awkですらっと1000行ぐらいのスクリプトを書いてしまう俺はアホですか?
awkとかsedを否定するつもりはないけど(というか私も使っている)awkで1000行のスクリプトは多分 python と pandas を使うと5行ぐらいで書ける
普通の行の長さなら5行では無理です。人間向けのlog fileの解析がメインなので行数を減らすという意味ではpandasの効果はあまりない。素直に /foo/{bar} を大量に書いた方が楽。
大抵のプログラムを設計書書かずにその言語で一から書き出して「変態!変態!」と言われる俺でも (だって、日本語とか英語でロジカルな構造考えるより、Cとかpythonとかその言語でやり取りする入れ物とかメモリ上のマップ考えた方が速いじゃん)
awkを書きながらawkで思考するのは3行以上は無理だあんたすごいわ
gawk [gnu.org]はGNUの独自実装で、大幅に拡張された傍系(Vimみたいなもん)。A, W, K のawkに(たぶん)最も近いのはThe One True Awk [github.com]。
SVR4ないしSolarisにはoawkとnawkの二つのバージョンのawkがついてくる(無印awkはoawkのハードリンク)。このoawkが由緒正しいオリジナルじゃないかしら。
大学生の時にMS-DOS版のgawkから入った(書籍を買わなくてもman pageひとつに全機能が記述されていたので入りやすかった)ので、UNIX上のawkで関数定義がエラーになって首を傾げた思い出。んで調べたらnawkがだいたいgawkに近い機能セットだった。
gawkにしかない拡張機能ももちろんあるんだけど、書籍を買ってちょっと長めのスクリプトを書くようになったころにPerlに目移りしたので、その後、awkスクリプトはgawkでもnawkでも動くようなのしか書いてない。
念のため補足。
もちろん、ハードリンクに主従はないし、awkが元からあったファイル名で、nawkの出現によって区別のためにoawkって別名(頭のoはnawkのnがNewであることに対するOld)がつけられたというのが正しい順番なのだろう。
あと、第3のバージョンである /usr/xpg4/bin/awk なるややこしいやつもいて、こいつはnawkの方に機能が近いらしい。man pageではnawkの方に併記されていて、POSIX標準のためにわざわざforkしたかまたは書き直した模様。
Aho Wa Koitsu
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
AWK (スコア:0)
AWKのAはAhoのAだとはじめて知った。
「Aho Wa Koitsu」じゃなかったんだ
Re: (スコア:0)
今でもgawk使ってるよ
ファイルはgawk.exeひとつだけ、1Mbyteにも満たないサイズで面倒なインストールの手間も不要
fatなスクリプト言語なんて使わなくても出来ることは多い
Re: (スコア:0)
awk使ったことないわ。
構文覚えるの面倒とかあるけど、sedで事足りるってのがでかい。
Re: (スコア:0)
お前はC/C++プログラマではないな!?
awkはC/C++を簡易言語化したような感じなので、C/C++使ってる人間には便利
連想配列のおかげで助かることもある
Re: (スコア:0)
sedもC++も使っているが、awkは合わなかったので Perlに行った。
連想配列? Perlでも使えますが何か?
Re:AWK (スコア:1)
昔は(と言っても '90年代初頭だけどね) awk は OS に標準で入っていたけど、perl は自分でコンパイルして入れなきゃならなかったんだよ。
というわけで、awk でできることが perl でできてもなんの自慢にもならんのだよ。
Re:AWK (スコア:1)
どうでもいいけど、
Perl:ハッシュ
Python:ディクショナリ
Java:マップ
呼び名統一してほしい。
Re: (スコア:0)
出自の文化圏の違いからなのかなぁ。
Perl:ハッシュ → 古き良きLisp文化圏から
Python:ディクショナリ → Amoeba/ABC文化圏の「わかりやすさ」から
Java:マップ → C/C++文化圏の呼称をそのまま継承
Re: (スコア:0)
あまり詳しくないので正しいかどうかわからんけど、wikipediaだとハッシュと呼び始めたのはPerlから [wikipedia.org]と書かれているな。
Re:AWK (スコア:1)
ハッシュは連想配列を作るアルゴリズムからで、マップは数学用語からで、ディクショナリはどちらかというと日常的な単語から。
連想配列の実装のもう1つの定番アルゴリズムは木で、JavaのMapには、TreeMapとHashMapが別々に存在して好きな方を選んで使える。
C++には、「あらゆるオブジェクトのハッシュ値が必要に応じて計算できて、上手い具合にキャッシュされて何度も再計算されるような無駄が無い」という仕組みが備わっていないのでハッシュテーブルを実装するのは敷居が高くて最初は木を使ったMapしかなかった。後にハッシュテーブルを使ったunorderd_mapが追加された。
関係ないけどついでにPythonのリストは、リスト構造とは別物で誤解を受けやすいのがよろしくない…。偉大なるLispから採りました、というとマサカリが飛んできそうなので、日常的な単語から取りました、って事になってるのかな。知らんけど。
Re: (スコア:0)
>日常的な単語から取りました
「ディクショナリ」と同じく、おそらくこれでしょう。
Re: (スコア:0)
「これ」が何を指してるのかわからんです。
「ハッシュ」のことなら、単語自体は日常的だけど連想配列の「機能」ではなくそれを実現する「手法」を指したネーミングというのが、なんか引っかかるというか納得いかない
Re: (スコア:0)
生きづらい性格で大変ですね。
Re: (スコア:0)
> 生きづらい性格で大変ですね。
(#4007758)が言葉足らずなのは(#4007807)のせいではないだろ。
「これ」が何か考えて「リスト」のことだろうと予想はしたが、予想でしかない。
Re: (スコア:0)
言葉に窮して人格批判
Re: (スコア:0)
> 敷居が高くて
難易度が高いと言いたいのでしょうが。
言語システムに、オブジェクトのハッシュ値を計算する仕組みがあること、実装難易度は関係がないです。
Re: (スコア:0)
連想配列てC・C++から縁遠いものだと思ってた
Re: (スコア:0)
Cプログラマだけど、連想配列とか使うならシェルスクリプト書くかな。
そこまででもないなら、sedやらのワンライナーで十分。
それとawkのない環境は触ってたけど、sedのない環境は見たことない。
Re: (スコア:0)
> 連想配列とか使うならシェルスクリプト書くかな
POSIX Bourne shell には連想配列機能はないんですけどね...
bash にはありますが
Re: (スコア:0)
Re: (スコア:0)
私もawk使い続けて20年以上だ。awkとsedでかなりのこと(テキスト成型とか)ができるのですらっと一行で書けるのが便利。
#しかしawk言っていると先日の豚ストーリーのオークねたコメンテーターがまた沸いてきそうな話題だな
Re:AWK (スコア:1)
>> awkとsedでかなりのこと(テキスト成型とか)ができる
sed awkして船山に登る
Re: (スコア:0)
> すらっと一行
「awkは書かない たった一行」というやつですね。
私も20年以上前に少し齧っていたのですが続いてません。こんなのsedかawkで十分だよなと思いつつ最近ならpythonを使ってたり。
Re: (スコア:0)
awkですらっと1000行ぐらいのスクリプトを書いてしまう俺はアホですか?
# 俺はAhoではない
Re: (スコア:0)
> awkですらっと1000行ぐらいのスクリプトを書いてしまう俺はアホですか?
awkとかsedを否定するつもりはないけど(というか私も使っている)
awkで1000行のスクリプトは多分 python と pandas を使うと5行ぐらいで書ける
Re: (スコア:0)
普通の行の長さなら5行では無理です。
人間向けのlog fileの解析がメインなので行数を減らすという意味では
pandasの効果はあまりない。素直に /foo/{bar} を大量に書いた方が楽。
Re: (スコア:0)
awkですらっと1000行ぐらいのスクリプトを書いてしまう俺はアホですか?
# 俺はAhoではない
大抵のプログラムを設計書書かずにその言語で一から書き出して「変態!変態!」と言われる俺でも
(だって、日本語とか英語でロジカルな構造考えるより、Cとかpythonとかその言語でやり取りする入れ物とかメモリ上のマップ考えた方が速いじゃん)
awkを書きながらawkで思考するのは3行以上は無理だ
あんたすごいわ
Re: (スコア:0)
gawk [gnu.org]はGNUの独自実装で、大幅に拡張された傍系(Vimみたいなもん)。
A, W, K のawkに(たぶん)最も近いのはThe One True Awk [github.com]。
Re:AWK (スコア:2)
SVR4ないしSolarisにはoawkとnawkの二つのバージョンのawkがついてくる(無印awkはoawkのハードリンク)。このoawkが由緒正しいオリジナルじゃないかしら。
大学生の時にMS-DOS版のgawkから入った(書籍を買わなくてもman pageひとつに全機能が記述されていたので入りやすかった)ので、UNIX上のawkで関数定義がエラーになって首を傾げた思い出。んで調べたらnawkがだいたいgawkに近い機能セットだった。
gawkにしかない拡張機能ももちろんあるんだけど、書籍を買ってちょっと長めのスクリプトを書くようになったころにPerlに目移りしたので、その後、awkスクリプトはgawkでもnawkでも動くようなのしか書いてない。
Re:AWK (スコア:2)
念のため補足。
もちろん、ハードリンクに主従はないし、awkが元からあったファイル名で、nawkの出現によって区別のためにoawkって別名(頭のoはnawkのnがNewであることに対するOld)がつけられたというのが正しい順番なのだろう。
あと、第3のバージョンである /usr/xpg4/bin/awk なるややこしいやつもいて、こいつはnawkの方に機能が近いらしい。man pageではnawkの方に併記されていて、POSIX標準のためにわざわざforkしたかまたは書き直した模様。
Re: (スコア:0)
Aho Wa Koitsu