การเลือกภาษาโปรแกรมอย่างเป็นระบบ [ปิด]


24

ฉันกำลังมองหาวิธีการในการเลือกภาษา ฉันไม่ได้ขอความคิดเห็นเกี่ยวกับภาษา ฉันได้รับมอบหมายให้ดำเนินการเปรียบเทียบภาษาปัจจุบันของร้านค้ากับผู้อื่นที่มีให้ เราเป็นร้านพัฒนาเว็บไซต์

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

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

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

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

มีใครอีกบ้างที่ต้องผ่านการฝึกนี้? หากคุณมีคุณสามารถแบ่งปันขั้นตอนและ / หรือวิธีการที่คุณใช้ในกระบวนการ?


21
CEO วางแผนที่จะใช้เมทริกซ์นี้จริงหรือไม่ในการตัดสินใจเช่น "เราจะใช้ $ {language} เพื่อสร้าง $ {nextBigProject}!" ในการสร้างบางสิ่งที่อาจมีประโยชน์สำหรับสิ่งนี้ (แม้ว่าฉันไม่แน่ใจว่ามันจะมีประโยชน์อย่างจริงจัง ) อาจใช้เวลานานและจะมีการบำรุงรักษาอย่างต่อเนื่องเช่นกัน
FrustratedWithFormsDesigner

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

9
แรกคำถามคำตอบคือ "เราจะต้องมีการเปลี่ยนแปลงที่ทั้งหมดหรือไม่" ปัญหาอะไรที่ไม่ได้รับการแก้ไขจากภาษาที่คุณเลือกในปัจจุบัน?
John Bode

4
Stack Overflow ช่วยนักพัฒนาประเมินเทคโนโลยีได้อย่างไร "เช้านี้ฉันมีเฟรมเวิร์กประมาณ 8 เฟรมต่อหน้าพยายามตัดสินใจว่าฉันจะใช้อัน
ไหน

7
ในทางปฏิบัติคุณอาจขว้างปาเป้าด้วยเช่นกัน ในเวทีเว็บ (โดยเฉพาะอย่างยิ่ง JavaScript, et al) มีตัวเลือกมากมาย (ถ้าไม่ใช่หลายร้อย) มีจุดแข็ง, จุดอ่อน, ความพอใจและความเข้ากันไม่ได้ คุณสามารถวิเคราะห์มันจนตายหรือเพียงแค่เดาการศึกษาไปข้างหน้าและทำการแก้ไขหลักสูตรกลางหากจำเป็น
Daniel R Hicks

คำตอบ:


53

@FrustratedWithFormsDesigner พูดเป็นนัยที่นี่ฉันจะทื่อมากขึ้น: คุณถูกตั้งข้อหางานที่มีราคาแพง แต่ไร้ประโยชน์

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

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

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


6
ฮาฉันรักความกระตือรือร้นที่บ้าบิ่นของย่อหน้าสุดท้าย ฉันจะบอกว่ามันเป็นโดเมนซีอีโอเพราะน่ารำคาญ 6 เดือนที่คุณพูดถึงซึ่งเป็นสิ่งที่คุณต้องบอกเขา / เธอ imho
นาธานคูเปอร์

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

4
เพียงแค่เลือกเสียงกระเพื่อมและทำได้ด้วย
Eric

1
โดย Lisp คุณหมายถึง ClojureScript แน่นอน :-)
Brian Knoblauch

1
+1 เป็นหน้าที่ของคุณในฐานะวิศวกรที่จะถ่ายทอดให้ซีอีโอว่าทำไมมันจึงไม่ใช่วิธีการที่ดี นี่อาจเป็นเรื่องยากเพราะมันดูเหมือนเป็นแนวทางที่ดี แต่ก็จำเป็น
djechlin

25

บางแปรงกว้างในการพิจารณา:

ความนิยมทางภาษา

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

  1. การค้นหานักพัฒนาซอฟต์แวร์ในภาษาที่เป็นที่นิยมง่ายกว่า
  2. การค้นหาเครื่องมือและไลบรารีในภาษาที่นิยมใช้ง่ายกว่า
  3. ผู้มีอำนาจตัดสินใจไม่เข้าใจการแลกเปลี่ยนภาษาดังนั้นพวกเขาจะทำการตัดสินใจอย่างปลอดภัย ("หลาย บริษัท ใช้ภาษานี้ดังนั้นจึงต้องดี")

การบังคับใช้กับโดเมนปัญหา

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

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

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

ความหมายและผลผลิต

บางภาษามีความหมายมากกว่าภาษาอื่น สิ่งที่สามารถเขียนในหนึ่งภาษาโดยใช้โค้ดหนึ่งพันบรรทัดสามารถเขียนเป็นภาษาที่แสดงออกได้มากกว่าโดยใช้โค้ดร้อยบรรทัด ข้อดีคือรหัสร้อยบรรทัดอาจเขียนด้วยภาษาที่ได้รับความนิยมน้อยกว่าโดยผู้ที่มีความเชี่ยวชาญสูงกว่า

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

ยุคของหลายภาษา

ฉันจะสรุปโดยอ้างว่าความปรารถนาที่จะตัดสินใจเกี่ยวกับภาษาเดียวอาจเป็นปัญหาที่ผิดพลาด แอปพลิเคชั่นในวันนี้มักจะเขียนไม่ใช่ในภาษาเดียว แต่มีหลายภาษา แต่ละภาษามีจุดแข็งของตนเองและ (ในทางทฤษฎี) ได้รับการออกแบบมาโดยเฉพาะสำหรับงานที่ใช้ บางโดเมนปัญหา (เช่นตรรกะเว็บเบราว์เซอร์หรือการเข้าถึงฐานข้อมูล) จำเป็นต้องใช้ภาษาที่เฉพาะเจาะจง


7
ฉันจะเพิ่มไปยังจุดสุดท้ายว่าหากคุณต้องการใช้หลายภาษาอาจเป็นประโยชน์ในการพิจารณาแพลตฟอร์มที่รองรับการทำงานร่วมกันระหว่างสองภาษาได้ง่าย (.Net CLR หรือ JVM)
svick

9
@NathanCooper: คุณหมายความว่าคุณไม่เคยเขียนเว็บแอปพลิเคชันใช่หรือไม่ แม้แต่อันเล็ก ๆ ? หรือต้องย้ายแอพมือถือไปยังหลายแพลตฟอร์ม หรือทำงานในที่ฝังตัว? หรือดึงข้อมูลจากฐานข้อมูล SQL?
Robert Harvey

10
@ NPSF3000: โดยธรรมชาติคุณไม่ต้องเปิดเผยวิธีการใช้เวทมนตร์ ฉันเรียก shenanigans
Robert Harvey

9
@ NPSF3000 ในขณะที่ C # อาจเป็นตัวเลือกที่ดีสำหรับสิ่งที่คุณทำ (แม้ว่าการใช้ Unity จะช่วยยืดเวลาออกไปเล็กน้อยเนื่องจากมันได้รับการออกแบบมาอย่างชัดเจนเพื่อให้พวกเขาใช้การยกที่หนักหลายภาษาทั้งหมดสำหรับคุณ) แน่นอนว่าโครงการที่ไม่ใช่เรื่องไร้สาระส่วนใหญ่นั้นมีหลายภาษาในแง่ที่ว่าพวกเขาใช้ SQL และเทคโนโลยีอื่น ๆ แต่ยิ่งไปกว่านั้นหลาย ๆ คนใช้ภาษาการเขียนโปรแกรมที่แตกต่างกันในแบบคู่ขนานหรือเขียนแอปพลิเคชันของพวกเขาในภาษาหนึ่ง ไม่พบคำยืนยันที่ถกเถียงกันอยู่เลย
Chris Hayes

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

5

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

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

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

แทนที่จะพยายามที่จะครอบคลุมทุกภาษาฉันจะหาตัวแทนจากกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกันและประเภทของกรอบและใช้ต้นแบบในแต่ละ

นี่คือรายการคร่าว ๆ ของหมวดหมู่ส่วนหลัง:

  • ไมโครซอฟท์ (อาจมีหมวดหมู่ย่อยฉันไม่รู้อะไรเกี่ยวกับพวกเขา)
  • OOP เฮฟวี่เวทเช่น Drupal
  • OOP ที่มีน้ำหนักเบาเช่นขวดหลาม
  • เล่น / ยก / scalatra โดยใช้ Scala
  • เล่น / ยกโดยใช้ Java
  • เหมือนฤดูใบไม้ผลิ
  • Struts เหมือน
  • รางเหมือน
  • Haskell ตาม
  • Node.js

ที่ส่วนหน้า:

  • JavaScript สไตล์ OOP
  • จาวาสคริปต์ในรูปแบบการใช้งานเช่นเดียวกับขีดล่าง
  • จาวาสคริปต์สไตล์การโต้ตอบเช่นเดียวกับเบคอน
  • Google Web Toolkit
  • ไม้ต้นจำพวก ulmus

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

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


4

ระบุและเสียค่าใช้จ่ายที่เกิดจากกระบวนการพัฒนาที่มีอยู่ในปัจจุบันของคุณเป็น $ A ระบุค่าใช้จ่ายในการเปลี่ยนไปใช้กระบวนการพัฒนาอื่น ๆ เป็น $ B

ถ้า $ A น้อยกว่า $ B ให้หยุด

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

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

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

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