ฉันจะอธิบายให้ผู้ปกครองของฉันเห็นว่าฉันเรียนภาษาโปรแกรมได้อย่างไร


64

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

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

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

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


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
DW

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

คำถามที่เกี่ยวข้อง
ราฟาเอล

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

2
@nbro ฉันไม่เข้าใจว่าเกิดอะไรขึ้นกับคำถามและฉันไม่แน่ใจว่าคุณตัดสินใจได้อย่างไรว่าคำถามใดคำถามหนึ่งมีประโยชน์มากกว่า
effeffe

คำตอบ:


59

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

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

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

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

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


27
การเรียงไพ่สำรับเป็นวิธีที่ง่ายในการแนะนำแนวคิดของอัลกอริทึม
Morwenn

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

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

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

@JAB มันวิเศษมาก! แต่คุณอาจรู้จัก Quicksort ในใจของคุณอยู่แล้ว ข้อดีของการอธิบายการเพิ่มและการเรียงลำดับคือทุกคนมีอัลกอริธึมการเพิ่มเดียวกัน แต่ไม่มีบุคคลทั่วไปที่มีอัลกอริทึมการเรียงลำดับแบบมีระเบียบ ในทางกลับกันนั่นอาจเป็นข้อได้เปรียบ! คุณต้องอธิบายอัลกอริทึมที่แตกต่างกัน นี่คือเส้นทางที่ฉันใช้เมื่อฉันพูดคุยกับใครบางคนที่มีความคิดด้านคณิตศาสตร์นอก cs และได้รับแนวคิดของอัลกอริทึมที่แตกต่างกันสำหรับงานเดียวกันกับขอบเขตเวลาที่แตกต่างกันและทำไมขอบเขตล่างจึงยาก
Lieuwe Vinkhuijzen

18

ฉันจะลองสิ่งนี้:

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

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

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

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

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

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


12

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

ในการปรุงอาหาร perogies: นำหม้อขนาดใหญ่เค็มเบา ๆ ให้เดือด ปล่อย perogies ทีละตัว พวกเขาจะทำเมื่อพวกเขาลอยไปด้านบน อย่าต้มนานเกินไปหรือพวกเขาจะเปียก! ลบด้วยช้อน slotted

Yikes มาทบทวนคำแนะนำที่ดีของคุณยายกับเรา วางในครั้งเดียว ... ดังนั้นพวกเขาทั้งหมดมีความยาวแตกต่างกันเวลาที่พวกเขาอยู่ในหม้อ เข้าใจแล้ว. พวกเขาจะทำเมื่อพวกเขาลอยไปด้านบน 'พวกเขา' มีกี่คน? ฉันจับแต่ละอันตามที่เกิดขึ้นหรือไม่? ฉันรอ 80% เพื่อลอยไปด้านบนแล้วรับทั้งหมดหรือไม่ นี่มันบ้าไปแล้ว อย่าต้มนานเกินไปหรือพวกเขาจะเปียก! ฉันจะวัดได้อย่างไรเมื่อพวกเขากำลังจะเปียกดังนั้นพวกเขาจะไม่ยาวเกินไป? หากห้าคนปรากฏขึ้นด้านบนในเวลาเดียวกันฉันจะมีเวลาให้พวกเขาทั้งหมดหรือไม่

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

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

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


7

นี่คือวิธีที่ฉันจะลองอธิบายเรื่องนี้กับแม่ของฉัน:

คนที่ใช้ภาษาการเขียนโปรแกรมเพื่อให้คำแนะนำกับคอมพิวเตอร์ ทุกสิ่งที่คอมพิวเตอร์ทำผ่านรหัสคอมพิวเตอร์บางส่วนที่เขียนด้วยภาษาการเขียนโปรแกรมโดยโปรแกรมเมอร์

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

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

บางแห่งใช้ในการสร้างเว็บไซต์และอื่น ๆ เพื่อสร้างแอปพลิเคชันแล็ปท็อป (เช่น Microsoft Word)

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

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

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

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


7

ทางออกที่ดีที่สุดของคุณอาจเป็นการเปรียบเทียบกับภาษามนุษย์

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

มีภาษามนุษย์หลากหลายรูปแบบบางคุณสมบัติที่เราคิดว่าแปลกใหม่ ตัวอย่างเช่น:

  • บางภาษาต้องการให้คุณระบุหลักฐานที่มีความเป็นจริงทุกข้อความ: ไม่ว่าข้อความนั้นจะเกิดจากประสบการณ์ของคุณเองการอนุมานของคุณเองข่าวลือการเก็งกำไร ฯลฯ
  • บางภาษาใช้คำพูดขนาดใหญ่โดยการรวมตัวกัน; แต่ละคำอาจถูกปรับเปลี่ยนอย่างมากเพื่อเข้ารหัสข้อมูลจำนวนมากเกี่ยวกับบทบาททางไวยากรณ์ของมัน ภาษาอื่น ๆแทบจะไม่เคยปรับเปลี่ยนคำเลยและพึ่งพาคำสั่งหรืออนุภาคเพื่อแสดงข้อมูลนั้น
  • ภาษาแตกต่างกันในขนาดคำศัพท์ บางภาษามีคำที่สามารถแปลได้ด้วยการใช้ความระมัดระวัง (เช่น엄친아 ) บางภาษามีการแสดงออกที่ยอดเยี่ยมซึ่งดีมากจนภาษาอื่นยืมมา (เช่น Schadenfreude)
  • บางภาษาไม่มีแนวคิดเกี่ยวกับซ้าย / ขวา คุณต้องแสดงทุกอย่างในแง่ของเหนือ / ใต้ / ตะวันออก / ตะวันตก
  • บางภาษาไม่มีตัวเลข ภาษายังแตกต่างกันในจำนวนของชื่อสีที่พบบ่อย
  • ภาษาแตกต่างกันไปในการออกเสียง ตัวอย่างเช่นอัตราพยางค์จะแตกต่างกันไปโดยที่ภาษาญี่ปุ่นมีแนวโน้มที่จะใช้พยางค์เรียบง่ายจำนวนมากในขณะที่ภาษาจีนช้ากว่า แต่เข้ารหัสข้อมูลเป็นโทน
  • ภาษาแตกต่างกันในความหนาแน่นของข้อมูล หากคุณดูคำแปลภาษาจีน - ภาษาอังกฤษ - ภาษาฝรั่งเศสคุณจะเห็นว่าเวอร์ชั่นภาษาจีนมีขนาดเล็กมากบนกระดาษและภาษาฝรั่งเศสจะใช้พื้นที่มากที่สุด
  • บางภาษาเช่นภาษาอังกฤษมีความหลากหลาย: ทุกคนสามารถยืมคำจากภาษาอื่นได้อย่างอิสระและแปลเป็นภาษาอังกฤษ ภาษาอื่น ๆ เช่นฝรั่งเศสมีร่างกายที่เป็นมาตรฐานที่ต่อต้านการเปลี่ยนแปลง ตัวอย่างเช่นไอซ์แลนด์เป็นอนุรักษ์นิยมอย่างรุนแรงจากธรรมชาติ

มีภาษาที่ดีที่สุดพูดอย่างเป็นกลางหรือไม่? คำตอบอาจขึ้นอยู่กับสิ่งที่คุณพยายามทำ

  • หากคุณพยายามสื่อสารอย่างลับ ๆ ทางวิทยุนาวาโฮน่าจะเป็นทางออกที่ดี (พูดถึงภาษา "เขียนอย่างเดียว" ที่คุณโปรดปราน)
  • หากคุณกำลังพยายามที่จะเขียนคำเตือนถึงคนรุ่นต่อไปในอนาคตและจารึกต้องเข้าใจได้ไม่กี่พันปีนับจากนี้คุณอาจต้องการใช้ภาษาจีน (เนื่องจากจำนวนผู้พูดที่แท้จริงและความเสถียรของระบบการเขียน) หรือ อังกฤษ (ซึ่งเปลี่ยนไปอย่างมากในช่วงสหัสวรรษที่ผ่านมา แต่เป็นที่รู้จักอย่างกว้างขวาง) (C และ JavaScript อาจมีชีวิตอยู่ "ตลอดไป")
  • จีนมีจำนวนมากของโฮโมโฟนเป็นที่ดีสำหรับการเล่นสำนวน (บทกวี Perl)
  • บางทีความเป็นกลางเป็นสิ่งสำคัญซึ่งในกรณีนี้คุณอาจเลือกภาษา (Java ถูกออกแบบมาให้พกพา; C น้อยกว่านั้น)
  • บางทีคุณต้องแสดงความคิดด้วยความแม่นยำอย่างสมบูรณ์และภาษาธรรมชาติจะไม่เพียงพอ คุณต้องหันไปพึ่งอีทคูล !
  • การแปลระหว่างคู่ภาษาบางภาษาอาจเป็นเรื่องยากมาก (เช่นภาษาอาราบิก - อังกฤษ ) เนื่องจากความแตกต่างทางวัฒนธรรมมากมายและความหมายทางวัฒนธรรมด้วยคำบางคำ ในทำนองเดียวกันความคิดบางอย่างอาจไม่สามารถแสดงในภาษาคอมพิวเตอร์บางอย่างได้ง่ายเนื่องจากแนวคิดไม่มีอยู่จริง (เช่นความซ้ำซ้อน)

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

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


1
ปัญหาหนึ่งที่ทำให้เกิดปัญหานี้คือบางคนไม่เคยนึกถึงภาษาธรรมชาติของตนเอง ดังนั้นตัวอย่างภาษาอาจจะยากสำหรับบางคนที่จะเข้าใจเช่นเดียวกับความคิดของภาษาการเขียนโปรแกรม ถ้าคุณรู้ว่าบุคคลนั้น (อย่างน้อย) สองภาษากลุ่มเป้าหมายน่าจะดีกว่า ....
TextGeek

@TextGeek แม้ในภาษาอังกฤษมีภาษาถิ่น ผู้คนถกเถียงกันเกี่ยวกับกฎทางภาษาเช่นเนกาทีฟสองเท่าและประโยคลงท้ายด้วยคำบุพบท ภาษาวิวัฒนาการตลอดเวลาบางครั้งในรูปแบบที่ขัดแย้ง ความนิยมของการส่งข้อความได้นำไปสู่ตัวย่อใหม่ ในภาษาอังกฤษแบบอเมริกันคุณสามารถเปลี่ยนคำนามเป็นเรื่องอื้อฉาวได้โดยเพิ่มคำต่อท้าย "- gate" ฉันไม่คิดว่าคุณจะต้องใช้สองภาษาในการชื่นชมนวัตกรรมและความหลากหลายทางภาษา
200_success

3
  • ภาษาคอมพิวเตอร์ค่อนข้างเกี่ยวกับภาษามนุษย์ พวกเขาใช้คำมาตรฐาน / ทั่วไป / แบ่งปัน พิจารณาว่ามีมนุษย์หลายพันภาษาบางคนตายบางคนอื่น ๆ ที่ใช้งานและคำศัพท์และการใช้งานของพวกเขามีการพัฒนาอย่างต่อเนื่องในช่วงเวลา บางคนสร้างคำศัพท์ใหม่ที่มีประโยชน์เพื่อแสดงแนวคิดที่ไม่สามารถแสดงได้ก่อนหน้านี้ อีกด้านที่ทับซ้อนกันของภาษาคอมพิวเตอร์และภาษาของมนุษย์เป็นหลักไวยากรณ์ บางภาษาเช่นภาษาอังกฤษมีไวยากรณ์ที่ซับซ้อนมาก พิจารณากาลที่แตกต่างและกฎที่ซับซ้อนที่ควบคุมพวกเขา ภาษาอื่น ๆ ไม่ได้มีเดียวกันกาล อีกความสัมพันธ์กับส่วนของการพูดหมวดหมู่เช่นคำนามคำกริยาคำวิเศษณ์คำคุณศัพท์ ฯลฯ ฟังก์ชั่นเหล่านี้คล้ายกับประเภทในภาษาคอมพิวเตอร์ ลองนึกภาพการสร้างภาษาใหม่ด้วยส่วนต่างๆของประเภทการพูดที่ไม่ได้รับการพิจารณาก่อนหน้านี้หรือด้วยการรวมส่วนใหม่ของการพูดที่มาจากภาษาต่าง ๆ ฯลฯ ; ดังนั้นโปรดทราบว่าภาษาศาสตร์มีการเชื่อมต่อกับวิทยาการคอมพิวเตอร์เช่น esp ในทฤษฎีภาษา Chomskian

  • ซอฟต์แวร์และฮาร์ดแวร์มักจะเกี่ยวข้องกับเครื่องยนต์และเครื่องจักรและยังตั้งชื่อตามนี้ มีการเปรียบเทียบซอฟต์แวร์เก่าที่พยายามปรับเปลี่ยนระบบการผลิตที่ซับซ้อนตลอด 24 ชั่วโมงทุกวันเหมือนกับการเปลี่ยนเครื่องยนต์ของเครื่องบินในขณะที่บินอยู่ โปรดทราบว่าเครื่องยนต์เจ็ทนั้นมีความซับซ้อนสูงและเกี่ยวข้องกับข้อกำหนดที่แม่นยำมากของชิ้นส่วนที่สามารถเปลี่ยนแทนได้และที่นี่มีความคล้ายคลึงกับภาษาคอมพิวเตอร์ที่ควบคุมฮาร์ดแวร์ จินตนาการถึงความซับซ้อนทั้งหมดของเอกสารที่อธิบายถึงวิธีการสร้างเครื่องยนต์เจ็ทอย่างสมบูรณ์: ทุกส่วน, วิธีสร้าง, วิธีประกอบเข้าด้วยกัน, ประกอบอย่างไร ฯลฯ พวกเขาถูกสร้าง / เรียบเรียงโดยวิศวกรโดยใช้รูปแบบ / โครงสร้าง / กฎดั้งเดิมที่แม่นยำ ซอฟต์แวร์ค่อนข้างคล้ายคลึงกับสิ่งนี้

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

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


1
ทำไมต้องลงคะแนนอันนี้ ฉันคิดว่ามีข้อมูลเชิงลึกมากมาย หนึ่งอาจไม่เห็นด้วยกับทุกจุด แต่มีความเป็นไปได้มากมายที่นี่ +1
ผล

3

คุณเพียงแค่พูดว่า "ฉันกำลังช่วยคนที่สอนคอมพิวเตอร์ให้ทำงาน"

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


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

@effeffe: แต่พวกเขารู้ว่าคอมพิวเตอร์มีอยู่จริง? และพวกเขาก็มีความคิดว่ามีหลายสิ่งที่เรียกว่า "โปรแกรม", "แอปพลิเคชัน" หรือ "แอพ" แม้ว่าพวกเขาจะไม่เคยใช้คอมพิวเตอร์ด้วยตัวเอง ดังนั้นเพื่อความเรียบง่ายการเขียนโปรแกรมคือ (เหนือสิ่งอื่นใด) ในการสร้างแอพโดยเขียนคำแนะนำที่คอมพิวเตอร์สามารถปฏิบัติตามได้ โดยปกติแล้วจะใช้เวลาและการสอนให้พวกเขาชื่นชมรายละเอียดของการเขียนโปรแกรมหรือวิธีการปรับปรุง แต่ถ้าพวกเขารู้ว่าคอมพิวเตอร์และโปรแกรมดีขึ้นเรื่อย ๆ เมื่อเวลาผ่านไปพวกเขารู้ "เล็กน้อย" เกี่ยวกับคอมพิวเตอร์อย่างน้อย
Steve Jessop

3

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

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


3

นี่คือการเปรียบเทียบสองแบบที่คุณอาจพบว่ามีประโยชน์:

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

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


2

ส่วนใหญ่แล้วคุณมีเหตุผลบางอย่างสำหรับการเรียนภาษา - ใช้เหตุผลนั้น เช่น:

ฉันพยายามทำให้คอมพิวเตอร์และแอปพลิเคชันของพวกเขาถูกลงใช้งานง่ายขึ้นและปลอดภัยขึ้น

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

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

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

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


▲สำหรับแนะนำวิธีการแบบค่อยเป็นค่อยไปและอ่อนโยน
PJTraill

1

ฉันพบว่าการเปรียบเทียบที่ดีที่สุดได้รับการปรับให้เหมาะกับบุคคลที่คุณกำลังคุยด้วย พวกเขาเป็นจิตรกรหรือไม่ อภิปรายว่าสิ่งที่คุณทำนั้นเทียบเท่ากับการสำรวจทฤษฎีการทำพู่กันที่ดีกว่าเฉพาะสาขานี้มีอายุเพียง 60 ปีแทนที่จะเป็น 600! equestrians? เปรียบเทียบกับการพัฒนารองเท้าม้าเฉพาะงานในช่วงหลายปีที่ผ่านมา

หากพวกเขาต้องการเข้าใจที่ดีขึ้นจริง ๆ วิธีที่ฉันชอบที่จะอธิบายก็คือพูดคุยเกี่ยวกับการกรอกแบบฟอร์มภาษีและคำแนะนำในแต่ละบรรทัด ฉันพบว่าคนส่วนใหญ่กว่า 20 คนมีประสบการณ์กับแบบฟอร์ม IRS 1040 และกล่องที่คุณกรอกนั้นค่อนข้างสอดคล้องกับการพูดคุยเกี่ยวกับการกำหนดตัวแปร จากนั้นฉันก็ชี้ให้เห็นว่าซอฟต์แวร์ทำหน้าที่เทียบเท่ากับประมาณ 2 พันล้านนาทีต่อนาที (ตัวเลขที่ทำขึ้น หากคุณกำลังศึกษาภาษาคอมพิวเตอร์มันเป็นเรื่องง่ายสำหรับคนที่จะเข้าใจว่าทำไมคำแนะนำที่ดีกว่าจะสำคัญ =)

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

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


1

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

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

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


-1

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

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

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


ผู้ถามไม่ได้เรียนการเขียนโปรแกรม พวกเขากำลังศึกษาการออกแบบภาษาโปรแกรม
David Richerby

@DavidRicherby นี่คือเหตุผลที่ฉันแนะนำให้ใช้ตัวอย่างของ OP เพื่อดูว่าสูตรค้นหารูปแบบอุปกรณ์พกพาที่แตกต่างกันอย่างไร เห็นได้ชัดว่าสิ่งเหล่านี้แตกต่างกันมาก
Thorbjørn Ravn Andersen

-1

มันวิเศษ!

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

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

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

มหากาพย์ล้มเหลว

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

ปลายตาย

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


1
ฉันไม่เห็นสิ่งนี้เกี่ยวข้องกับคำถาม โดยเฉพาะคำถามที่ถามว่าจะอธิบายทฤษฎีการพิมพ์กับบุคคลทั่วไปได้อย่างไรและทฤษฎีการพิมพ์เป็นแบบคณิตศาสตร์
David Richerby

บางทีเศร้าอาจไม่ใช่ แต่การเขียนโปรแกรมโดยทั่วไปเป็นหนังสือปิดถึง 99% ของประชากรโลก ฉันใช้เวลาพอสมควรในช่วงหลายปีที่ผ่านมาเพื่อพยายามให้ผู้ที่ไม่ใช่โปรแกรมเมอร์เข้าใจการเขียนโปรแกรม แต่ไม่ประสบความสำเร็จ การอธิบายความสลับซับซ้อนและความประณีตของระบบประเภทต่าง ๆ นั้นคล้ายกับการอธิบายฟิสิกส์อนุภาคของอะตอมให้กับคนเหล่านั้น - ดวงตาของพวกเขาจะเคลือบเงาและพวกเขาอาจจะสุภาพ แต่พวกเขาจะไม่ได้รับมัน และก็ไม่เป็นไร - พวกเขาไม่จำเป็นต้องเข้าใจและในทุกโอกาสพวกเขาไม่สนใจว่าพวกเขาไม่เข้าใจ มันก็เพียงพอแล้วที่เราจะทำ :-)
Bob Jarvis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.