คำจำกัดความของ "รัฐ"


15

เป็นวิธีที่ดีในการกำหนด "รัฐ" เช่นเดียวกับในรัฐตัวแปรหรือเครื่องรัฐเป็นโปรแกรมเมอร์ใหม่ (ไม่ใช่ก่อนหน้านี้) คืออะไร? อะไรคือวิธีที่ดีในการอธิบายว่าทำไมแนวคิดนี้มีประโยชน์สำหรับการเขียนซอฟต์แวร์? แนวคิดของรัฐสอนอย่างชัดเจนในการเริ่มต้นหลักสูตรการเขียนโปรแกรมหรือหนังสือทั่วไปหรือไม่?

คำตอบ:


5

จำเป็นต้องใช้ "สถานะ" เมื่อคุณต้องจำบางสิ่ง ฟังก์ชั่น (ไม่ใช่ "วิธีการ" หรืออะไรก็ตาม) นึกคิดขึ้นอยู่กับอินพุตของพวกเขาเท่านั้น หากคุณถามคำถามที่คำตอบสามารถเปลี่ยนแปลงได้ตลอดเวลาแม้ว่าอินพุตจะเหมือนกันคุณต้องมีสิ่งที่ต้องจดจำความแตกต่างในคำตอบถูกต้องหรือไม่ มิฉะนั้นคุณไม่สามารถให้คำตอบที่แตกต่างกันเพราะไม่มีปัจจัยอื่นเปลี่ยนแปลง (สมมติว่าคำตอบนั้นไม่ได้ขึ้นอยู่กับเวลาโดยตรง)

"สิ่ง / ข้อมูล" ที่คุณต้องจำไว้นั้นเรียกว่า "สถานะ"

(ไม่จำเป็นต้องเปลี่ยน "สถานะ" นี้เมื่อเวลาผ่านไปโดยทั่วไปเป็นเพียงวิธีที่จะพูดว่า "จดจำ / รู้บางสิ่งบางอย่าง")


1
ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุดหากมีการใช้ถ้อยคำใหม่เพื่อให้ผู้ที่ไม่ใช่โปรแกรมเมอร์เข้าใจได้ พูดว่า: กิจกรรมทั้งหมดจัดการกับสิ่งต่าง ๆ และ / หรือข้อมูล สิ่งนี้เกิดขึ้นในสามวิธี: 1) กิจกรรมใด ๆ ที่อาจทำหรือใช้หรืออ่านบางอย่าง: อินพุต ; 2) มันอาจผลิตหรือเขียนบางอย่าง: เอาท์พุทของมัน; 3) ในขณะที่ความคืบหน้าในมันอาจถือ , ให้ , จดจำ , ร้านค้าบางสิ่งบางอย่างของรัฐ. สำหรับโปรแกรมคอมพิวเตอร์ส่วนใหญ่อินพุตข้อมูลเอาต์พุตและสถานะทั้งหมดประกอบด้วยข้อมูลในขณะที่สำหรับกิจกรรมประเภทอื่น ๆ (พูด, การทำอาหาร) วัตถุทางกายภาพมักจะเกี่ยวข้องเช่นกัน
reinierpost

8

จากวิกิพีเดีย :

รัฐโดยทั่วไปหมายถึงสภาพปัจจุบันของระบบหรือหน่วยงาน ...

นั่นคือความหมายในบริบทการคำนวณ: ข้อมูลที่กำหนดสภาพของวัตถุหรือระบบ

ความหมายของ 'สถานะ' ไม่เฉพาะเจาะจงกับการเขียนโปรแกรม มีตัวอย่างของ 'รัฐ' ทุกที่ที่คุณมอง โทรทัศน์ปิดอยู่ กาแฟร้อน รองเท้าผ้าใบเป็น) สีน้ำเงิน; b) ส่งกลิ่น; c) ไม่เก็บ; d) ค่อนข้างทรุดโทรม 'state' ในแง่ของการเขียนโปรแกรมก็เหมือนกับ 'state' ในแง่ที่ไม่ใช่การเขียนโปรแกรมยกเว้นว่าเราจะใช้มันกับวัตถุที่เราจัดการด้วย: ตัวแปรวัตถุเธรดฐานข้อมูลระบบไฟล์ ฯลฯ หากคุณมี เพื่ออธิบายอธิบายในแง่ที่คุ้นเคย - ไม่จำเป็นต้องทำให้เป็นแนวคิดต่างประเทศที่เป็นเทคนิค

นาฬิกาเป็นตัวอย่างที่ดีของระบบง่าย ๆ ที่มีบางสถานะ: นาฬิกาสามารถทำงานหรือไม่ทำงานและมันบ่งบอกถึงเวลาที่อาจหรืออาจไม่ตรงกับเวลาจริงของวัน มันค่อนข้างง่ายที่จะเห็นว่าสิ่งเหล่านั้นเป็นเหมือนตัวแปรอย่างไรและการเปลี่ยนแปลงสถานะของนาฬิกาอาจส่งผลกระทบต่อสิ่งอื่นได้อย่างไร

เปรียบเทียบกับสิ่งไร้สัญชาติเช่นข้อความ: "ประตูเป็นสีแดง" คำสั่งตัวเองไม่ได้มีสถานะ อาจเป็นจริงหรือไม่ก็ได้ที่ประตูเป็นสีแดง แต่ข้อความนั้นไม่มีสถานะใด ๆ การทาสีประตูสามารถเปลี่ยนความจริงของข้อความ แต่ข้อความนั้นไม่เปลี่ยนแปลง ในทำนองเดียวกันตัวเลขเช่น 42 ไม่มีสถานะใด ๆ : 42 คือ 42 และไม่มีอะไรที่คุณสามารถเปลี่ยนแปลงได้

ตัวแปรมีสถานะค่าไม่


1
@ hotpaw2 ความหมายของ 'สถานะ' ไม่เฉพาะเจาะจงกับการเขียนโปรแกรม มีตัวอย่างของ 'รัฐ' เป็นตัวอักษรทุกท่านดู โทรทัศน์ปิดอยู่ กาแฟร้อน รองเท้าผ้าใบเป็น) สีน้ำเงิน; b) ส่งกลิ่น; c) ไม่เก็บ; d) ค่อนข้างทรุดโทรม 'state' ในแง่ของการเขียนโปรแกรมก็เหมือนกับ 'state' ในแง่ที่ไม่ใช่การเขียนโปรแกรมยกเว้นว่าเราจะใช้กับวัตถุที่เราจัดการด้วย: ตัวแปรวัตถุเธรดฐานข้อมูลระบบไฟล์ ฯลฯ
Caleb

1
ดังนั้นคุณจะอธิบายให้นักเรียนโปรแกรมโดยใช้ตัวอย่างที่เป็นรูปธรรม? ดูเหมือนความคิดที่ดี มันจะถ่ายโอนอย่างมีประสิทธิภาพให้กับพวกเขาเข้าใจสถานะในโปรแกรมของพวกเขา?
hotpaw2

2
@ hotpaw2 ย้ายความคิดเห็นของฉันไปที่คำตอบและขยายออกไปเล็กน้อย สำหรับความเข้าใจฉันคิดว่ามันเป็นการดีที่สุดที่จะไม่ให้ความสำคัญกับ 'สถานะ' มากเกินไปในบทคัดย่อด้วยมือใหม่ คนส่วนใหญ่ต้องการตัวอย่างที่เป็นรูปธรรมของบางสิ่งบางอย่างก่อนที่พวกเขาจะรู้จักรูปแบบทั่วไปที่กว้างขึ้น
Caleb

1
ไม่ชัดเจนว่าทำไม "กาแฟร้อน" เป็นของรัฐ แต่ "ประตูเป็นสีแดง" ไร้สัญชาติ? ในทางตรงกันข้ามนั่นหมายความว่า "กาแฟดำ" ไร้สัญชาติและ "ประตูนั้นร้อน" เป็นของรัฐหรือไม่
Adam Hughes

1
@ AdamHughes ดูที่ที่ฉันใช้เครื่องหมายคำพูด - โดยเฉพาะฉันไม่ได้ใช้พวกเขาในการพูดคุยเกี่ยวกับกาแฟเพราะฉันอ้างถึงกาแฟจริงไม่ใช่คำสั่งเกี่ยวกับกาแฟ จุดคือการอธิบายความแตกต่างระหว่างตัวแปรและค่า ประตูที่แท้จริงในบ้านของฉันมีสถานะ: มันอาจจะเปิดหรือปิดสีแดงหรือสีน้ำเงินหรือสีเขียวร้อนหรือเย็น ฯลฯคำสั่งเกี่ยวกับประตูสามารถระบุสถานะที่ แต่คำสั่งตัวเองเป็นสิ่งที่ไม่สามารถเปลี่ยนแปลงได้
Caleb

1

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

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


1

คุณสามารถใช้การเปรียบเทียบของสัญญาณไฟจราจรซึ่งอาจเป็นหนึ่งในสามสถานะ: [สีเขียว], [สีเหลือง] หรือ [สีแดง] จะต้องอยู่ในสถานะเดียวเท่านั้นในแต่ละครั้ง สัญญาณไฟจราจรเป็นเครื่องบอกสถานะที่เกิดขึ้นจริง โดยปกติจะเปลี่ยนสถานะจาก [GREEN เป็น YELLOW] จากนั้น [YELLOW เป็น RED] จากนั้น [RED เป็น GREEN]

ป้อนคำอธิบายรูปภาพที่นี่

การเปลี่ยนสถานะทางเลือก (ซึ่งมีผลบังคับใช้ในบางประเทศเช่นสหราชอาณาจักรมีการเปลี่ยน [RED เป็น YELLOW สองครั้งจากนั้น YELLOW to GREEN] แทนการเปลี่ยน [RED เป็น GREEN]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.