มันเร็วเกินไปที่จะเรียนรู้ภาษาใหม่หรือไม่? [ปิด]


11

บริบทส่วนบุคคล: ฉันเรียนรู้ C ++ อย่างเป็นทางการในช่วง 6 เดือนที่ผ่านมาที่มหาวิทยาลัย ก่อนหน้านี้ฉันขลุกอยู่ใน JavaScript เป็นเวลาหนึ่งปี ตอนนี้ฉันกำลังพิจารณาการเรียนรู้ Python ในช่วงปิดเทอม

โดยแยกโฟกัสของฉันในขั้นตอนการเรียนรู้ก่อนฉันจะลดประสิทธิภาพของการเรียนรู้ของฉันได้อย่างไร ฉันควรใช้จ่ายเดือนปิดอย่างต่อเนื่องใน C ++? หรือเร็วเกินไปที่จะเรียนรู้ภาษาใหม่หรือไม่?


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

ฉันค่อนข้างสบายใจใน C ++ กับทุกสิ่งที่คุณพูดถึง
ความคาดหวัง

1
ฉันจะวางคำถามของคุณในมุมมอง ภายใน 6 เดือนแรกของการเป็นมหาวิทยาลัยฉันได้รับการแนะนำให้รู้จักกับภาษาการเขียนโปรแกรม 5 ภาษาที่แตกต่างกัน การประกอบ (ฉันลืมแพลตฟอร์ม Moto ที่แน่นอนเหมือนเดิม), C, C ++, Visual Basic 6 และ Java หลังจากนั้นฉันก็เรียนรู้พื้นฐาน, C #, Visual Basic .NET, x86 Assembly หลังจากเรียนจบฉันได้เรียนรู้ภาษาการเขียนโปรแกรมเพิ่มเติมอย่างน้อย 5 ภาษาภายใน 2 ปีแรก
Ramhound

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

คำตอบ:


8

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

ความแตกต่างระหว่างภาษานั้นอยู่ในรายละเอียดเช่นไวยากรณ์และภาษาเฉพาะบางอย่างจะแตกต่างกัน (เช่นการจัดการข้อผิดพลาดที่แตกต่างกันความสามารถของ I / O และคอมไพเลอร์แปลงอินพุตของคุณเป็นสิ่งที่ปฏิบัติการได้) แต่ C ++ และ Python กระบวนทัศน์ดังนั้นการแก้ปัญหาสามารถทำได้ในลักษณะเดียวกันทั้งสองภาษา ทั้ง C ++ และ Python นั้นมีความจำเป็นและ Object Oriented ดังนั้นคุณอาจจะได้รับ Python อย่างรวดเร็วถ้าคุณพอใจกับ C ++ เมื่อคุณเข้าใจไวยากรณ์ใหม่โดยใช้เทคนิคการแก้ปัญหาที่คุณเลือกด้วย C ++ ถ้าคุณต้องการคุณสามารถใช้ Python สำหรับการเขียนโปรแกรมใช้งานได้เช่นกัน แต่ฉันไม่เคยสัมผัสส่วนนั้นดังนั้นฉันจึงไม่สามารถบอกคุณได้มากนัก

มันเร็วเกินไปไหม ฉันไม่สามารถบอกได้จากเรื่องราวของคุณในการสรุปใช่หรือไม่ คุณมีความมั่นใจมากพอที่จะเขียนแอปพลิเคชั่นเต็มรูปแบบ (GUI) ด้วย C ++ หรือไม่? (เช่นใช้ห้องสมุดคุณสมบัติภาษาที่ซับซ้อนเช่น generics และ / หรือ templating เป็นต้น) ฉันคิดว่าการเรียนรู้กระบวนทัศน์ภาษาใหม่นั้นยากกว่าการเรียนรู้ภาษาใหม่ในตระกูลกระบวนทัศน์เดียวกัน เมื่อคุณก้าวเข้าสู่ดินแดนกระบวนทัศน์ใหม่คุณจะต้องใช้เวลามากขึ้นในการทำความเข้าใจวิธีแก้ปัญหาด้วยกระบวนทัศน์นั้น ระหว่างภาษา OO มีความแตกต่างเกี่ยวกับการจัดการกับการสืบทอดและวิธีการส่งผ่านข้อมูลในหน่วยความจำเมื่อคุณส่งพารามิเตอร์ / อาร์กิวเมนต์ไปยังฟังก์ชันที่มีผลต่อประสิทธิภาพ แต่ในการเริ่มต้นสิ่งเหล่านี้มักเป็นปัญหาเล็กน้อยในตอนแรก

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

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

  • สวัสดีชาวโลก (ข้อความบนหน้าจอ)
  • สวัสดีชาวโลกที่เขียนลงไฟล์ (สอนพื้นฐานเกี่ยวกับไฟล์ I / O สำหรับภาษานั้นและบ่อยครั้งที่ I / O ประเภทอื่น ๆ เช่นกัน)
  • ทำการคำนวณมาตรฐานที่มีฐานต่างกัน (10, hex, octal) ทั้งจำนวนเต็มและทศนิยม (สอนคุณเกี่ยวกับการตัดทอนและสัญกรณ์ตัวเลข)
  • ลองใช้ห้องสมุดกราฟิกเพื่อแสดงคำว่าสวัสดีในกล่องโต้ตอบที่สวยงาม (สอนวิธีใช้ไลบรารีและโค้ดภายนอก)

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

6

แน่นอนมันเป็น

ไม่ต้องสงสัยเลยว่าบางครั้งมันเร็วเกินไปที่จะเรียนรู้ภาษาการเขียนโปรแกรมใหม่

กรณีที่ง่ายที่สุดคือถ้าภาษา el-stinko ออกมาและก่อนที่ทุกคนจะชี้ให้เห็นว่ามันไม่เหมาะสมโดยการเรียนรู้มันจะทำให้สมองของคุณเสียหาย คู่รักที่นึกถึง ได้แก่ BASIC FORTH และ APL

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

เครื่องมือที่เราใช้มีอิทธิพลอย่างลึกซึ้งและคดเคี้ยวต่อนิสัยการคิดของเราดังนั้นความสามารถในการคิดของเรา

คู่ต่อสู้ของการดำน้ำเข้าไปในการเขียนโปรแกรมมีชื่อว่า Edsger Dijkstra และเขามีอาชีพที่โดดเด่นมาก เขาได้รับรางวัล ACM Turing Award พร้อมการอ้างอิงดังต่อไปนี้:

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

กระดาษที่เขาลั่นการเรียนรู้ภาษาโปรแกรมก่อนกำหนดคือ:

"ในความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์จริงๆ" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

นอกจากนี้โปรดอย่าเปลวไฟด้วยฉันเป็นเพียงผู้ส่งสาร


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

ฉันคิดว่าฉันต้องการอิโมติคอน ถ้าช่วยได้ฉันลบประโยคนั้นไปแล้ว
DeveloperDon

3

มันเร็วเกินไปที่จะเรียนรู้ภาษาใหม่หรือไม่?

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

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


2

คุณไม่สามารถทำทั้งสองอย่าง? ฉันจะทำโครงการใน C ++ และเรียนรู้บิตของ Python (เพียงเพราะมันยอดเยี่ยมมาก) คุณสามารถแก้ปัญหาที่ ProjectEuler.net โดยใช้ Python

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


ProjectEuler.net ดูยอดเยี่ยม! ขอบคุณสำหรับคำแนะนำ
ความคาดหวัง

2

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

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

แก้ไข : เดิมทีฉันพูดว่าวากยสัมพันธ์ แต่รายละเอียดที่ไม่เกี่ยวกับวากยสัมพันธ์นั้นมีความสำคัญต่ออาจารย์และมีมากกว่านั้น


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

ฉันไม่ได้บอกว่าเป็นไปไม่ได้ที่จะจำเพียงว่ามันยากสำหรับผู้เริ่มต้น ความแตกต่างทางวากยสัมพันธ์ขนาดใหญ่นั้นค่อนข้างง่าย แต่อาจารย์สามารถเลือกรายละเอียดได้อย่างน่ารำคาญอย่างเช่นappend()เทียบกับpush_back()รายชื่อซึ่งเป็นสิ่งที่นักเขียนโปรแกรมที่มีประสบการณ์ต้องค้นหาว่าพวกเขาไม่ได้ใช้คุณสมบัติบางอย่างในบางภาษา ความสามารถในการจำไวยากรณ์ในจุดที่ต้องสงสัยช่วย แต่สำหรับส่วนใหญ่ของงานมันจะไม่จำเป็นต้องใช้
Karl Bielefeldt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.