ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

이 글은 λ²ˆμ—­λ³Έμž…λ‹ˆλ‹€ μŠ€νƒ ν¬λ“œ μ„Έλ―Έλ‚˜. κ·ΈλŸ¬λ‚˜ κ·Έλ…€μ˜ μž‘μ€ μ†Œκ°œ 전에. μ’€λΉ„λŠ” μ–΄λ–»κ²Œ ν˜•μ„±λ©λ‹ˆκΉŒ? λˆ„κ΅¬λ‚˜ μΉœκ΅¬λ‚˜ λ™λ£Œλ₯Ό μžμ‹ μ˜ μˆ˜μ€€μœΌλ‘œ λŒμ–΄μ˜¬λ¦¬κ³  싢은데 잘 λ˜μ§€ μ•ŠλŠ” 상황에 μ²˜ν•œλ‹€. 그리고 "μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€"λŠ” 것은 λ‹Ήμ‹ κ³Ό ν•¨κ»˜ν•˜λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. μ €μšΈμ˜ ν•œμͺ½μ—λŠ” 정상적인 κΈ‰μ—¬, μž‘μ—… 등이 있고 λ‹€λ₯Έμͺ½μ—λŠ” 생각할 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. μƒκ°ν•˜λŠ” 것은 λΆˆμΎŒν•˜κ³  κ³ ν†΅μŠ€λŸ½μŠ΅λ‹ˆλ‹€. κ·ΈλŠ” 재빨리 ν¬κΈ°ν•˜κ³  λ‡Œλ₯Ό μ „ν˜€ μΌœμ§€ μ•Šμ€ 채 μ½”λ“œ μž‘μ„±μ„ κ³„μ†ν•©λ‹ˆλ‹€. ν•™μŠ΅λœ 무λ ₯감의 μž₯벽을 κ·Ήλ³΅ν•˜λŠ” 데 μ–Όλ§ˆλ‚˜ λ§Žμ€ λ…Έλ ₯이 ν•„μš”ν•œμ§€ μƒμƒν•˜κ³ λŠ” ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 μ’€λΉ„κ°€ ν˜•μ„±λ˜λŠ” λ°©μ‹μœΌλ‘œ μΉ˜λ£Œν•  μˆ˜μžˆλŠ” 것 κ°™μ§€λ§Œ μ•„λ¬΄λ„ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 그것을 λ³΄μ•˜μ„ λ•Œ 레슬리 램포트 (예, κ΅κ³Όμ„œμ˜ 같은 동지) λŸ¬μ‹œμ•„μ— μ˜¨λ‹€ λ³΄κ³ μ„œλ₯Ό μž‘μ„±ν•˜μ§€ μ•Šκ³  질의 응닡 μ‹œκ°„μ— 쑰금 μ‘°μ‹¬ν–ˆμŠ΅λ‹ˆλ‹€. λ§ŒμΌμ„ λŒ€λΉ„ν•˜μ—¬ LeslieλŠ” μ„Έκ³„μ μœΌλ‘œ 유λͺ…ν•œ κ³Όν•™μžμ΄μž λΆ„μ‚° μ»΄ν“¨νŒ…μ˜ κΈ°λ³Έ μž‘μ—…μ˜ μ €μžμ΄λ©° LaTeX- "Lamport TeX"λΌλŠ” λ‹¨μ–΄μ˜ La λ¬Έμžλ‘œλ„ κ·Έλ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. 두 번째 λ†€λΌμš΄ μš”μ†ŒλŠ” 그의 μš”κ΅¬ μ‚¬ν•­μž…λ‹ˆλ‹€. μ˜€λŠ” λͺ¨λ“  μ‚¬λžŒμ€ (μ ˆλŒ€ 무료둜) 사전에 그의 λ³΄κ³ μ„œ λͺ‡ 가지λ₯Ό λ“£κ³  적어도 ν•˜λ‚˜μ˜ μ§ˆλ¬Έμ„ ν•œ λ‹€μŒμ—λ§Œ μ™€μ•Όν•©λ‹ˆλ‹€. λ‚˜λŠ” Lamportκ°€ κ·Έκ³³μ—μ„œ 무엇을 λ°©μ†‘ν•˜κ³  μžˆλŠ”μ§€ 보기둜 κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ κ·Έ 것, μ’€λΉ„λ₯Ό μΉ˜λ£Œν•˜λŠ” λ§ˆλ²•μ˜ μ—°κ²° μ•Œμ•½μž…λ‹ˆλ‹€. λ‚˜λŠ” λ‹Ήμ‹ μ—κ²Œ κ²½κ³ ν•©λ‹ˆλ‹€ : ν…μŠ€νŠΈμ—μ„œ 맀우 μœ μ—°ν•œ 방법둠을 μ’‹μ•„ν•˜κ³  μž‘μ„±λœ 것을 ν…ŒμŠ€νŠΈν•˜λŠ” 것을 μ’‹μ•„ν•˜μ§€ μ•ŠλŠ” μ‚¬λžŒλ“€μ€ λˆˆμ— λ„κ²Œ μ†Œμ§„ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

habrokat 이후 μ‹€μ œλ‘œ μ„Έλ―Έλ‚˜ λ²ˆμ—­μ΄ μ‹œμž‘λ©λ‹ˆλ‹€. λ…μ„œλ₯Ό μ¦κΈ°μ‹­μ‹œμ˜€!

μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ“  항상 λ‹€μŒ μ„Έ 단계λ₯Ό 거쳐야 ν•©λ‹ˆλ‹€.

  • λ‹¬μ„±ν•˜λ €λŠ” λͺ©ν‘œλ₯Ό κ²°μ •ν•˜μ‹­μ‹œμ˜€.
  • λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜λŠ” 방법을 κ²°μ •ν•©λ‹ˆλ‹€.
  • λ‹Ήμ‹ μ˜ λͺ©ν‘œμ— μ˜€μ‹­μ‹œμ˜€.

이것은 ν”„λ‘œκ·Έλž˜λ°μ—λ„ μ μš©λ©λ‹ˆλ‹€. μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ λ‹€μŒμ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • ν”„λ‘œκ·Έλž¨μ΄ 무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€ κ²°μ •ν•©λ‹ˆλ‹€.
  • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법을 κ²°μ •ν•©λ‹ˆλ‹€.
  • ν•΄λ‹Ή μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ‹­μ‹œμ˜€.

λ¬Όλ‘  λ§ˆμ§€λ§‰ λ‹¨κ³„λŠ” 맀우 μ€‘μš”ν•˜μ§€λ§Œ μ˜€λŠ˜μ€ 그것에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆλ‹€. λŒ€μ‹  처음 두 가지에 λŒ€ν•΄ μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€. λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” μž‘μ—…μ„ μ‹œμž‘ν•˜κΈ° 전에 μˆ˜ν–‰ν•©λ‹ˆλ‹€. λΈŒλΌμš°μ €λ₯Ό μž‘μ„±ν• μ§€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μž‘μ„±ν• μ§€ κ²°μ •ν•˜μ§€ μ•ŠλŠ” ν•œ 글을 μ“°κΈ° μœ„ν•΄ 앉지 μ•ŠμŠ΅λ‹ˆλ‹€. λͺ©ν‘œμ— λŒ€ν•œ νŠΉμ • 아이디어가 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. 그리고 ν”„λ‘œκ·Έλž¨μ΄ μ •ν™•νžˆ 무엇을 ν•  것인지 ν™•μ‹€νžˆ μƒκ°ν•˜κ³  μ½”λ“œκ°€ μ–΄λ–»κ²Œ λ“  λΈŒλΌμš°μ €λ‘œ λ°”λ€” κ²ƒμ΄λΌλŠ” 희망으둜 μ–΄λ–»κ²Œ λ“  μž‘μ„±ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.

이 μ½”λ“œ 사전 μ‚¬κ³ λŠ” μ •ν™•νžˆ μ–΄λ–»κ²Œ λ°œμƒν•©λ‹ˆκΉŒ? 여기에 μ–Όλ§ˆλ‚˜ λ§Žμ€ λ…Έλ ₯을 κΈ°μšΈμ—¬μ•Ό ν• κΉŒμš”? 그것은 λͺ¨λ‘ μš°λ¦¬κ°€ ν•΄κ²°ν•˜κ³  μžˆλŠ” λ¬Έμ œκ°€ μ–Όλ§ˆλ‚˜ λ³΅μž‘ν•œκ°€μ— 달렀 μžˆμŠ΅λ‹ˆλ‹€. 내결함성 λΆ„μ‚° μ‹œμŠ€ν…œμ„ μž‘μ„±ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. 이 경우 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° 전에 μ‹ μ€‘ν•˜κ²Œ 생각해야 ν•©λ‹ˆλ‹€. μ •μˆ˜ λ³€μˆ˜λ₯Ό 1μ”© μ¦κ°€μ‹œν‚€λ©΄ μ–΄λ–»κ²Œ λ©λ‹ˆκΉŒ? μ–Έλœ» 보기에 μ—¬κΈ°μ—μ„œλŠ” λͺ¨λ“  것이 μ‚¬μ†Œν•˜κ³  생각할 ν•„μš”κ°€ μ—†μ§€λ§Œ μ˜€λ²„ν”Œλ‘œκ°€ λ°œμƒν•  수 μžˆμŒμ„ κΈ°μ–΅ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ¬Έμ œκ°€ λ‹¨μˆœν•œμ§€ λ³΅μž‘ν•œμ§€ μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλΌλ„ λ¨Όμ € 생각할 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•œ κ°€λŠ₯ν•œ 해결책을 미리 μƒκ°ν•˜λ©΄ μ‹€μˆ˜λ₯Ό ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λ ‡κ²Œ ν•˜λ €λ©΄ 생각이 λͺ…ν™•ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό λ‹¬μ„±ν•˜λ €λ©΄ 생각을 적어야 ν•©λ‹ˆλ‹€. λ‚˜λŠ” Dick Guindon의 μΈμš©λ¬Έμ„ 정말 μ’‹μ•„ν•©λ‹ˆλ‹€. "글을 μ“Έ λ•Œ μžμ—°μ€ λ‹Ήμ‹ μ˜ 생각이 μ–Όλ§ˆλ‚˜ μ—‰μ„±ν•œμ§€ λ³΄μ—¬μ€λ‹ˆλ‹€." 글을 쓰지 μ•ŠμœΌλ©΄ μƒκ°ν•˜κ³  μžˆλ‹€κ³  생각할 λΏμž…λ‹ˆλ‹€. 그리고 λ‹Ήμ‹ μ˜ 생각을 λͺ…μ„Έμ˜ ν˜•νƒœλ‘œ 적어야 ν•©λ‹ˆλ‹€.

사양은 특히 λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ λ§Žμ€ κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” κ·Έ 쀑 ν•œ 가지에 λŒ€ν•΄μ„œλ§Œ 이야기할 κ²ƒμž…λ‹ˆλ‹€. 그것듀은 μš°λ¦¬κ°€ λͺ…ν™•ν•˜κ²Œ μƒκ°ν•˜λ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. λͺ…ν™•ν•˜κ²Œ μƒκ°ν•˜λŠ” 것은 맀우 μ€‘μš”ν•˜κ³  맀우 μ–΄λ ΅κΈ° λ•Œλ¬Έμ— μ—¬κΈ°μ—μ„œ 도움이 ν•„μš”ν•©λ‹ˆλ‹€. μ–΄λ–€ μ–Έμ–΄λ‘œ 사양을 μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆκΉŒ? 일반적으둜 이것은 ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ 항상 첫 번째 μ§ˆλ¬Έμž…λ‹ˆλ‹€. μ–΄λ–€ μ–Έμ–΄λ‘œ μž‘μ„±ν•  κ²ƒμΈμ§€μž…λ‹ˆλ‹€. 이에 λŒ€ν•œ 정닡은 μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ ν•΄κ²°ν•˜κ³  μžˆλŠ” λ¬Έμ œλŠ” λ„ˆλ¬΄ λ‹€μ–‘ν•©λ‹ˆλ‹€. λˆ„κ΅°κ°€μ—κ²Œ TLA+λŠ” λ‚΄κ°€ κ°œλ°œν•œ 사양 μ–Έμ–΄μž…λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²ŒλŠ” 쀑ꡭ어λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 νŽΈλ¦¬ν•©λ‹ˆλ‹€. λͺ¨λ“  것은 상황에 달렀 μžˆμŠ΅λ‹ˆλ‹€.

더 μ€‘μš”ν•œ 것은 또 λ‹€λ₯Έ μ§ˆλ¬Έμž…λ‹ˆλ‹€. 더 λͺ…ν™•ν•œ 사고λ₯Ό λ‹¬μ„±ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? λŒ€λ‹΅: μš°λ¦¬λŠ” κ³Όν•™μžμ²˜λŸΌ 생각해야 ν•©λ‹ˆλ‹€. 이것은 μ§€λ‚œ 500λ…„ λ™μ•ˆ μž…μ¦λœ 사고 λ°©μ‹μž…λ‹ˆλ‹€. κ³Όν•™μ—μ„œ μš°λ¦¬λŠ” ν˜„μ‹€μ˜ μˆ˜ν•™μ  λͺ¨λΈμ„ κ΅¬μΆ•ν•©λ‹ˆλ‹€. μ²œλ¬Έν•™μ€ μ•„λ§ˆλ„ μ—„λ°€ν•œ μ˜λ―Έμ—μ„œ 졜초의 κ³Όν•™μ΄μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. μ²œλ¬Έν•™μ—μ„œ μ‚¬μš©λ˜λŠ” μˆ˜ν•™μ  λͺ¨λΈμ—μ„œ μ²œμ²΄λŠ” μ§ˆλŸ‰, μœ„μΉ˜ 및 μš΄λ™λŸ‰μ„ 가진 점으둜 λ‚˜νƒ€λ‚˜μ§€λ§Œ μ‹€μ œλ‘œλŠ” μ‚°κ³Ό λ°”λ‹€, μ‘°μˆ˜μ™€ 쑰수λ₯Ό 가진 맀우 λ³΅μž‘ν•œ λ¬Όμ²΄μž…λ‹ˆλ‹€. 이 λͺ¨λΈμ€ λ‹€λ₯Έ 것과 λ§ˆμ°¬κ°€μ§€λ‘œ νŠΉμ • 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. 행성을 μ°Ύμ•„μ•Ό ν•˜λŠ” 경우 망원경이 κ°€λ¦¬ν‚€λŠ” μœ„μΉ˜λ₯Ό κ²°μ •ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이 ν–‰μ„±μ˜ 날씨λ₯Ό μ˜ˆμΈ‘ν•˜κ³  μ‹Άλ‹€λ©΄ 이 λͺ¨λΈμ€ μž‘λ™ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

μˆ˜ν•™μ„ 톡해 λͺ¨λΈμ˜ 속성을 κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 과학은 μ΄λŸ¬ν•œ 속성이 ν˜„μ‹€κ³Ό μ–΄λ–»κ²Œ κ΄€λ ¨λ˜λŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€. 우리의 κ³Όν•™, 컴퓨터 과학에 λŒ€ν•΄ 이야기해 λ΄…μ‹œλ‹€. μš°λ¦¬κ°€ μž‘μ—…ν•˜λŠ” ν˜„μ‹€μ€ ν”„λ‘œμ„Έμ„œ, κ²Œμž„ μ½˜μ†”, 컴퓨터, ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ λ“± λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ μ»΄ν“¨νŒ… μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. μ»΄ν“¨ν„°μ—μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” 것에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ² μ§€λ§Œ λŒ€μ²΄λ‘œ μ΄λŸ¬ν•œ λͺ¨λ“  결둠은 λͺ¨λ“  μ»΄ν“¨νŒ… μ‹œμŠ€ν…œμ— μ μš©λ©λ‹ˆλ‹€. 우리 κ³Όν•™μ—μ„œλŠ” 튜링 기계, λΆ€λΆ„μ μœΌλ‘œ μ •λ ¬λœ 이벀트 μ„ΈνŠΈ λ“± λ‹€μ–‘ν•œ λͺ¨λΈμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž¨μ΄λž€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? 이것은 λ…λ¦½μ μœΌλ‘œ κ°„μ£Όν•  수 μžˆλŠ” λͺ¨λ“  μ½”λ“œμž…λ‹ˆλ‹€. λΈŒλΌμš°μ €λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” μ„Έ 가지 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μ‚¬μš©μž 관점을 λ””μžμΈν•œ λ‹€μŒ ν”„λ‘œκ·Έλž¨μ˜ μƒμœ„ μˆ˜μ€€ λ‹€μ΄μ–΄κ·Έλž¨μ„ μž‘μ„±ν•˜κ³  λ§ˆμ§€λ§‰μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ ν…μŠ€νŠΈ 포맷터λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ‹€μ‹œ μ„Έ 가지 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 도ꡬ가 λ°˜ν™˜ν•  ν…μŠ€νŠΈλ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. 포맷 μ•Œκ³ λ¦¬μ¦˜μ„ μ„ νƒν•˜μ‹­μ‹œμ˜€. μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ—λŠ” 자체 ν•˜μœ„ μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€. 단어에 ν•˜μ΄ν”ˆμ„ μ˜¬λ°”λ₯΄κ²Œ μ‚½μž…ν•˜μ‹­μ‹œμ˜€. λ˜ν•œ 이 ν•˜μœ„ μž‘μ—…μ„ μ„Έ λ‹¨κ³„λ‘œ ν•΄κ²°ν•©λ‹ˆλ‹€. λ³΄μ‹œλ‹€μ‹œν”Ό μ—¬λŸ¬ λ‹¨κ³„μ—μ„œ λ°˜λ³΅λ©λ‹ˆλ‹€.

첫 번째 단계인 ν”„λ‘œκ·Έλž¨μ΄ ν•΄κ²°ν•˜λŠ” 문제λ₯Ό 더 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ μš°λ¦¬λŠ” ν”„λ‘œκ·Έλž¨μ„ 일뢀 μž…λ ₯을 λ°›κ³  일뢀 좜λ ₯을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜λ‘œ κ°€μž₯ 자주 λͺ¨λΈλ§ν•©λ‹ˆλ‹€. μˆ˜ν•™μ—μ„œ ν•¨μˆ˜λŠ” 일반적으둜 쌍의 μˆœμ„œ μ§‘ν•©μœΌλ‘œ μ„€λͺ…λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μžμ—°μˆ˜μ— λŒ€ν•œ 제곱 ν•¨μˆ˜λŠ” {<0,0>, <1,1>, <2,4>, <3,9>, …} μ§‘ν•©μœΌλ‘œ μ„€λͺ…λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν•¨μˆ˜μ˜ 도메인은 각 쌍의 첫 번째 μš”μ†Œ 집합, 즉 μžμ—°μˆ˜μž…λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ €λ©΄ λ²”μœ„μ™€ 곡식을 지정해야 ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μˆ˜ν•™μ˜ ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ν•¨μˆ˜μ™€ 같지 μ•ŠμŠ΅λ‹ˆλ‹€. μˆ˜ν•™μ΄ 훨씬 μ‰½μŠ΅λ‹ˆλ‹€. λ³΅μž‘ν•œ 예제λ₯Ό ν•  μ‹œκ°„μ΄ μ—†κΈ° λ•Œλ¬Έμ— κ°„λ‹¨ν•œ 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. C의 ν•¨μˆ˜ λ˜λŠ” 두 μ •μˆ˜μ˜ μ΅œλŒ€ κ³΅μ•½μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” Java의 정적 λ©”μ„œλ“œμž…λ‹ˆλ‹€. 이 λ°©λ²•μ˜ μ‚¬μ–‘μ—μ„œ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•©λ‹ˆλ‹€. GCD(M,N) 인수 M ΠΈ Nμ–΄λ””μ—μ„œ GCD(M,N) - 도메인이 μ •μˆ˜ 쌍의 집합이고 λ°˜ν™˜ 값이 λ‹€μŒμœΌλ‘œ λ‚˜λˆŒ 수 μžˆλŠ” κ°€μž₯ 큰 μ •μˆ˜μΈ ν•¨μˆ˜ M ΠΈ N. 이 λͺ¨λΈμ€ ν˜„μ‹€κ³Ό μ–΄λ–€ 관련이 μžˆμŠ΅λ‹ˆκΉŒ? λͺ¨λΈμ€ μ •μˆ˜μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ C λ˜λŠ” Javaμ—μ„œλŠ” 32λΉ„νŠΈ int. 이 λͺ¨λΈμ„ μ‚¬μš©ν•˜λ©΄ μ•Œκ³ λ¦¬μ¦˜μ΄ μ˜¬λ°”λ₯Έμ§€ κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. GCD, κ·ΈλŸ¬λ‚˜ μ˜€λ²„ν”Œλ‘œ 였λ₯˜λ₯Ό λ°©μ§€ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œλŠ” μ‹œκ°„μ΄ μ—†λŠ” 보닀 λ³΅μž‘ν•œ λͺ¨λΈμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λͺ¨λΈλ‘œμ„œμ˜ ν•¨μˆ˜μ˜ ν•œκ³„μ— λŒ€ν•΄ 이야기해 λ΄…μ‹œλ‹€. 일뢀 ν”„λ‘œκ·Έλž¨(예: 운영 체제)은 νŠΉμ • μΈμˆ˜μ— λŒ€ν•΄ νŠΉμ • 값을 λ°˜ν™˜ν•  뿐 μ•„λ‹ˆλΌ 계속 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ λͺ¨λΈλ‘œμ„œμ˜ κΈ°λŠ₯은 문제 ν•΄κ²° 방법을 κ³„νšν•˜λŠ” 두 번째 단계에 μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 퀡 μ •λ ¬κ³Ό 버블 정렬은 같은 ν•¨μˆ˜λ₯Ό κ³„μ‚°ν•˜μ§€λ§Œ μ™„μ „νžˆ λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. λ”°λΌμ„œ ν”„λ‘œκ·Έλž¨μ˜ λͺ©ν‘œκ°€ μ–΄λ–»κ²Œ λ‹¬μ„±λ˜λŠ”μ§€ μ„€λͺ…ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ λͺ¨λΈμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 이λ₯Ό ν‘œμ€€ 행동 λͺ¨λΈμ΄λΌκ³  ν•˜κ² μŠ΅λ‹ˆλ‹€. κ·Έ μ•ˆμ˜ ν”„λ‘œκ·Έλž¨μ€ ν—ˆμš© κ°€λŠ₯ν•œ λͺ¨λ“  ν–‰λ™μ˜ μ§‘ν•©μœΌλ‘œ ν‘œν˜„λ˜λ©°, 각각은 일련의 μƒνƒœμ΄λ©° μƒνƒœλŠ” λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

Euclid μ•Œκ³ λ¦¬μ¦˜μ˜ 두 번째 단계가 μ–΄λ–»κ²Œ μƒκ²ΌλŠ”μ§€ λ΄…μ‹œλ‹€. μš°λ¦¬λŠ” κ³„μ‚°ν•΄μ•Όν•©λ‹ˆλ‹€ GCD(M, N). μ΄ˆκΈ°ν™”ν•œλ‹€ M ΠΊΠ°ΠΊ xκ³Ό N ΠΊΠ°ΠΊ y그런 λ‹€μŒ 두 λ³€μˆ˜κ°€ κ°™μ•„μ§ˆ λ•ŒκΉŒμ§€ 더 큰 λ³€μˆ˜μ—μ„œ 더 μž‘μ€ λ³€μˆ˜λ₯Ό λ°˜λ³΅ν•΄μ„œ λΊλ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, M = 12κ³Ό N = 18, λ‹€μŒ λ™μž‘μ„ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

[x = 12, y = 18] β†’ [x = 12, y = 6] β†’ [x = 6, y = 6]

그리고 λ§Œμ•½ M = 0 ΠΈ N = 0? XNUMX은 λͺ¨λ“  숫자둜 λ‚˜λˆŒ 수 μžˆμœΌλ―€λ‘œ 이 κ²½μš°μ—λŠ” μ΅œλŒ€ μ•½μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이 μƒν™©μ—μ„œ μš°λ¦¬λŠ” 첫 번째 λ‹¨κ³„λ‘œ λŒμ•„κ°€μ„œ λ‹€μŒκ³Ό 같이 μ§ˆλ¬Έν•΄μ•Ό ν•©λ‹ˆλ‹€. μ–‘μˆ˜κ°€ μ•„λ‹Œ μˆ«μžμ— λŒ€ν•΄ GCDλ₯Ό 계산해야 ν•©λ‹ˆκΉŒ? 이것이 ν•„μš”ν•˜μ§€ μ•Šμ€ 경우 사양을 λ³€κ²½ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μš°λ¦¬λŠ” 생산성에 λŒ€ν•΄ μ•½κ°„μ˜ 여담을 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€. ν•˜λ£¨μ— μž‘μ„±λ˜λŠ” μ½”λ“œ 쀄 수둜 μΈ‘μ •λ˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ²„κ·Έμ˜ 여지가 적기 λ•Œλ¬Έμ— νŠΉμ • 수의 쀄을 μ œκ±°ν•˜λ©΄ μž‘μ—…μ΄ 훨씬 더 μœ μš©ν•©λ‹ˆλ‹€. μ½”λ“œλ₯Ό μ œκ±°ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 첫 번째 λ‹¨κ³„μž…λ‹ˆλ‹€. κ΅¬ν˜„ν•˜λ €λŠ” λͺ¨λ“  μ’…μ†Œλ¦¬μ™€ 휘파람이 ν•„μš”ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ„ λ‹¨μˆœν™”ν•˜κ³  μ‹œκ°„μ„ μ ˆμ•½ν•˜λŠ” κ°€μž₯ λΉ λ₯Έ 방법은 ν•˜μ§€ 말아야 ν•  일을 ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. 두 번째 λ‹¨κ³„λŠ” 두 번째둜 μ‹œκ°„μ„ κ°€μž₯ 많이 μ ˆμ•½ν•  수 μžˆλŠ” 잠재λ ₯μž…λ‹ˆλ‹€. μž‘μ„±λœ μ€„μ˜ κ΄€μ μ—μ„œ 생산성을 μΈ‘μ •ν•˜λ©΄ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법에 λŒ€ν•΄ μƒκ°ν•˜λ©΄ 덜 생산적, 더 적은 μ½”λ“œλ‘œ λ™μΌν•œ 문제λ₯Ό ν•΄κ²°ν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. μŠ€νŽ™, 즉 첫 번째 단계와 두 번째 단계에 μ‹œκ°„μ„ ν• μ• ν•˜μ—¬ μž‘μ„±ν•˜μ§€ μ•Šμ€ 쀄 수λ₯Ό μ…€ 방법이 μ—†κΈ° λ•Œλ¬Έμ— μ—¬κΈ°μ„œ μ •ν™•ν•œ 톡계λ₯Ό μ œκ³΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그리고 μ—¬κΈ°μ—μ„œλ„ μ‹€ν—˜μ„ μ„€μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ‹€ν—˜μ—μ„œ μš°λ¦¬λŠ” 첫 번째 단계λ₯Ό μ™„λ£Œν•  κΆŒλ¦¬κ°€ μ—†κΈ° λ•Œλ¬Έμ— μž‘μ—…μ΄ 미리 κ²°μ •λ©λ‹ˆλ‹€.

비곡식 μ‚¬μ–‘μ˜ λ§Žμ€ 어렀움을 κ°„κ³Όν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ— λŒ€ν•œ μ—„κ²©ν•œ 사양을 μž‘μ„±ν•˜λŠ” 데 μ–΄λ €μš΄ 것은 μ—†μœΌλ©° 이에 λŒ€ν•΄μ„œλŠ” λ…Όμ˜ν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆλ‹€. λŒ€μ‹  ν‘œμ€€ λ™μž‘μ— λŒ€ν•œ κ°•λ ₯ν•œ 사양을 μž‘μ„±ν•˜λŠ” 방법에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ² μŠ΅λ‹ˆλ‹€. λ³΄μ•ˆ 속성을 μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  λ™μž‘ 집합을 μ„€λͺ…ν•  수 μžˆλ‹€λŠ” 정리가 μžˆμŠ΅λ‹ˆλ‹€. (μ•ˆμ „) 및 생쑴 속성 (생생함). λ³΄μ•ˆμ€ λ‚˜μœ 일이 λ°œμƒν•˜μ§€ μ•ŠμœΌλ©° ν”„λ‘œκ·Έλž¨μ΄ 잘λͺ»λœ 닡변을 μ œκ³΅ν•˜μ§€ μ•ŠμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. 생쑴 κ°€λŠ₯성은 μ‘°λ§Œκ°„ 쒋은 일이 일어날 κ²ƒμž„μ„ μ˜λ―Έν•©λ‹ˆλ‹€. 즉, ν”„λ‘œκ·Έλž¨μ΄ μ‘°λ§Œκ°„ 정닡을 μ œκ³΅ν•  κ²ƒμž…λ‹ˆλ‹€. 일반적으둜 λ³΄μ•ˆμ΄ 더 μ€‘μš”ν•œ μ§€ν‘œμ΄λ©° μ—¬κΈ°μ—μ„œ 였λ₯˜κ°€ κ°€μž₯ 자주 λ°œμƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ‹œκ°„μ„ μ ˆμ•½ν•˜κΈ° μœ„ν•΄ λ¬Όλ‘  생쑴 κ°€λŠ₯성도 μ€‘μš”ν•˜μ§€λ§Œ 생쑴 κ°€λŠ₯성에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆλ‹€.

λ¨Όμ € κ°€λŠ₯ν•œ 초기 μƒνƒœ 집합을 κ·œμ •ν•˜μ—¬ λ³΄μ•ˆμ„ λ‹¬μ„±ν•©λ‹ˆλ‹€. λ‘˜μ§Έ, 각 μƒνƒœμ— λŒ€ν•΄ κ°€λŠ₯ν•œ λͺ¨λ“  λ‹€μŒ μƒνƒœμ™€μ˜ κ΄€κ³„μž…λ‹ˆλ‹€. κ³Όν•™μžμ²˜λŸΌ ν–‰λ™ν•˜κ³  μƒνƒœλ₯Ό μˆ˜ν•™μ μœΌλ‘œ μ •μ˜ν•΄ λ΄…μ‹œλ‹€. 초기 μƒνƒœ 집합은 예λ₯Ό λ“€μ–΄ Euclid μ•Œκ³ λ¦¬μ¦˜μ˜ 경우 κ³΅μ‹μœΌλ‘œ μ„€λͺ…λ©λ‹ˆλ‹€. (x = M) ∧ (y = N). νŠΉμ • κ°’μ˜ 경우 M ΠΈ N 초기 μƒνƒœλŠ” ν•˜λ‚˜λΏμž…λ‹ˆλ‹€. λ‹€μŒ μƒνƒœμ™€μ˜ κ΄€κ³„λŠ” λ‹€μŒ μƒνƒœμ˜ λ³€μˆ˜λŠ” μ†Œμˆ˜λ‘œ μ“°κ³  ν˜„μž¬ μƒνƒœμ˜ λ³€μˆ˜λŠ” μ†Œμˆ˜ 없이 μ“°λŠ” κ³΅μ‹μœΌλ‘œ μ„€λͺ…λ©λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ μ•Œκ³ λ¦¬μ¦˜μ˜ 경우 두 κ³΅μ‹μ˜ 뢄리λ₯Ό λ‹€λ£° κ²ƒμž…λ‹ˆλ‹€. x κ°€μž₯ 큰 값이고 두 번째 - y:

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

첫 번째 경우 y의 μƒˆ 값은 이전 y κ°’κ³Ό κ°™κ³  더 큰 λ³€μˆ˜μ—μ„œ 더 μž‘μ€ λ³€μˆ˜λ₯Ό λΉΌμ„œ μƒˆ x 값을 μ–»μŠ΅λ‹ˆλ‹€. 두 번째 κ²½μš°μ—λŠ” κ·Έ λ°˜λŒ€μž…λ‹ˆλ‹€.

μœ ν΄λ¦¬λ“œμ˜ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ λŒμ•„κ°€ λ΄…μ‹œλ‹€. λ‹€μ‹œ κ°€μ •ν•΄λ³΄μž M = 12, N = 18. 이것은 단일 초기 μƒνƒœλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. (x = 12) ∧ (y = 18). 그런 λ‹€μŒ ν•΄λ‹Ή 값을 μœ„μ˜ 곡식에 μ—°κ²°ν•˜κ³  λ‹€μŒμ„ μ–»μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

κ°€λŠ₯ν•œ μœ μΌν•œ 해결책은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. x' = 18 - 12 ∧ y' = 12그리고 μš°λ¦¬λŠ” 행동을 μ–»μŠ΅λ‹ˆλ‹€: [x = 12, y = 18]. λ§ˆμ°¬κ°€μ§€λ‘œ ν–‰λ™μ˜ λͺ¨λ“  μƒνƒœλ₯Ό μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. [x = 12, y = 18] β†’ [x = 12, y = 6] β†’ [x = 6, y = 6].

λ§ˆμ§€λ§‰ μƒνƒœμ—μ„œ [x = 6, y = 6] μ‹μ˜ 두 뢀뢄이 λͺ¨λ‘ κ±°μ§“μ΄λ―€λ‘œ λ‹€μŒ μƒνƒœκ°€ μ—†μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬λŠ” 두 번째 단계에 λŒ€ν•œ μ™„μ „ν•œ 사양을 가지고 μžˆμŠ΅λ‹ˆλ‹€. λ³΄μ‹œλ‹€μ‹œν”Ό 이것은 μ—”μ§€λ‹ˆμ–΄μ™€ κ³Όν•™μžμ™€ 같은 맀우 일반적인 μˆ˜ν•™μ΄λ©° 컴퓨터 κ³Όν•™κ³Ό 같이 μ΄μƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 두 곡식은 μ‹œκ°„ λ…Όλ¦¬μ˜ ν•˜λ‚˜μ˜ κ³΅μ‹μœΌλ‘œ 결합될 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ…€λŠ” μš°μ•„ν•˜κ³  μ„€λͺ…ν•˜κΈ° μ‰½μ§€λ§Œ μ§€κΈˆμ€ μ‹œκ°„μ΄ μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” ν™œμ„± 속성에 λŒ€ν•΄μ„œλ§Œ μž„μ‹œ 논리가 ν•„μš”ν•  수 있으며 λ³΄μ•ˆμ—λŠ” ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그런 μ‹œκ°„ 논리λ₯Ό μ’‹μ•„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그것은 ν‰λ²”ν•œ μˆ˜ν•™μ΄ μ•„λ‹ˆμ§€λ§Œ μƒλ™κ°μ˜ κ²½μš°μ—λŠ” ν•„μš”μ•…μž…λ‹ˆλ‹€.

μœ ν΄λ¦¬λ“œ μ•Œκ³ λ¦¬μ¦˜μ—μ„œ 각 값에 λŒ€ν•΄ x ΠΈ y κ³ μœ ν•œ 값을 κ°–λŠ”λ‹€ x' ΠΈ y', λ‹€μŒ μƒνƒœμ™€μ˜ 관계λ₯Ό 참으둜 λ§Œλ“­λ‹ˆλ‹€. 즉, μœ ν΄λ¦¬λ“œμ˜ μ•Œκ³ λ¦¬μ¦˜μ€ κ²°μ •λ‘ μ μž…λ‹ˆλ‹€. 비결정둠적 μ•Œκ³ λ¦¬μ¦˜μ„ λͺ¨λΈλ§ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν˜„μž¬ μƒνƒœκ°€ μ—¬λŸ¬ 개의 κ°€λŠ₯ν•œ 미래 μƒνƒœλ₯Ό κ°€μ§ˆ ν•„μš”κ°€ 있고, 각각의 λΉ„κ²°μ • λ³€μˆ˜ 값은 λ‹€μŒ μƒνƒœμ™€μ˜ 관계가 참이 λ˜λ„λ‘ μ—¬λŸ¬ ν”„λΌμž„ λ³€μˆ˜ 값을 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€. 이것은 ν•˜κΈ° μ‰½μ§€λ§Œ μ§€κΈˆμ€ 예λ₯Ό μ œμ‹œν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆλ‹€.

μž‘μ—… 도ꡬλ₯Ό λ§Œλ“€λ €λ©΄ 곡식 μˆ˜ν•™μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 사양을 κ³΅μ‹ν™”ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? 이λ₯Ό μœ„ν•΄μ„œλŠ” 곡식 μ–Έμ–΄κ°€ ν•„μš”ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. TLA+. Euclid μ•Œκ³ λ¦¬μ¦˜μ˜ 사양은 이 μ–Έμ–΄μ—μ„œ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

μ‚Όκ°ν˜•μ΄ μžˆλŠ” λ“±ν˜Έ κΈ°ν˜ΈλŠ” 기호 μ™Όμͺ½μ˜ 값이 기호 였λ₯Έμͺ½μ˜ κ°’κ³Ό λ™μΌν•˜κ²Œ μ •μ˜λ¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€. 본질적으둜 사양은 μ •μ˜μ΄λ©° 우리의 경우 두 가지 μ •μ˜μž…λ‹ˆλ‹€. TLA+의 사양에 μœ„μ˜ μŠ¬λΌμ΄λ“œμ™€ 같이 μ„ μ–Έκ³Ό 일뢀 ꡬ문을 μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. ASCIIμ—μ„œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

λ³΄μ‹œλ‹€μ‹œν”Ό λ³΅μž‘ν•œ 것은 μ—†μŠ΅λ‹ˆλ‹€. TLA+에 λŒ€ν•œ 사양을 ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, μž‘μ€ λͺ¨λΈμ—μ„œ κ°€λŠ₯ν•œ λͺ¨λ“  λ™μž‘μ„ μš°νšŒν•©λ‹ˆλ‹€. 우리의 경우 이 λͺ¨λΈμ€ νŠΉμ • 값이 될 κ²ƒμž…λ‹ˆλ‹€. M ΠΈ N. μ΄λŠ” μ™„μ „νžˆ μžλ™μœΌλ‘œ μˆ˜ν–‰λ˜λŠ” 맀우 효율적이고 κ°„λ‹¨ν•œ 검증 λ°©λ²•μž…λ‹ˆλ‹€. 곡식적인 진싀 증λͺ…을 μž‘μ„±ν•˜κ³  κΈ°κ³„μ μœΌλ‘œ ν™•μΈν•˜λŠ” 것도 κ°€λŠ₯ν•˜μ§€λ§Œ μ‹œκ°„μ΄ 많이 κ±Έλ¦¬λ―€λ‘œ 거의 μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

TLA+의 κ°€μž₯ 큰 단점은 그것이 μˆ˜ν•™μ΄κ³  ν”„λ‘œκ·Έλž˜λ¨Έμ™€ 컴퓨터 κ³Όν•™μžλ“€μ΄ μˆ˜ν•™μ„ λ‘λ €μ›Œν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ–Έλœ» 보면 λ†λ‹΄μ²˜λŸΌ λ“€λ¦¬μ§€λ§Œ λΆˆν–‰νžˆλ„ μ§„μ‹¬μœΌλ‘œ λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄ λ™λ£ŒλŠ” κ·Έκ°€ μ—¬λŸ¬ κ°œλ°œμžμ—κ²Œ TLA+λ₯Ό μ–΄λ–»κ²Œ μ„€λͺ…ν•˜λ €κ³  ν–ˆλŠ”μ§€ λ§ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. 곡식이 화면에 λ‚˜νƒ€λ‚˜μž κΈˆμ„Έ λˆˆμ‹œμšΈμ΄ λΆ‰μ–΄μ‘Œλ‹€. λ”°λΌμ„œ TLA+κ°€ 두렡닀면 λ‹€μŒμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”ŒλŸ¬μŠ€μΉΌ, μΌμ’…μ˜ μž₯λ‚œκ° ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž…λ‹ˆλ‹€. PlusCal의 식은 λͺ¨λ“  TLA+ 식, 즉 λŒ€μ²΄λ‘œ λͺ¨λ“  μˆ˜ν•™μ  식일 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ PlusCalμ—λŠ” 비결정적 μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•œ ꡬ문이 μžˆμŠ΅λ‹ˆλ‹€. PlusCal은 λͺ¨λ“  TLA+ ν‘œν˜„μ‹μ„ μž‘μ„±ν•  수 있기 λ•Œλ¬Έμ— PlusCal은 μ‹€μ œ ν”„λ‘œκ·Έλž˜λ° 언어보닀 훨씬 ν‘œν˜„λ ₯이 λ›°μ–΄λ‚©λ‹ˆλ‹€. λ‹€μŒμœΌλ‘œ PlusCal은 μ‰½κ²Œ 읽을 수 μžˆλŠ” TLA+ μ‚¬μ–‘μœΌλ‘œ μ»΄νŒŒμΌλ©λ‹ˆλ‹€. λ¬Όλ‘  이것은 λ³΅μž‘ν•œ PlusCal 사양이 TLA +μ—μ„œ λ‹¨μˆœν•œ μ‚¬μ–‘μœΌλ‘œ λ°”λ€” κ²ƒμ΄λΌλŠ” μ˜λ―ΈλŠ” μ•„λ‹™λ‹ˆλ‹€. κ·Έλ“€ μ‚¬μ΄μ˜ λŒ€μ‘μ΄ λΆ„λͺ…ν•˜κ³  μΆ”κ°€ λ³΅μž‘μ„±μ΄ 없을 κ²ƒμž…λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 이 사양은 TLA+ λ„κ΅¬λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€μ²΄λ‘œ PlusCal은 μˆ˜ν•™ 곡포증을 κ·Ήλ³΅ν•˜λŠ” 데 도움이 될 수 있으며 ν”„λ‘œκ·Έλž˜λ¨Έμ™€ 컴퓨터 κ³Όν•™μžλ„ μ‰½κ²Œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. κ³Όκ±°μ—λŠ” ν•œλ™μ•ˆ(μ•½ 10λ…„) μ•Œκ³ λ¦¬μ¦˜μ„ κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.

μ•„λ§ˆλ„ λˆ„κ΅°κ°€λŠ” TLA +와 PlusCal이 μˆ˜ν•™μ΄κ³  μˆ˜ν•™μ€ 발λͺ…λœ μ˜ˆμ—μ„œλ§Œ μž‘λ™ν•œλ‹€κ³  λ°˜λŒ€ν•  κ²ƒμž…λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” μœ ν˜•, ν”„λ‘œμ‹œμ €, 객체 등이 ν¬ν•¨λœ μ‹€μ œ μ–Έμ–΄κ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이것은 잘λͺ»λœ κ²ƒμž…λ‹ˆλ‹€. λ‹€μŒμ€ Amazonμ—μ„œ κ·Όλ¬΄ν•œ Chris Newcomb이 μž‘μ„±ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. β€œμš°λ¦¬λŠ” XNUMX개의 μ£Όμš” ν”„λ‘œμ νŠΈμ—μ„œ TLA+λ₯Ό μ‚¬μš©ν•΄ μ™”μœΌλ©°, 생산에 λ“€μ–΄κ°€κΈ° 전에 μœ„ν—˜ν•œ 버그λ₯Ό 포착할 수 μžˆμ—ˆκ³  μš°λ¦¬μ—κ²Œ ν”„λ‘œκ·Έλž¨μ˜ 진싀성에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ©΄μ„œ 곡격적인 μ„±λŠ₯ μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.". 곡식적인 방법을 μ‚¬μš©ν•  λ•Œ λΉ„νš¨μœ¨μ μΈ μ½”λ“œκ°€ μƒμ„±λœλ‹€λŠ” 말을 자주 λ“£μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” λͺ¨λ“  것이 μ •λ°˜λŒ€μž…λ‹ˆλ‹€. λ˜ν•œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μœ μš©μ„±μ„ ν™•μ‹ ν•˜λ”λΌλ„ κ΄€λ¦¬μžλŠ” ν˜•μ‹μ  λ°©λ²•μ˜ ν•„μš”μ„±μ„ ν™•μ‹ ν•  수 μ—†λ‹€λŠ” 의견이 μžˆμŠ΅λ‹ˆλ‹€. 그리고 Newcomb은 λ‹€μŒκ³Ό 같이 μ”λ‹ˆλ‹€. "κ΄€λ¦¬μžλ“€μ€ 이제 TLA+에 λŒ€ν•œ 사양을 μž‘μ„±ν•˜κ³  특히 이λ₯Ό μœ„ν•œ μ‹œκ°„μ„ ν• λ‹Ήν•˜κΈ° μœ„ν•΄ μ—΄μ‹¬νžˆ λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.". λ”°λΌμ„œ κ΄€λ¦¬μžλŠ” TLA+κ°€ μž‘λ™ν•˜λŠ” 것을 보면 기꺼이 λ°›μ•„λ“€μž…λ‹ˆλ‹€. Chris Newcomb이 이 글을 μ“΄ 것은 μ•½ 2014κ°œμ›” μ „(14λ…„ 10μ›”)μ΄μ§€λ§Œ μ§€κΈˆμ€ λ‚΄κ°€ μ•„λŠ” ν•œ TLA+κ°€ 360κ°œκ°€ μ•„λ‹Œ 360개의 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 또 λ‹€λ₯Έ μ˜ˆλŠ” XBox XNUMX의 λ””μžμΈκ³Ό 관련이 μžˆμŠ΅λ‹ˆλ‹€. λ©”λͺ¨λ¦¬ μ‹œμŠ€ν…œμ— λŒ€ν•œ 사양을 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. 이 사양 덕뢄에 λ‹€λ₯Έ λ°©λ²•μœΌλ‘œλŠ” λˆˆμ— 띄지 μ•Šκ³  λͺ¨λ“  XBox XNUMX이 XNUMXμ‹œκ°„ μ‚¬μš© ν›„ μΆ©λŒν•˜λŠ” 버그가 λ°œκ²¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€. IBM μ—”μ§€λ‹ˆμ–΄λŠ” ν…ŒμŠ€νŠΈμ—μ„œ 이 버그λ₯Ό λ°œκ²¬ν•˜μ§€ λͺ»ν–ˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

μΈν„°λ„·μ—μ„œ TLA +에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ„ 읽을 수 μžˆμ§€λ§Œ 이제 비곡식 사양에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ² μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μ΅œμ†Œ κ³΅μ•½μˆ˜ 등을 κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  ν•„μš”κ°€ 거의 μ—†μŠ΅λ‹ˆλ‹€. 훨씬 더 자주 μš°λ¦¬λŠ” TLA+용으둜 μž‘μ„±ν•œ 예쁜 ν”„λ¦°ν„° 도ꡬ와 같은 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•©λ‹ˆλ‹€. κ°€μž₯ κ°„λ‹¨ν•œ 처리 ν›„ TLA + μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

κ·ΈλŸ¬λ‚˜ μœ„μ˜ μ˜ˆμ—μ„œ μ‚¬μš©μžλŠ” 접속사와 λ“±ν˜Έκ°€ μ •λ ¬λ˜κΈ°λ₯Ό μ›ν–ˆμ„ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ˜¬λ°”λ₯Έ ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

λ‹€λ₯Έ 예λ₯Ό μƒκ°ν•΄λ³΄μ‹­μ‹œμ˜€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

μ—¬κΈ°μ„œ λ°˜λŒ€λ‘œ μ†ŒμŠ€μ˜ λ“±ν˜Έ, λ§μ…ˆ, κ³±μ…ˆ 기호의 정렬은 λ¬΄μž‘μœ„μ΄λ―€λ‘œ κ°€μž₯ κ°„λ‹¨ν•œ μ²˜λ¦¬λ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•©λ‹ˆλ‹€. 일반적으둜 μ˜¬λ°”λ₯Έ μ„œμ‹μ— λŒ€ν•œ μ •ν™•ν•œ μˆ˜ν•™μ  μ •μ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. 이 경우 "μ˜¬λ°”λ₯Έ"은 "μ‚¬μš©μžκ°€ μ›ν•˜λŠ” 것"을 μ˜λ―Έν•˜κ³  μ΄λŠ” μˆ˜ν•™μ μœΌλ‘œ κ²°μ •ν•  수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

진리에 λŒ€ν•œ μ •μ˜κ°€ μ—†λ‹€λ©΄ λͺ…μ„ΈλŠ” μ“Έλͺ¨κ°€ μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ΄ 무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€ λͺ¨λ₯Έλ‹€κ³  ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ΄ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ 생각할 ν•„μš”κ°€ μ—†λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. 였히렀 ν”„λ‘œκ·Έλž¨μ— 더 λ§Žμ€ λ…Έλ ₯을 κΈ°μšΈμ—¬μ•Ό ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ 사양이 특히 μ€‘μš”ν•©λ‹ˆλ‹€. κ΅¬μ‘°ν™”λœ 인쇄λ₯Ό μœ„ν•œ 졜적의 ν”„λ‘œκ·Έλž¨μ„ κ²°μ •ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ, κ·Έλ ‡λ‹€κ³  ν•΄μ„œ μ•„μ˜ˆ 받아듀이지 말아야 ν•œλ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹ˆλ©°, μ˜μ‹μ˜ νλ¦„λŒ€λ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것은 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. κ²°κ΅­ μ •μ˜κ°€ μžˆλŠ” XNUMX가지 κ·œμΉ™μ˜ 사양을 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. λŒ“κΈ€ ν˜•μ‹μœΌλ‘œ μžλ°” νŒŒμΌμ—μ„œ. λ‹€μŒμ€ κ·œμΉ™ 쀑 ν•˜λ‚˜μ˜ μ˜ˆμž…λ‹ˆλ‹€. a left-comment token is LeftComment aligned with its covering token. 이 κ·œμΉ™μ€ μˆ˜ν•™ μ˜μ–΄λ‘œ μž‘μ„±λ©λ‹ˆλ‹€. LeftComment aligned, left-comment ΠΈ covering token - μ •μ˜κ°€ μžˆλŠ” μš©μ–΄. 이것은 μˆ˜ν•™μžλ“€μ΄ μˆ˜ν•™μ„ μ„€λͺ…ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 그듀은 μš©μ–΄μ˜ μ •μ˜λ₯Ό μž‘μ„±ν•˜κ³  이λ₯Ό 기반으둜 κ·œμΉ™μ„ μž‘μ„±ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‚¬μ–‘μ˜ 이점은 850개의 κ·œμΉ™μ΄ 850μ€„μ˜ μ½”λ“œλ³΄λ‹€ 훨씬 μ΄ν•΄ν•˜κ³  λ””λ²„κ·Έν•˜κΈ° μ‰½λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 κ·œμΉ™μ„ μž‘μ„±ν•˜λŠ” 것이 쉽지 μ•Šμ•˜κ³  λ””λ²„κΉ…ν•˜λŠ” 데 κ½€ λ§Žμ€ μ‹œκ°„μ΄ κ±Έλ ΈμŠ΅λ‹ˆλ‹€. 특히 이λ₯Ό μœ„ν•΄ μ–΄λ–€ κ·œμΉ™μ΄ μ‚¬μš©λ˜μ—ˆλŠ”μ§€ λ³΄κ³ ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ μ˜ˆμ œμ—μ„œ 이 XNUMX가지 κ·œμΉ™μ„ ν…ŒμŠ€νŠΈν•œ 덕뢄에 XNUMXμ€„μ˜ μ½”λ“œλ₯Ό 디버깅할 ν•„μš”κ°€ μ—†μ—ˆκ³  버그λ₯Ό μ°ΎκΈ°κ°€ 맀우 μ‰¬μ› μŠ΅λ‹ˆλ‹€. Javaμ—λŠ” 이λ₯Ό μœ„ν•œ ν›Œλ₯­ν•œ 도ꡬ가 μžˆμŠ΅λ‹ˆλ‹€. 방금 μ½”λ“œλ₯Ό μž‘μ„±ν–ˆλ‹€λ©΄ μ‹œκ°„μ΄ 훨씬 더 였래 걸렸을 것이고 ν˜•μ‹ν™”μ˜ ν’ˆμ§ˆλ„ 쒋지 μ•Šμ•˜μ„ κ²ƒμž…λ‹ˆλ‹€.

곡식 사양을 μ‚¬μš©ν•  수 μ—†λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? ν•œνŽΈμœΌλ‘œ μ˜¬λ°”λ₯Έ 싀행은 μ—¬κΈ°μ—μ„œ 그닀지 μ€‘μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ꡬ쑰적 인쇄물은 λˆ„κ΅¬λ„ λ§Œμ‘±μ‹œν‚€μ§€ λͺ»ν•  μˆ˜λ°–μ— μ—†μ—ˆκΈ° λ•Œλ¬Έμ— λͺ¨λ“  μ΄μƒν•œ μƒν™©μ—μ„œ μ œλŒ€λ‘œ μž‘λ™ν•˜λ„λ‘ ν•  ν•„μš”κ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. 더 μ€‘μš”ν•œ 것은 μ μ ˆν•œ 도ꡬ가 μ—†λ‹€λŠ” μ‚¬μ‹€μž…λ‹ˆλ‹€. TLA+ λͺ¨λΈ κ²€μ‚¬κΈ°λŠ” μ—¬κΈ°μ„œ μ“Έλͺ¨κ°€ μ—†μœΌλ―€λ‘œ μˆ˜λ™μœΌλ‘œ 예제λ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μœ„μ˜ 사양은 λͺ¨λ“  사양에 κ³΅ν†΅λ˜λŠ” κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œλ³΄λ‹€ 높은 μˆ˜μ€€μž…λ‹ˆλ‹€. λͺ¨λ“  μ–Έμ–΄λ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ λ„κ΅¬λ‚˜ 방법도 μ“Έ 수 μ—†μŠ΅λ‹ˆλ‹€. μ–΄λ–€ ν”„λ‘œκ·Έλž˜λ° 과정도 이 사양을 μž‘μ„±ν•˜λŠ” 데 도움이 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Όλ‘  TLA+μ—μ„œ κ΅¬μ‘°ν™”λœ 인쇄 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ° μœ„ν•΄ νŠΉλ³„νžˆ μ–Έμ–΄λ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠλŠ” ν•œ 이 사양을 λΆˆν•„μš”ν•˜κ²Œ λ§Œλ“€ 수 μžˆλŠ” λ„κ΅¬λŠ” μ—†μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ, 이 λͺ…μ„ΈλŠ” μš°λ¦¬κ°€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 방법에 λŒ€ν•΄ μ •ν™•νžˆ μ–ΈκΈ‰ν•˜μ§€ μ•Šκ³  μ½”λ“œκ°€ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…λ§Œ μ„€λͺ…ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” μ½”λ“œμ— λŒ€ν•΄ μƒκ°ν•˜κΈ° 전에 문제λ₯Ό μΆ©λΆ„νžˆ μƒκ°ν•˜λŠ” 데 도움이 λ˜λ„λ‘ 사양을 μž‘μ„±ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜μ΄ μ‚¬μ–‘μ—λŠ” λ‹€λ₯Έ 사양과 κ΅¬λ³„λ˜λŠ” κΈ°λŠ₯도 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬μ–‘μ˜ 95%λŠ” 훨씬 더 짧고 κ°„λ‹¨ν•©λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ”© κ·Έ 이상이닀

λ˜ν•œ 이 사양은 일련의 κ·œμΉ™μž…λ‹ˆλ‹€. 일반적으둜 이것은 사양이 쒋지 μ•Šλ‹€λŠ” μ‹ ν˜Έμž…λ‹ˆλ‹€. 일련의 κ·œμΉ™μ˜ κ²°κ³Όλ₯Ό μ΄ν•΄ν•˜λŠ” 것은 맀우 μ–΄λ ΅κΈ° λ•Œλ¬Έμ— κ·œμΉ™μ„ λ””λ²„κΉ…ν•˜λŠ” 데 λ§Žμ€ μ‹œκ°„μ„ ν• μ• ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 경우 더 λ‚˜μ€ 방법을 찾지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

μ§€μ†μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ— λŒ€ν•΄ λͺ‡ λ§ˆλ”” 말할 κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 일반적으둜 운영 체제 λ˜λŠ” λΆ„μ‚° μ‹œμŠ€ν…œκ³Ό 같이 λ³‘λ ¬λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. μ •μ‹ μ μœΌλ‘œλ‚˜ μ’…μ΄λ‘œ 이해할 μˆ˜μžˆλŠ” μ‚¬λžŒμ€ 거의 μ—†μœΌλ©° ν•œλ•ŒλŠ” ν•  수 μžˆμ—ˆμ§€λ§Œ λ‚˜λŠ” κ·Έλ“€ 쀑 ν•˜λ‚˜κ°€ μ•„λ‹™λ‹ˆλ‹€. λ”°λΌμ„œ TLA + λ˜λŠ” PlusCalκ³Ό 같이 μž‘μ—…μ„ 확인할 도ꡬ가 ν•„μš”ν•©λ‹ˆλ‹€.

μ½”λ“œκ°€ μ •ν™•νžˆ 무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€ 이미 μ•Œκ³  μžˆλŠ”λ° 사양을 μž‘μ„±ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? 사싀 λ‚˜λ§Œ μ•„λŠ” 쀄 μ•Œμ•˜λ‹€. λ˜ν•œ 사양이 있으면 외뢀인이 μžμ‹ μ΄ μ •ν™•νžˆ 무엇을 ν•˜λŠ”μ§€ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ 더 이상 μ½”λ“œμ— λ“€μ–΄κ°ˆ ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€. 일반적인 κ·œμΉ™μ€ μ—†μ–΄μ•Ό ν•©λ‹ˆλ‹€. λ¬Όλ‘  이 κ·œμΉ™μ—λŠ” μ˜ˆμ™Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ œκ°€ λ”°λ₯΄λŠ” μœ μΌν•œ 일반적인 κ·œμΉ™μž…λ‹ˆλ‹€. μ½”λ“œκ°€ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ— λŒ€ν•œ 사양은 μ‚¬λžŒλ“€μ΄ μ½”λ“œλ₯Ό μ‚¬μš©ν•  λ•Œ μ•Œμ•„μ•Ό ν•  λͺ¨λ“  것을 μ•Œλ €μ•Ό ν•©λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 사고에 λŒ€ν•΄ μ •ν™•νžˆ 무엇을 μ•Œμ•„μ•Ό ν• κΉŒμš”? μš°μ„ , λ‹€λ₯Έ λͺ¨λ“  μ‚¬λžŒκ³Ό λ™μΌν•©λ‹ˆλ‹€. 글을 쓰지 μ•ŠμœΌλ©΄ μƒκ°ν•˜κ³ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ˜ν•œ μ½”λ”©ν•˜κΈ° 전에 생각해야 ν•©λ‹ˆλ‹€. 즉, μ½”λ”©ν•˜κΈ° 전에 μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. 사양은 코딩을 μ‹œμž‘ν•˜κΈ° 전에 μž‘μ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆλŠ” μ½”λ“œμ—λŠ” 사양이 ν•„μš”ν•©λ‹ˆλ‹€. 그리고 이 "λˆ„κ΅°κ°€"λŠ” μ½”λ“œκ°€ μž‘μ„±λœ 지 ν•œ 달 후에 μ½”λ“œλ₯Ό μž‘μ„±ν•œ μ‚¬λžŒμΌ 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν˜• ν”„λ‘œκ·Έλž¨ 및 μ‹œμŠ€ν…œ, 클래슀, λ©”μ†Œλ“œ, λ•Œλ‘œλŠ” 단일 λ©”μ†Œλ“œμ˜ λ³΅μž‘ν•œ μ„Ήμ…˜μ— λŒ€ν•œ 사양이 ν•„μš”ν•©λ‹ˆλ‹€. μ½”λ“œμ— λŒ€ν•΄ μ •ν™•νžˆ 무엇을 μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆκΉŒ? 그것이 무엇을 ν•˜λŠ”μ§€, 즉 이 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ—κ²Œ 무엇이 μœ μš©ν•  수 μžˆλŠ”μ§€ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ²½μš°μ— 따라 μ½”λ“œκ°€ λͺ©μ μ„ λ‹¬μ„±ν•˜λŠ” 방법을 지정해야 ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ•Œκ³ λ¦¬μ¦˜μ˜ κ³Όμ •μ—μ„œ 이 방법을 κ±°μ³€λ‹€λ©΄ 이λ₯Ό μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  ν•©λ‹ˆλ‹€. μ’€ 더 νŠΉλ³„ν•˜κ³  μƒˆλ‘œμš΄ 것이라면 κ³ κΈ‰ λ””μžμΈμ΄λΌκ³  ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” 곡식적인 차이점이 μ—†μŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ ν”„λ‘œκ·Έλž¨μ˜ 좔상 λͺ¨λΈμž…λ‹ˆλ‹€.

μ½”λ“œ 사양을 μ •ν™•νžˆ μ–΄λ–»κ²Œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆκΉŒ? κ°€μž₯ μ€‘μš”ν•œ 것은 μ½”λ“œ μžμ²΄λ³΄λ‹€ ν•œ 단계 더 λ†’μ•„μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μƒνƒœμ™€ λ™μž‘μ„ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€. μž‘μ—…μ΄ μš”κ΅¬ν•˜λŠ” 만큼 엄격해야 ν•©λ‹ˆλ‹€. μž‘μ—… κ΅¬ν˜„ 방법에 λŒ€ν•œ 사양을 μž‘μ„±ν•˜λŠ” 경우 μœ μ‚¬ μ½”λ“œ λ˜λŠ” PlusCal둜 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 정식 사양에 사양을 μž‘μ„±ν•˜λŠ” 방법을 λ°°μ›Œμ•Ό ν•©λ‹ˆλ‹€. 이것은 비곡식적인 것에도 도움이 될 ν•„μš”ν•œ κΈ°μˆ μ„ μ œκ³΅ν•  κ²ƒμž…λ‹ˆλ‹€. 곡식 사양을 μž‘μ„±ν•˜λŠ” 방법을 μ–΄λ–»κ²Œ λ°°μš°λ‚˜μš”? ν”„λ‘œκ·Έλž˜λ°μ„ 배웠을 λ•Œ μš°λ¦¬λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œ λ‹€μŒ λ””λ²„κΉ…ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œλ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. 사양을 μž‘μ„±ν•˜κ³  λͺ¨λΈ κ²€μ‚¬κΈ°λ‘œ ν™•μΈν•˜κ³  버그λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. TLA+λŠ” 곡식 사양에 κ°€μž₯ μ ν•©ν•œ μ–Έμ–΄κ°€ 아닐 수 있으며 νŠΉμ • μš”κ΅¬ μ‚¬ν•­μ—λŠ” λ‹€λ₯Έ μ–Έμ–΄κ°€ 더 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. TLA+의 μž₯점은 μˆ˜ν•™μ  사고λ₯Ό μ•„μ£Ό 잘 κ°€λ₯΄μΉœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

사양과 μ½”λ“œλ₯Ό μ—°κ²°ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? μˆ˜ν•™μ  κ°œλ…κ³Ό κ΅¬ν˜„μ„ μ—°κ²°ν•˜λŠ” μ£Όμ„μ˜ λ„μ›€μœΌλ‘œ. κ·Έλž˜ν”„λ‘œ μž‘μ—…ν•˜λŠ” 경우 ν”„λ‘œκ·Έλž¨ μˆ˜μ€€μ—μ„œ λ…Έλ“œ λ°°μ—΄κ³Ό 링크 배열을 κ°–κ²Œ λ©λ‹ˆλ‹€. λ”°λΌμ„œ μ΄λŸ¬ν•œ ν”„λ‘œκ·Έλž˜λ° ꡬ쑰에 μ˜ν•΄ κ·Έλž˜ν”„κ°€ κ΅¬ν˜„λ˜λŠ” 방식을 μ •ν™•ν•˜κ²Œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μœ„μ˜ μ–΄λŠ 것도 μ‹€μ œ μ½”λ“œ μž‘μ„± ν”„λ‘œμ„ΈμŠ€μ—λŠ” μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점에 μœ μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ, 즉 μ„Έ 번째 단계λ₯Ό μˆ˜ν–‰ν•  λ•Œ ν”„λ‘œκ·Έλž¨λ„ μƒκ°ν•˜κ³  생각해야 ν•©λ‹ˆλ‹€. ν•˜μœ„ μž‘μ—…μ΄ λ³΅μž‘ν•˜κ±°λ‚˜ λͺ…ν™•ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ 판λͺ…λ˜λ©΄ 이에 λŒ€ν•œ 사양을 μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—¬κΈ°μ„œλŠ” μ½”λ“œ μžμ²΄μ— λŒ€ν•΄ λ§ν•˜λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄, 방법둠을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μœ„μ˜ μ–΄λŠ 것도 μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•˜κ³  디버그할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. 좔상 λͺ¨λΈμ΄ μ˜¬λ°”λ₯΄κ²Œ μž‘μ„±λ˜λ”λΌλ„ κ΅¬ν˜„μ— 버그가 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

사양 μž‘μ„±μ€ μ½”λ”© ν”„λ‘œμ„ΈμŠ€μ˜ μΆ”κ°€ λ‹¨κ³„μž…λ‹ˆλ‹€. 덕뢄에 적은 λ…Έλ ₯으둜 λ§Žμ€ 였λ₯˜λ₯Ό μž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. Amazon ν”„λ‘œκ·Έλž˜λ¨Έμ˜ κ²½ν—˜μ„ 톡해 이λ₯Ό μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 사양이 있으면 ν”„λ‘œκ·Έλž¨μ˜ ν’ˆμ§ˆμ΄ λ†’μ•„μ§‘λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ™œ μš°λ¦¬λŠ” μ’…μ’… 그것듀 없이 μ§€λ‚΄λŠ” κ²ƒμΌκΉŒμš”? κΈ€μ“°κΈ°κ°€ μ–΄λ ΅κΈ° λ•Œλ¬Έμ΄λ‹€. 그리고 κΈ€μ“°κΈ°λŠ” μ–΄λ ΅μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œλŠ” 생각이 ν•„μš”ν•˜κ³  생각도 μ–΄λ ΅ κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 당신이 μƒκ°ν•˜λŠ” μ²™ν•˜λŠ” 것이 항상 더 μ‰½μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ 달리기와 λΉ„μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 덜 달리면 덜 λ‹¬λ¦¬κ²Œ λ©λ‹ˆλ‹€. κ·Όμœ‘μ„ λ‹¨λ ¨ν•˜κ³  κΈ€μ“°κΈ° μ—°μŠ΅μ„ ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ—°μŠ΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

사양이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ””μ„ κ°€ μ‹€μˆ˜λ₯Ό ν–ˆκ±°λ‚˜ μš”κ΅¬ 사항이 λ³€κ²½λ˜μ—ˆκ±°λ‚˜ κ°œμ„ μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ½”λ“œλŠ” λ³€κ²½λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ μ‘°λ§Œκ°„ 사양이 더 이상 ν”„λ‘œκ·Έλž¨κ³Ό μΌμΉ˜ν•˜μ§€ μ•Šκ²Œ 될 κ²ƒμž…λ‹ˆλ‹€. μ΄μƒμ μœΌλ‘œλŠ” 이 경우 μƒˆ 사양을 μž‘μ„±ν•˜κ³  μ½”λ“œλ₯Ό μ™„μ „νžˆ λ‹€μ‹œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” 아무도 κ·Έλ ‡κ²Œ ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 잘 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” μ½”λ“œλ₯Ό νŒ¨μΉ˜ν•˜κ³  κ°€λŠ₯ν•˜λ©΄ 사양을 μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€. 이것이 μ‘°λ§Œκ°„ 일어날 μˆ˜λ°–μ— μ—†λ‹€λ©΄, μ™œ μŠ€νŽ™μ„ μž‘μ„±ν•΄μ•Ό ν• κΉŒμš”? 첫째, λ‹Ήμ‹ μ˜ μ½”λ“œλ₯Ό νŽΈμ§‘ν•  μ‚¬λžŒμ—κ²ŒλŠ” μ‚¬μ–‘μ˜ λͺ¨λ“  μΆ”κ°€ 단어가 금과 같은 κ°€μΉ˜κ°€ μžˆμ„ 것이며 이 μ‚¬λžŒμ€ λ‹Ήμ‹  μžμ‹ μΌ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μ’…μ’… μ½”λ“œλ₯Ό νŽΈμ§‘ν•  λ•Œ μΆ©λΆ„ν•œ 사양을 얻지 λͺ»ν•œ 것에 λŒ€ν•΄ 슀슀둜λ₯Ό κΎΈμ§–μŠ΅λ‹ˆλ‹€. 그리고 μ½”λ“œλ³΄λ‹€ 사양을 더 많이 μ”λ‹ˆλ‹€. λ”°λΌμ„œ μ½”λ“œλ₯Ό νŽΈμ§‘ν•  λ•Œ 사양을 항상 μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‘˜μ§Έ, κ°œμ •νŒμ΄ μžˆμ„ λ•Œλ§ˆλ‹€ μ½”λ“œκ°€ 더 λ‚˜λΉ μ§€κ³  읽고 μœ μ§€ν•˜κΈ°κ°€ 점점 더 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€. 이것은 μ—”νŠΈλ‘œν”Όμ˜ μ¦κ°€μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μ–‘μœΌλ‘œ μ‹œμž‘ν•˜μ§€ μ•ŠμœΌλ©΄ μž‘μ„±ν•˜λŠ” λͺ¨λ“  쀄이 νŽΈμ§‘λ˜κ³  μ½”λ“œκ°€ μ²˜μŒλΆ€ν„° 닀루기 νž˜λ“€κ³  읽기 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

λ§ν•œλŒ€λ‘œ μ•„μ΄μ  ν•˜μ›Œ, κ³„νšμ— μ˜ν•΄ μŠΉλ¦¬ν•œ μ „νˆ¬λŠ” μ—†μ—ˆκ³ , κ³„νš 없이 μŠΉλ¦¬ν•œ μ „νˆ¬λ„ μ—†μ—ˆλ‹€. 그리고 κ·ΈλŠ” μ „νˆ¬μ— λŒ€ν•΄ ν•œλ‘ 가지λ₯Ό μ•Œκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μŠ€νŽ™μ„ μ“°λŠ” 것은 μ‹œκ°„λ‚­λΉ„λΌλŠ” 의견이 μžˆλ‹€. λ•Œλ•Œλ‘œ 이것은 사싀이며 μž‘μ—…μ΄ λ„ˆλ¬΄ λ‹¨μˆœν•΄μ„œ 생각할 것이 μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λͺ…μ„Έμ„œλ₯Ό 쓰지 λ§λΌλŠ” 말은 μƒκ°ν•˜μ§€ λ§λΌλŠ” 말을 λ“£λŠ”λ‹€λŠ” 사싀을 항상 κΈ°μ–΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. 그리고 맀번 생각해야 ν•©λ‹ˆλ‹€. μž‘μ—…μ„ μƒκ°ν•œλ‹€κ³  ν•΄μ„œ μ‹€μˆ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 보μž₯은 μ—†μŠ΅λ‹ˆλ‹€. μ•„μ‹œλ‹€μ‹œν”Ό 마술 μ§€νŒ‘μ΄λŠ” 아무도 발λͺ…ν•˜μ§€ μ•Šμ•˜μœΌλ©° ν”„λ‘œκ·Έλž˜λ°μ€ μ–΄λ €μš΄ μž‘μ—…μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 문제λ₯Ό 깊이 μƒκ°ν•˜μ§€ μ•ŠμœΌλ©΄ μ‹€μˆ˜ν•  μˆ˜λ°–μ— μ—†μŠ΅λ‹ˆλ‹€.

νŠΉλ³„ μ›Ήμ‚¬μ΄νŠΈμ—μ„œ TLA + 및 PlusCal에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ„ 읽을 수 μžˆμŠ΅λ‹ˆλ‹€. 제 ν™ˆνŽ˜μ΄μ§€μ—μ„œ ν•΄λ‹Ή μ›Ήμ‚¬μ΄νŠΈλ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€. 링크. 그게 μ „λΆ€μž…λ‹ˆλ‹€. 관심을 κ°€μ Έ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ²ˆμ—­λ³Έμ΄λ‹ˆ μ°Έκ³ ν•˜μ„Έμš”. λŒ“κΈ€μ„ μž‘μ„±ν•  λ•Œ μž‘μ„±μžκ°€ λŒ“κΈ€μ„ 읽지 μ•ŠλŠ”λ‹€λŠ” 점을 κΈ°μ–΅ν•˜μ„Έμš”. μ €μžμ™€ μ •λ§λ‘œ λŒ€ν™”ν•˜κ³  μ‹Άλ‹€λ©΄ 2019λ…„ 11μ›” 12일뢀터 2019μΌκΉŒμ§€ μƒνŠΈνŽ˜ν…Œλ₯΄λΆ€λ₯΄ν¬μ—μ„œ μ—΄λ¦¬λŠ” Hydra XNUMX μ»¨νΌλŸ°μŠ€μ— 참석할 κ²ƒμž…λ‹ˆλ‹€. ν‹°μΌ“ ꡬ맀 κ°€λŠ₯ 곡식 μ›Ή μ‚¬μ΄νŠΈ.

좜처 : habr.com

μ½”λ©˜νŠΈλ₯Ό μΆ”κ°€