ฉันจะรับภาษาใหม่อย่างรวดเร็วได้อย่างไรเพราะฉันรู้จักคนอื่นหลายภาษา [ปิด]


14

คำถามประเภทหนึ่งที่ยังคงปรากฏอยู่ใน Programmers.SE คือวิธีการเรียนรู้ภาษาเฉพาะทำให้คุณรู้จักคนอื่น ๆ หลายคน (มักจะผ่านประสบการณ์หรือการศึกษาจำนวนมาก)

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

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


6
ฉันจะบอกว่าทำมัน เอกสารอย่างเป็นทางการและ Google เป็นแหล่งข้อมูลเดียวที่คุณต้องการ
Fosco

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

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

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

@ Mark Trapp: ขอบคุณที่อธิบายสิ่งต่าง ๆ ให้ฉัน
David Thornley

คำตอบ:


18

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

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

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

ต่อมาหลังจากที่คุณสร้างโครงการหลังจากโครงการหนังสืออ้างอิงที่ดีจะสอนรายละเอียดที่ดี ณ จุดนี้คุณเข้าใจได้ง่ายขึ้น

นอกจากนี้โครงการโดยทั่วไปจะเริ่มต้นเล็กลงและเติบโตในความซับซ้อนตั้งแต่แอพ "Hello World" แบบง่ายไปจนถึงโปรเจ็กต์ขนาดเล็กที่ไม่มีประโยชน์มากไปจนถึงแอปแบบเต็ม ในแง่ของแง่มุมของภาษาที่ฉันมุ่งเน้นมันขึ้นอยู่กับการใช้ภาษา - ฉันไม่เคยเรียนรู้ API หรือเฟรมเวิร์กทุกครั้งที่จะเริ่มต้น (เช่นกับ. NET เป็นต้น) อาจใช้เวลานานเกินไป ฉันเรียนรู้ไวยากรณ์หลักจากนั้นแตกแขนงออกจากนั้นค้นคว้าแต่ละส่วนขยายตามต้องการ ด้วยภาษาแบบโมดูลาร์ที่น้อยกว่าเช่น CSS หรือ XSLT ฉันเพียงแค่เรียนรู้การสร้างที่ได้รับความนิยมสูงสุดก่อนและเพิ่มคนอื่นตามที่ต้องการ


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

โดยทั่วไปโครงการเริ่มเล็กลงและเติบโตในความซับซ้อน - จากแอพ "Hello World" แบบง่ายไปจนถึงโครงการขนาดเล็กและไม่มีประโยชน์อย่างมาก ในแง่ของแง่มุมของภาษาที่ฉันมุ่งเน้นมันขึ้นอยู่กับการใช้ภาษา - ฉันไม่เคยเรียนรู้ API หรือเฟรมเวิร์กทุกครั้งที่จะเริ่มต้น (เช่นกับ. NET เป็นต้น) อาจใช้เวลานานเกินไป ฉันเรียนรู้ไวยากรณ์หลักจากนั้นแตกแขนงออกจากนั้นค้นคว้าแต่ละส่วนขยายตามต้องการ ด้วยภาษาแบบโมดูลาร์ที่น้อยกว่าเช่น CSS หรือ XSLT ฉันเพียงแค่เรียนรู้การสร้างที่ได้รับความนิยมสูงสุดก่อนและเพิ่มคนอื่นตามที่ต้องการ
jqueryrocks

2
คุณสามารถเพิ่มกลับไปที่คำตอบของคุณ? นั่นเป็นข้อมูลที่ยอดเยี่ยม

5

สิ่งนี้ใช้ได้กับฉัน:

  1. อ่านเกี่ยวกับเรื่องนี้
  2. ใช้มัน.
  3. GOTO 1

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

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

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

ดังนั้นจึงเป็นกระบวนการวนซ้ำ ลึกลงไปในแต่ละรอบซ้ำ ไม่มีวันสิ้นสุด. แม้หลังจากใช้ภาษาเป็นเวลา 20 ปีก็ยังมีสิ่งที่ต้องเรียนรู้


คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่คุณหมายถึงโดย "อ่านเกี่ยวกับมัน"? โดยเฉพาะอย่างยิ่งสิ่งที่คุณมุ่งเน้นเมื่อคุณเริ่มอ่านเกี่ยวกับภาษาใหม่ที่คุณต้องการรับ

@ Mark - ดูการแก้ไขของฉัน ... นี่คือสิ่งที่คุณกำลังมองหา?
Guy Sirton

5

คว้าโครงการโลกแห่งความจริง

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

ฉันบังเอิญได้เรียนรู้ SQL ที่นั่นจากนั้นฉันเรียนจบที่วิทยาลัยและคาดเดาว่าฉันมีเวลาง่ายขึ้นด้วยเช่นกัน

หากคุณไม่ต้องการเสี่ยง ...

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

โอกาสที่คุณจะก้าวหน้าเพียงแค่ศึกษารหัส

รับการอ้างอิงทั้งหมดที่คุณสามารถ

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

ชุมชนอื่น ๆ เช่นฟอรัมรายการส่งเมลและที่นี่ถือว่านับเป็นข้อมูลอ้างอิงด้วย


ฉันจะเพิ่ม "คว้าปัญหาโลกแห่งความจริงยาก " เลือกสิ่งที่ต้องให้คุณคอลึกในวันแรก วันแรกของฉันกับ C # ฉันได้หาวิธีโหลด dlls แบบไดนามิกใช้การสะท้อนเพื่อรับคลาสและจากรายการของ mehods ฉันเรียนรู้วันหนึ่งโดยไม่เคยใช้เทคโนโลยี. net มาก่อน
ไบรอัน Oakley

2

มีหลายวิธีในการเรียนรู้ภาษาใหม่ แต่ไม่ใช่ทั้งหมดที่มีประสิทธิภาพเท่ากัน ฉันพบว่าแนวทางทั้งสามนี้ใช้ได้ดีที่สุดสำหรับฉัน:

ทำแผนที่สิ่งที่คุณไม่รู้

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

รับทรัพยากรที่ดีเพื่อช่วยให้คุณเรียนรู้สิ่งที่คุณไม่รู้

คุณอาจต้องการได้รับการอ้างอิงที่ดีเกี่ยวกับสูตรพีชคณิตหรือบางทีคุณอาจต้องการซื้อ " Javascript, ส่วนที่ดี " สำหรับเส้นโค้งการเรียนรู้บางส่วนงานนี้ได้ทำไปแล้วบางส่วน หากคุณพยายามที่จะเรียนรู้ C # จากพื้นหลัง Java (และในทางกลับกัน) มีบทความบล็อกโพสต์และเว็บไซต์ที่จับคู่ความแตกต่างและมีการอ้างอิง / แหล่งข้อมูลเพื่อช่วยคุณเรียนรู้

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

สร้างบางสิ่งบางอย่างที่แท้จริง

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


1

ระบุกระบวนทัศน์การเขียนโปรแกรม (s)

ฉันมักจะระบุว่ากระบวนทัศน์หลักของภาษาคืออะไร ฉันคิดว่าปัญหาแตกต่างกันไปขึ้นอยู่กับกระบวนทัศน์

ระบุสำนวน

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

เขียนรหัส

ฉันมักจะเขียนรหัสการทำงานบางอย่าง ทุกอย่างตั้งแต่ Primes Sieve ไปจนถึง Toy web apps ปัญหาที่ฉันเลือกมักจะเฉพาะเจาะจงกับสิ่งที่ฉันตั้งใจจะใช้ภาษา


1

เพียงดำน้ำใน !!

เมื่อพิจารณาว่าคุณรู้วิธีการเขียนโปรแกรมและรู้หลายภาษาแล้วยกเว้นว่าภาษานั้นมีการเปลี่ยนกระบวนทัศน์ที่ลึกมากฉันก็จะพูดว่า (พร้อมกัน):

  • ค้นหาโครงการสัตว์เลี้ยงเพื่อขับเคลื่อนคุณ
  • และในรายการด้านโปรแกรมปริศนาบางอย่าง

เรียนรู้ฝึกฝนนำไปใช้ (จนพอใจ)

99 Prolog Puzzles คลาสสิก (ที่นี่, 99 Puzzles ใน Scala ) หรือProject Eulerเป็นสถานที่ที่ดีในการมองหา puzzlers ขนาดเล็กเพื่อนำกลับมาใช้ใหม่ หรือแฝงตัวอยู่รอบ ๆ StackOverflow และเขียนคำตอบที่ดีในภาษาเป้าหมายของคุณใหม่พยายามที่จะไม่ทำการเขียนทีละบรรทัด แต่สิ่งที่รวบรวมสาระสำคัญของภาษาใหม่ของคุณ

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

การพูดของชุมชน ...

แบ่งปันและเปิดเผยตัวคุณเอง (ไม่มากเกินไป)

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


0

ฉันรู้ว่าเสียงนี้อ่อนแอ แต่เริ่มเขียนโค้ดบางอย่างแม้ว่ามันจะโง่และใช้ Google เป็นจำนวนมากสำหรับสิ่งต่าง ๆ ตามรูปแบบนี้:

ฉันจะทำ [บางสิ่งจากภาษาหนึ่ง] ใน [ภาษาอื่น] ได้อย่างไร

หากคำเหล่านี้เป็นคำที่ใช้โดยทั่วไปแล้ว

เป็นคำถามที่พบได้บ่อยครั้งที่ฉันไม่พบคำตอบอีกต่อไปแล้วเมื่อฉันพบหน้าเว็บที่อธิบายว่าทำไมมันไม่สามารถทำได้


0

เป็นคำแนะนำเฉพาะสำหรับการใช้ภาษา:

แก้ไขบัก

  1. ค้นหาโครงการโอเพ่นซอร์สที่น่าสนใจในภาษาเป้าหมายโดยเฉพาะโครงการติดตามบั๊กแบบสาธารณะการพัฒนาที่ใช้งานปานกลางและชุดทดสอบที่เหมาะสม
  2. เลือกข้อบกพร่องเพื่อแก้ไขโดยเฉพาะอย่างยิ่งสิ่งที่ทำให้คุณรำคาญเมื่อคุณใช้โปรแกรม
  3. คิดออกว่าเหตุใดโปรแกรมจึงแสดงพฤติกรรมที่บั๊กกี้
  4. เขียนการทดสอบและรหัสเพื่อแก้ไขปัญหา
  5. ส่งแพ็ตช์อัปสตรีม
  6. แก้ไขแพตช์ของคุณจนกว่าผู้พัฒนาต้นน้ำจะมีความสุข
  7. กลับไปที่ขั้นตอนที่ 1 หรือ 2

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

ในทางกลับกันอาจเป็นเรื่องที่น่าหงุดหงิดอย่างยิ่งโดยเฉพาะอย่างยิ่งหากคุณเลือกข้อผิดพลาดที่น่ารังเกียจหรือหากนักพัฒนาปฏิเสธโปรแกรมปรับปรุงของคุณโดยไม่อธิบายสาเหตุ

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