สกาล่าจะเป็นทางเลือกที่ดีแทนที่จะเป็นจาวา


11

เราจะเริ่มโครงการใหม่ซึ่งจะเกี่ยวข้องกับการฝึกอบรมผู้พัฒนา. net ทั้งหมดใน Java (frameworks / ECO system ฯลฯ ) เรามีโค้ดจำนวนมากที่เขียนใน C # และดูเหมือนว่าทั้งหมดนี้จะสูญเปล่าเนื่องจากเราต้องเขียนใหม่ทั้งหมดใน Java ปัญหาที่ฉันเห็นคือว่าในปีแรกหรือประมาณสองปีเราจะไม่มีอะไรจะส่งมอบเพราะเราจะใช้เวลาส่วนใหญ่ในการทำซ้ำสิ่งที่เรามีมาก่อน แต่ตอนนี้ใน Java

เนื่องจากทีมของเรากระจายอยู่ในสำนักงานต่าง ๆ ทั่วโลกและเรามีนักพัฒนาจาวาจำนวนมาก (20 ถึง 30) และนักพัฒนา 10 คนที่ใช้. net เราต้องการให้นักพัฒนาทั้งหมดใช้ภาษา / แพลตฟอร์มเดียวกันเพื่อให้เราสามารถเริ่ม นำส่วนประกอบ / โมดูลกลับมาใช้ใหม่ ดังนั้นฉันสามารถเข้าใจมุมมองของผู้บริหาร

เมื่อวานฉันเจอ Scala และสงสัยว่ามันจะดีกว่าถ้าจะใช้กับผลิตภัณฑ์ปัจจุบัน (ซึ่งเขียนใน C #) แล้วอย่างน้อยเราก็จะมีผลิตภัณฑ์ที่ใช้งานได้ในหนึ่งปี นอกจากนี้ในหนึ่งปีเรามีโมดูลที่สามารถใช้ในโลก Java ได้ในขณะที่เราย้ายข้อมูลส่วนอื่น ๆ ของผลิตภัณฑ์

Scala จะเป็นตัวเลือกที่ดีกว่า Java หรือไม่เมื่อพิจารณาถึงสิ่งที่เราพยายามจะบรรลุ


2
เขียนใหม่ทุกสิ่งในภาษาอื่นหรือไม่ และ 2 ปีโดยไม่มีการส่งมอบ? ฟังดูเหมือนเป็นการตัดสินใจที่น่ากลัวและคุณอาจต้องการงานใหม่ในช่วงครึ่งปี;)
zvrba

ใช่นั่นคือการพิจารณา ไม่แน่ใจว่าผมควรจะเริ่มมองในขณะนี้และติด C # :)
JD01

1
นั่นเป็นเสียงเหมือนเกี่ยวกับที่จะทำสิ่งที่คุณไม่ควรทำ
back2dos

คำตอบ:


15

บางจุดที่ต้องพิจารณา:

  • สกาล่าเป็นภาษาที่ยอดเยี่ยม - แต่มันก็คุ้มค่าที่จะสังเกตว่ามันเป็นภาษาที่ค่อนข้างท้าทายในการเรียนรู้และใช้งานอย่างถูกต้อง ไม่ใช่แค่ความคิดเห็นของฉัน - แม้แต่ผู้เชี่ยวชาญของสกาล่าที่มีประสบการณ์ก็พูดเช่นนั้น ขึ้นอยู่กับระดับของทักษะในทีมของคุณมันอาจเหมาะสมที่สุดในฐานะเครื่องมือสำหรับนักพัฒนาที่มีประสบการณ์ / ผู้เชี่ยวชาญมากที่สุด
  • Java และ C # ค่อนข้างคล้ายคลึงกันในหลาย ๆ แง่มุม - มันใช้เวลาไม่นานสำหรับนักพัฒนาที่ได้รับการฝึกฝนมาเพื่อข้าม (ไวยากรณ์คล้ายกันส่วนใหญ่เป็นเพียงกรณีของการเรียนรู้นิสัยใจคอของแต่ละคนและทำความเข้าใจกับห้องสมุดที่แตกต่างกัน ซึ่งมักจะมีฟังก์ชั่นที่คล้ายกัน แต่ถูกทำแพ็กเกจต่างกันและ / หรือมีชื่อต่างกัน) ฉันเปลี่ยนจาก Java เป็น C # เป็นการส่วนตัวและกลับไปที่ Java อีกครั้งโดยไม่มีปัญหาใด ๆ
  • นอกจากนี้ยังเป็นที่น่าสังเกตว่าภาษา JVM ทั้งหมด (Java และ Scala แต่ยังรวมถึง JRuby และ Clojure ฯลฯ ) เข้ากันได้มาก - พวกเขาแบ่งปันแพลตฟอร์ม JVM พื้นฐานเดียวกันและสามารถแบ่งปันรหัส / ไลบรารีได้อย่างง่ายดายมาก

เมื่อพิจารณาทั้งหมดนี้คุณอาจต้องการป้องกันการเดิมพันของคุณและใช้กลยุทธ์ Java / Scala แบบผสมเช่นย้ายไปที่แพลตฟอร์ม JVMและมุ่งเน้นไปที่ Java เป็นอันดับแรก แต่ให้เปิดตัวเลือกเพื่อใช้ Scala เมื่อนักพัฒนาของคุณสะดวกสบายและ / หรือ มันเหมาะกับปัญหาที่มือ

จากมุมมองของการจัดการนี้มีข้อดีมากมาย:

  • คุณยังสามารถแชร์ห้องสมุดทั้งหมดเพื่อให้การลงทุนของคุณปลอดภัย
  • ผู้พัฒนาที่มีประสบการณ์น้อยของคุณจะสามารถถ่ายโอน C # -> Java ได้อย่างรวดเร็ว
  • ผู้ที่มีประสบการณ์มากขึ้นของคุณสามารถใช้ประโยชน์จากคุณสมบัติขั้นสูงใน Scala ได้
  • เครื่องมือทั้งหมดเข้ากันได้ / สามารถใช้ร่วมกันได้ (สร้างระบบ IDEs เครื่องมือปรับใช้ ฯลฯ )
  • คุณสามารถเข้าถึงระบบโอเพ่นซอร์สที่กว้างขวางมากของไลบรารีบน JVM (ควบคู่กับการพกพาข้ามแพลตฟอร์มนี่คือเหตุผลที่ดีที่สุดที่จะอยู่บนแพลตฟอร์ม JVM)
  • นักพัฒนาของคุณจะใช้ภาษาที่ทำให้พวกเขามีประสิทธิภาพมากที่สุดเนื่องจากทักษะ / งานที่ทำอยู่ (Java ในบางกรณี, Scala ในภาษาอื่น ๆ หรือภาษาอื่น ๆ เช่น Clojure ในอนาคต)

ข้อเสียคือคุณยังคงมีสองภาษาหลักที่จะสนับสนุน แต่จริงๆแล้วคุณอาจมีมากกว่าสองตัวอยู่แล้ว (เชลล์สคริปต์ - รูปแบบ XML เฉพาะโดเมน - ไฟล์ปรับแต่ง - โปรแกรมควบคุมกฎ - HTML หรือจาวาสคริปต์) ดังนั้นคุณสามารถยืนยันได้ว่ามันไม่ใช่เรื่องใหญ่อะไร


ขอบคุณสำหรับข้อมูล. ฉันแค่พยายามค้นหาว่าอะไรคือวิธีที่ดีที่สุดและคุณได้ให้ข้อมูลที่ดีเยี่ยม ในขณะนี้เรามีนักพัฒนา OO ที่ดี แต่ไม่มีใครคุ้นเคยกับการเขียนโปรแกรมการทำงาน
JD01

1
ดีใจที่ได้ช่วยเหลือ! เป็นเรื่องที่ควรค่าแก่การตระหนักว่า Scala เป็นภาษาที่ใช้หลายกระบวนทัศน์ / OOP มากกว่า ในขณะที่คุณสามารถทำ FP ใน Scala ได้อย่างแน่นอนหากคุณต้องการภาษาที่เน้นการใช้งานได้ชัดเจนกว่า Haskell หรือ Clojure อาจใกล้เคียงกับเครื่องหมาย
mikera

สำหรับการนำโค้ดกลับมาใช้ใหม่ถ้าฉันใช้ Clojure หรือ Scala ตั้งแต่วันแรกหรืออย่างที่คุณพูดในกลยุทธ์แบบผสมฉันสามารถนำโค้ด Clojure / Scala กลับมาใช้ใหม่ทั้งใน. net และ Java ได้หรือไม่ ฉันสงสัยว่านี่เป็นจุดขายที่ดีสำหรับการจัดการหรือไม่ วิธีนี้เรายังสามารถดึงผลิตภัณฑ์ออกมา (ผลิตภัณฑ์เก่าที่มีคุณสมบัติใหม่) และอยู่บนท้องถนนเพื่อเขียนโค้ดที่มีอยู่ใน Java อีกครั้งโดยใช้โค้ดที่นำกลับมาใช้ใหม่ของโมดูล clojure / scala ฉันถูกต้องในการคิดของฉันที่นี่หรือเปิดปัญหาอื่น ๆ หรือไม่
JD01

1
คุณสามารถแสดงฟังก์ชั่น Clojure / Scala เป็นบริการเว็บหรือส่วนต่อประสาน REST หากคุณต้องการ นั่นเป็นค่าใช้จ่ายที่ค่อนข้างสูงกว่าการสร้างห้องสมุดโดยตรง (ซึ่งจะเป็นตัวเลือกที่ดีที่สุดถ้าคุณต้องการเรียกใช้ฟังก์ชันจาก Java / ภาษา JVM อื่น) แต่แน่นอนว่ามันจะให้ความยืดหยุ่นในการเรียกรหัสจากไคลเอนต์ที่คุณชอบ ( Net, Java, Ruby, ฯลฯ )
mikera

ขอบคุณไมค์ ฉันคิดว่าอย่างน้อยเส้นทางการใช้รหัสซ้ำจะแสดงให้ผู้บริหารเห็นว่าการเขียนซ้ำทั้งหมดไม่จำเป็นต้องใช้ตัวเลือก Scala / Clojure ฉันไม่ต้องการให้เราจบลงเหมือน Netscape :) กลับไปที่การสร้างห้องสมุดฉันจะไม่ใช้มันใน. net และ java โดยไม่ใช้บริการเว็บหรือไม่?
JD01

15

ฉันจะเพิ่มตัวเลือกที่ 3 มีใครในองค์กรของคุณที่ดูการทำงานร่วมกันระหว่างโมดูล C # และ Java ของคุณหรือไม่ คุณเปิดเผยการทำงานของ C # อย่างไร SOAP หรือ RESTFul บริการเว็บเป็นตัวเลือกหรือไม่?

การเขียนซ้ำ 2 ปีอาจเป็นความตายสำหรับองค์กร (เพียงแค่ถาม Netscape) อย่างไรก็ตามการโยกย้ายอย่างค่อยเป็นค่อยไปในขณะที่รหัสที่มีอยู่เล่นกันอย่างมีนัยสำคัญอาจมีผลกระทบทางธุรกิจน้อยลง


3

การเขียน C # เป็น Scala ใหม่จะยากเหมือนการเขียนใหม่ไปยัง Java สำหรับภาษาใดที่ "ดีกว่า" จุดนั้นก็คือ moot แต่ละภาษามีจุดบวกและลบของตัวเอง

ฉันไม่รู้ว่า codebase ของคุณใหญ่แค่ไหน แต่ 2 ปีสำหรับนักพัฒนา 30 คนนั้นดูใหญ่มากสำหรับการเขียนใหม่ รับ Java เมื่อคุณรู้ว่า C # เป็นเรื่องง่าย ฉันใช้เวลาหนึ่งหรือสองวันในการทำความคุ้นเคย

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


มีนักพัฒนาประมาณ 10 คนเท่านั้นที่ทำงานกับผลิตภัณฑ์ใหม่ ฉันแค่พยายามค้นหาว่าข้อดีข้อเสียของการไปกับสกาล่าจะเป็นอย่างไร
JD01

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

คุณอาจจะถูก ฉันคิดถึงมันในแง่ของการออกผลิตภัณฑ์ในหนึ่งปีหรือมากกว่านั้นในขณะเดียวกันก็สามารถใช้รหัสใน. net และ java ได้อีกครั้ง คะแนนของคุณได้รับการบันทึกไว้อย่างดี :)
JD01

1

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


มีผลิตภัณฑ์มากมายที่เขียนด้วยภาษาจาวาเพื่อให้พวกเขาเรียนรู้ C # จะเป็นเรื่องยาก ฉันหวังกับ Scala เมื่อเรามีผลิตภัณฑ์ใหม่ผู้พัฒนา java สามารถใช้ไลบรารีได้โดยไม่จำเป็นต้องเรียนรู้ Scala
JD01

2
จะไม่เป็นการดีถ้าคุณเปิดเผยรหัส. Net ที่มีอยู่ของคุณเป็นบริการที่ผู้พัฒนา java สามารถเรียกใช้และพัฒนาคุณลักษณะใหม่ทั้งหมดใน java
ศรีราม

ที่ได้รับการแนะนำในอดีต แต่มีการตัดสินใจว่าเราย้ายออกจาก. net
JD01

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