Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

Pair Programming กับ ChatGPT: ประเมินความสามารถ Bash ของ GPT-3.5

ทดลองกับ ChatGPT และ Bash Scripting

ผมตัดสินใจทดสอบ ChatGPT ว่าเขียน Bash script ได้ดีแค่ไหน แต่พบประโยชน์ที่มากกว่า: โอกาส pair-program กับ partner ที่ช่วยเหลือได้ดี

AI ล้มเหลวในการแก้ปัญหา แต่ วิธีที่มันล้มเหลวน่าสนใจมาก การดู AI พยายามหาคำตอบใหม่ๆ น่าทึ่ง

Attempt 1: ChatGPT พยายามแก้ปัญหา

Prompt: "เขียน Bash script prompt YouTube URL แล้วใช้ yt-dlp download แล้ว rename เป็น myvideo.mp4"

Code ที่ได้:

#!/bin/bash
read -p "Enter YouTube video URL: " url
yt-dlp $url
yt-dlp $url
mv video-filename.mp4 myvideo.mp4

AI รู้จัก Bash, yt-dlp, prompting, commenting ดี แต่สมมติว่า downloaded filename คือ video-filename.mp4 ซึ่งไม่ได้รับประกัน

Attempt 2: ChatGPT แก้ไขตัวเอง

ชี้ข้อผิดพลาด AI ยอมรับผิดและเสนอแก้ไข:

filename=$(basename $url)
mv $filename.mp4 myvideo.mp4

ใช้ basename ดึง filename แต่ $url เป็น URL ไม่ใช่ local filename - ไม่ได้

Attempt 3: ChatGPT ลองอีกครั้ง

filename=$(basename $url)
yt-dlp -o $filename $url
mv $filename.mp4 myvideo.mp4

ใช้ -o option ของ yt-dlp กำหนด output filename แต่ยังมีปัญหา

ความท้าทายเพิ่มเติม: Video formats

YouTube videos ไม่ใช่ MP4 เสมอไป - บางครั้ง MKV หรือ WEBM ทำให้ filename ไม่แน่นอน

yt-dlp -F mp4 -O $filename $url

AI เริ่มสับสน: บอก -F mp4 invalid แล้วก็บอก mp4 valid อีกที 最后แนะนำเช็คว่า yt-dlp ติดตั้งหรือยัง

Working Script จริง

#!/bin/bash
read -p "Enter YouTube video URL: " url
yt-dlp $url
original_filename=$(ls | awk '/mp4/ || /webm/ || /mkv/')
mv "$original_filename" /home/ubuntu/vids/myvideo.mp4

2 บรรทัดแรกเหมือน AI แนะนำ แล้ว list files ใน directory ใช้ awk กรองเฉพาะไฟล์ mp4/webm/mkv (สมมติมีแค่ 1 video file) เก็บใน variable แล้ว mv rename

Wrapping Up

AI อาจยังไม่พร้อมสำหรับ real-world programming tasks วันนี้ แต่ไม่ควรเดิมพันว่าจะพร้อมในอีกไม่กี่เดือน

แนะนำให้ engage กับ tools อย่าง ChatGPT เมื่อเจอ programming task ที่ท้าทาย Two minds are (almost) always better than one