ฉันควรทำอย่างไรเพื่อไม่เชื่อเรื่องภาษา?


52

ตอนนี้ฉันทำงานกับ asp.net และ C # ฉันได้ทำงานที่น่าพอใจใน Java เช่นกัน ฉันกำลังวางแผนอาชีพของฉันในแบบที่ฉันควรจะเป็นผู้ไม่เชื่อเรื่องภาษาสักวันหนึ่ง ฉันต้องเรียนรู้อะไรบ้าง

กระบวนทัศน์แรกของ OOP คือพูดถึงการออกแบบระดับ มีคนอื่นอีกไหม?


2
คุณกำลังพยายาม: หลีกเลี่ยงการถูกระบุว่ามีความยืดหยุ่นในการทำงานหรือการมองเห็นบางอย่าง?
JeffO

2
@ เจฟฟ์ใช่! เพื่อหลีกเลี่ยงการติดป้ายกำกับและไม่ต่อสู้ว่าภาษาของฉันดีที่สุด;)
Gopi

ฉันมีแนวโน้มที่จะจ้างผู้ชายที่มีความเห็นที่แข็งแกร่งซึ่งไม่เห็นด้วยกับฉัน เพราะเขาสามารถเขียนจาวา
Erik Reppen

หากคุณทำเช่นนั้นนายหน้าจะข้ามงานของคุณ
gonzobrains

คำตอบ:


67

ในการเป็นผู้ไม่เชื่อเรื่องภาษาคุณต้องมีประสบการณ์ในทุกรูปแบบและภาษาทั่วไป

  • จำเป็นภาษา (คุณบอกว่าสิ่งที่จะทำทีละขั้นตอนเช่น. - C)
  • เปิดเผยภาษา (คุณบอกว่าเป้าหมายของคุณก็ตัวเลขออกมาว่าจะทำอย่างไรเช่น -. SQL / HTML / เปิดฉาก)

นอกจากนี้:

  • ทำงานภาษา (ฟังก์ชั่นเป็นกุญแจสำคัญในการหลีกเลี่ยงรัฐและผลข้างเคียงที่เป็นเป้าหมายเช่น -. Haskell / OCaml / เสียงกระเพื่อม / F #)
  • เชิงวัตถุภาษา (สถาปัตยกรรมที่วัตถุแค็ปซูข้อมูลที่เกี่ยวข้องและวิธีการที่ทำหน้าที่เกี่ยวกับพวกเขา) เช่น Java / C #)

สไตล์การพิมพ์บางอย่าง:

สไตล์รันไทม์ที่แตกต่างกัน:

  • รวบรวมบางสิ่งบางอย่าง(เช่น - C ++)
  • แปลบางสิ่งบางอย่าง(เช่น - PHP)
  • จัดการบางสิ่ง(เช่น - C # / Java)

สิ่งที่ระดับต่ำกว่า:

  • บางสิ่งบางอย่างค่อนข้างต่ำ (เช่น - C)
  • ภาษาถิ่นของการประกอบ (เช่น - NASM)

ยิ่งไปกว่านั้นฉันอยากบอกว่าคุณต้องมีประสบการณ์ในการเขียนโปรแกรมพร้อมกันและมีบางอย่างเกิดขึ้น คุณควรตรวจสอบให้แน่ใจว่าคุณรู้บางอย่างเกี่ยวกับโดเมนต่าง ๆ เช่นการเขียนโปรแกรมเว็บ (ไคลเอนต์ & เซิร์ฟเวอร์), การพัฒนาไคลเอ็นต์ / เดสก์ท็อปที่หลากหลาย, เกม คุณอาจต้องการเรียนรู้เกี่ยวกับการเขียนโปรแกรมแบบฝังตัวหรือฮาร์ดแวร์เฉพาะ (เช่นเกมคอนโซล) และการพัฒนาอุปกรณ์พกพากลายเป็นโดเมนที่มีความเกี่ยวข้องมากขึ้นเรื่อย ๆ

คนอื่น ๆ ก็บอกว่ามันคุ้มค่าที่จะได้รับประสบการณ์การเขียนโปรแกรมทั่วไปและวิธีการเขียนโปรแกรม Meta

เมื่อคุณเรียนรู้กระบวนทัศน์เหล่านี้หลีกเลี่ยงเพียงแค่เรียนรู้ไวยากรณ์และการเขียนในแบบเก่าของคุณ ฉันเห็น C # devs หลายคนเขียน JavaScript ราวกับว่ามันถูกพิมพ์แบบคงที่ อย่าทำอย่างนี้พยายามเรียนรู้กระบวนทัศน์ทางภาษาและยอมรับมัน

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

อย่าลืมว่าการเขียนโปรแกรมที่ทันสมัยนั้นมักขึ้นอยู่กับกรอบการทำงานดังนั้นการทำความคุ้นเคยกับกรอบทั่วไปและเป็นที่นิยมสำหรับแต่ละภาษาที่คุณเรียนรู้นั้นก็สำคัญเช่นกัน การรู้ C # นั้นไม่เกี่ยวข้องโดยไม่มี. net


9
การประกาศ HTML ในแง่ที่กำหนดเป็นอย่างไร "เป้าหมาย -> การกระทำ"? มันไม่ได้ทำอะไรเลย
เฟลิกซ์โดเบก

3
ภาษาที่ยอดเยี่ยมที่ฉันสามารถแนะนำให้ดูได้ก็คือ Prolog มันแตกต่างจากสิ่งอื่น - ไม่มีฟังก์ชั่น (แต่ความสัมพันธ์ที่ทำงานอย่างใดอย่างหนึ่ง) ไม่มีการควบคุมการไหลที่ชัดเจน (ล่ามแก้ปัญหาทุกอย่างให้คุณ) โครงสร้างข้อมูลที่ยอดเยี่ยมเพียงหนึ่งเดียว ทำอะไรได้บ้างทำการรวมเป็นหนึ่งล้านและการหาข้อสรุปต่อวินาที - และเวลาที่ใช้ในการพัฒนาบางอย่างนั้นสั้นพอ ๆ กับ Python เทียบกับ C / C ++
เฟลิกซ์ดอมเบ

3
@Felix: HTML, target = "ฉันต้องการป้ายกำกับและกล่องข้อความ" การดำเนินการ = เอ็นจิ้นเลย์เอาต์และกราฟิกระบุวิธีการวาด รายละเอียดลงไปที่แต่ละเบราว์เซอร์ คุณเพียงแค่กำหนดสิ่งที่คุณไม่ต้องการทำ ดูที่นี่ ฉันเห็นด้วยแม้ว่ามันไม่ใช่ "ภาษา" จริง ๆ อารัมภบทเป็นตัวอย่างที่ดีกว่าฉันจะอัปเดต
Simon P Stevens

1
+1 สำหรับรายการประเภทที่ดีการเลือกใช้ภาษาอยู่ห่างจากกระบวนทัศน์ในสถานที่ต่าง ๆ เล็กน้อย แต่โดยรวมก็ยอดเยี่ยม
Orbling

2
โดยวิธีการที่คุณควรเพิ่ม "โดเมนที่แตกต่างกัน / ระดับของสิ่งที่เป็นนามธรรม": เว็บ, เว็บแบบโต้ตอบ, เครื่องมือเดสก์ท็อป, เกมบนเดสก์ท็อป, เกมแบบต่อเนื่องไม่ได้ถูกสร้างขึ้นเช่นเดียวกับข้อ จำกัด และระยะห่างของฮาร์ดแวร์ หรือแม้กระทั่งการดำรงอยู่) ชัดเจนยิ่งขึ้นสำหรับผู้ที่ต้องการเข้าใจว่าอะไรคือการไม่เชื่อเรื่องพระเจ้า
Klaim

4

ฉันไม่คิดว่าคุณจะเป็นผู้ไม่เชื่อเรื่องภาษาอย่างแท้จริง ฉันพบว่าฉัน "คิด" ในภาษาปัจจุบันของฉัน (ในขณะนี้ C #)

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


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

@Simon - คุณมีจุดที่ดีเกี่ยวกับการออกแบบสำหรับกรอบงาน ฉันจะอัปเดตคำตอบ
ChrisF

3

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

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

มันก็เหมือนกับการพูดว่าการฝึกฝนทุกศาสนาทำให้ตัวเองไม่เชื่อเรื่องพระเจ้า

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

บางคนบอกว่าโปรแกรมเมอร์ตัวจริงสามารถตั้งโปรแกรมในภาษาใดก็ได้ที่ให้สิทธิ์การเข้าถึงเอกสารของภาษานั้น

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

บางทีคุณอาจต้องการ "language polytheist"

ตัวฉันเองมีความสามารถในหลายภาษา แต่ฉันชอบ OOP เมื่อมันได้รับความนิยม ดังนั้นฉันเดาว่าฉันไม่เชื่อเรื่องพระเจ้า

คุณแทบจะไม่พบใครก็ตามที่ไม่ชอบกระบวนทัศน์หรือภาษาที่ให้เสรีภาพในการเลือก


0

ไม่ใช่แค่ภาษาเท่านั้น Java มีโหมดที่แตกต่างกันมากมายซึ่งคุณสามารถใช้เวลาเป็นปีในการเรียนรู้พวกเขาทั้งหมด คุณสามารถเรียนรู้:

  • คุณสมบัติ J2EE เช่น Messaging และ Persistence และเซิร์ฟเวอร์ต่างๆ
  • ชุดเครื่องมือ JSP และ Apache ที่มุ่งเน้น
  • ant, maven และระบบบิลด์อื่น ๆ (ภาษาของตัวเอง)
  • โลกทั้ง Groovy / Grails
  • apache ทั้งหมดใช้ API ทั่วไป
  • ระบบทดสอบ (เยาะเย้ย JUnit)
  • ผู้สร้าง GUI เช่น Swing, GWT ...

และอีกหนึ่งร้อยสิ่งที่ฉันขาดไป - แค่ภายใน java

หากคุณใช้เวลาหลายปีครอบคลุมความกว้าง (เรียนรู้ทุกภาษา) คุณจะมีปัญหาในการเพิ่มความลึกในการทำงานอย่างมีประสิทธิภาพในหนึ่งในนั้น

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


เพื่อ"โลก Groovy / Grails ทั้งหมด"คุณสามารถเพิ่ม ", Scala / Play ทั้งหมด! 2 โลก, โลกทั้ง JRuby / Rails และโลก Clojure / Noir ทั้งหมด"
Vorg van Geir

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