Dijkstra หมายความว่าอย่างไรเมื่อเขาแนะนำผู้เชี่ยวชาญที่ดีเยี่ยมเป็นพิเศษเกี่ยวกับภาษาแม่ของตน [ปิด]


28

Dijkstra เขียนที่นี่ :

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

ฉันไม่เข้าใจส่วนหลังของคำพูดนี้ คุณช่วยอธิบายหรืออธิบายอย่างละเอียดได้ไหม?

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


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

4
ไม่ใช่เรื่องบังเอิญที่โปรแกรมเมอร์ที่ดีมากมักจะเป็นนักเขียนที่ดีเช่นกัน การรู้วิธีแสดงออกความคิดของคุณอย่างชัดเจนเป็นสิ่งจำเป็นสำหรับงานฝีมือทั้งสอง
Jon Purdy

1
ฉันอดไม่ได้ที่จะสงสัยว่าจะมีการตีความคำพูดของ Dijkstra น้อยลงหรือไม่หากพวกเขาเขียนด้วยภาษาพื้นเมืองของเขา (ดัตช์) ที่ (ฉันถือว่า) เขามีความเชี่ยวชาญที่ยอดเยี่ยม
เบรนแดน

คำตอบ:


29

ในขณะที่ฉันเห็นด้วยกับสิ่งที่ alex และ fast_now พูดฉันเชื่อว่าอาจมีการหมุนที่แตกต่างกัน นี่เป็นทฤษฎีของฉันเองและฉันไม่ได้บอกว่า Dijkstra มีความหมายเหมือนกัน

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

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

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


3
+1 นี่คือการตีความครั้งแรกของฉันเกี่ยวกับคำแถลงของ Dijkstra เมื่อฉันอ่านมัน
Rob

1
@quickly_now: "โปรแกรมเมอร์ที่ยอดเยี่ยมหลายคนที่สามารถเขียนโค้ดที่ดีมาก แต่ผู้ที่ขาดความสามารถในการสื่อสารที่ดีในการพูดหรือเขียนอย่างใดอย่างหนึ่ง" ฉันจะโต้แย้งว่า ฉันจะเปลี่ยนที่จากที่ดีมากที่จะได้รับการยอมรับ หลังจาก 30 ปีเป็นผู้รับเหมาที่ฉันได้พบจำนวนมากของการเขียนโปรแกรม คนที่ไม่พูดอาจ - ในที่สุด - ผลิตรหัสการทำงาน แต่โปรแกรมเมอร์ที่ดีก็สามารถเขียนได้หลายภาษาทั้งแบบธรรมชาติและประดิษฐ์
S.Lott

4
สาระสำคัญของการเป็นโปรแกรมเมอร์ที่ดีคือการเป็นนักสื่อสารที่ดี นั่นคือวิธีที่ฉันตีความมัน
Neil

8
@quickly_now, Neil, Onesimus; ฉันคิดว่ามันลึกกว่าการสื่อสารด้วยวาจาหรือลายลักษณ์อักษรเล็กน้อย ฉันเชื่อว่าเขาพูดเกี่ยวกับความสัมพันธ์ระหว่างภาษากับความรู้ความเข้าใจเช่น web.mit.edu/newsoffice/2008/language-0624.html ฉันคิดว่ามันหมายถึงความเชี่ยวชาญมากกว่า tonque (โดยปกติแล้วจะเป็น tonque ดั้งเดิมของมันเนื่องจากเป็นเรื่องปกติที่จะมีความเชี่ยวชาญในภาษาที่สองหรือสาม) บ่งชี้ว่าภาษาศาสตร์จิตที่แข็งแกร่งสร้างขึ้นตรงกับความสามารถในการเขียนโปรแกรม
Rob

1
@OnesimusUnbound ฉันคิดว่า Dijkstra พูดถึงภาษาพื้นเมืองเพราะมันมีเหตุผลที่จะคาดหวังว่าคนจะเก่งในภาษาของตนเอง (ซึ่งในหลาย ๆ กรณี แต่ไม่ใช่ทั้งหมดเป็นภาษาแห่งการเรียนรู้ด้วยตนเอง) แต่ไม่จำเป็นต้องเป็นภาษาที่สอง / สาม . อย่างไรก็ตามในโลกสมัยใหม่มันอาจแตกต่างออกไปตัวอย่างเช่นฉันดีกว่าในภาษาอังกฤษมากกว่าในภาษาของฉันเอง แต่นั่นเป็นเพราะฉันไม่เคยเรียนที่โรงเรียน
DPD

23

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

แนวคิดก็คือการเขียนเกี่ยวกับโค้ดนั้นสำคัญเท่ากับการเขียนโค้ดเอง

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


7

ข้อความที่บอกว่าคุณจำเป็นต้องรู้ภาษาท้องถิ่นของคุณ (เช่น Marathi ในกรณีของคุณ) นี่เป็นสินทรัพย์ที่สำคัญ

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

การรู้หลายภาษาช่วยให้เข้าใจรูปแบบการคิดที่แตกต่างกัน


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

7

เมื่อดูจากส่วนทั้งหมดมันเป็นรายการที่น่าสนใจ แต่มีมาตั้งแต่ปี 1975 มันยุติธรรมที่จะบอกว่าในบางช่วงเวลามีการเปลี่ยนแปลงในช่วงเวลาที่ถูกแทรกแซง

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

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

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


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

@vstrien บอกเพื่อนหน่อยสิว่าคุณจะทำอย่างไรถ้าเพื่อนร่วมงานของคุณพูดภาษาพื้นเมืองต่างกัน นั่นคือสถานการณ์ที่นี่ ร่างกายทุกคนมาจาก "รัฐ" ที่แตกต่างกันของอินเดียและพวกเขามีภาษาที่แตกต่างกัน (ฉันไม่ได้หมายถึงภาษา .. ฉันหมายถึงภาษา) หวังว่าคุณจะเอาหัวของคุณไปรอบ ๆ : P และนี่คือสิ่งที่คำถามของฉัน .. คิดว่าในเฉพาะ lang (i ลาดเทที่จะตั้งแต่ฉันต้องพูดเกือบ 3 Langs 6 ppl diff ในช่วงชั่วโมง) สิ่งที่ฉันอยากจะถามคือถ้านี่คือ goingg ไปจะมีการปฏิบัติที่ไม่ดี
Chani

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

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

1
@temptar: "โปรแกรมเมอร์จำนวนมากทั่วโลกที่ไม่มีพื้นฐานในวิชาคณิตศาสตร์ประยุกต์" ไม่ทำให้คำสั่งนี้ไม่ถูกต้อง จำนวนการสังเกตของคุณเป็น "คนที่ไม่มีการฝึกอบรมทางคณิตศาสตร์อย่างเป็นทางการยังสามารถจัดการเรียนรู้คณิตศาสตร์ประยุกต์บางส่วนที่อยู่เบื้องหลังการเขียนโปรแกรม" ฉันเห็นด้วยกับการสังเกตของคุณ แต่นั่นไม่ได้ทำให้คำสั่งของ Dijkstra (หรือล้าสมัย) เป็นโมฆะเลย แน่นอนมันดูเหมือนเสริม
S.Lott

5

ฉันสงสัยว่าเขาหมายถึงมีความเข้าใจในสิ่งที่คนต้องการจากคุณ - ในคำอื่น ๆ ความสามารถในการสื่อสารด้วยวาจาดี

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


1
ฉันจะแสดงความสามารถในการถ่ายทอดความคิดของคุณกับผู้อื่น หนึ่งคือเพียงที่สำคัญเป็นอีก IMO :)
Demian เบรชต์

1
ฉันเห็นด้วยกับสิ่งที่คุณพูด แต่ฉันไม่คิดว่านั่นคือสิ่งที่ Dijkstra กำลังพูดถึงอยู่เลย
Rob

1
ทั้งหมดนี้ทำให้ฉันนึกถึงชั้นเรียนวรรณคดีภาษาอังกฤษในโรงเรียนมัธยม คุณสามารถโต้แย้งเป็นเวลาหลายชั่วโมงเกี่ยวกับความหมายของผู้แต่ง ฉันมักจะสงสัยว่าทำไมเราไม่ไปและถามพวกเขา โอ้ ... วรรณคดีอังกฤษ บางคนก็ตายไปแล้ว (ฉันคิดอยู่เสมอว่าคุณไม่ควรพยายามตีความ F Scott Fitzgerald มากเกินไป - ทัศนะของเขาเกี่ยวกับโลกนี้เกิดจากการมองผ่านขวดวิสกี้ครูสอนภาษาอังกฤษของฉันก็ไม่ชอบให้ฉันพูดเช่นนั้น)
quick_now

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

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

2

ฉันคิดว่าการใช้ภาษาได้ดีมีประโยชน์

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

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