คำอุปมาการเขียนโปรแกรมที่ดีคืออะไร [ปิด]


30

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

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

ฉันต้องการค้นหาสิ่งที่ดีที่สุดที่นั่นจริง ๆ ฉันต้องการที่จะสามารถอธิบายให้ใครบางคนได้อย่างง่ายดายว่าอาชีพของฉันคืออะไร แน่นอนอย่างน้อยความคิดทั่วไป

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

ตัวอย่างเช่น:

ลองจินตนาการว่าในความเป็นจริงแบบอื่นหุ่นยนต์ฮิวแมนนอยด์ที่มีปัญญาประดิษฐ์อยู่และบางคนสามารถสื่อสารกับพวกเขาผ่านภาษากลางซึ่งเป็นรูปแบบของภาษาอังกฤษ คนเหล่านี้ที่สามารถสื่อสารกับหุ่นยนต์สามารถสอนพวกเขาถึงวิธีแก้ปัญหาบางอย่างหรือทำงานบางอย่างเช่นทำงานบ้านของเรา

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

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

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

ฉันแน่ใจว่าบางคนจะพบปัญหาบางอย่างเกี่ยวกับเรื่องนี้มันอาจจะเป็นเรื่องเล็กน้อย แต่แล้วอีกครั้งนั่นเป็นเหตุผลที่ฉันถามคำถามนี้


ฉันเดาว่าการเรียนรู้ภาษาการเขียนโปรแกรมนั้นค่อนข้างคล้ายคลึงกับการเรียนรู้ภาษาต่างประเทศ อย่างไรก็ตามการเขียนโปรแกรมคอมพิวเตอร์นั้นแตกต่างจากการพูดคุย / การเขียนทั่วไป การเขียนโปรแกรมคอมพิวเตอร์ต้องมีอย่างน้อย: ความแม่นยำ, นวัตกรรม, ความเข้มข้น, ความคิดสร้างสรรค์, องค์กร, ความคงทนและตรรกะที่เข้มงวด
Ami

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

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

คำตอบ:


43

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

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

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


ฮ่าฮ่าฉันชอบอันนี้จริงๆ
Jorge Israel Peña

14
เรือที่แล่นได้อย่างรวดเร็วของฉันเต็มไปด้วยปลาไหล!

3
หรือคุณเพียงแค่ PROLOG มัน: คุณอยู่ในรถนี่คือปลายทางของคุณนี่คืออุบัติเหตุตอนนี้บอกฉันคุณสามารถไปที่ปลายทางได้โดยไม่ประสบอุบัติเหตุหรือไม่?
biziclop

ไม่มันมักจะเปลี่ยนเป็น "สมบูรณ์แบบ แต่เราต้องการบ้าน ... " รักการเปรียบเทียบของคุณ :)
jmq

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

20

ฉันเขียนคำแนะนำอย่างละเอียดมาก ๆ สำหรับเครื่องที่โง่มาก


17

ฉันใช้คำอุปมา "เราเขียนสูตรถัก " ซึ่งเป็นมิตรกับคุณยาย

เหตุผล:

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

คำอุปมาที่ดีมากในความคิดของฉัน
พอลนาธาน

เสียงเหมือนถักเป็นทัวริง :) สมบูรณ์
bughi

14

ไม่ค่อยดีเท่าไหร่ แต่เมื่อมีคนบอกให้ฉันซ่อมเครื่องพวกเขาฉันพูดว่า "ฉันเป็นคนที่ออกแบบรถยนต์ฉันไม่ใช่ช่างเครื่อง!"


4
"ฉันเป็นนักดนตรีไม่ใช่คนเก่ง!"
EricSchaefer

@Eric: บทกวีมากขึ้น :)
แมททิวเอ็ม

1
@Eric - มากกว่า "ฉันเป็นนักแต่งเพลงไม่ใช่คนเก่ง ๆ " จริงๆ
Steve314

เดิมทีฉันกำลังคิดอะไรบางอย่างตามสายของอิเล็กทรอนิกส์: "ฉันสามารถประสานสังเคราะห์ แต่ฉันเล่นดนตรีไม่ได้" แต่นี่อาจเป็นประโยชน์ในวงกว้าง: "ฉันสามารถสร้างห้องครัวได้ไม่ได้หมายความว่าฉันจะทำอาหารได้ ."
naught101

12

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

ประกบกับโลโก้ที่คุณสั่งเต่าด้วยวิธีนี้ในการสร้างรูปทรงที่ซับซ้อน


10

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

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

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

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

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

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


ตังเม. คุณได้รับตังเม
ทิม Williscroft

6

คำอุปมาที่ดีที่สุดสำหรับทุกสิ่งนั้นคือตัวมันเอง สิ่งที่แตกต่างจะสูญเสียความแม่นยำ ดังนั้นการเลือกคำอุปมาที่ดีที่สุดนั้นขึ้นอยู่กับว่าคุณต้องการจับภาพอะไรเกี่ยวกับการเขียนโปรแกรม เนื่องจากจะมีคำตอบมากมายให้ที่นี่เกี่ยวกับการเข้ารหัสอุปมาอุปมัยฉันจะตอบด้วยคำอุปมาคลาสสิกสำหรับกระบวนการพัฒนาโดยรวม:

การก่อสร้างอาคาร

แง่มุมที่พบบ่อยที่สุดของคำอุปมานี้ก็คือสถาปนิกทางกายภาพนั้นค่อนข้างคล้ายคลึงกับสถาปนิกซอฟต์แวร์ นี่คือแนวอื่น ๆ ไม่กี่:

  • การเปลี่ยนแปลงที่ถูกกว่าและถูกกว่าที่คุณทำก่อนหน้านี้ นั่นคือคุณสามารถย้ายหนึ่งบรรทัดบนกระดาษในขณะนี้หรือ 10 ตันในซีเมนต์ในภายหลัง
  • อาคารที่ไม่มีแผนที่เหมาะสมจะมีแนวโน้มที่จะยุบ
  • ผู้สร้างพยายามที่จะใช้สิ่งที่ลูกค้าต้องการ หากลูกค้าไม่ได้อธิบายสิ่งที่พวกเขาต้องการให้อาคารดูเหมือน (หรือมีความล้มเหลวในการสื่อสารอื่น ๆ ) มันจะมีค่าใช้จ่ายในการเปลี่ยนแปลง
  • มีกฎของฟิสิกส์บางอย่างที่ไม่สามารถโค้งงอได้ เช่นเดียวกับเรื่องราวที่ 2 ที่มีความกว้างสามร้อยฟุตไม่สามารถสร้างได้บนชั้นที่ 1 กว้าง 100 ฟุตคุณลักษณะ X ไม่สามารถสร้างได้หากไม่มีระบบย่อยที่แข็งแกร่ง Y

แน่นอนเช่นคำอุปมาใด ๆ ก็มีข้อ จำกัด ข้อบกพร่องบางอย่างกับมัน:

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

เช่นเดียวกับการเปรียบเทียบมันขึ้นอยู่กับสิ่งที่คุณพยายามอธิบาย ระวังการพึ่งพาคำอุปมาใด ๆ หรือลูกค้าของคุณจะเริ่มสงสัยว่าภาษีทรัพย์สินในระบบบัญชีเงินเดือนใหม่ของเขาจะเป็นอย่างไร


เพียงแค่นั้นถ้าคุณปรับประตูห้องครัวผิดแนวหลังคาจะไม่ระเบิด เฮ้าส์มีความแข็งแกร่ง แต่ซอฟต์แวร์นั้นมีความแข็งแกร่งเท่ากับเฮ้าส์การ์ดในการเปรียบเทียบ ไม่สามารถหลีกเลี่ยงได้เนื่องจากกฎเกณฑ์ (รุ่น) โดยนัยและชัดเจนจะมีความซับซ้อนมากในไม่ช้า
KarlP

คุณสามารถคัดลอกพิมพ์เขียว! คุณสามารถขยายอาคารได้ตลอดเวลาเช่นเพิ่ม 25m ^ 2 พิเศษสำหรับจากุซซี่ใหม่ของคุณ!
Zolomon

ข้อบกพร่องในการเปรียบเทียบไม่ใช่การใช้ 1x และธรรมชาติ / เสมือนจริงของวัสดุ / ตำแหน่ง (แต่ละบิลด์ไม่ซ้ำกัน) ข้อบกพร่องที่แท้จริงในการเปรียบเทียบสิ่งปลูกสร้างคือพฤติกรรมแบบไดนามิกสำหรับสสารของอาคารกำลังเป็นอุปสรรค จัดให้มีพื้นที่ภายในกิจกรรมที่ถูกกำบังจากพื้นที่และกิจกรรมภายนอก พฤติกรรมแบบไดนามิกสำหรับ "สสาร" ของซอฟต์แวร์กำลังประมวลผลข้อมูล
Huperniketes

ภาพประกอบที่ดีที่จุดเริ่มต้นของโพสต์บล็อกนี้: orestis.gr/blog/2010/11/06/why-i-bill-hourlyฉันจะเขียนคำถาม "อุปมาอุปไมย" ของตัวเอง แต่แล้วฉันก็พบคำถามนี้และพบคำตอบ ชอบมากที่สุดที่ฉันจะให้
ทอดด์วิลเลียมสัน

6

ฉันชอบคริสแม็คมาฮอนในด้านการพัฒนาซอฟท์แวร์เปรียบเสมือนการสร้างสรรค์ดนตรีโดยเฉพาะดนตรีแจ๊ส

นี่คือ Ella Fitzgerald และ Count Basie ทำเพลง One O'Clock Jump เพลงเป็นบลูส์สิบสองบาร์ซึ่งเทียบเท่าแจ๊สของแอปฐานข้อมูลที่มี UI โดยที่ฉันหมายถึงเช่นเดียวกับที่โปรแกรมเมอร์ทุกคนสร้างแอพฐานข้อมูลด้วย UI นักดนตรีชาวอเมริกันทุกคนเล่นเพลงบลูส์แบบสิบสองบาร์ มันเป็นกรอบที่หลาย ๆ หลายเพลงจะถูกแขวนจาก Count Basie ถึง Jimi Hendrix ถึง Ramones

วิดีโอนี้เป็นตัวอย่างที่ดีของการฝึกฝนที่คล่องตัว ฟังว่าเสียงและเปียโนมีอิทธิพลต่อกันและกันอย่างไร นี่เป็นเหมือนการเขียนโปรแกรมคู่และมันก็เหมือนกับ TDD: เสียงทำอะไรบางอย่าง เปียโนตอบสนอง; เปียโนทำอะไรบางอย่าง เสียงตอบกลับ และสังเกตการสบตา คนเหล่านี้ตระหนักถึงสิ่งที่เกิดขึ้นอย่างฉับพลันทันที พวกเขาไม่มีแผ่นเพลง (BDUF) พวกเขามีส่วนร่วมในกิจกรรมที่ใช้ความเข้มข้นและทักษะเช่นเดียวกับการพัฒนาซอฟต์แวร์ที่ดี พวกเขายังทราบอย่างชัดเจนว่ามีผู้ชมเช่นเดียวกับการพัฒนาซอฟต์แวร์ที่ดีควรตระหนักถึงความต้องการของคนที่จ่ายเงิน

นี่คือลิงค์ไปยังโพสต์บล็อกที่เขาพูดถึง: http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html


1
เพิ่งจะโพสต์คำอุปมาดนตรี (ฉันมีปริญญาโทในการแต่งเพลง) แต่เรื่องราวของคริสครอบคลุมได้ดีกว่าที่ฉันสามารถทำได้
อลัน

5

บางครั้งผมหมายถึงการเขียนโปรแกรมที่จะควบคุมซอมบี้ไม่สนใจ สรุปโพสต์บล็อกของฉันเกี่ยวกับเรื่องนี้:

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

ฉันกังวลว่าจะนอนด้วยไฟ LED เล็ก ๆ เหล่านั้นที่มองมาที่ฉัน ...
Xeoncross

5

การเขียนโปรแกรมเป็นเหมือนการสร้างสิ่งต่าง ๆ ด้วยเลโก้ :

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

5

การเขียนโปรแกรมคอมพิวเตอร์เปรียบเสมือนการเลี้ยงลูก ...

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

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


4

การเขียนโปรแกรมเป็นเหมือนการสร้างโรงงานหรือสายการประกอบ

สายการผลิตอัตโนมัติ

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

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


3

การช่วยคนบ้าได้อย่างรวดเร็วผ่านชั้นเรียนคณิตศาสตร์ที่ต้องมีการเขียนเรียงความ


2

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



1

นักเรียนใหม่สำหรับชั้นเรียน CS / การเขียนโปรแกรมเป็นจริงเช่นเดียวกับผู้ใช้ที่ไม่ใช่การเขียนโปรแกรม ตัวอย่างหุ่นยนต์นั้นดี

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

การเขียนโปรแกรมเชิงปฏิบัตินั้นช่วยให้นักเรียนมีทักษะการแก้ปัญหาแม้ว่าพวกเขาจะไม่เกี่ยวข้องกับคอมพิวเตอร์ !!!

หรือแม้ว่านักเรียนจะไม่ได้เป็นโปรแกรมเมอร์

วิทยาลัยและมหาวิทยาลัยบางแห่งก็ใช้เครื่องมือเหล่านั้นในหลักสูตรปีแรก

ฉันสงสัยว่าทำไมโรงเรียนมัธยมหลายแห่งจึงลดการสอนโลโก้และ Karel ...


1

ฉันชอบ Fred Brooks analogy จาก Mythical Man-Month การเขียนโปรแกรมนั้นเปรียบเสมือนการแสดงเวทมนตร์

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

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


1

"[... ] แต่ฉันคิดว่าคุณทำได้ดีกับคอมพิวเตอร์!"

นี่เป็นความพยายามที่จะหลอกให้คนอื่นซ่อมคอมพิวเตอร์ (คุณรู้สึกอยากจะพิสูจน์ว่าพวกเขาผิดหรือเปล่า?) คำตอบมาตรฐานของฉัน:
ฉันเป็นโปรแกรมเมอร์ นั่นเป็นเหมือนวิศวกรยานยนต์ - เขาอาจไม่รู้วิธีแก้ไขเบรกของคุณ '72 Trabant และแน่นอนว่าจะไม่ทำถ้าเขารู้ ช่างจะทำเช่นนั้น!



0

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

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


0

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


0

ฉันมักจะถือเอาการเขียนโปรแกรมเป็นตัวต่อจิ๊กซอว์

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

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

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


-1

มันเป็นเรื่องน่าเศร้า แต่การเขียนโปรแกรมเป็นงานที่สามารถเข้าใจได้โดยการเรียนรู้วิธีการทำเท่านั้น

การเขียนโปรแกรมมีระดับการรับรู้ที่แตกต่างกันและแตกต่างจากด้านที่แตกต่างกัน

ในระดับต่ำมันเป็น "เขียนมากคำแนะนำอย่างละเอียดมากสำหรับเครื่องที่โง่มาก"

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

จากด้านที่แตกต่างกันการใช้เทคโนโลยีเสริมเช่นการควบคุมเวอร์ชันรหัสเอกสารด้วยตนเองการสร้างโครงการและการทดสอบ

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

และในที่สุดก็.

อุปมาสำหรับการเขียนโปรแกรมเป็นวรรณกรรม ก่อนอื่นต้องเรียนรู้อักษร แต่การเขียนนวนิยายเรื่องนี้แม้จะไม่เริ่มต้น

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