LEFログ:学習記録ノート

leflog: 学習の記録をどんどんアップしていきます

ChatGPTがすごい🤖 新しい言語や技術を学ぶときに使えそう💡

ChatGPTの回答(アイキャッチ用)

日記です。

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:本当に合ってるかどうかは分かりません……