パスワードを忘れた? アカウント作成
15769287 story
プログラミング

開発から 45 年、プログラミング言語 AWK に Unicode サポートが追加 70

ストーリー by nagazou
開発者生活45年 部門より
headless 曰く、

プログラミング言語 AWK が最初に開発された 1977 年から 45 年後の2022年、Brian Kernighan 氏により Unicode サポートが追加されたそうだ (README.unicodeThe 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 を理解して自分でプルリクエストも実行したいと述べている。

  • by Anonymous Coward on 2022年08月27日 10時42分 (#4313843)

    80歳でもプログラミング!

    # プログラミング作法、K&R、UNIXプログラミング環境、自分の根っことなる部分でどれだけ助けてもらったことやら

    ここに返信
    • by Anonymous Coward

      いわゆるK&R本のKの人ですね。 やや年寄りプログラマーにとっては必携書だったプログラム書法、プログラミング作法の著者の一人で 最近なら、プログラミング言語Goの著者でもある。

      • by Anonymous Coward

        K&Rは訳が良くなかったですね。分かりにくかった特定のページだけ何度も読んで紙の色が変わってました。最終的にはコンパイル結果をディスアセンブルして理解した思い出。プログラム書法は購入したもののあまり記憶に残っておらず。

        • by Anonymous Coward

          Cからアセンブリ言語が生成された段階のものは見られなかったんですか?

          自分が最初に使ったのはX68000のXCの初期型でアセンブリ言語が見られるのが標準だったし次に使ったgcc(バージョン1.なんとかだったかな)も同じだったのですが。

  • by Anonymous Coward on 2022年08月27日 7時18分 (#4313762)

    PythonあたりでUnicode文字列も処理できる、AWKのエミュレータを作ったほうが早かったのでは

    ここに返信
    • by Anonymous Coward

      Pythonあたりは重過ぎる
      今も使っているgawkはたった716Kbyteのgawk.exeだけで動く
      インストールの手間さえ不要
      そもそもAWKで出来ることにPythonあたりを使おうという発想が無駄

      • by Anonymous Coward on 2022年08月27日 9時16分 (#4313795)

        それはそうだが、GNU AWKはAWKではないでしょ。
        Turbo PASCALがPASCALでないとか、GNU makeがmakeでないくらいちがう。

        • by Anonymous Coward

          gawkは(というかGNUのツールは)とっくにロケール対応してて、たとえば/./に「あ」がマッチするとかみんな知らないのかな?
          sedが遅くなってえらい迷惑とかいう話題があったのが、10年以上前だったと思う。

          gawkはawkに対してあからさまに拡張されてるので、gawkに慣れた人がawkを使うとかなり困惑すると思う。

      • by Anonymous Coward

        まあ、それでもsedじゃやりきれないのをやろうとしたのがawkなのでsedより肥大化してるんで 小さいのを使ってる自慢ならsedでやれよ。

        • by Anonymous Coward

          sedでawkのシミュレータを

      • by Anonymous Coward

        コマンドプロンプトとかpowershellでgawk叩いてみたけど、そんなコマンド存在しないって怒られたよ。
        インストールしないと使えなさそうなんだけど、インストールの手間が不要ってのはどういうこと?

        exeって言ってるんだから、当然windowsの話だよね?

        • by nim (10479) on 2022年08月27日 10時40分 (#4313840)

          exe の拡張子はついてないけど、普通に WSL2 のストアアプリの Ubuntu で /usr/bin/gawk あると。

          当然windowsの話だよね?

          • by Anonymous Coward

            「awkを使いたいならPythnで実装すれば」の次は 「awkを使いたいならWSL2のUbuntuをインストールすれば」かよ

          • by Anonymous Coward

            windowsにWSL2がプリインストールされている世界の方ですか?

        • by Anonymous Coward

          なんだよこの老害マウント選手権は。
          そんなことやってる暇あったらコード書こうぜ。

          • by Anonymous Coward

            コードを書く時にgawkも必要なんじゃなかろうか

            日本人がpowershellだとリダイレクトとかの文字コード変換対応はつらみがあるから(ver6以降の挙動は違うかもしれない、違ったらすまない)
            gawkのほうが良い場合って実際あるだろね

        • by Anonymous Coward

          gawk.exe てファイル名のファイルがひとつあれば使えるようになるて
          上のあのにまっこ(#4313770)さんが言ってんのわかる?
          ファイル1本あれば使えるのになんでインストーラ使って
          インストールしなきゃいけない?

          • by Anonymous Coward

            「Windowsが標準で持っていない実行ファイルをどこかから調達してきてPATHの通っているフォルダにコピーする」という行為をインストールと呼べるかどうか、で意見が分かれているな。

            • by Anonymous Coward

              PATHの通っているフォルダというか、CUIだからカレントフォルダじゃないかな。
              さらに言うなら、Portable版の詰まったUSBメモリでコマンドプロンプトを起動して希望の処理を行う。

        • by Anonymous Coward

          pythonだったらコマンドラインからpythonと打ち込むと自動的にMicrosoft Storeが開いてワンクリックでインストールできるぞ。

          もっともこのMicrosoft Storeからインストールされるpythonが罠で、python.orgからインストールしたやつじゃないと仮想化か何かの関係でスクリプトがまともに動かないことがまれによくある

        • by Anonymous Coward

          wingetでインストールできねーかなと思ってやってみたがGawker Media+とかいうよくわからないストアアプリが出てくるだけだった。ActivePerl、Strawberry Perl、Rubyはwingetでインストールできるようだ。Pythonについてはすでに述べた通りwingetすら不要だが、winget install Python.Python.3.10のようにすればストア版ではなくデスクトップ版をインストールできる

      • by Anonymous Coward

        うちのgawk.exeは191kbytesだった。
        UnxUtils [sourceforge.net]の
          (常備しているマニュアルテキストが937KB)

  • by Anonymous Coward on 2022年08月27日 7時58分 (#4313773)

    ちょっとした処理をするのにexcelのマクロで四苦八苦するくらいならawkを使う
    その程度のためにawkは存在するし、その存在意義がある
    文系の学校のプログラミングの授業でawkを使った統計処理みたいなことをやっているところがあるが、就職してから使いもしないようなプログラミング言語を教えるよりずっとマシ

    ここに返信
    • by Anonymous Coward

      Windowsでちょっとした処理をするならPowerShellを使うので、特にawkの存在意義は感じないかな…。
      macでExcel使ってるのかもしれないけど。

    • by Anonymous Coward

      自分の端末で何を使ってもいいんならExcelもAWKも使わんし
      AWKを標準で叩ける環境ならやっぱりわざわざAWKを引っ張りだす意味がわからん

      • by Anonymous Coward

        ExcelとAWKが選択肢にある時点で、その間にいくらでもマシなモノがあるだろうね。

    • by Anonymous Coward

      就職しても使いもしないようなプログラミング言語の代表が、シェルスクリプトとawkですよ。

      • ええー、テストサーバーから複数の本番サーバーにデータをコピーするのに、毎日のようにシェルスクリプトを使ってるけどなあ。
        --
        ---- 6809
      • by Anonymous Coward on 2022年08月27日 17時35分 (#4314000)

        awk がなければ仕事にならんかったけどなぁ。
        そういや、excel には 32Ki行だったか 64Ki行までしか扱えないって制限があって、それに引っかかって難儀していた後輩がいたな、20年位前の話だけど。

        • by Anonymous Coward

          20年くらい前だったら、sedの手に負えない案件ならawkをすっ飛ばしてperlを使ってたな。(無論pythonでも良かったが、個人的にはperlの方が手に馴染んでた)

      • by Anonymous Coward

        Pascalじゃないんか...

      • by Anonymous Coward

        今日も半日くらいbashのシェルスクリプト使ってた
        grepとsed無いとタヒぬ、awkはたまに使うくらい
        オレ環

      • by Anonymous Coward

        そこは業種によるだろ。シェルスクリプトはLinuxサーバーでめちゃくちゃ使うが。確かにawkは使わないな

    • by Anonymous Coward

      excelだと重くて使いにくい時によく使ってたな
      数Gバイトのログの集計とか一瞬で終わるのがよかった

      他にはプログラムの実行結果の確認によく使ったな
      その場で一行で実行できるものをわざわざ別のプログラムで作るのも変だけどw

  • by Anonymous Coward on 2022年08月27日 15時19分 (#4313950)

    現時点では一実装の独自拡張にすぎない。K&R初版の文法が今となっては標準Cの文法ではないのと同じこと

    ここに返信
    • by Anonymous Coward

      最も使われているawkはgawkだと思うんですが、今回の元祖?awkが標準の環境ってあるんでしょうか。
      FreeBSDやDebianとかの標準のawkやnawkは、多分、また別の実装が使われているんですよね。

      • by Anonymous Coward

        macOSやFreeBSDはnawkのようだ。あとはBusyboxのawkとか。いずれも元祖awkとは異なるらしいが。ていうか元祖awkはユーザー定義関数が使えないらしい。今となってはPOSIXにも準拠していないマジでK&R 1stのような代物に見える

  • by Anonymous Coward on 2022年08月27日 21時03分 (#4314068)

    もう30年くらい使ってるかなあ
     テキストファイルの処理するには超便利、WINDOWSのメジャーバージョンアップ
    の度にcopalpro.exeが動かなくなるのではないかとドキドキする。
    代替環境には何が候補になるのかな?
     スクリプトエディタ画面と実行結果画面があって処理するファイルをドラグ&ドロップすると
    実行結果画面に表示されてほしいのです。
     ActivePerlのpl2bat.batが近いが一手間増えるんですよ。

    ここに返信
  • by Anonymous Coward on 2022年08月27日 21時58分 (#4314081)

    もうperlに代替されてしまってるし今さら感が・・・

    perlも進化が止まってるし、ワンライナーも求められる要件は完成してしまってるのが現状だと思う。

    ここに返信
    • by Anonymous Coward

      Perlは性能が悪い印象しかないけど
      ログの解析やらせるとawkの10倍ぐらい時間かかる印象しかない

      複雑なのをPerlでやってたけど、今じゃコマンド処理もphpでやる方が速かったりするからな

      • by Anonymous Coward

        ログ解析だとバッファの取り方で性能が全く変わるのでコードの方が糞な可能性もあるぞ。
        本当に簡単な処理だとsedやawkの方が速いけどスクリプト言語の中でPerlは遅い方でもない。

    • by Anonymous Coward

      Linuxだと大抵の場合わざわざインストールしないと利用できないperlとデフォルトで入っていることがほとんどなawkだと後者の方がよく使われてると思うんですよ。

      • by Anonymous Coward

        Perlはデフォルトで入ってるだろ・・・って思ったけど最近のディストロ入ってないんだなw
        いよいよオワコンか

        • by Anonymous Coward

          それはpythonがperlに取って代わっただけなので。そこでawkに回帰したわけではない(UNIX老人を除く)。

  • by Anonymous Coward on 2022年08月28日 11時09分 (#4314207)

    GNUのAWK/SED/GREPあたりは、結構複雑な正規表現でもサクサク実行してくれるが、
    商用UNIXについてくるやつは、複雑になると、ものすごく時間がかかったりフリーズしたりすることが多かった

    商用UNIXの正規表現周りの処理はなんでダメだったのか?

    ここに返信
    • by Anonymous Coward

      正規表現に限らず商用UNIXって奴のユーザ周りは基本クソなので廃れた

  • by Anonymous Coward on 2022年08月29日 3時40分 (#4314440)

    Rubyで正規表現使ったら1日かかっても終わらなかったのね
    それがSEDで数秒で終わった時にこれはすげえやと

    あ、AWKの話じゃなかった

    ここに返信
    • by Anonymous Coward

      awkの正規表現エンジンはReDOSの余地がない、理論通りO(N)で動くやつだからな

      • by Anonymous Coward

        あ、sedの話だったのか。でもawkでも同じ。現在の高機能だけど(最悪計算量的な意味で)低速な正規表現エンジンはPerlが最初に持ち込んだ

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...