สำหรับฉันฉันเป็นคน C # และ Java ฉันพบว่า 2 ภาษานี้ค่อนข้างคล้ายกันดังนั้นจึงง่ายสำหรับฉันที่จะข้ามกัน ฉันไม่แน่ใจว่าเป็นความคิดที่ดีหรือไม่ที่จะเลือกใช้ภาษาอื่น ความคิดใด ๆ
สำหรับฉันฉันเป็นคน C # และ Java ฉันพบว่า 2 ภาษานี้ค่อนข้างคล้ายกันดังนั้นจึงง่ายสำหรับฉันที่จะข้ามกัน ฉันไม่แน่ใจว่าเป็นความคิดที่ดีหรือไม่ที่จะเลือกใช้ภาษาอื่น ความคิดใด ๆ
คำตอบ:
ฉันสามารถคิดถึงเหตุผลอย่างน้อยห้าข้อในการเรียนรู้ภาษาและดูเหมือนว่าคุณควรจะเรียนรู้ภาษาหนึ่งสำหรับแต่ละเหล่านี้
มันไม่เกี่ยวกับกี่ภาษาที่คุณเรียนรู้ มันเกี่ยวกับการเรียนรู้แนวคิดใหม่ บางภาษาอาจสามารถสอนแนวคิดมากมายให้คุณได้ในขณะที่บางภาษาอาจสอนเพียงหนึ่งเดียว
ถ้าคุณรู้จัก C # คุณอาจจะไม่ได้เรียนรู้อะไรใหม่ ๆ มากมายโดยการเรียนรู้ Java แต่คุณจะทำอย่างไรถ้าคุณเรียนรู้ Haskell
ดังนั้นเมื่อคุณเลือกภาษาใหม่เพื่อเรียนรู้เลือกสิ่งที่จะสอนแนวคิดที่คุณยังไม่รู้
ฉันจะบอกว่าสิ่งที่สำคัญที่สุดคือความสามารถในการเรียนรู้อย่างรวดเร็ว ที่กล่าวว่าเป็นสิ่งสำคัญที่จะต้องรู้ภาษาต่าง ๆ ที่ใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน ตัวอย่างเช่นฉันรู้:
1) Python และ Perl สำหรับหมวดหมู่ภาษาสคริปต์
2) ภาษา C ++ เป็น "framework"
3) Java สำหรับแอปพลิเคชันมือถือ
4) C สำหรับขนาดใหญ่ปริมาณของรหัสเดิม
5) ภาษาที่ล้าสมัยบางอย่างที่ฉันเคยรู้เมื่อฉันยังเด็ก (ขั้นพื้นฐานปาสคาลปัตตาเลี่ยน ฯลฯ )
ฉันจะบอกว่าคุณต้องการอย่างน้อยภาษาหลักและหนึ่งสคริปต์ รู้ C # ฉันจะบอกว่าคุณต้องเรียนรู้ Python หรือ Perl หรือ Ruby ต่อไป (ฉันจะไปกับ Python แต่นั่นเป็นเพียงเรื่องของการตั้งค่า)
เป็นการดีที่จะเรียนรู้ภาษาการเขียนโปรแกรมใหม่หนึ่งภาษาในแต่ละปี แต่แทนที่จะเรียนรู้สิ่งที่คล้ายกับสิ่งที่คุณรู้แล้วฉันจะแนะนำให้คุณเรียนรู้สิ่งที่แตกต่างอย่างสิ้นเชิงเช่น Scala หรือ F # มันจะแสดงวิธีการใหม่ในการทำสิ่งต่าง ๆ และเสริมทักษะการเขียนโปรแกรมของคุณ
คุณควรมีสมาธิในภาษาที่คุณต้องการและการใช้งานสำหรับสิ่งที่คุณกำลังทำ การเรียนรู้ภาษาจริงๆมาจากการฝึกฝนดังนั้นคุณจะได้รับประโยชน์จากภาษานั้นเมื่อคุณฝึกฝน หากคุณกำลังจะเรียนรู้ภาษาใหม่ในเวลาว่างให้ทำโดยการใช้ภาษาในการเพิ่มความซับซ้อนเพื่อให้คุณได้รับความรู้อย่างแท้จริง
ไม่มีสมาธิ มุ่งเน้นการเรียนรู้และการเขียนโค้ดที่สะอาด ชัดเจนแสดงออกง่ายและสำคัญที่สุดไม่ซ้ำซ้อน
ไปสำหรับหลักการของการเขียนโปรแกรมประเภทนั้นพื้นฐาน (ตัวอย่างเช่นการห่อหุ้มสำหรับ OOP นั้นหมายถึงอะไรและหมายถึงอะไร) และเรียนรู้หลักการบางอย่าง
สิ่งนี้จะทำให้งานของคุณง่ายขึ้น สิ่งนี้จะทำให้ง่ายขึ้นสำหรับคนที่ทำงานกับคุณหรือหลังจากคุณ
ใช่คุณต้องรู้จักไวยากรณ์ด้วยเช่นกัน แต่นั่นไม่ใช่สิ่งที่คุณต้องใช้เวลาในการโฟกัสนาน
และคุณต้องเข้าใจเทคโนโลยีที่คุณใช้เช่นกัน แต่สิ่งเหล่านี้สามารถจัดลำดับความสำคัญได้ตามระดับความซับซ้อนที่ธุรกิจของคุณต้องการ
สองอันสุดท้ายไม่ใช่จุดสนใจหลัก แต่เป็นจุดสนใจบางจุด
โปรแกรมเมอร์จำเป็นต้องเชื่อมโยงกับการเขียนโปรแกรมไม่ใช่ภาษา spesific
มากเท่าที่จำเป็นในการทำงานของคุณ
แต่ C # และ Java นั้นใกล้เคียงกับภาษาอังกฤษของอังกฤษและภาษาอังกฤษของสหรัฐอเมริกา คุณอาจเรียนรู้สิ่งใหม่โดยไปที่ Finnish หรือ Navajo
ฉันไม่คิดว่าคุณจะสามารถเชี่ยวชาญภาษาได้โดยไม่ต้องมีความเข้าใจภาษาอื่นมากพอที่จะดูภาษานั้น "จากภายนอก" เหมือนเดิม ภาษาที่แตกต่างกันนำสิ่งอื่นมาไว้ในตารางและแนวคิดที่พวกเขานำมาเป็นสิ่งที่คุณสามารถนำกลับไปใช้กับภาษาหลักที่คุณทำงานด้วย
ดังนั้นเวลาที่ใช้ในการเรียนรู้การใช้ภาษาอื่น ๆ จะไม่สูญเปล่าแม้ว่าคุณจะไม่ได้วางแผนที่จะใช้ภาษาเหล่านี้ในเชิงพาณิชย์
สุภาษิตโบราณคือการเรียนรู้ภาษาทุกปีและแน่นอนฉันจะพูดในช่วงสิบปีแรกหรือดังนั้นคุณต้องทำอย่างนั้น บางทีเกินกว่าที่คุณสามารถเลือกระหว่างการสำรวจบางอย่างที่คุณรู้แล้วในเชิงลึกมากขึ้น (อาจปรับปรุงความรู้ของคนที่คุณเรียนรู้เมื่อไม่กี่ปีก่อน) หรือทำงานกับห้องสมุดเฉพาะมากกว่าการรวบรวมภาษาใหม่อย่างไม่รู้จบ การสำรวจการฝึกฝนการเขียนโปรแกรมผ่านการทำงานกับภาษาที่แตกต่างกันแน่นอนช่วยในการพัฒนาของคุณเป็นโปรแกรมเมอร์
ภาษาการเขียนโปรแกรมยอดนิยมเช่น C # และ Java จะช่วยให้คุณใช้สถานที่ส่วนใหญ่ได้อย่างมีความสุข แต่ไม่แตกต่างกันพอที่จะเรียนรู้วิธีการแก้ปัญหาแบบใหม่ ฉันคิดว่ามีบางภาษาที่คุณทานด้วย (ภาษาที่คุณใช้ในการทำงาน) และอื่น ๆ ที่คุณเล่นด้วย ทั้งสองมีวัตถุประสงค์
ฉันพบว่าด้วยการเรียนรู้ภาษาการเขียนโปรแกรมใหม่ฉันได้เรียนรู้วิธีการใหม่และวิธีการแก้ปัญหาที่หรูหรา มันไม่เกี่ยวกับจำนวนภาษาหรือความถี่ที่คุณเลือกพวกเขา การเรียนรู้การเขียนโปรแกรมภาษาแต่ละภาษานั้นมีมุมมองที่ไม่เหมือนใครซึ่งจะบังคับให้คุณเข้าใกล้ปัญหาด้วยแนวคิดใหม่ หลายครั้งที่คุณค่ามาจากการเรียนรู้สิ่งที่คิด
ฉันเล่นกับ Smalltalk และฉันชอบมาก ภาษาเป็นเพียงความสุขในการพัฒนาด้วย เมื่อคุณคุ้นเคยกับสำนวนพวกเขาจะช่วยให้คุณแสดงออกด้วยรหัสของคุณมากขึ้น ฉันไม่พลาดการพิมพ์คงที่ที่คุณมีใน Java / C ++ / C # เลย ข้อมูลทั่วไปที่เราอาศัยอยู่ในภาษาที่พิมพ์แบบคงที่ของเรานั้นถูกสร้างขึ้นเพื่อแก้ไขข้อ จำกัด ของการพิมพ์แบบคงที่
ฉันใช้ Ruby และ Ruby on Rails เป็นประจำแม้ว่าจะไม่ได้รับค่าจ้างในตอนนี้ หลักการออกแบบของรูบี้คือ "การเพิ่มความสุขโปรแกรมเมอร์" คุณต้องรักความรู้สึกนั้นและส่วนใหญ่ฉันคิดว่ามันให้
ในที่สุด Java จะใช้วิธีกระเพื่อมและ Smalltalk และ C # จะตามหลังชุดสูท จะมีอะไรเกิดขึ้นเพื่อแทนที่พวกเขา ในตอนท้ายของวันถ้าคุณรู้วิธีแก้ปัญหาและคุณมีหลายวิธีในการแบ่งส่วนและแก้ไขปัญหาคุณจะสามารถหางานทำและเลือกภาษาที่คุณต้องการ
เมื่อพูดถึงการรักษาทักษะให้ทันสมัยและมีความยืดหยุ่นฉันคิดว่าคุณควรพยายามเรียนรู้ภาษาการเขียนโปรแกรมใหม่อย่างน้อยหนึ่งภาษาทุก ๆ 6 เดือนหรือมากกว่านั้น และฉันหมายถึงภาษาที่แตกต่างกันมาก
ดังนั้นในขณะที่การเรียนรู้เพิ่มเติมของ. NET Framework ในขณะที่ใช้ C # หรือ Java frameworks ช่วยในการรักษาความยืดหยุ่นเรียนรู้ Haskell, Smalltalk, Scala, Clojure หรือ Ruby จะขยายเทคนิคของคุณและช่วยให้คุณคิดในรูปแบบที่แตกต่างกัน กลับไปที่ภาษาหลักของคุณและบางอย่างอาจช่วยคุณดำเนินการต่อไปถ้า Java สิ้นสุดสภาพการเป็นราชาแห่งขุนเขา
หากคุณไม่เคยเรียนรู้ C มาก่อนถึงแม้ว่ามันจะถูกนำมาใช้กับไวยากรณ์ความคิดอาจแตกต่างกันมาก การรู้ในเชิงลึกและดียิ่งกว่านั้นคือการเข้าใจถึงวิธีการเขียนโค้ด OO ในภาษานี้ซึ่งดูเหมือนว่าเป็นขั้นตอนเท่านั้น
ฉันขอแนะนำให้อ่านหนังสือของ Bruce Tate "Beyond Java" ซึ่งเน้นถึงอันตรายของการเป็นเพียงหนึ่งภาษาเท่านั้นโดยเน้นการเพิ่มขึ้นและลดลงของ C ++ แม้ว่า C ++ นั้นยังห่างไกลจากความตายและยังเหลืออีกหลายสิบปี แต่มันก็ถูก จำกัด มากขึ้นที่จะใช้เฉพาะในสถานการณ์ที่ไม่สามารถได้รับประโยชน์จากการเพิ่มผลผลิตในภาษาอื่น ๆ ในทางตรงกันข้าม Sinatra กรอบทับทิมช่วยให้คุณสร้างบริการเว็บอย่างง่ายในรหัสประมาณ 6/7 บรรทัดรหัสเทียบเท่า C ++ อาจเป็นลำดับความสำคัญที่ใหญ่กว่านี้
เมื่อคุณไม่ใช่เจ้าของภาษาอย่างน้อยที่สุดคุณต้องมีสมาธิในการพัฒนาภาษาอังกฤษของคุณภาษาอังกฤษฉันกำลังบอกว่าตามประสบการณ์ของฉัน การเข้าใจภาษานั้นช่วยฉันได้มาก
สื่อการเรียนรู้ที่ดีทั้งหมด (หนังสือบทความรหัส ฯลฯ ) สำหรับการเรียนรู้ภาษาการเขียนโปรแกรมเทคโนโลยีและแนวคิดใหม่ที่เขียนด้วยภาษาอังกฤษ
ภาษาเป็นเครื่องมือในการทำงานให้เสร็จ ภาษาบางภาษานั้นดีสำหรับปัญหาบางประเภทโดยทั่วไปแล้วภาษาอื่น ๆ ก็ดีสำหรับการแก้ปัญหาทุกประเภท ฉันแนะนำให้เรียนรู้ภาษาใหม่ ๆ เมื่อพวกเขาออกมา อย่าหมกมุ่นอยู่กับสิ่งที่ทันสมัยในเดือนนี้ แต่เรียนรู้สิ่งที่พวกเขาสามารถทำได้สิ่งที่พวกเขาทำได้ดี คำแนะนำของฉันคือ 1 ภาษาใหม่ต่อปี พวกมันออกมาเร็วกว่านั้น แต่คุณต้องการใส่เครื่องมือใหม่ลงในกล่องเครื่องมือของคุณไม่ใช่เด็กตัวใหม่ที่ทันสมัยในบล็อก
บทความหนึ่งที่พูดถึงความแตกต่างในภาษาคือ "การตีค่าเฉลี่ย" ของพอลเกรแฮม ฉันขอแนะนำให้อ่าน แต่ส่วนสำคัญส่วนหนึ่งอยู่ที่นี่ (เขาใช้ "Blub" เป็นภาษาสมมุติเพื่อที่คุณจะได้ไม่ต้องเถียงกับสิ่งที่คุณสามารถทำได้):
หรือวิธีการเกี่ยวกับ Perl 4? ระหว่าง Perl 4 และ Perl 5 การเพิ่มคำศัพท์จะถูกเพิ่มเข้าไปในภาษา แฮ็กเกอร์ Perl ส่วนใหญ่จะยอมรับว่า Perl 5 มีประสิทธิภาพมากกว่า Perl 4 แต่เมื่อคุณยอมรับแล้วคุณยอมรับว่าภาษาระดับสูงหนึ่งภาษาอาจมีประสิทธิภาพมากกว่าอีกภาษาหนึ่ง และตามมาอย่างไม่ลดละที่ยกเว้นในกรณีพิเศษคุณควรใช้พลังที่มีประสิทธิภาพที่สุดที่คุณจะได้รับ
ความคิดนี้ไม่ค่อยตามไปสู่ข้อสรุปแม้ว่า หลังจากอายุหนึ่งโปรแกรมเมอร์ไม่ค่อยสลับภาษาโดยสมัครใจ ไม่ว่าผู้คนจะคุ้นเคยกับภาษาอะไรพวกเขามักจะคิดว่าดี
{snip}
ตราบใดที่โปรแกรมเมอร์ Blub สมมุติของเราดูถูกพลังต่อเนื่องเขารู้ว่าเขาดูถูก ภาษาที่ทรงพลังน้อยกว่า Blub เห็นได้ชัดว่าทรงพลังน้อยลงเพราะพวกเขาขาดคุณสมบัติบางอย่างที่เขาคุ้นเคย แต่เมื่อโปรแกรมเมอร์ Blub สมมุติฐานของเรามองไปในทิศทางอื่นเพิ่มพลังความต่อเนื่องเขาไม่ทราบว่าเขากำลังมองหา สิ่งที่เขาเห็นเป็นเพียงภาษาแปลก ๆ เขาอาจคิดว่าพวกเขามีอำนาจเทียบเท่ากับ Blub แต่สิ่งที่มีขนดกอื่น ๆ ทั้งหมดนี้ถูกโยนเข้ามา ร้องไห้สะอึกสะอื้นดีพอสำหรับเขาเพราะเขาคิดในร้องไห้สะอึกสะอื้น
เมื่อเราสลับไปยังมุมมองของโปรแกรมเมอร์โดยใช้ภาษาใดก็ได้ที่สูงขึ้นต่อเนื่องของพลังงานอย่างไรก็ตามเราพบว่าเขากลับมองดู Blub คุณจะทำทุกอย่างใน Blub ได้อย่างไร? มันไม่มีแม้กระทั่ง y
โดยอุปนัยผู้เขียนโปรแกรมเพียงคนเดียวที่สามารถเห็นความแตกต่างของอำนาจระหว่างภาษาต่าง ๆ คือผู้ที่เข้าใจผู้ที่มีอำนาจมากที่สุด (นี่อาจเป็นสิ่งที่ Eric Raymond มีความหมายเกี่ยวกับ Lisp ทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้น) คุณไม่สามารถไว้วางใจความคิดเห็นของผู้อื่นได้เนื่องจาก Blub Paradox: พวกเขาพอใจกับภาษาใดก็ตามที่พวกเขาใช้เพราะมันกำหนด วิธีที่พวกเขาคิดเกี่ยวกับโปรแกรม
http://www.paulgraham.com/avg.html
แอปพลิเคชั่นส่วนใหญ่ที่เราจัดส่งนั้นเขียนด้วย C # หรือ VB เมื่อเราต้องการเพิ่มการเขียนสคริปต์ลงในแอปพลิเคชันเราเลือก Python (Lua เป็นตัวเลือกรองอันดับหนึ่ง) เรากำลังเรียนรู้ F # เพราะสามารถทำสิ่งใหม่ ๆ ที่มีขนดกยากที่จะอธิบายและเข้าใจได้ถ้าทุกคนรู้ว่าเป็น C # / Java / VB
ก่อนอื่นมีหลายภาษาที่ยากมากที่จะหลีกเลี่ยงสำหรับโปรแกรมเมอร์ส่วนใหญ่: javascript, sql, c, ฯลฯ ดังนั้นคุณอาจจะคุ้นเคยกับพวกเขาพวกเขาจะไม่ออกไปไหน
มันเป็นความคิดที่ดีที่จะรู้ภาษาสคริปต์เป็ดพิมพ์ ... เช่นหนึ่งใน perl, python, ruby, lua และอื่น ๆ สิ่งเหล่านี้มีประโยชน์อย่างมากในการแก้ไขปัญหามากมาย
สำหรับดีขึ้นหรือแย่ลงคุณอาจจะเจอกับ c # และ / หรือ java ในบางจุดเช่นกันพวกมันค่อนข้างแพร่หลาย
ไม่ว่าในกรณีใด ๆ ผู้เขียนโค้ดเหล่านั้นฉันรู้ว่าใครหลีกเลี่ยงการหยิบเครื่องมือที่น่าสนใจอย่างชัดเจนดูเหมือนว่ามีโลกทัศน์ที่ซ่อนอยู่และมีผลกระทบ จำกัด
สิ่งนี้อาจกลายเป็นอีกเรื่องหนึ่งที่ผู้เชี่ยวชาญกับการอภิปรายทั่วไปในแง่หนึ่ง บางคนอาจใช้เวลานานในการรู้จักภาษาเดียวกับความลึกที่ยอดเยี่ยมซึ่งทำงานได้ดีสำหรับพวกเขา คนอื่น ๆ อาจต้องการที่จะรู้เพียงเล็กน้อยเกี่ยวกับภาษาที่แตกต่างกันซึ่งทำงานได้ดีสำหรับพวกเขา คนส่วนใหญ่อยู่ระหว่างสุดขั้วทั้งสองนี้
หากคุณต้องการคำแนะนำเกี่ยวกับภาษาในการสำรวจที่นี่เป็นแนวคิดบางประการ:
ฟังก์ชั่นการเขียนโปรแกรม - Haskell หรือ Lisp จะเป็นตัวอย่างที่นี่และการปรับเปลี่ยนกระบวนทัศน์อาจเป็นเรื่องของหัวหน้าช่างกลึงในระดับหนึ่ง
ฐานข้อมูลเฉพาะ - PL / SQL หรือ T-SQL เป็นสิ่งที่อาจเป็นประโยชน์หากคุณต้องการทำงานแบ็คเอนด์มากขึ้นด้วยระบบที่ต้องการฐานข้อมูลสำหรับการใช้งานบางอย่าง
UI web languages - ActionScript หรือ Javascript จะเป็นตัวอย่างของภาษาที่ใช้ใน Rich Internet Applications แม้ว่า AIR สามารถทำให้แอปพลิเคชันบนเดสก์ท็อปบางตัวใช้การโทรผ่านเว็บในบางกรณีเช่น Twhirl โดยใช้ Twitter API
สิ่งเหล่านี้เป็นเพียงแนวคิดและขึ้นอยู่กับว่าคุณต้องการให้สิ่งเหล่านี้เป็นประโยชน์หรือไร้ประโยชน์สำหรับคุณ ขอให้โชคดีกับสิ่งที่คุณเลือก
โปรแกรมเมอร์ต้องการรู้สามภาษา: C, อังกฤษ, และ Something Else
C เป็นภาษาหลักมากมันอยู่ใกล้กับเครื่องและมีกฎไวยากรณ์ที่ใช้ร่วมกับภาษาระดับสูงหลายภาษา C บังคับให้คุณคิดถึงสิ่งต่าง ๆ เช่นโครงสร้างข้อมูลในแบบที่แตกต่างจาก Java นอกจากนี้ Python และ Ruby vms ยังมีอยู่ใน C และคุณสามารถอินไลน์ C เป็นทั้งสองภาษาเมื่อคุณต้องการเพิ่มความเร็ว
ภาษาอังกฤษเป็นภาษากลางของการเขียนโปรแกรม หนังสือรายงานทางเทคนิคเว็บไซต์ด้านเทคนิคและเอกสารวารสารส่วนใหญ่ออกมาเป็นภาษาอังกฤษก่อนและบางครั้งก็เป็นภาษาอังกฤษโดยเฉพาะ นอกจากนี้หากภาษาอังกฤษไม่ใช่ภาษาแรกของคุณการเรียนรู้ภาษาอังกฤษจะขยายชุดเครื่องมือของคุณสำหรับจัดการกับแนวคิด (สิ่งนี้เหมาะสำหรับผู้ที่พูดภาษาอังกฤษในการเรียนรู้ภาษาอื่นเช่นกัน)
บางสิ่งบางอย่างควรเป็นภาษาที่ไม่ได้เป็นขั้นตอนหรือไม่ได้พิมพ์แบบคงที่หรือเป็นวัตถุที่มุ่งเน้นอย่างรุนแรงหรือในทางใดทางหนึ่งเป็นเพียงพื้นฐานแตกต่างจาก C. Haskell, Scala, Python, Ruby, ภาษา Lisp บางอย่าง .
หลังจากนั้นคุณสามารถเรียนรู้สิ่งที่สถานการณ์เฉพาะของคุณต้องการเช่น C # หรือ Java