เป็นภาษาคอมพิวเตอร์ที่พูดได้หลายภาษาหรือไม่ [ปิด]


14

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

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


3
ฉันคิดว่าเมื่อผู้คนแนะนำคนอื่นให้เรียนรู้เกี่ยวกับภาษาใหม่มันไม่ได้เกี่ยวกับการเรียนรู้ภาษาและอื่น ๆ เกี่ยวกับการเรียนรู้กระบวนทัศน์ใหม่ ภาษาหลักสองภาษาของฉันคือ Python และ C ++ การเรียนรู้ Haskell เป็นประสบการณ์ที่ยอดเยี่ยมสำหรับฉันเพราะมันบังคับให้ฉันต้องคิดต่างไปจากที่ฉันคิด
Vitor Py

4
การรู้กระบวนทัศน์สำคัญทั้งหมดช่วยได้มากจริงๆ การเปิดเผยภาษาที่น่าสนใจทั้งหมดอย่างน้อยอาจช่วยถ้าคุณออกแบบภาษาของคุณเอง (และทันทีที่คุณเข้าสู่กระบวนทัศน์การเขียนโปรแกรมภาษาที่มุ่งเน้นภาษาคุณน่าจะทำเช่นนั้น)
SK-logic

4
"ภาษาที่ไม่ส่งผลกระทบต่อวิธีที่คุณคิดเกี่ยวกับการเขียนโปรแกรมไม่คุ้มค่าที่จะรู้" (Alan Perlis) สาธุ

2
@Job การรู้ภาษาการเขียนโปรแกรม 10 ภาษาใช้ความพยายามเพียงเล็กน้อยในการเรียนรู้พื้นฐานของภาษาพูดเดียว
SK-logic

2
@ SK-logic ขึ้นอยู่กับ ฉันพนันได้เลยว่าฉันสามารถสอนเด็ก 6 คนเพื่อพูดภาษาสเปนได้เร็วขึ้นจากนั้นฉันก็สามารถสอนหลามเขาได้
Raynos

คำตอบ:


10

"โปรแกรมเมอร์ควรรู้กระบวนทัศน์ทั้งหมดอย่างน้อย"

ที่ช่วยในการ

ฉันหมายถึงทุกภาษาที่คุณได้ยิน

นั่นไม่ได้ช่วยอะไร แม้ว่าเมื่อคุณรู้กระบวนทัศน์ทั้งหมดแล้วคุณสามารถเรียนรู้ภาษาได้ทุกสัปดาห์

มันเหมาะสมกว่าที่จะใช้เวลาหนึ่งสัปดาห์ในการเรียนรู้ภาษานั้นเมื่อคุณต้องการภาษานั้น

โปรแกรมเมอร์ที่ดีคือโปรแกรมเมอร์ที่ขี้เกียจ

ด้านข้างหมายเหตุ:

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

การออกแบบภาษา:

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

สิ่งที่ฉันแนะนำให้คุณทำแทน:

อ่านรหัสให้สมบูรณ์ 2 อย่างน้อย 3 ครั้ง

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

เทคนิคการเขียนโปรแกรมและทฤษฎีวิทยาศาสตร์คอมพิวเตอร์ยังคงเหมือนเดิม


แต่มีคุณสมบัติย่อย ๆ ที่น่าสนใจมากมายในภาษาและแม้แต่การเรียนรู้ภาษาใหม่จากกระบวนทัศน์ที่รู้จักกันดีสามารถทำให้ใจคุณ (เช่นสำหรับฉันมันคือ Smalltalk)
Anton Barkovsky

@AntoBarkowski นั่นเป็นข้อความที่ผิดอย่าเปรียบเทียบ SmallTalk กับภาษา OO อื่น ๆ Java / C ++ / C # / etc ไม่ใช่ภาษา OO จริง แน่นอนว่า SmallTalk นั้นคุ้มค่ากับการเรียนรู้ แต่มันไม่ใช่กระบวนทัศน์เดียวกัน;)
Raynos

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

3
@ R0MANARMY "<โปรแกรมเมอร์ที่ดี> สามารถเรียนรู้ภาษาในหนึ่งสัปดาห์" ภาษาไม่รวมไลบรารีกรอบงานและ API คำจำกัดความของโปรแกรมเมอร์ที่ดีอาจสูงมาก
Raynos

1
@ R0MANARMY บิตความหมายเล็ก ๆ ที่ไม่สำคัญที่คุณกล่าวถึงอาจใช้เวลามากกว่าหนึ่งชั่วโมงในการทำความเข้าใจ?
SK-logic

4

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

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

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


3

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

ฉันเขียนโค้ด Java / .NET ที่แย่มากซึ่งเป็นนักพัฒนา C ++ เนื่องจากผู้พัฒนา Java ส่วนใหญ่เขียนโค้ด C ++ ที่แย่มาก

ส่วนที่ดีที่สุดเกี่ยวกับการเรียนรู้ภาษาอื่นคือคุณเรียนรู้กระบวนทัศน์ใหม่และอาจมีเครื่องมือที่ดีกว่าสำหรับปัญหาที่เป็นรูปธรรม บอกว่า - คุณต้องการแอพ GUI ที่ไม่ใช่สาธารณะรวดเร็วมาก. NET ไม่สามารถถูกแทนที่ได้

แต่การเรียนรู้ภาษาเพื่อที่คุณจะไม่ใช้ structs ใน. NET หรือไม่รั่วซึมทุกวัตถุใน C ++ ใช้เวลานาน ฉันคิดว่าการใช้หลักการเรียนรู้การออกแบบแพลตฟอร์มและภาษาที่คุณเลือกดีกว่า

แต่นี่เป็นเพียงความคิดเห็นของฉัน


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

@ Raynos: ฉันคิดว่านั่นคือสิ่งที่เขาพูดถึง
Steven Jeuris

1
วิธีที่ฉันชอบเล่นกับภาษาใหม่คือการใช้คอมไพเลอร์เพื่อเซตย่อยของมัน โดยรวมแล้วใช้เวลา 2-4 ชั่วโมงในการทำความเข้าใจภาษาและสามารถระบุและขโมยคุณสมบัติที่ดีที่สุดได้ ไม่เกือบปีหรือแม้แต่วันเดียว
SK-logic

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

2
@Coder ถ้าคุณเข้าร่วมโครงการ C ++ ขนาดใหญ่และมาสัมภาษณ์ด้วยคำเช่น "ฉันได้เขียนโปรแกรมใน 20 ภาษาเป็นเวลา 10 ปีรวมถึง C ++" คุณอาจได้งาน
SK-logic

2

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


ฉันพบว่าพอดแคสต์เช่น SE Radio นั้นดีสำหรับสิ่งนั้น พวกเขามักจะเกี่ยวกับความยาวที่เหมาะสมในการฟังในการเดินทางไปทำงานและคุณสามารถเรียนรู้ได้หลายวิธี แต่มันเป็นรูปแบบทำไม <X> น่าสนใจ
Zachary K

1

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

นอกจากนี้ยังฉลาดในการเรียนรู้ที่จะทำสิ่งต่าง ๆ มากกว่าที่จะทำสิ่งเดียวกัน


1

ฉันทำงานกับหลาย ๆ ระบบที่มีการเขียนส่วนประกอบในหลายภาษา (ผู้กระทำผิดที่เลวร้ายที่สุดต้องการให้ฉันส่งรหัสที่เขียนใน Ada 83, C, Fortran 77, SQL และ DCL ในขณะที่งานสุดท้ายของฉันทำให้ฉันต้องส่งรหัส C ++ และ Java ) ดังนั้นใช่มีกรณีจริงในโลกที่คุณต้องรู้หลายภาษาดีพอที่จะมีประสิทธิผลในพวกเขา (ประสิทธิผล! = ความชำนาญคุณจะไม่เป็นผู้เชี่ยวชาญอย่างลึกซึ้งใน C ++ และ Java และ ... เว้นแต่คุณจะ เป็นคนที่คลั่งไคล้)

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


1

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


0

มันเหมือนกับการเรียนรู้ที่จะพูดหลายภาษา การเรียนรู้พวกเขาทั้งหมดจนถึงจุดที่มีประโยชน์เป็นไปไม่ได้ใกล้ ยึดติดกับสิ่งที่คุณน่าจะใช้และคุณจะดีขึ้น คุณสามารถเรียนรู้ C ++, C # และ Java ได้ค่อนข้างดี แต่การพยายามบีบใน Perl, Python, VB (ไม่ใช่ VB.NET), Ruby และ JavaScript ในระดับมืออาชีพในเวลาเดียวกันนั้นเป็นเพียงความโง่ ในแต่ละวันมีเวลาไม่มากพอที่จะพัฒนาทักษะของคุณให้พร้อมในทุกครั้ง

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