คุณส่งเสริมองค์กรของคุณให้ย้ายจาก Java เป็น Scala อย่างไร [ปิด]


15

องค์กรของใครเริ่มการโยกย้ายจาก Java ไปยัง Scala หรือไม่? ถ้าใช่คุณจะทำอย่างไร ฉันจะทำอย่างไรเพื่อกระตุ้นให้เพื่อนร่วมงานทำเช่นเดียวกัน


โปรดเพิ่มสกาล่าและการย้ายไปยังแท็กหากคุณมีอำนาจในการทำเช่นนั้น
nanda

9
บางทีคุณควรอธิบายว่าทำไม
TheLQ

คุณต้องการความรู้ภายในเพียงพอเพื่อให้แน่ใจว่าปัจจัยรถบัส "สูงพอ"

คำตอบ:


15

อาจเป็นวิธีที่ง่ายที่สุดคือใช้ Scala สำหรับการทดสอบครั้งแรกเท่านั้น ในกรณีนี้คุณอาจไม่ต้องบอกเจ้านายของคุณ :-) ถ้าเขาถามบอกเขาว่า "นั่นเป็นเพียงกรณีทดสอบส่วนตัวของฉันมันง่ายกว่าและเร็วกว่ามากในการใช้ Scala สำหรับมัน" เมื่อคุณ (และองค์กรของคุณ) มีประสบการณ์เพียงพอกับ Scala คุณสามารถเริ่มใช้มันสำหรับรหัส 'ของจริง'


นี่คือความคิดของฉันสำหรับการย้าย C # -to-F #
GregC

7

จากมุมมองของ บริษัท มันเป็นการดีที่จะอยู่กับ Java หากไม่มีข้อได้เปรียบที่ชัดเจนว่าพวกเขาจะได้รับจากการโยกย้ายไปยัง Scala มันง่ายกว่าสำหรับพวกเขาที่จะจ้างโปรแกรมเมอร์ Java เพื่อสร้างและบำรุงรักษาแอปพลิเคชัน คุณอาจจะออกไปหลังจากใช้ทุกอย่างใน Scala :-) ไม่มีความผิด :-)


1
Java ธรรมดาอยู่ที่นี่อยู่ สกาล่าอาจหรือไม่ มันเร็วเกินไปที่จะบอก

"การจ้างนักพัฒนา Java ง่ายกว่า" อาจเป็นเรื่องจริง แต่การจ้างคนที่ "จ้างง่าย" อาจไม่ใช่วิธีที่ถูกที่สุดในการทำโครงการให้เสร็จ
วินไคลน์

7

ให้หัวหน้าของคุณอ่านประสบการณ์เช่นนี้:

  1. ขณะนี้ฉันกำลังทำสิ่งต่าง ๆ ของฉันในสกาลามากที่สุดในขณะนี้ (ฉันควรพูดถึงว่าฉันคิดว่า Scala เป็นสิ่งที่ดีที่สุดตั้งแต่การคิดค้นล้อเมื่อไม่นานมานี้ :-D)

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

    เมื่อดูภาษาที่อ้างสิทธิ์แบบนี้มาก่อนฉันสามารถเห็นค่ายออกแบบภาษาที่แข่งขันกันสองแห่ง:

    • คนจากด้านวัตถุเชิงซึ่งเห็นว่าการเขียนโปรแกรมฟังก์ชั่นได้รับแรงฉุดเมื่อเร็ว ๆ นี้และคิดว่า "อืมเราไม่เข้าใจสิ่งที่ใช้งานได้จริง ๆ แต่ลองเพิ่มน้ำตาล syntactical แฟนซีกับภาษาของเราเพื่อให้เราสามารถอ้างว่ามันทำงานได้ เกินไป!" (ตัวอย่าง: Java, Python)

    • แล้วคนที่มาจากด้านการใช้งานที่คิดว่า "เอาล่ะวิธีการทำงานของเรานั้นเหนือกว่าสิ่งอื่นใดและเรื่องไร้สาระเชิงวัตถุนั้นน่ารำคาญ แต่ให้เราใส่คำหลักเพิ่มเติมลงในภาษาของเราซึ่งจะทำให้สถาบันการศึกษาภาษาของเรา !" (ตัวอย่าง: F #, OCaml)

    นักออกแบบของสกาล่ารวบรวมวิธีการมากมายที่มาจากทั้งสองฝ่ายและสร้างภาษาที่ออกแบบมาอย่างดีซึ่งในความเห็นที่ถ่อมตนของฉัน - ความแตกต่างที่ใหญ่ที่สุดสำหรับภาษาอื่น ๆ ซึ่งตัดสินใจที่จะใช้แนวทาง "Frankenstein" ในการออกแบบภาษาโปรแกรม

  2. เมื่อทำสิ่งเล็ก ๆ ด้วยลิฟต์และมีเพียงประสบการณ์ผิวเผินกับ Rails และ Django ฉันต้องยอมรับว่าส่วนใหญ่เวลาที่ฉันสงสัยว่าทำไมบางสิ่งในลิฟต์ทำงานแตกต่างจากที่ฉันคาดไว้นี่เป็นเพราะความคาดหวังของฉันคือ ข้อบกพร่องและวิธีการยกของที่เหนือกว่า

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

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

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

[ ที่มา ]


3

ตลอดสองปีที่ผ่านมาเราได้พัฒนาวิธีการที่เป็นธรรมในการเดินทางนี้ที่ guardian.co.uk - แพลตฟอร์มแบบเปิดของเราสร้างขึ้นบน Scala, CMS หลักของเรา (แต่เดิมใน Java) จะค่อยๆรวมสกาล่าเพิ่มเติม (เรากำลังจะย้ายจาก Maven to SBTสำหรับงานสร้างของเรา) และมันก็เป็นประสบการณ์ที่ยอดเยี่ยม - เติมพลังให้ devs ของเราจริงๆบางคนก็เริ่มเบื่อกับ Java :)

ฉันขอแนะนำให้คุณอ่านบทความทั้งสองนี้เกี่ยวกับการเปลี่ยนแปลงของเราและอาจใช้เป็นหลักฐานสนับสนุนกับผมหงอกของคุณ:

http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala

http://www.infoq.com/articles/guardian_scala

เคล็ดลับด่วน ๆ :

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

  • อย่าขออนุญาตเพื่อลองเทคโนโลยีใหม่ ๆ ดีกว่าที่จะขออภัยถ้าคุณต้อง :-)


+1! สำหรับ "อย่าขออนุญาตเพื่อลองเทคโนโลยีใหม่ดีกว่าที่จะขอการให้อภัยถ้าคุณต้อง :-)"
Giorgio

2

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

คำตอบสำหรับคำถามของฉัน:

  • ปัญหาที่เกิดขึ้นพร้อมกันของนักแสดงจะให้ประโยชน์ที่ดี (Akka)

  • เว็บแอปพลิเคชั่นที่มีข้อมูลผลักไปยังพวกเขาผ่าน COMET (Lift)

มีข้อมูลเชิงลึกอื่น ๆ หรือประสบการณ์ที่ดีกว่านี้อีกหรือไม่


1

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

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

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

การแพร่กระจายคำและทำให้ความพยายามในระดับรากหญ้านั้นเป็นเป้าหมายสำคัญของฉันในปี 2011 เราจะเห็นว่ามันปะทุออกมาเพราะฉันไม่สามารถรอวันที่ฉันจะได้ใช้สกาล่าเป็นจำนวนมากในการทำงานของฉัน


1

ฉันสงสัยว่าเหตุใดจึงเลือกอย่างใดอย่างหนึ่ง เหตุใดจึงตัดสินใจโยน Java ออกไปและไปที่สกาล่าไปตลอดทาง?

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

ฉันไม่ต้องการทำงาน (อีกต่อไป) ที่ บริษัท ที่เพ่งความสนใจไปที่หนึ่งภาษาหรือสิ่งแวดล้อม tbh เป็นการดีกว่าที่จะรู้หลายสิ่งและเลือกเครื่องมือที่เหมาะสมสำหรับงาน

ถัดจากนั้นเป็นเรื่องยากหากไม่สามารถทำให้องค์กรของคุณเปลี่ยนไปใช้ Scala ได้อย่างสมบูรณ์ ฉันจะพยายามทำให้โครงการบางส่วน (หรือบางส่วนของโครงการ) ทำใน Scala แทนที่จะไปหาวิธีทั้งหมดหรือไม่ทำอะไรเลย ตัวอย่างเช่นคุณสามารถเลือกที่จะทดสอบโค้ด Java ของคุณกับ Specs2 ซึ่งมีไวยากรณ์ที่ดีงามเมื่อเทียบกับ JUnit แบบเก่า - และมันไม่ซับซ้อนรหัส Scala และกระบวนทัศน์ Scala สับสนและยากเพียง syntactic น้ำตาลรอบการกำหนดพฤติกรรมของแอปพลิเคชันของคุณ .


0

วิธีที่ดีคือการสาธิตโปรแกรมเดียวกันสองเวอร์ชัน โดยการทำที่คุณสามารถแสดงให้เพื่อนร่วมงานของคุณ (ในทางปฏิบัติ) Scala ของการแสดงออก การทำสิ่งเดียวกันสำหรับปัญหาอื่น ๆ (XML, การทำงานพร้อมกันเป็นต้น) สามารถแสดงให้เห็นถึงประโยชน์ของการใช้ Scala แทนการใช้ Java เพื่อแก้ไขปัญหาเฉพาะ

แน่นอนว่าอย่าคาดหวังว่าการย้ายถิ่นจะเกิดขึ้นในหนึ่งวัน มีปัญหามากมายที่คุณอาจประมาท: เส้นโค้งการเรียนรู้, ฐานข้อมูลที่มีอยู่ ฯลฯ

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