โปรแกรมเมอร์ลืมไวยากรณ์


17

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


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

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

ใน C ++ ฉันมักจะต้องค้นหาไวยากรณ์สำหรับตัวชี้ไปยังฟังก์ชั่น (สมาชิกหรือไม่) เพราะฉันใช้มันไม่บ่อย ... บางทีบางทีบางครั้งไวยากรณ์ก็แปลก ?
Matthieu M.

คำตอบ:


25

ปรัชญาในการเขียนโปรแกรมของฉันคือมันเป็น "สภาวะของจิตใจ" และส่วนที่เหลือคือ "เพียงไวยากรณ์" (เช่นไม่ใช่ (สำคัญ))

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


8
เหมือนกับภาษาพูด: คุณต้องรู้วิธีพูด แต่พจนานุกรมเป็นความช่วยเหลือที่ดี บ่อยครั้งที่คุณรู้ว่าสิ่งที่คุณต้องการที่จะแสดงก่อนที่คุณจะมีคำศัพท์!
Kevin Cantu

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

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

ฉันคิดว่านักพัฒนาที่ 'ก้าวหน้า' มากขึ้นและมีแนวโน้มที่จะมีหลายภาษาภายใต้การควบคุมของพวกเขาและบางครั้งอาจทำให้พวกเขาสับสน ฉันยังคงสับสนกับการประกาศของอาร์เรย์หลายมิติระหว่าง C # และ C ++ เป็นครั้งคราว (คือ "arr [] [] หรือ arr [,]") และต้องค้นหามัน
Steven Evers

28

มันขึ้นอยู่กับสิ่งที่คุณหมายถึง แต่คำตอบสั้น ๆ คือใช่

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

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


8
Heh, ไวยากรณ์ที่ถูกต้องของคำสั่ง switch มักจะทำให้ฉันเสียใจเช่นกัน
George Marian

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

+1 สำหรับไวยากรณ์คำสั่งสวิตช์ - เป็นเพียงเข้าใจยากด้วยเหตุผลบางอย่าง
billy.bob

5
ไม่พูดถึงภาษามากมายที่คนรู้และไวยากรณ์ในบางครั้งสามารถผสมผสานเข้าด้วยกัน
Josaph

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

10

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


+1 ผมจะพิจารณาตัวเองได้อย่างคล่องแคล่วใน C ++ และผมมองขึ้นชื่อฟังก์ชั่นและข้อโต้แย้งในชีวิตประจำวัน std::stringยกตัวอย่างเช่นฉันจะไม่จดจำสมาชิกทุกคน
Michael Kristofik

8

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


4
+1 เห็นด้วยอย่างสิ้นเชิง ตัวแปลงสัญญาณที่กระโดดระหว่างภาษาในอัตรา knots (ฉันสามารถมี 10 ภาษาหรือมากกว่านั้นในแต่ละวันซึ่งครอบคลุมหลายโครงการ) จบลงด้วยปัญหาในการจดจำความแตกต่างที่คลุมเครือระหว่างภาษาที่คล้ายคลึงกันโดยเฉพาะในฟังก์ชันห้องสมุดมาตรฐาน สิ่งนี้แย่ลงเมื่อคุณอายุมากขึ้นฉันสังเกตเห็น
Orbling

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

5

ฉันเขียน C ++ เป็นเวลา> 15 ปีแล้ว แต่ฉันก็ยังไม่รู้ว่ามันเป็นมุมที่เกี่ยวกับการสร้างประโยคแบบลับ ๆ
คุณจะยกตัวอย่างแม่แบบฟังก์ชันอย่างชัดเจนได้อย่างไร และไวยากรณ์ใดที่เชี่ยวชาญเทมเพลตที่มีอาร์กิวเมนต์เท็มเพลตเทมเพลตบางส่วน และอย่าให้ฉันเริ่มต้นด้วยการประกาศฟังก์ชั่นที่ส่งกลับพอยน์เตอร์ไปยังอาเรย์ของพอยน์เตอร์ไปยังฟังก์ชั่นที่ใช้พอยน์เตอร์อาร์เรย์ไปยัง ...

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


4

ฉันอยากรู้เกี่ยวกับ "ไวยากรณ์" ของ Google ที่นี่

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

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

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

แน่นอนว่าไม่ใช่เรื่องที่จะต้องทำกับ Google - ภาษาต่างๆค่อนข้างกว้างในทุกวันนี้และบางคนก็รู้ทุกอย่าง แต่ฉันจะบอกว่าถ้าคุณอ้างว่ามีความสามารถในการใช้ภาษา Google ก็ควรเป็นข้อยกเว้นมากกว่ากฎ .

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

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

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


แสดงความคิดเห็นสำหรับการลงคะแนนหรือไม่ ฉันสนใจอย่างแท้จริงในสิ่งที่ไม่เห็นด้วย
Jon Hopkins

+1 - โทรดีsyntax != api
Jeremy Heiler

3

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


0

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

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