ฉันสามารถพูดได้ว่า“ เรียนรู้” ณ จุดใด


67

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


12
ฉันคิดว่าคำที่คุณมองหาคือ "การเรียนรู้" ภาษา "เรียนรู้" ในบริบทนี้ค่อนข้างแปลก
ปีเตอร์ B

7
"คำต่าง ๆ มีความหมาย: เมื่อคุณมีความหมายคุณสามารถลืมคำพูดได้" - Zhuangzi
jfrankcarr

9
เมื่อคุณไม่ต้องถามคำถามนี้คุณจะได้เรียนรู้สิ่งที่คุณจำเป็นต้องรู้ ...

1
@JarrodRoberson Zhuangzi คนนี้พูดอย่างนั้นเหรอ?
jadkik94

2
ตามที่ LinkedIn มีแถบที่ต่ำมากในการสร้างภาษาการเขียนโปรแกรมในประวัติย่อทักษะของคุณ ... ตามที่คน LinkedIn ของฉันที่เคยเห็นรหัส Java ก่อนที่จะรู้สึกสะดวกสบายในรายการทักษะในส่วนของพวกเขา
Chris Dale

คำตอบ:


70

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

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


15
เงื่อนไขการสนทนาและคล่องแคล่วค่อนข้างเป็นอัตนัยและในขณะที่เหมาะสมกับภาษาธรรมชาติมันเป็นเรื่องยากที่จะเห็นสิ่งที่พวกเขาหมายถึงเมื่อนำไปใช้กับภาษาคอมพิวเตอร์ แม้ว่าจะยังคงอัตนัยทำงานและidomaticอาจทำงานได้ดี ฟังก์ชั่นบอกเป็นนัยว่าคุณรู้ไวยากรณ์ดีพอที่จะเขียนโครงสร้างที่มีประโยชน์ในขณะที่มีความรู้เกี่ยวกับสำนวนหมายความว่าคุณไม่เพียง แต่รู้วิธีการเขียนในภาษา แต่ยังรู้ดีพอที่จะใช้สำนวนภาษาเช่นการใช้usingภาษา C # หรือb, a = a, bและเครื่องกำเนิดไฟฟ้าในหลาม มิฉะนั้น +1
มาร์กบูธ

13
@ MarkBooth คำอธิบายใด ๆ ที่สั้นของคะแนนในการสอบจะเป็นอัตนัยค่อนข้าง ประเด็นก็คือการใช้ความคุ้นเคยที่คนส่วนใหญ่มีอยู่แล้วในระดับความรู้ภาษามนุษย์เป็นแนวทางคร่าวๆเกี่ยวกับความรู้ภาษาคอมพิวเตอร์และจะทำในลักษณะที่เป็นมิตรที่เชิญชวนให้ตรวจสอบเพิ่มเติม Conversational C ++ย่อมาจาก "ฉันคุ้นเคยกับพื้นฐาน แต่คุณอาจต้องช่วยฉันด้วยโค้ดขั้นสูงที่คลุมเครือหรือมีเล่ห์เหลี่ยม"
Caleb

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

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

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

25

ขึ้นอยู่กับว่าใครถาม

บุคคลที่ถามอย่างมีความคิดมีระดับความสามารถที่คาดหวังจากคนที่บอกว่าเขา "เรียนรู้ภาษา"

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

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

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

ดังนั้นผู้ชมของคุณคืออะไร


4
ในการสัมภาษณ์คุณจะรู้ถ้าคุณรู้ ในที่ทำงานคุณรู้หรือไม่ถ้า Google รู้
asfallows

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

18

ฉันคิดว่าผู้คนกำลังมุ่งเน้นไปที่วาระสุดท้ายของคำว่า"เรียนรู้"ซึ่งเป็นความตึงเครียดที่สมบูรณ์แบบนั่นหมายความว่าคุณเรียนรู้เสร็จแล้ว และตามที่ทุกคนกล่าวไว้ภาษาการเขียนโปรแกรมเป็นสิ่งมีชีวิตเหมือนกับภาษาพูด ตัวอย่างเช่นคนที่มีความเชี่ยวชาญใน C # 2 อย่างสมบูรณ์จะดู C # 3 ด้วย LINQ, Lambdas, varคำสำคัญ, initializers วัตถุ / คอลเลกชันและวิธีการขยายและพบว่ามีการเปลี่ยนแปลงมากมายจากสิ่งที่เขาเรียนรู้สำหรับรุ่นก่อนหน้า เช่นเดียวกับที่เกิดขึ้นกับ C # 4 await, asyncคำและอื่น ๆ สร้างภาษาใหม่

และเรากำลังพูดถึงไวยากรณ์ที่นี่ เราลืมว่าภาษาส่วนใหญ่จะจับคู่กับกรอบ C # มี. NET Framework, Java มีกรอบงานของตัวเองเช่นเดียวกับ Ruby, C ++, PHP, และ PERL คิดว่ากรอบการทำงานของภาษาเป็นคำศัพท์และภาษานั้นเป็นเพียงไวยากรณ์ การรู้ภาษาหมายความว่าคุณรู้วิธีสร้างประโยคในภาษา การรู้กรอบการทำงานหมายความว่าคุณสามารถแสดงออกได้ดีในภาษา ในที่สุดเมื่อคุณรู้ไวยากรณ์และคำศัพท์คุณจะต้องเรียนรู้สำนวนเพื่อให้คุณเขียนรหัสเป็น "เจ้าของภาษา"

ฉันว่ามีหลายระดับของการเรียนรู้

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

3
nitpick: awaitจาก C # 5 สิ่งใหม่ที่สำคัญใน C # 4 dynamicเป็น
svick

คุณพูดถูก ... ฉันคอยติดตามเวอร์ชั่น C # ที่จะไปกับ. NET เวอร์ชันใด
Michael Brown

7

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

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


2
การเปลี่ยนแปลงสำนวนลักษณะต่าง ๆ จากที่หนึ่งไปอีกที่หนึ่งและแน่นอนว่าภาษาเปลี่ยนไปตามกาลเวลา หากคุณไม่สามารถพูดได้ว่าคุณ "รู้" หรือ "เรียนรู้" ภาษาเช่น C ++ จนกว่าคุณจะเรียนรู้เกี่ยวกับเรื่องนี้เสร็จแล้วมีเพียงไม่กี่คนที่สามารถเรียกร้องให้เรียนรู้ภาษา C ++ ได้
คาเลบ

1
@Caleb อย่างแน่นอน
Michael Brown

3
หากคุณเรียนรู้สิ่งนี้คุณก็ไม่รู้ด้วยซ้ำว่าภาษาแม่ของคุณซึ่งโง่เกินไป (อย่างน้อยก็สำหรับคนส่วนใหญ่)
superM

@Caleb ยิ่งกว่านั้นหลายส่วนของ c ++ จะดีกว่าเมื่อไม่สนใจเนื่องจาก Carmack และ Torvalds ทั้งคู่ชี้ให้เห็น - ดังนั้น .. การได้เรียนรู้ cpp ทั้งหมดนั้นไม่เป็นประโยชน์อย่างแน่นอน
Morg

3

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

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


2

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


ฉันไม่เห็นด้วย มันอาจเป็นจริงสำหรับภาษาแรกหรือสองที่คุณเรียนรู้ - คุณอาจไม่รู้ว่าจะมองหาอะไรดังนั้นแม้แต่ความล้มเหลวในการออกแบบที่ไพเราะที่สุดก็แยกไม่ออกจากการทำสิ่งที่ถูกต้อง เมื่อคุณเรียนรู้ภาษาไม่กี่ภาษาคุณควรเริ่มเห็นข้อบกพร่องทางภาษาทันทีหลังจากที่คุณเริ่มเรียนรู้ภาษาใหม่ แต่ในขณะที่การพัฒนาของคุณคุณจะถือเอา "แตกต่าง" กับ "ผิด" จนกว่าคุณจะเรียนรู้ภาษาไม่กี่ประเภทแต่ละประเภท (ขั้นตอน, OO, การทำงาน, การประกาศ ... ) การตัดสินของคุณจะถูกสงสัย
Warren Young

2

คำตอบส่วนตัวของฉันคือเมื่อ

  1. ฉันรู้พื้นฐานเกี่ยวกับการเขียนโปรแกรมระดับการผลิตอย่างง่าย
  2. ฉันใช้เวลาอย่างน้อย 3 ชั่วโมงในการแก้ปัญหาที่ดูเรียบง่าย แต่ก็ไม่ได้

จากนี้ไปฉันจะไม่เรียกมันว่าเรียนรู้ แต่เป็นผู้เชี่ยวชาญ


1

ณ จุดที่ใบสมัครหรือส่วนประกอบของคุณสามารถอ่านจดหมายได้เช่นกฎหมายของ Zawinskiซึ่งระบุว่า:

“ ทุกโปรแกรมจะพยายามขยายจนกว่าจะสามารถอ่านจดหมายได้ โปรแกรมที่ไม่สามารถขยายได้จะถูกแทนที่ด้วยโปรแกรมที่สามารถทำได้” ประกาศโดย Jamie Zawinski (ผู้ซึ่งเรียกมันว่า“ กฎหมายของการห่อหุ้มซอฟแวร์”) เพื่อแสดงความเชื่อของเขาว่าทุกโปรแกรมที่เป็นประโยชน์ สิ่งที่ผู้ส่งจดหมายบอกว่าเป็นเพียงผลข้างเคียงของสิ่งนั้น)

สิ่งนี้ได้รับการปรับปรุงเมื่อ RSS กลายเป็นที่นิยมใน "... สามารถอ่านฟีด RSS" และอาจได้รับการอัปเดตในวันนี้เป็น "... สามารถอ่านฟีด Twitter" ;-)


0

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

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

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

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

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

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

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