ฉันควรเลือกภาษาโปรแกรมที่ใช้งานได้หรือไม่


10

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

ดังนั้นฉันเดาว่ามันจะโดนฉัน ฉันควรจะเขียนโปรแกรมฟังก์ชั่นแทน?
แก้ไข: ฉันอาจมีความเข้าใจผิดเกี่ยวกับการตั้งโปรแกรมการทำงาน

ปัจจุบันภาษาที่ฉันเลือกคือ C # และฉันมาจากพื้นหลัง C ++ ฉันทำงานเป็นนักพัฒนาเกม แต่ตอนนี้ฉันว่างงาน

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

ฉันควรเลือกภาษาที่ใช้งานได้หรือไม่ หนึ่งในปัจจัยความกลัวของฉันคือการทำให้ Visual Studio สะดวกสบาย


คุณสามารถลอง F # ได้หากปล่อยให้ Visual Studio เป็นตัวจัดการดีล
อดัมเลียร์

มันไม่ใช่ตัวจัดการ ฉันแค่ไม่ได้ลองทางเลือกอื่น ๆ อีกมากมาย ฉันเดาว่าฉันกลัวที่จะทำงานโดยไม่ต้องใช้ระบบ Intellisense, refactoring หรือเครื่องมือที่คล้ายกันและมีความคิดที่ว่าคุณจะต้องเขียนโค้ดในโปรแกรมแก้ไขข้อความธรรมดาอีกครั้ง
แถลงการณ์

ขณะนี้ฉันตกงาน ... ไม่ควรแก้ไขหรือไม่
งาน

ฉันจะพยายามทำงานโดยไม่ใช้ VS สักครู่ คุณอาจพบว่าการทำงานในแบบมินิมอลลิสต์อาจสนุก
Zachary K

@ งานใช่ แต่ฉันได้รับการตีด้วยชุดของเหตุการณ์ที่ค่อนข้างเลวเมื่อเร็ว ๆ นี้ :) ฉันเสียหายเท้าของฉัน (ดีฉันไม่รหัสด้วยเท้าของฉัน แต่ยัง ... ) เพิ่งเพิ่งหลังจากออกจากงานเก่าของฉันใน ค้นหาใหม่
คำชี้แจง

คำตอบ:


5

ใช่

การเรียนรู้สิ่งใหม่ ๆ ควรจะสนุก และการเรียนรู้วิธีใหม่ในการโปรแกรมควรทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้น ตรวจสอบหนึ่งใน Haskell หรือ Erlang ซึ่งทั้งคู่ใช้งานได้ แต่ต่างกันมาก หากคุณเลือก Haskell ไปพบการเจรจาเล็กน้อยโดย "Simon Payton Jones" ใน youtube หรือ podcasts ผู้ชายคนนั้นเป็นนักพูดที่ยอดเยี่ยม


1
ฉันเลือกคำตอบด้วยเหตุผลหลายประการนี้ @ Zachary K กล่าวว่าอาจสนุกที่จะก้าวออกจากกล่องของสถานที่ที่มีชื่อเสียงและมีมุมมองอื่น ฉันไม่ควรกลัวที่จะลองอะไรใหม่ ๆ มันไม่ใช่จุดจบของวัน Haskell เป็นภาษาที่ดึงดูดความสนใจของฉันในการสนทนาหลายครั้งก่อนหน้านี้ ฉันไม่รู้ว่าฉันต้องการภาษาที่ใช้งานได้หรือไม่ แต่เนื่องจาก @Toby Allen บอกว่ามันเป็นวิธีที่ยอดเยี่ยมในการเห็นวิธีการทำงานอื่น ๆ และฉันเห็นด้วยกับเรื่องนี้หลังจากลองใช้ UnrealScript @ammoQ พลาดประเด็นไปเล็กน้อย แต่ฉันไม่ได้นิยามคำถามที่ดีมาก ฉันยังคงได้รับความกังวลของเขา
คำชี้แจง

ดีใจที่ได้ช่วยเหลือ ขอให้สนุก
Zachary K

14

ศักดิ์สิทธิ์ * * * * ไม่มีกระสุนเงิน หลีกทาง. ผ่อนคลายหายใจลึก ๆ

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

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


ตอนนี้ฉันไม่ได้ทำงานอะไรเป็นพิเศษ ฉันอยู่ระหว่างงาน ฉัน / เป็นผู้พัฒนาเกม
แถลงการณ์

3
นี่เป็นสถานการณ์ที่อันตรายเกี่ยวกับการ overengineering ไม่มีกำหนดส่งงานค้างไม่มีเวลามากเกินไปที่จะหมกมุ่นอยู่กับรายละเอียด
281377

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

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

2
ไม่เป็นไรเมื่อคุณลองใช้เครื่องมือทุกชิ้นในขณะนี้ว่าคุณอยู่ระหว่างงาน แต่ฉันเกรงว่าเราไม่สามารถบอกคุณได้ว่ารองเท้านั้นเหมาะกับคุณหรือไม่
281377

12

คุณสามารถเลือก F # เป็น. NET function ภาษาซึ่งจะช่วยให้คุณใช้ Visual Studio และนำความรู้. NET ของคุณกลับมาใช้ใหม่จำนวนมาก เป็นชุดประกอบที่รวมเข้ากับชุดประกอบ C # อย่างราบรื่น (ช่วยให้คุณสามารถรวม C #, C ++ / CLI และ F # ในโครงการเดียวได้อย่างง่ายดาย) การสนับสนุน F # มาพร้อมกับ VS Pro หรือดีกว่าฉันไม่แน่ใจว่าจะเปิดใช้งานตามค่าเริ่มต้นหรือไม่


ฉันคิดว่ามี addon สำหรับ F # ใน VS2008 แต่มันเป็นค่าเริ่มต้นใน VS2010
apoorv020

F # ทำงานได้กับ VS เชลล์ฟรี
SK-logic

6

IMO มันคุ้มค่าที่จะลองใช้ภาษาที่ใช้งานได้ดี แม้ว่าคุณจะไม่เคยใช้มันโดยตรงกับผลิตภัณฑ์ที่วางจำหน่าย แต่การเรียนรู้มันจะช่วยให้มุมมอง / มุมมองที่แตกต่างกันในการเขียนโปรแกรม แม้ว่าคุณจะยังคงทำการเขียนโค้ด "ของจริง" ทั้งหมดใน C # ต่อไปโอกาสที่ค่อนข้างจะยุติธรรมนั้นจะช่วยให้คุณปรับปรุงโค้ดที่คุณเขียนใน C #

ดังที่คนอื่น ๆ ได้กล่าวถึงตัวเลือกที่ชัดเจนสำหรับใครบางคนที่คุ้นเคยกับ Visual Studio คือ F # ซึ่งโดยทั่วไปคืออนุพันธ์ของ Ocaml / Caml / ML IMO ซึ่งเป็นตัวเลือกที่ดีในส่วนของ Microsoft สำหรับการแนะนำผู้คนให้รู้จักการเขียนโปรแกรมเชิงฟังก์ชั่น - มันเป็นภาษาที่ใช้งานได้อย่างสมบูรณ์ มีข้อดีจริง ๆ ผู้เริ่มต้นมักจะอ่านยาก)


2

ใช่คุณควรจะ.

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

ในทางกลับกัน F # ไม่บริสุทธิ์และคุณสามารถพลาดสิ่งที่สำคัญในการเขียนโปรแกรมการทำงานได้อย่างง่ายดาย คุณสามารถพูดได้เขียนโปรแกรมขั้นตอนที่กลายพันธุ์ตัวแปรที่นี่ทำผลข้างเคียงที่นั่นในรูปแบบ F #


ที่จริงฉันเริ่มที่tryhaskell.org :) มันน่าตื่นเต้นที่ได้เรียนรู้สิ่งใหม่
คำชี้แจง

1

หากคุณใช้ c # อยู่แล้วคุณไม่ต้องการภาษาใหม่ - ด้วยการรวมวิธีการขยาย, lambdas และประเภท Func / Action ทั่วไปมันค่อนข้างง่ายที่จะเขียนโค้ดฟังก์ชั่นใน C # - วิธีที่คุณสามารถใช้สไตล์การทำงานใน อัลกอริธึมที่เหมาะสมที่สุดโดยไม่จำเป็นต้องเปลี่ยนแอปพลิเคชันทั้งหมด


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

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

ใช่ฉันคิดว่าความกังวลของฉันมีอคติมากขึ้นถ้ามีภาษาที่เหมาะกว่า (syntactically) สำหรับการทำงานกับวิธีการ / ฟังก์ชั่นในลักษณะที่ฉันพบว่าตัวเองมักจะทำงานในขณะที่เล่นเรื่องนี้ C # เสนอแลมบ์ดานิพจน์และเป็นสิ่งที่ดีในตัวเอง แต่ตัวอย่างเช่นการมีฟังก์ชั่นคืนค่าโดยไม่มีพารามิเตอร์ใด ๆ ที่ให้โค้ดเช่น () => x และอาจมีวิธีที่สะอาดกว่า
คำชี้แจง

+1 @Toby ฉันเพิ่งอ่านผ่านการอ้างอิง UnrealScript เมื่อเร็ว ๆ นี้และเห็นโซลูชันภาษาที่น่าสนใจสำหรับการทำงานกับฯ ฯ มันดำเนินไปถึง C # ในแง่ของการคิดเกี่ยวกับปัญหาและพวกเขามีทางออกที่ดีมาก ใช่ฉันเชื่อว่าคุณเรียนรู้ข้อตกลงที่ยอดเยี่ยมเมื่อคุณก้าวออกจากกล่องทรายและปล้นสะดมเพื่อนบ้านของคุณสำหรับทรายและของเล่นทั้งหมดที่คุณพบ :)
คำสั่ง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.