日記です。
ChatGPTに「Rustでcalコマンドを実装する方法」と訊いてみたら、コード付きで次のような答えが返ってきました。
Rustでcalコマンド(カレンダーを表示するコマンド)を実装するには、標準ライブラリのchronoというモジュールを使用すると便利です。このモジュールには、日付や時刻を扱うためのデータ型や関数が用意されています。例えば、次のようなコードでcalコマンドと同様の機能を実装することができます。
use chrono::{Datelike, Local}; fn main() { // 現在の日付を取得する let today = Local::today(); // カレンダーを表示する月を計算する let mut month = today.month(); let mut year = today.year(); if today.day() > 20 { // 現在の日付が20日を超えている場合は、翌月のカレンダーを表示する month = month + 1; if month == 13 { // 12月の場合は、来年の1月にする month = 1; year = year + 1; } } // カレンダーのタイトルを表示する println!("{} {}", month, year); // 曜日のラベルを表示する println!("Su Mo Tu We Th Fr Sa"); // カレンダーを表示する let mut date = Local.ymd(year, month, 1); // 表示する月の1日 let mut weekday = date.weekday().number_from_sunday(); // 1日の曜日 let mut end_date = date.with_day(date.days_in_month()).unwrap(); // 表示する月の最終日 // 1日の曜日まで空白を表示する for _ in 0..weekday { print!(" "); } // 日付を表示する while date <= end_date { print!("{:2} ", date.day()); date = date + chrono::Duration::days(1); weekday = (weekday + 1) % 7; if weekday == 0 { println!(); } } }
きちんとターミナルに表示されるときの事も考えてあって凄いです。*1
ちなみに「rust calコマンド」とGoogle検索するだけではこのコードは出てきません。きちんとAIが考えてくれているようです。そこが凄い。
新しい言語を学ぶときや、具体的な実装方法について質問すると、有益な回答を得られそうだと言うことがわかりました。
最近はGitHub Copilotも凄いですし、どんどんAIがプログラムを書く時代になって、細かな点を修正するのが人類の役割になるのかも。
再帰的にコンピュータがコンピュータを生み出すようになったら、それこそアシモフの世界だな~🤖
*1:本当に合ってるかどうかは分かりません……