[CS for Non-Tech] Introduction Zone [ไทย]

Thanaphoom Babparn
3 min readJan 3, 2023

--

Photo by Christin Hume on Unsplash

สวัสดีทุกคนนะครับ ยินดีต้อนรับเข้าสู่บทความแรกของซีรีย์ [CS for Non-Tech] จุดประสงค์ก็คือเพื่อปูพื้นฐานทางฝั่ง Computer Science ให้กับคนทั่ว ๆ ไป

Target Audience

  • Non-Tech background ที่เริ่มมีความสนใจทางด้าน Tech หรือฝั่ง Development
  • Experience/Professional background แต่อยาก refresh knowledge ในโลก Fundamentals (ปี 1–4 อีกครั้ง)
  • บุคคลทั่วไปที่สนใจ

Introduction Zone

Computer Science

วิทยาการคอมพิวเตอร์คือการศึกษาเกี่ยวกับคอมพิวเตอร์และระบบคำนวณ รวมถึงการออกแบบ การพัฒนา และการใช้งาน โดยครอบคลุมหัวข้อต่างๆ มากมาย รวมถึงภาษาโปรแกรม อัลกอริทึม โครงสร้างข้อมูล สถาปัตยกรรมคอมพิวเตอร์ ระบบปฏิบัติการ ฐานข้อมูล เครือข่าย และวิศวกรรมซอฟต์แวร์

เป็นสาขาที่เติบโตอย่างรวดเร็ว มีผลกระทบอย่างมีนัยสำคัญต่อชีวิตของพวกเราในหลาย ๆ ด้าน มีบทบาทในด้านต่างๆ เช่น การแพทย์ การเงิน วิทยาศาสตร์ การศึกษา และความบันเทิง และยังเป็นกุญแจสำคัญของเทคโนโลยีเกิดใหม่ เช่น artificial intelligence, machine learning, and the internet of things

Computational Thinking (การคิดเชิงคำนวณ)

Computational thinking เป็นวิธีการแก้ปัญหาที่เกี่ยวข้องกับการแบ่งปัญหาที่ซับซ้อนออกเป็นชิ้นเล็ก ๆ ที่จัดการได้มากขึ้น และใช้เหตุผลเชิงตรรกะและนามธรรมในการแก้ปัญหา ช่วยให้ผู้คนแยกปัญหาขนาดใหญ่และซับซ้อนออกเป็นชิ้นเล็กๆ ที่ง่ายต่อการเข้าใจและแก้ไข ช่วยทำให้กระบวนการแก้ปัญหาง่ายขึ้น ตัวอย่างที่นำมาใช้ใน Computer Science เช่น

  • Software development นักพัฒนาซอฟต์แวร์อาจใช้การแก้ปัญหาแต่ละองค์ประกอบแยกกัน แทนที่จะพยายามจัดการปัญหาทั้งหมดพร้อมกัน
  • Data analysis ในการวิเคราะห์ข้อมูล การคิดเชิงคำนวณสามารถใช้เพื่อระบุรูปแบบและแนวโน้มในชุดข้อมูลขนาดใหญ่ ตัวอย่างเช่น นักวิทยาศาสตร์ข้อมูลอาจใช้การจดจำรูปแบบเพื่อระบุความสัมพันธ์ระหว่างตัวแปรต่างๆ
  • Robotics การคิดเชิงคำนวณสามารถใช้ในการออกแบบและใช้อัลกอริทึมที่ช่วยให้หุ่นยนต์สามารถปฏิบัติงานและตัดสินใจได้ ตัวอย่างเช่น Robotics engineer อาจใช้การสลายตัวเพื่อแบ่งงานที่ซับซ้อนออกเป็นขั้นตอนเล็กๆ ที่หุ่นยนต์สามารถทำได้ หรือใช้การจดจำรูปแบบเพื่อให้หุ่นยนต์สามารถระบุและจำแนกวัตถุตามลักษณะที่มองเห็นได้

How Computer Work

ถ้าเอาแบบง่าย ๆ เลยนะ แบบยังไม่ต้องคิดอะไรที่เป็น Computer Architecture

Input: ใช้เพื่อให้ข้อมูลและคำสั่งกับคอมพิวเตอร์ ตัวอย่างได้แก่ แป้นพิมพ์ เมาส์ หน้าจอสัมผัส และสแกนเนอร์ เมื่อคุณป้อนข้อมูลหรือคำสั่งโดยใช้ Input คอมพิวเตอร์จะส่งข้อมูลไปยัง CPU เพื่อประมวลผล

CPU (Central Processing Unit): CPU คือ “สมอง” ของคอมพิวเตอร์ มีหน้าที่ดำเนินการตามคำสั่งและดำเนินการคำนวณ เมื่อคอมพิวเตอร์ได้รับอินพุต CPU จะดึงคำสั่งที่เกี่ยวข้องจากหน่วยความจำและดำเนินการตามนั้น ตัวอย่างเช่น หากคุณป้อนการคำนวณลงในแอพเครื่องคิดเลข CPU จะเรียกคำสั่งสำหรับการคำนวณและดำเนินการตามนั้น ทำให้เกิดผลลัพธ์

Memory : หน่วยความจำหรือที่เรียกว่า RAM (Random Access Memory) เป็นที่ที่คอมพิวเตอร์เก็บข้อมูลและคำสั่งที่ตัว CPU ต้องการเข้าถึงอย่างรวดเร็ว เมื่อ CPU รันคำสั่ง มันจะดึงข้อมูลและคำสั่งจากหน่วยความจำ ดำเนินการคำสั่งที่จำเป็น และเก็บผลลัพธ์กลับเข้าไปในหน่วยความจำ

Output: ใช้เพื่อแสดงผลลัพธ์ของการประมวลผลของคอมพิวเตอร์ ได้แก่ จอภาพ เครื่องพิมพ์ และลำโพง เมื่อคอมพิวเตอร์ประมวลผลข้อมูลหรือคำสั่งเสร็จแล้ว ก็จะส่งผลลัพธ์ไปยังอุปกรณ์แสดงผลที่เหมาะสมสำหรับการแสดงผล

Flow Chart

แผนภูมิลำดับงานคือ graphical representation ของกระบวนการหรือระบบ ที่แสดงขั้นตอนหรืองานที่เกี่ยวข้อง มีจุดตัดสินใจและผลลัพธ์ที่เป็นไปได้ แผนภูมิลำดับงานมักใช้เพื่อแสดงภาพและบันทึกขั้นตอนในกระบวนการ ช่วยให้ผู้คนเข้าใจกระบวนการที่ซับซ้อนได้ง่ายขึ้น คุณยังสามารถให้ตัวอย่างแผนผังลำดับงานประเภทต่างๆ และอธิบายว่าสามารถใช้ในบริบทต่างๆ ได้อย่างไร เช่น ในการพัฒนาซอฟต์แวร์หรือการจัดการกระบวนการทางธุรกิจ

ตัวอย่างเช่น Flow Chart สั่งไก่ทอด (ที่มา: ผมอยากกินไก่ทอด 🥹)

ผังงานเริ่มต้นที่จุดเริ่มต้นและตามลูกศรไปยังขั้นตอนกระบวนการแรก ซึ่งก็คือการป้อนเลือกประเภทของเมนูไก่ที่จะสั่งซื้อ (ซึ่งจะมีผลกับผลลัพธ์)

ลำดับต่อไป ผังงานจะแยกการตัดสินใจว่าจะสั่ง Side dish มั้ย หากลูกค้าตัดสินใจสั่ง กระบวนการจะดำเนินต่อไปยังขั้นตอนการเลือกเครื่องเคียง หากลูกค้าไม่ต้องการสั่งกระบวนการจะข้ามขั้นตอนนี้และไปที่ขั้นตอนการชำระเงินสำหรับคำสั่งซื้อโดยตรง

หลังจากชำระเงินตามคำสั่งซื้อแล้ว กระบวนการจะดำเนินต่อไปยังขั้นตอนกระบวนการรอการเตรียมคำสั่งซื้อ เมื่อคำสั่งพร้อม กระบวนการจะสิ้นสุดลงที่จุดสิ้นสุด เป็นอันจบ Flow Chart

Example of Flow Chart Symbols

Combined programming languages & Execute

คราวนี้ก็มาถึงความเป็น Day-to-Day หรือสิ่งที่คิดในหัวของ Developer กันหน่อย ว่าเขาคิดอะไรกันนะ เวลาจะเขียนโปรแกรมขึ้นมา 1 ตัว อันนี้คือตัวอย่างในหัวของผม ตอนที่ผมอยากจะกินไก่ทอดตอนเวลา 5 AM โดยเปลี่ยนจาก Flow Chart ของหัวข้อย่อยที่ผ่านมาเป็นโค้ด โดยต่อเติม print ให้สวยงาม และไม่ลงรายละเอียดตรง Credit Card/Cash process

def order_fried_chicken():
# Decide on type of chicken
chicken_type = input("Would you like to order chicken nuggets or a whole chicken? ")

# Order sides or not
order_sides = False
sides_choice = input("Would you like to order any sides with your chicken? ")
if sides_choice.lower() == "yes":
order_sides = True

# Choose sides (if ordering sides)
if order_sides:
sides = input("Which sides would you like to order? ")

# Process order
print("Processing order...")

# Pay for order
print("Please pay for your order.")
payment_method = input("How would you like to pay? ")
if payment_method.lower() == "credit card":
print("Please enter your credit card information.")
elif payment_method.lower() == "cash":
print("Please hand over the cash to the cashier.")
else:
print("Sorry, we do not accept that payment method.")

# Wait for order to be prepared
print("Thank you for your order. Your chicken will be ready shortly.")

order_fried_chicken()

คิดว่าพอมาถึงตรงนี้แล้ว หวังว่าทุกคนจะมีการปรับจูนวิธีคิดบางส่วนไม่มากก็น้อยสำหรับคนสาย Non-Tech background ส่วนคนที่เป็นสาย Tech อยู่แล้ว อาจจะไม่ได้รู้อะไรเพิ่มเติมมากนัก ก็ขออภัยมา ณ ที่นี้ด้วยนะครับ

คอยติดตามบทความหัวข้อต่อ ๆ ไปในซีรีย์ด้วยนะครับ ขอให้ทุกคนมีความสุข สวัสดีครับ

FB ไว้ตอบปัญหา: Thanaphoom Babparn
FB Page ไว้ตอบปัญหา & แชร์ไปเรื่อย: TP Coder
LinkedIn: Thanaphoom Babparn
Linktree: https://linktr.ee/tpbabparn

--

--

Thanaphoom Babparn

Software engineer who wanna improve himself and make an impact on the world.