Programming

ทุกวันนี้คอมพิวเตอร์อาจเป็นเครื่องมือที่ใช้งานง่ายและแพร่หลายจนแทบไม่มีใครไม่รู้จัก แต่จะเกิดอะไรขึ้น ถ้าวันหนึ่งมรดกตกทอดถึงมือคือเครื่องคอมพิวเตอร์รุ่นโบราณที่มีอายุอานามกว่าสามทศวรรษ พร้อมด้วยคำสั่งเสียจากเจ้าของเดิมให้ซ่อมแซมมันจนกลับมาทำงานถูกต้อง คุณจะสามารถแก้ปริศนาหาความลับและที่มาที่ไปของคอมพิวเตอร์ลึกลับเครื่องนี้ได้หรือไม่ พบคำตอบได้ในเกม TIS-100

รู้จักกับ TIS-100

รูปที่ 1: สถาปัตยกรรมภายในของเครื่อง TIS-100

TIS-100 นอกจากจะเป็นชื่อของเกมเกมนี้แล้ว มันยังเป็นชื่อคอมพิวเตอร์ลึกลับที่เราได้รับมาซ่อมแซมด้วย โดยชื่อเต็มๆ ของมันได้แก่ Tessellated Intellegent System ซึ่งอาจแปลออกมาสวยๆ ได้ว่า ระบบอัจฉริยะแบบปูระนาบต่อเนื่อง (tessellation คือการปูพื้นระนาบด้วยรูปทรงเดียวกันโดยไม่เว้นให้เกิดช่องว่าง) จากชื่อที่แนะว่ามีการใช้ของประเภทเดียวกันมาเรียงต่อกันจำนวนมาก คงเดาได้ไม่ยากว่าการประมวลผลของคอมพิวเตอร์เครื่องนี้ทำงานแบบขนานนั่นเอง โดยมีจำนวนหน่วยประมวลผลอยู่ที่ 12 หน่วย วางเรียงกันเป็นรูปสี่เหลี่ยมผืนผ้าด้วยอัตราส่วน 3 ต่อ 4 ดังจะเห็นได้จากรูปที่ 1

แต่ละหน่วยประมวลผลสามารถบรรจุคำสั่งภาษา Assembly เข้าไปได้ ซึ่งแม้ว่ารุ่นของภาษา Assembly สำหรับเครื่อง TIS-100 จะรองรับได้เพียงแค่คำสั่งพื้นฐานเท่านั้น (เช่น การคำนวณทางคณิตศาสตร์ที่ทำได้เพียงการบวกและลบ ไม่มีการคูณหรือหาร) แต่ด้วยการทำงานแบบขนานกันระหว่างหน่วยประมวลผลจำนวนมาก ก็ทำให้เชื่อได้ว่าหากออกแบบอัลกอริทึมดีพอ คอมพิวเตอร์เครื่องนี้ก็น่าจะมีความสามารถเพียงพอสำหรับประมวลผลข้อมูลยากๆ จำนวนมากได้อย่างรวดเร็ว

รูปที่ 2: เอกสารอ้างอิงบางหน้า

แน่นอนว่าการเขียนโปรแกรมไม่ใช่เรื่องง่าย แม้แต่โปรแกรมเมอร์ชั้นเซียนก็ยังต้องคอยเปิดคู่มืออยู่บ่อยๆ TIS-100 ก็มาพร้อมกับเอกสารอ้างอิงที่บอกคร่าวๆ ว่าคำสั่งไหนใช้งานอย่างไร เอกสารส่วนหนึ่งสามารถดูได้จากรูปที่ 2

แต่เดิมนั้นคาดว่าเครื่อง TIS-100 สามารถทำงานได้อย่างถูกต้องตามปรกติ จนกระทั่งเกิดความเสียหายขึ้นในหน่วยประมวลผลบางส่วน (สังเกตได้จากหน่วยประมวลผลสีแดงในรูปที่ 1) ทำให้เราต้องเข้าไปเขียนโปรแกรมซ่อมแซมมันให้กลับมาใช้งานได้ดังเดิม โดยแต่ละการซ่อมแซมจะมีคำอธิบายการทำงานที่คาดหวังกำกับไว้ พร้อมทั้งข้อมูลทดสอบเพื่อให้แน่ใจว่า อัลกอริทึมใหม่ที่เขียนเข้าไปนั้นจะสามารถทำงานได้อย่างถูกต้อง

ความท้าทายของข้อมูลทดสอบนั้น ไม่ได้มีเพียงแค่การประมวลผลทางตัวเลขอย่างเดียว แต่ยังขยายไปถึงการประมวลผลภาพอีกด้วย

รูป 3: ตารางคะแนนผู้นำสำหรับแบบทดสอบหนึ่งๆ

แต่ความท้ายทายที่แท้จริงคงหนีไม่พ้นตารางคะแนนในรูปที่ 3 ซึ่งมันจะแสดงขึ้นหลังจากแก้โปรแกรมพร้อมทำแบบทดสอบสำเร็จ โดยมันจะบอกถึงคุณภาพและประสิทธิภาพของอัลกอริทึมที่เพิ่งเขียนไป เทียบเป็นฮิสโตแกรมกับข้อมูลจากผู้เล่นทั่วทุกมุมโลก หรือจะแข่งกับเพื่อนบน Steam แบบเฉือนชนะกันเพียง 1 รอบการประมวลผลก็ย่อมได้

เล่นต่อหลังเกมจบ

สำหรับผู้เล่นที่หลงใหลในเสน่ห์ของภาษา Assembly และการประมวลผลแบบขนานจนไม่อยากจบเกมแม้จะเล่นเกมจนจบ TIS-100 ก็มีเครื่องมือสำหรับสร้างด่านขึ้นมาเล่นและแจกจ่ายได้ โดยใช้ภาษา Lua สำหรับเขียนสคริปต์ของด่านนั้นๆ ดังตัวอย่างในรูปที่ 4

รูปที่ 4: เพิ่มด่านได้เพียงแค่เขียนสคริปต์ภาษา Lua

ชุมชนนักเล่นเกม

เราน่าจะพูดได้ว่า ไม่มีเรื่องใดในโลกนี้ที่ไม่มี subreddit เป็นของตัวเอง สำหรับเกม TIS-100 ก็เช่นกัน โดยชุมชนดังกล่าวอยู่ที่ /r/tis-100 ซึ่งเป็นทั้งสถานที่พูดคุยแลกเปลี่ยนเทคนิคการเขียนโปรแกรม, อวดความสวยงามแปลกใหม่ของอัลกอริทึม, และหอเกียรติยศสำหรับจดบันทึกสถิติที่ดีที่สุดเอาไว้

แต่เพียงการอวดอัลกอริทึมด้วยภาพถ่ายหน้าจอ คงไม่ทำให้เพื่อนร่วมเกมตื่นตาตื่นใจได้มากเท่ากับการได้นำโค้ดโปรแกรมนั้นไปทดลองเล่นด้วยตัวเอง ในส่วนนี้ก็มี tis100pad.com ซึ่งเป็นเว็บที่แฟนๆ สร้างขึ้นมาสำหรับแลกเปลี่ยนโค้ดในเกมโดยเฉพาะเลยทีเดียว

สรุป

TIS-100 น่าจะไม่ใช่เกมที่จะทุกคนจะชื่นชอบ แม้แต่ในหมู่โปรแกรมเมอร์เองก็อาจจะขยาดกับเกมนี้ (ทำงานเขียนโค้ดมาทั้งวัน กลับบ้านคงหมดอารมณ์เขียนโค้ดต่อแล้ว?) แต่ถ้าคุณชอบเกมแก้ปริศนา หรือกำลังศึกษาภาษา Assembly หรือสนใจการประมวลผลแบบคู่ขนาน ผมว่าเกมนี้ออกแบบมาได้ดีมากๆ เลยทีเดียวครับ

ข้อดี

  • ได้เขียนภาษา Assembly ทำงานแบบขนาน
  • ท้าทายให้ปรับปรุงอัลกอริทึมอยู่เสมอ

ข้อด้อย

  • ยากมาก เล่นแล้วเหนื่อย

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

คุณจะสามารถหาแก้ปริศนาหาความลับและที่มาที่ไป

หาแก้ปริศนา ?

ซึ่งเป็นเว็บที่แฟนๆ สร้างหขึ้นมา

สร้างหขึ้น ?

สำหรับแลกเปลี่ยนโค้ดโดยในเกมเฉพาะเลยทีเดียว

โค้ดโดยในเกม ?

แต่ความท้ายทายที่แท้จริงคงหนีไม่พ้นตารางคะแนนในรูปที่ 4 ซึ่งมันจะแสดงขึ้นหลังจากแก้โปรแกรมพร้อมทำแบบทดสอบสำเร็จ

ต้องเป็นรูปที่ ๓ หรือเปล่าครับ

นึกถึงสมัยเรียนวิชา Computer Organization นั่งเขียน Assembly ส่งอาจารย์กันมือหงิก (ฮา) ถ้า อ. คนไหนจะหยิบไปเป็นเครื่องมือการเรียนการสอนก็น่าจะเข้าท่าดีนะครับ

มาเพิ่มข้อมูลให้นะครับจากคนที่ซื้อมาเล่นนานแล้ว
ผู้พัฒนาคือ Zachtronics มีชื่อเสียงมากเกม puzzle ที่หา best method เกมดังๆเช่น Infinifactory กับ Spacechem (ลองดู gameplay ก็ได้ครับ)ตอนนี้มีอีกเกม Gunpoint แต่ไม่เหมือนกับที่ว่ามา

สามเกมที่ว่ามา (ไม่รวม Gunpoint) เขียนคำสั่งให้ได้ product ตามที่โจทย์ต้องการ เกม TIS โชว์ความเป็น Text-based ซึ่งโดนใจชาว Programmer ต่างจากเกมอื่นๆที่ออกแนว GUI

จุดเด่นของเกมนี้หลักๆ นอกจากเป็น text-based คือ

  1. learning curve ค่อนข้างชัน มีไฟล์ pdf มาอันเดียวให้ลองอ่าน ลองมือดู นี่แหละครับ มันสนุกตรงนี้
  2. Process ที่แต่ละช่องทำได้เป็นคำสั่งง่ายๆ เช่น บวกลบ >0,=0 ไม่มี x>y
    แต่โจทย์ต้องการเช่น มี input4 อันค่า 0,1 ให้เขียน 0,1,2,3,4 ตามจำนวน 1 ของ input4 อันนั้นๆ
  3. โจทย์ยิ่ง complex ก็ยิ่งมีวิธีแก้ปัญหาเยอะ จำนวนคำสั่ง จำนวนครั้งก็ต่างกัน สำหรับค่ายนี้ไม่ผิดหวัง ซับซ้อนสุดๆ55+

นึกถึงสมัยเตรียมสอบ CCNA นั่งเล่น Cisco Mind Share
ไม่สนุก แต่ประเทืองปัญญา

แต่ถามว่าให้เล่นอีกเอาไหม.. ไม่เอา ผมเล่นเกมส์เพราะอยากได้ความสนุก ปัญญาไว้ทีหลัง