การเลือกภาษาโปรแกรม
คำแนะนำจากผู้ชายผมหงอก
มันเกิดขึ้นทุก ๆ สองสามวันที่มือใหม่บางคนเขียนบทความ "ภาษาโปรแกรมใดดีที่สุด" บนสื่อ แทนที่จะตอบกลับทุกกลไกเหล่านี้ฉันให้คุณทำ:
คุณทำไม่ได้
ตราบใดที่คุณอยู่ในนั้นเพื่อเงิน คนอื่นก็ได้เลือกให้คุณแล้ว บางครั้งก็เป็นเพียงบรรพบุรุษของคุณ ส่วนใหญ่แล้วเป็นอุตสาหกรรมที่คุณทำงานอยู่ เมื่อคุณเลือกสายงานของคุณแล้ว คุณจะต้องเผชิญกับการเรียนรู้ภาษาหลักและนอกเหนือจากผู้ที่มีศักยภาพพร้อมกับกรอบการทำงานที่รู้จักกันดี ห้องสมุดและสร้างเครื่องมือ คุณจะเลือกไลบรารี อาจเลือกเฟรมเวิร์กและเมื่อพระจันทร์สีน้ำเงินเปลี่ยนขั้นตอนการสร้างของคุณ แต่มักมาจากชุดตัวเลือกที่ทำงานได้จำกัด
ส่วนใหญ่แล้วภาษาใหม่ๆ จะเข้ามาในบริษัทด้วยการพึ่งพาผลิตภัณฑ์เพียงชิ้นเดียว คุณต้องการ CMS? ยินดีต้อนรับนักพัฒนา PHP ของคุณ สำนักงานอัตโนมัติ Microsoft Dynamics? C# เป็นส่วนหนึ่งของทีมแล้ว แต่นักพัฒนาผลิตภัณฑ์ได้เลือกให้คุณแล้ว
ดัชนีเช่น TIOBE ไม่ได้สะท้อนถึงความนิยมของภาษา แต่เป็นตัวแทนของการขึ้นและลงของผลิตภัณฑ์ อุตสาหกรรม และรูปแบบธุรกิจ
คุณไม่ควร
สำหรับบริษัทส่วนใหญ่ซอฟต์แวร์คือการลงทุนที่สำคัญ ซึ่งหมายความว่าต้นทุนรวมในการเป็นเจ้าของเป็นสิ่งสำคัญยิ่ง เมื่อใดก็ตามที่คุณเลือกภาษา คุณจะกำหนดโครงสร้างต้นทุนสำหรับโครงการทั้งหมด
- มีผู้พัฒนากี่คน? ราคาเท่าไหร่? ต้องมีติวอะไรบ้าง?
- มีไลบรารีและเฟรมเวิร์กใดบ้าง ราคาเท่าไหร่ และเสนอสัญญาบริการหรือไม่
- แล้วการลดความเสี่ยงล่ะ? ห้องสมุดเป็นส่วนหนึ่งของการคัดกรองความปลอดภัยหรือไม่? ฉันจะหาไลบรารี่ที่เหมาะสมได้หรือไม่หากมีความต้องการที่แปลกใหม่ระหว่างการใช้งาน
- โอกาสคืออะไร? เฟรมเวิร์กของคุณจะได้รับการสนับสนุนนานแค่ไหน? ฉันจะหานักพัฒนาจนกระทั่งสิ้นสุดอายุของผลิตภัณฑ์หรือไม่
คุณไม่สามารถ
สมมติว่าคุณทำแจ็คพอตแตก นายจ้างของคุณถูกบังเอิญหรือตื่นตระหนกและต้องการไปตามถนนที่มีคนเดินทางน้อยกว่า แม้ว่าเวลาส่วนใหญ่จะถูกเลือกไปแล้วก็ตาม
ข้อจำกัดของโครงการของคุณจำกัดช่วงของภาษาที่เหมาะสม:
- ฮาร์ดลิมิตเวลาเริ่มต้น รอยหน่วยความจำ ปริมาณงาน และเวลาแฝง
- ค่าใช้จ่ายในการปรับใช้
- ข้อควรพิจารณาด้านความปลอดภัย
- ความพร้อมใช้งานบนแพลตฟอร์มเป้าหมายที่อนุญาต
- การฝัง
- การทำงานร่วมกัน เพื่อนร่วมงานของคุณทำงานกับ JVM, CLR หรือ LLVM? คุณควรทำเช่นกัน
- คุณยังมีทรัพยากรจำกัด ไม่มีกรอบ? ไม่มีห้องสมุดมาตรฐาน? ไม่ไป.
ระบบยืนยันและประเภท
มันกำลังบอกว่า ณ จุดนี้คุณลักษณะของภาษาไม่สำคัญ
การเพิ่มผลผลิตผ่านฟีเจอร์ภาษาเดียวนั้นถูกประเมินเกินจริง บางครั้งก็เกิดขึ้น แต่โค้ดส่วนใหญ่ที่เราเขียนค่อนข้างน่าเบื่อและสามารถทำได้ในภาษาใดก็ได้ การลดสำเร็จรูปช่วยเพิ่มความสามารถในการอ่านสำหรับผู้เริ่มต้น แต่ไม่มากสำหรับผู้เชี่ยวชาญที่เพิ่งอ่านผ่านๆ ไม่มีโครงการใดที่ล่าช้าเพราะนักพัฒนาพิมพ์ไม่เร็วพอ
การยืนยันเป็นสัตว์ร้ายที่แตกต่างกัน
หัวใจหลักของมันคือการแลกเปลี่ยนที่เรียบง่าย: บังคับใช้ข้อจำกัดและรับการยืนยัน ซึ่งมีข้อแม้อยู่ 2 ประการ คือ หากบังคับไม่ได้ คำยืนยันนั้นไร้ค่า หากคุณไม่ต้องการการยืนยัน เหตุใดจึงต้องกังวลเกี่ยวกับข้อจำกัด และแน่นอนว่าส่วนใหญ่แล้วคุณจะแลกกับความชั่วร้ายที่ใหญ่กว่ากับปีศาจที่เล็กกว่าเท่านั้น
ขณะนี้มีข้อยืนยันสำคัญเพียงไม่กี่ข้อที่คุณจะได้รับจากการเลือกภาษา:
- ความปลอดภัยของหน่วยความจำ: การเก็บขยะ การยืม
- การจัดการ null: ความเป็นโมฆะที่ชัดเจน, การตรวจสอบค่า null เป็นต้น
- ความปลอดภัยของเธรด: หน่วยความจำธุรกรรม, การทำงานของอะตอม, CCS, นักแสดง ฯลฯ
- การจัดการข้อยกเว้น: การจัดการข้อยกเว้น
- การเปลี่ยนแปลงไม่ได้: วัตถุถาวร ฯลฯ
ระบบประเภทสามารถใช้เพื่อสร้างการใช้งานบางส่วนของการยืนยันที่สำคัญ แต่ส่วนใหญ่มักมีข้อจำกัดที่รุนแรงและสูญเสียความสามารถในการอ่าน
และระบบประเภทมีค่าใช้จ่าย ยิ่งมีพลังมากเท่าไหร่ ขั้นตอนการคอมไพล์และผูกก็จะยิ่งนานขึ้นเท่านั้น ในระดับที่รุนแรง ประเภทที่ขึ้นต่อกันคือ Turing ที่สมบูรณ์ และในทางทฤษฎีสามารถนำไปสู่โปรแกรมที่ไม่หยุดการคอมไพล์
ในระยะสั้น การพัฒนาด้วยภาษาง่ายๆ พร้อมการพิมพ์แบบรันไทม์สามารถแซงหน้าการพัฒนาด้วยระบบการพิมพ์ที่แข็งแกร่งได้ ในระยะยาว ความจำเป็นในการทดสอบที่ลดลงจะทำให้เครื่องชั่งหันไปใช้ระบบประเภทแทนเสมอ
ถ้าคุณสามารถเลือกภาษาได้ ให้ใช้ระบบแบบที่แข็งแกร่งที่สุดที่คุณสามารถจ่ายได้
ภาษาแรกของคุณคือภาษาที่ใช้แล้วทิ้ง
การเรียนรู้การเขียนโปรแกรมหมายถึงการเรียนรู้วิธีคิดใหม่ ในขั้นตอนนี้คุณต้องพึ่งพาแรงจูงใจและการคิดถึงกองเงินในอนาคตอันไกลโพ้นจะไม่เกิดขึ้น
ย้อนกลับไปในสมัยก่อน เมื่อแมมมอธยังคงท่องไปทั่วโลก คอมพิวเตอร์ของเราเป็นเพียงกล่องเล็กๆ ที่มีแป้นพิมพ์ปิดอยู่ ซึ่งมาพร้อมกับภาษาที่เรียกว่า BASIC มีเพียงสองสิ่งเท่านั้น: มันพอดีกับกล่องและใช้งานมันหมายถึงความพึงพอใจในทันที โค้ดไม่กี่บรรทัดและกล่องส่งเสียงบี๊บหรือแสดงกราฟิก การทำงานอย่างจริงจังกับ BASIC จะทำให้คุณอยู่ในโลกแห่งความเจ็บปวด แต่เป็นการปูทางสำหรับการเรียนรู้ภาษาที่สองและสามของคุณ และทำให้คุณชื่นชมการแลกเปลี่ยนอำนาจเพื่อความเรียบง่าย
ปัจจุบันมีภาษามากมายให้ใช้งาน ซึ่งส่วนใหญ่มีไว้สำหรับการเรียนรู้และการทดลอง สิ่งสำคัญคือมันเกาที่คุณมีในขณะนี้ อยากเขียนเกม ทำบ้านอัตโนมัติ จัดของ ฯลฯ
เมื่อคุณจัดการภาษาแรกได้แล้ว คุณตัดสินใจว่าคุณต้องการทำงานในธุรกิจใด เกม สุขภาพ การศึกษา การป้องกัน ยานยนต์ ฯลฯ ฯลฯ สิ่งนี้กำหนดโปรไฟล์นักพัฒนาเริ่มต้นของคุณ ภาษาและเครื่องมือที่คุณต้องเรียนรู้ ภายในอุตสาหกรรม การเปลี่ยนแปลงของเทคโนโลยีนั้นช้ากว่าและคาดเดาได้มากกว่ามาก ความเชี่ยวชาญทางธุรกิจของคุณมีค่ามากกว่าการขาดความรู้เกี่ยวกับห่วงโซ่เครื่องมือที่ทันสมัยที่สุด หากคุณไม่เชี่ยวชาญ คุณกำลังอยู่ในการแข่งขันหนู เพราะการเสนองานส่วนใหญ่เป็นความต้องการที่สร้างขึ้นใหม่เนื่องจากการเปลี่ยนแปลงของเทคโนโลยี บางคนเติบโตในสภาพแวดล้อมนี้ ส่วนใหญ่เบื่อหน่าย
บทสรุป
ไอทีจะเปลี่ยนแปลงต่อไปในปีหน้า AI และโค้ดต่ำ/ไม่มีโค้ดจะมีบทบาท เราจะเห็นความต้องการที่เพิ่มขึ้นสำหรับคุณภาพโค้ดที่สูงขึ้น เนื่องจากความปลอดภัยจะเข้ามามีบทบาทสำคัญ ดังนั้น ภาษา เฟรมเวิร์ก และเครื่องมือจะเปลี่ยนไป แต่ส่วนใหญ่ไม่ใช่ทางเลือกของเรา





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)