2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

awkについて語るスレ $3

1 :デフォルトの名無しさん:2020/09/14(月) 12:37:48.22 ID:ewkQANK9.net
腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ

◆ 前スレ
awkについて語るスレ $2
https://mevius.5ch.net/test/read.cgi/tech/1172242542/

◆ 参考
The AWK Programming Language (Brian Kernighan):
ttp://cm.bell-labs.com/cm/cs/awkbook/index.html

GAWK (GNU Projedt):
ttp://www.gnu.org/software/gawk/

74 :デフォルトの名無しさん:2024/06/18(火) 10:26:57.44 ID:K2nHM9ZT.net
>>67
何のお話しでつか

75 :デフォルトの名無しさん:2024/06/18(火) 11:47:17.44 ID:Li8KIoEM.net
>>74
twitterでawkを検索

76 :デフォルトの名無しさん:2024/06/18(火) 13:24:24.39 ID:Yg9xtfWz.net
awkでC言語のソースを自動生成したことあるぞ
30ウン年前
三角関数のテーブル
360度を256等分して、2バイト符号付き整数でsinとcosが32768分のいくつかっていうのを並べたテーブル

77 :デフォルトの名無しさん:2024/06/18(火) 13:55:32.44 ID:Yg9xtfWz.net
Copilot

それは非常に興味深いプロジェクトですね。AWKを使ってC言語のソースコードを自動生成するのは、特に数学的な計算やデータ処理が必要な場合に便利です。三角関数のテーブルを生成するというのは、特に組み込みシステムやリアルタイムアプリケーションで役立つことでしょう。

AWKはテキスト処理に特化したプログラミング言語であり、行単位のデータを処理するのが一般的な使い方ですが、プログラミング言語としての機能も備えているため、行単位のデータ以外を処理することも可能です。

例えば、360度を256等分して、各角度に対するsinとcosの値を2バイト符号付き整数で表現するテーブルは、以下のようなAWKスクリプトで生成できます。

BEGIN {
 for (i = 0; i < 256; i++) {
  # 角度をラジアンに変換
  rad = i * (2 * 3.14159265358979323846 / 256);
  # sinとcosの値を計算
  sin_val = int(sin(rad) * 32768);
  cos_val = int(cos(rad) * 32768);
  # テーブルに値を出力
  printf "%d, %d,\n", sin_val, cos_val;
 }
}

このスクリプトは、0度から355度までの各角度に対して、sinとcosの値を計算し、それを32768でスケーリングして整数に変換し、テーブルとして出力します。AWKは数値計算にも対応しているため、このような用途にも適しています。

もし現代の環境で同様のテーブルを生成したい場合は、AWKだけでなく他のツールや言語を使う選択肢もありますが、AWKはそのシンプルさとポータビリティで依然として有用です。もし何かお手伝いできることがあれば、お知らせください。

78 :デフォルトの名無しさん:2024/06/18(火) 14:14:13.16 ID:K2nHM9ZT.net
>>75
この人でつか。
ttps://x.com/hirayamaxkakeru/status/1801232615200198879
本が改訂されたとはいえ平積みされたことに驚いた。

79 :デフォルトの名無しさん:2024/06/18(火) 14:14:49.73 ID:7l1MdKKx.net
キャラクタセットの情報が与えられてないぞ?

80 :デフォルトの名無しさん:2024/06/18(火) 14:17:07.68 ID:7l1MdKKx.net
>>78
なんかなぜ書籍のタイトルで探しているのかわからないポンコツだよな

宣伝なのかもしれないけど

81 :デフォルトの名無しさん:2024/06/18(火) 14:18:38.82 ID:7l1MdKKx.net
いまどき学歴を書く古いスタイルもわからない

82 :デフォルトの名無しさん:2024/06/18(火) 14:21:06.45 ID:7l1MdKKx.net
>>78
別の投稿を見ると自慢だらけでゲロが出そう

83 :デフォルトの名無しさん:2024/06/18(火) 14:22:11.28 ID:Li8KIoEM.net
>>78
そう
この経歴で全く知らないってことはあるんかって思った次第

84 :デフォルトの名無しさん:2024/06/18(火) 14:23:47.05 ID:Li8KIoEM.net
真面目に勉強してきて本当に知らないのであれば
我々が想像以上に今の若手エンジニアの技術は偏ってるんだろうな
もはやLinuxすら触ることをしていない可能性

85 :デフォルトの名無しさん:2024/06/18(火) 14:38:57.57 ID:7l1MdKKx.net
bashのスクリプトからawk、sedならわかるんだが、awk単独でどうとか

アマゾンのレビューで吉田というやつのみが5つ星で、この吉田のプロフィールがヒラヤマというXに繋がっている可能性がある

あまりに読んでなさすぎだと思ったら、読んでないんだな

オライリーの「sed & awkプログラミング 改訂版」には触れない、他の出版会社の書籍には触れないなど二人とも違和感がある

86 :デフォルトの名無しさん:2024/06/18(火) 14:44:06.94 ID:J2T1cvE/.net
>>68
Rは死んだんだっけ

87 :デフォルトの名無しさん:2024/06/18(火) 14:46:35.23 ID:J2T1cvE/.net
>>75
確かに perl 使い始める前は awk 使ってたの思い出した

88 :デフォルトの名無しさん:2024/06/18(火) 14:56:45.90 ID:J2T1cvE/.net
>>85
尼のレビューで awk の吉田観に行ったら
ヤバマン - サレ妻の秘密の離婚準備 ってのがおすすめされるんだがなんでなん

89 :デフォルトの名無しさん:2024/06/18(火) 16:54:28.15 ID:Yg9xtfWz.net
検索エンジンでなくAIに聞く練習をしてみた


自分

"awk gentab.awk -h" とやればヘッダが生成され、"awk gentab.awk -s" とすればソースが生成されるようにするにはどうすればいいんでしたっけ。


Copilot

AWKで特定のオプションに応じて異なる出力を生成するには、コマンドライン引数を処理するロジックをスクリプトに組み込む必要があります。-h オプションでヘッダを、-s オプションでソースを生成するようにするためには、以下のようなAWKスクリプトを書くことができます。

https://ideone.com/0gT1PT

このスクリプトは、コマンドライン引数をチェックして、-h が指定された場合はヘッダファイルの内容を、-s が指定された場合はソースファイルの内容を出力します。exit ステートメントは、それぞれのセクションの出力後にスクリプトの実行を終了させるために使用されます。

スクリプトを gentab.awk として保存した後、以下のコマンドを実行することで、それぞれのファイルを生成できます。

awk -f gentab.awk -h # ヘッダファイル生成
awk -f gentab.awk -s # ソースファイル生成

AWKスクリプトの詳細な使い方やオプションについては、オンラインのマニュアルやドキュメントを参照すると良いでしょう。もし他にも質問があれば、お気軽にどうぞ。

90 :デフォルトの名無しさん:2024/06/18(火) 17:12:04.60 ID:Yg9xtfWz.net
ええっと、これを貼らなきゃ見えないのかな

https://ideone.com/e.js/0gT1PT

91 :デフォルトの名無しさん:2024/06/18(火) 18:24:04.44 ID:7l1MdKKx.net


92 :デフォルトの名無しさん:2024/06/18(火) 19:12:23.97 ID:Yg9xtfWz.net
こういう、固定小数点の三角関数が欲しい時にawkに生成させる話さ


short sin_table[] = {
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
};

short cos_table[] = {
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
};

93 :デフォルトの名無しさん:2024/06/18(火) 19:17:40.22 ID:7l1MdKKx.net
何を勘違いしているの

94 :デフォルトの名無しさん:2024/06/18(火) 19:19:23.73 ID:7l1MdKKx.net
生成AIは的確な仕様を伝えてないといけない

95 :デフォルトの名無しさん:2024/06/18(火) 19:32:36.51 ID:Yg9xtfWz.net
>>76で伝えてるじゃん

96 :デフォルトの名無しさん:2024/06/18(火) 19:40:43.38 ID:7l1MdKKx.net
>>95
それが合っているのかどう確認したのですか?
生成AIは正解を教えるわけではありません。

97 :デフォルトの名無しさん:2024/06/18(火) 19:48:33.05 ID:Yg9xtfWz.net
>>96

>>92を見ればちゃんとだいたい三角関数になってるじゃん
簡単のため256等分を32等分にしようって提案しただけ

98 :デフォルトの名無しさん:2024/06/18(火) 21:32:43.98 ID:Yg5iVeQt.net
マジレスすると 0度〜45度 の余弦だけあれば十分です

99 :デフォルトの名無しさん:2024/06/18(火) 21:38:40.47 ID:Yg9xtfWz.net
>>98
それをループ展開するのさ

100 :デフォルトの名無しさん:2024/06/19(水) 09:13:33.08 ID:Ml7xOhwE.net
>>77
ごめんその目的ならそれで良いけど
本来三角関数テーブルを造るのに[sin|cos|tan|asin|acos|atan|atan2]関数を使ったら負けだと思う

101 :デフォルトの名無しさん:2024/06/19(水) 10:07:13.56 ID:0R72bU2b.net
作ったもの、生成させたものが想定どおりか確認する、テストするという概念がないのは、プログラマ以前の話だぜ?

102 :デフォルトの名無しさん:2024/06/19(水) 15:24:43.01 ID:Lm+h2XXV.net
ユニットテストなあ
sinとcosだけだったらテストしてもいいかもしれない
でもtanはどうする?
tanはsinやcosみたいに有限の範囲に収まっていない
つまりそのままではテーブルを持ちにくい
実際にはtanは個別のプログラムで必要とされる計算式において、
「有限の範囲に収まる、tanを含む部分式」というのがたいていあるはずだから、それのテーブルを持つ
それは単体でテストしても意味のないものだ

103 :デフォルトの名無しさん:2024/06/19(水) 19:35:36.17 ID:IaB5ZLIm.net
>>102
それは仕様として決めること

四則演算のみの電卓だってどういう順番で計算するかは決まっていない

数学の誤差が小さくなる計算が正しいわけではない

104 :デフォルトの名無しさん:2024/06/19(水) 23:53:27.29 ID:Lm+h2XXV.net
https://ideone.com/peSwGS

105 :デフォルトの名無しさん:2024/06/21(金) 17:44:44.00 ID:LwqdtCE6.net
>>104
なぜ自作の計算しているのかという部分があるそ?

106 :デフォルトの名無しさん:2024/06/21(金) 17:45:23.65 ID:LwqdtCE6.net
awkでやる意味がないよ

107 :デフォルトの名無しさん:2024/06/21(金) 18:34:17.72 ID:r40UsctT.net
古い人なんじゃない?
昔はこういうテーブルよく作ってたよ
深層学習で使われるシグモイド関数のテーブルとか
浮動小数点数のレジスタが遅かったり
貧弱な計算資源の計算機だとかなり有用

108 :デフォルトの名無しさん:2024/06/21(金) 18:38:13.51 ID:wIxdZD1d.net
>>105
安いハードウェアでも速いから

109 :デフォルトの名無しさん:2024/06/21(金) 23:08:53.44 ID:LwqdtCE6.net
OSの標示コマンドを自作してしまう人間はまだいるからなあ。

110 :デフォルトの名無しさん:2024/06/24(月) 00:16:12.40 ID:sso3G8sO.net
アマゾンの
「プログラミング言語AWK 第2版」

コメントなしの5つ星レビューが追加された
転○目的の中古が値崩れし始めている

めがベンチャーくんの宣伝じゃ売れないよ!

111 :デフォルトの名無しさん:2024/06/24(月) 08:32:33.18 ID:snwWNZSk.net
>>110
これか。
ttps://www.%61mazon.co.jp/product-reviews/4814400705/
評価した人数が僅か2人なので、宣伝だとしても効果は薄そう。

112 :デフォルトの名無しさん:2024/06/24(月) 14:01:48.24 ID:OzsKCRyN.net
https://x.com/hirayamaxkakeru/status/1801232615200198879
https://x.com/hirayamaxkakeru?t=6IXjFVaAG6iUPmY3jYVlIA&s=09

こういう人もいるんだな。都知事選の政見放送みたい

113 :デフォルトの名無しさん:2024/06/24(月) 15:08:37.60 ID:kN0svtrZ.net
awkでやる意味がないよ

114 :デフォルトの名無しさん:2024/06/24(月) 15:22:42.93 ID:qmamFw0P.net
AWKを使ったことないは理解できるが名前すら知らないって最近の人はこんなのばっかなの?
怖いんだけど
使ったことないはまだ理解できるけど
名前すら知らないって

115 :デフォルトの名無しさん:2024/06/24(月) 17:22:13.19 ID:FfGi9EOd.net
>>112
>>67 と同じ話を何で何度もすんねん。

116 :デフォルトの名無しさん:2024/06/24(月) 18:41:22.73 ID:OzsKCRyN.net
ごめんチャイ、気が付かなんだ

117 :デフォルトの名無しさん:2024/06/25(火) 13:37:20.72 ID:ZtCD4zFU.net
おじいちゃんお薬の時間です

118 :デフォルトの名無しさん:2024/06/25(火) 14:42:15.39 ID:Z9mp1IOT.net
薬はまだかね?
代金は受け取っただろ。

119 :デフォルトの名無しさん:2024/06/26(水) 00:52:44.98 ID:yv8Z2CuH.net
都知事選もとりあえずポスターに「AI」と書いておけばいいみたいな雑な扱い

120 :デフォルトの名無しさん:2024/06/26(水) 12:32:40.93 ID:j6fp+f8B.net
これほど乱れた都知事選になるとは

121 :デフォルトの名無しさん:2024/06/26(水) 14:58:55.42 ID:hXpRZohR.net
民主政治の末期症状見てるみたいな気分になる
制度改革が必要だな

122 :デフォルトの名無しさん:2024/06/26(水) 21:32:42.48 ID:yv8Z2CuH.net
都知事選でAIがどうこう言っている立候補者はすべてレベルが低い。

123 :デフォルトの名無しさん:2024/06/27(木) 10:11:18.36 ID:OTNDZ+yC.net
スレチ

32 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200