開発から 45 年、プログラミング言語 AWK に Unicode サポートが追加 70
ストーリー by nagazou
開発者生活45年 部門より
開発者生活45年 部門より
headless 曰く、
プログラミング言語 AWK が最初に開発された 1977 年から 45 年後の2022年、Brian Kernighan 氏により Unicode サポートが追加されたそうだ (README.unicode、 The Register の記事、 Ars Technica の記事、 Computerphile 動画)。
Kernighan 氏は AWK (Aho Weinberger Kernighan) の「K」の由来でもあるオリジナル開発者で、80 歳になる。GitHub の「The One True Awk」リポジトリに Unicode サポートがコミットされたのは 6 月 1 日だったが、先週 Kernighan 氏が YouTube の Computerphile に出演するまで注目されずにいたようだ。Kernighan 氏によれば、AWK が Unicode をサポートしていないことを長らく残念に思っていたという。そのため、数か月前にまとまった時間を取り、UTF-8 を処理できるようにしたとのこと。このコミットはメインテナーの Arnold Robbins 氏の助けを借りて実行したが、Kernighan 氏は git を理解して自分でプルリクエストも実行したいと述べている。
かっこいいおじいちゃん (スコア:1)
80歳でもプログラミング!
# プログラミング作法、K&R、UNIXプログラミング環境、自分の根っことなる部分でどれだけ助けてもらったことやら
Re: (スコア:0)
いわゆるK&R本のKの人ですね。 やや年寄りプログラマーにとっては必携書だったプログラム書法、プログラミング作法の著者の一人で 最近なら、プログラミング言語Goの著者でもある。
Re: (スコア:0)
K&Rは訳が良くなかったですね。分かりにくかった特定のページだけ何度も読んで紙の色が変わってました。最終的にはコンパイル結果をディスアセンブルして理解した思い出。プログラム書法は購入したもののあまり記憶に残っておらず。
Re: (スコア:0)
Cからアセンブリ言語が生成された段階のものは見られなかったんですか?
自分が最初に使ったのはX68000のXCの初期型でアセンブリ言語が見られるのが標準だったし次に使ったgcc(バージョン1.なんとかだったかな)も同じだったのですが。
ひらめいた (スコア:0)
PythonあたりでUnicode文字列も処理できる、AWKのエミュレータを作ったほうが早かったのでは
Re: (スコア:0)
Pythonあたりは重過ぎる
今も使っているgawkはたった716Kbyteのgawk.exeだけで動く
インストールの手間さえ不要
そもそもAWKで出来ることにPythonあたりを使おうという発想が無駄
Re:ひらめいた (スコア:1)
それはそうだが、GNU AWKはAWKではないでしょ。
Turbo PASCALがPASCALでないとか、GNU makeがmakeでないくらいちがう。
Re: (スコア:0)
gawkは(というかGNUのツールは)とっくにロケール対応してて、たとえば/./に「あ」がマッチするとかみんな知らないのかな?
sedが遅くなってえらい迷惑とかいう話題があったのが、10年以上前だったと思う。
gawkはawkに対してあからさまに拡張されてるので、gawkに慣れた人がawkを使うとかなり困惑すると思う。
Re: (スコア:0)
まあ、それでもsedじゃやりきれないのをやろうとしたのがawkなのでsedより肥大化してるんで 小さいのを使ってる自慢ならsedでやれよ。
Re: (スコア:0)
sedでawkのシミュレータを
Re: (スコア:0)
コマンドプロンプトとかpowershellでgawk叩いてみたけど、そんなコマンド存在しないって怒られたよ。
インストールしないと使えなさそうなんだけど、インストールの手間が不要ってのはどういうこと?
exeって言ってるんだから、当然windowsの話だよね?
Re:ひらめいた (スコア:2)
exe の拡張子はついてないけど、普通に WSL2 のストアアプリの Ubuntu で /usr/bin/gawk あると。
当然windowsの話だよね?
Re: (スコア:0)
「awkを使いたいならPythnで実装すれば」の次は 「awkを使いたいならWSL2のUbuntuをインストールすれば」かよ
Re: (スコア:0)
windowsにWSL2がプリインストールされている世界の方ですか?
Re: (スコア:0)
なんだよこの老害マウント選手権は。
そんなことやってる暇あったらコード書こうぜ。
Re: (スコア:0)
コードを書く時にgawkも必要なんじゃなかろうか
日本人がpowershellだとリダイレクトとかの文字コード変換対応はつらみがあるから(ver6以降の挙動は違うかもしれない、違ったらすまない)
gawkのほうが良い場合って実際あるだろね
Re: (スコア:0)
gawk.exe てファイル名のファイルがひとつあれば使えるようになるて
上のあのにまっこ(#4313770)さんが言ってんのわかる?
ファイル1本あれば使えるのになんでインストーラ使って
インストールしなきゃいけない?
Re: (スコア:0)
「Windowsが標準で持っていない実行ファイルをどこかから調達してきてPATHの通っているフォルダにコピーする」という行為をインストールと呼べるかどうか、で意見が分かれているな。
Re: (スコア:0)
PATHの通っているフォルダというか、CUIだからカレントフォルダじゃないかな。
さらに言うなら、Portable版の詰まったUSBメモリでコマンドプロンプトを起動して希望の処理を行う。
Re: (スコア:0)
pythonだったらコマンドラインからpythonと打ち込むと自動的にMicrosoft Storeが開いてワンクリックでインストールできるぞ。
もっともこのMicrosoft Storeからインストールされるpythonが罠で、python.orgからインストールしたやつじゃないと仮想化か何かの関係でスクリプトがまともに動かないことがまれによくある
Re: (スコア:0)
wingetでインストールできねーかなと思ってやってみたがGawker Media+とかいうよくわからないストアアプリが出てくるだけだった。ActivePerl、Strawberry Perl、Rubyはwingetでインストールできるようだ。Pythonについてはすでに述べた通りwingetすら不要だが、winget install Python.Python.3.10のようにすればストア版ではなくデスクトップ版をインストールできる
Re: (スコア:0)
うちのgawk.exeは191kbytesだった。
UnxUtils [sourceforge.net]の
(常備しているマニュアルテキストが937KB)
Re: (スコア:0)
Ahoばっか。AWKのwkはどこへ…
excelマクロよりもawk (スコア:0)
ちょっとした処理をするのにexcelのマクロで四苦八苦するくらいならawkを使う
その程度のためにawkは存在するし、その存在意義がある
文系の学校のプログラミングの授業でawkを使った統計処理みたいなことをやっているところがあるが、就職してから使いもしないようなプログラミング言語を教えるよりずっとマシ
Re: (スコア:0)
Windowsでちょっとした処理をするならPowerShellを使うので、特にawkの存在意義は感じないかな…。
macでExcel使ってるのかもしれないけど。
Re: (スコア:0)
自分の端末で何を使ってもいいんならExcelもAWKも使わんし
AWKを標準で叩ける環境ならやっぱりわざわざAWKを引っ張りだす意味がわからん
Re: (スコア:0)
ExcelとAWKが選択肢にある時点で、その間にいくらでもマシなモノがあるだろうね。
Re: (スコア:0)
就職しても使いもしないようなプログラミング言語の代表が、シェルスクリプトとawkですよ。
Re:excelマクロよりもawk (スコア:2)
---- 6809
Re:excelマクロよりもawk (スコア:1)
awk がなければ仕事にならんかったけどなぁ。
そういや、excel には 32Ki行だったか 64Ki行までしか扱えないって制限があって、それに引っかかって難儀していた後輩がいたな、20年位前の話だけど。
Re: (スコア:0)
20年くらい前だったら、sedの手に負えない案件ならawkをすっ飛ばしてperlを使ってたな。(無論pythonでも良かったが、個人的にはperlの方が手に馴染んでた)
Re: (スコア:0)
Pascalじゃないんか...
Re: (スコア:0)
今日も半日くらいbashのシェルスクリプト使ってた
grepとsed無いとタヒぬ、awkはたまに使うくらい
オレ環
Re: (スコア:0)
そこは業種によるだろ。シェルスクリプトはLinuxサーバーでめちゃくちゃ使うが。確かにawkは使わないな
Re: (スコア:0)
excelだと重くて使いにくい時によく使ってたな
数Gバイトのログの集計とか一瞬で終わるのがよかった
他にはプログラムの実行結果の確認によく使ったな
その場で一行で実行できるものをわざわざ別のプログラムで作るのも変だけどw
AWKはPOSIXで規定された標準コマンド (スコア:0)
現時点では一実装の独自拡張にすぎない。K&R初版の文法が今となっては標準Cの文法ではないのと同じこと
Re: (スコア:0)
最も使われているawkはgawkだと思うんですが、今回の元祖?awkが標準の環境ってあるんでしょうか。
FreeBSDやDebianとかの標準のawkやnawkは、多分、また別の実装が使われているんですよね。
Re: (スコア:0)
macOSやFreeBSDはnawkのようだ。あとはBusyboxのawkとか。いずれも元祖awkとは異なるらしいが。ていうか元祖awkはユーザー定義関数が使えないらしい。今となってはPOSIXにも準拠していないマジでK&R 1stのような代物に見える
GAWK + Copalpro 毎日使ってます (スコア:0)
もう30年くらい使ってるかなあ
テキストファイルの処理するには超便利、WINDOWSのメジャーバージョンアップ
の度にcopalpro.exeが動かなくなるのではないかとドキドキする。
代替環境には何が候補になるのかな?
スクリプトエディタ画面と実行結果画面があって処理するファイルをドラグ&ドロップすると
実行結果画面に表示されてほしいのです。
ActivePerlのpl2bat.batが近いが一手間増えるんですよ。
awkがいた場所 (スコア:0)
もうperlに代替されてしまってるし今さら感が・・・
perlも進化が止まってるし、ワンライナーも求められる要件は完成してしまってるのが現状だと思う。
Re: (スコア:0)
Perlは性能が悪い印象しかないけど
ログの解析やらせるとawkの10倍ぐらい時間かかる印象しかない
複雑なのをPerlでやってたけど、今じゃコマンド処理もphpでやる方が速かったりするからな
Re: (スコア:0)
ログ解析だとバッファの取り方で性能が全く変わるのでコードの方が糞な可能性もあるぞ。
本当に簡単な処理だとsedやawkの方が速いけどスクリプト言語の中でPerlは遅い方でもない。
Re: (スコア:0)
Linuxだと大抵の場合わざわざインストールしないと利用できないperlとデフォルトで入っていることがほとんどなawkだと後者の方がよく使われてると思うんですよ。
Re: (スコア:0)
Perlはデフォルトで入ってるだろ・・・って思ったけど最近のディストロ入ってないんだなw
いよいよオワコンか
Re: (スコア:0)
それはpythonがperlに取って代わっただけなので。そこでawkに回帰したわけではない(UNIX老人を除く)。
複雑な正規表現 (スコア:0)
GNUのAWK/SED/GREPあたりは、結構複雑な正規表現でもサクサク実行してくれるが、
商用UNIXについてくるやつは、複雑になると、ものすごく時間がかかったりフリーズしたりすることが多かった
商用UNIXの正規表現周りの処理はなんでダメだったのか?
Re: (スコア:0)
正規表現に限らず商用UNIXって奴のユーザ周りは基本クソなので廃れた
200MB改行なしのテキストを処理したとき (スコア:0)
Rubyで正規表現使ったら1日かかっても終わらなかったのね
それがSEDで数秒で終わった時にこれはすげえやと
あ、AWKの話じゃなかった
Re: (スコア:0)
awkの正規表現エンジンはReDOSの余地がない、理論通りO(N)で動くやつだからな
Re: (スコア:0)
あ、sedの話だったのか。でもawkでも同じ。現在の高機能だけど(最悪計算量的な意味で)低速な正規表現エンジンはPerlが最初に持ち込んだ