องค์กรของใครเริ่มการโยกย้ายจาก Java ไปยัง Scala หรือไม่? ถ้าใช่คุณจะทำอย่างไร ฉันจะทำอย่างไรเพื่อกระตุ้นให้เพื่อนร่วมงานทำเช่นเดียวกัน
องค์กรของใครเริ่มการโยกย้ายจาก Java ไปยัง Scala หรือไม่? ถ้าใช่คุณจะทำอย่างไร ฉันจะทำอย่างไรเพื่อกระตุ้นให้เพื่อนร่วมงานทำเช่นเดียวกัน
คำตอบ:
อาจเป็นวิธีที่ง่ายที่สุดคือใช้ Scala สำหรับการทดสอบครั้งแรกเท่านั้น ในกรณีนี้คุณอาจไม่ต้องบอกเจ้านายของคุณ :-) ถ้าเขาถามบอกเขาว่า "นั่นเป็นเพียงกรณีทดสอบส่วนตัวของฉันมันง่ายกว่าและเร็วกว่ามากในการใช้ Scala สำหรับมัน" เมื่อคุณ (และองค์กรของคุณ) มีประสบการณ์เพียงพอกับ Scala คุณสามารถเริ่มใช้มันสำหรับรหัส 'ของจริง'
จากมุมมองของ บริษัท มันเป็นการดีที่จะอยู่กับ Java หากไม่มีข้อได้เปรียบที่ชัดเจนว่าพวกเขาจะได้รับจากการโยกย้ายไปยัง Scala มันง่ายกว่าสำหรับพวกเขาที่จะจ้างโปรแกรมเมอร์ Java เพื่อสร้างและบำรุงรักษาแอปพลิเคชัน คุณอาจจะออกไปหลังจากใช้ทุกอย่างใน Scala :-) ไม่มีความผิด :-)
ให้หัวหน้าของคุณอ่านประสบการณ์เช่นนี้:
ขณะนี้ฉันกำลังทำสิ่งต่าง ๆ ของฉันในสกาลามากที่สุดในขณะนี้ (ฉันควรพูดถึงว่าฉันคิดว่า Scala เป็นสิ่งที่ดีที่สุดตั้งแต่การคิดค้นล้อเมื่อไม่นานมานี้ :-D)
ในความเห็นต่ำต้อยของฉันมันเป็นภาษาเดียวที่ช่วยให้ผู้คนสามารถเลือกวิธีที่ดีที่สุดในการทำงานโดยไม่ต้องแบ่งระหว่างวัตถุที่มุ่งเน้นและการทำงานมากขึ้น
เมื่อดูภาษาที่อ้างสิทธิ์แบบนี้มาก่อนฉันสามารถเห็นค่ายออกแบบภาษาที่แข่งขันกันสองแห่ง:
คนจากด้านวัตถุเชิงซึ่งเห็นว่าการเขียนโปรแกรมฟังก์ชั่นได้รับแรงฉุดเมื่อเร็ว ๆ นี้และคิดว่า "อืมเราไม่เข้าใจสิ่งที่ใช้งานได้จริง ๆ แต่ลองเพิ่มน้ำตาล syntactical แฟนซีกับภาษาของเราเพื่อให้เราสามารถอ้างว่ามันทำงานได้ เกินไป!" (ตัวอย่าง: Java, Python)
แล้วคนที่มาจากด้านการใช้งานที่คิดว่า "เอาล่ะวิธีการทำงานของเรานั้นเหนือกว่าสิ่งอื่นใดและเรื่องไร้สาระเชิงวัตถุนั้นน่ารำคาญ แต่ให้เราใส่คำหลักเพิ่มเติมลงในภาษาของเราซึ่งจะทำให้สถาบันการศึกษาภาษาของเรา !" (ตัวอย่าง: F #, OCaml)
นักออกแบบของสกาล่ารวบรวมวิธีการมากมายที่มาจากทั้งสองฝ่ายและสร้างภาษาที่ออกแบบมาอย่างดีซึ่งในความเห็นที่ถ่อมตนของฉัน - ความแตกต่างที่ใหญ่ที่สุดสำหรับภาษาอื่น ๆ ซึ่งตัดสินใจที่จะใช้แนวทาง "Frankenstein" ในการออกแบบภาษาโปรแกรม
เมื่อทำสิ่งเล็ก ๆ ด้วยลิฟต์และมีเพียงประสบการณ์ผิวเผินกับ Rails และ Django ฉันต้องยอมรับว่าส่วนใหญ่เวลาที่ฉันสงสัยว่าทำไมบางสิ่งในลิฟต์ทำงานแตกต่างจากที่ฉันคาดไว้นี่เป็นเพราะความคาดหวังของฉันคือ ข้อบกพร่องและวิธีการยกของที่เหนือกว่า
การยกนั้นไม่ใช่เรื่องง่ายที่จะแนะนำให้รู้จักกับ Scala แต่การเรียนรู้ว่าการทำงานของลิฟต์นั้นเกือบจะคุ้มค่าเท่ากับการเรียนรู้สกาล่าก่อนหน้านั้น
ความสามารถในการมีมุมมองที่ "สะอาด" โดยไม่มีเหตุผลใด ๆ ในนั้นเป็นการปรับปรุงที่ยอดเยี่ยมสำหรับกรอบงานอื่น ๆ ที่อ้างว่าเหมือนกัน การสนับสนุน XML ตามตัวอักษรของ Scala ทำให้สามารถตรวจสอบความถูกต้องของการตอบสนองของคุณได้: คอมไพเลอร์จะพิสูจน์ในเวลาคอมไพล์ที่คุณปล่อย XML ที่มีรูปแบบที่ดีไปยังไคลเอนต์เท่านั้น
Lift เป็นเทคโนโลยีที่ใช้งานได้และในขณะนี้เป็นวิธีการเดียวที่แท้จริงหากคุณต้องการสร้างเว็บแอปพลิเคชันที่มีลักษณะความรู้สึกและมีพฤติกรรมเหมือนแอปพลิเคชันเดสก์ทอป "ของจริง" โดยไม่ต้องเขียนโค้ดจำนวนบ้า
[ ที่มา ]
ตลอดสองปีที่ผ่านมาเราได้พัฒนาวิธีการที่เป็นธรรมในการเดินทางนี้ที่ 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 เพื่อที่คุณจะได้คุ้นเคยกับภาษาเพิ่มความมั่นใจในภาษานั้นและไม่ต้องเอาชนะความกลัวใด ๆ ที่คุณอาจมีเกี่ยวกับการเพิ่มรันไทม์ไปยังเซิร์ฟเวอร์ที่ใช้งานจริงของคุณทันที
อย่าขออนุญาตเพื่อลองเทคโนโลยีใหม่ ๆ ดีกว่าที่จะขออภัยถ้าคุณต้อง :-)
คำถามนี้นกพิราบหางในคำถามอื่น นั่นคือสิ่งที่ชนิดหรือโครงการไม่โยกย้ายไปยังสกาล่าให้มูลค่าเพิ่ม? ฉันทำจาวาวันทำงานประจำวันของฉัน แต่ฝันถึงวันที่ฉันสามารถใช้สกาลา "ด้วยความโกรธ"
คำตอบสำหรับคำถามของฉัน:
ปัญหาที่เกิดขึ้นพร้อมกันของนักแสดงจะให้ประโยชน์ที่ดี (Akka)
เว็บแอปพลิเคชั่นที่มีข้อมูลผลักไปยังพวกเขาผ่าน COMET (Lift)
มีข้อมูลเชิงลึกอื่น ๆ หรือประสบการณ์ที่ดีกว่านี้อีกหรือไม่
ฉันเขียนแบบทดสอบสำหรับแอป Java ของฉันใน Scala และยอมรับว่าเป็นจุดเริ่มต้นที่ดี การครอบคลุมการทดสอบของฉันนั้นดีกว่าเพราะเขียนได้เร็วขึ้นและง่ายขึ้น (เช่นเมื่อฉันใช้ Scala ฉันก็ตั้งใจที่จะเขียนข้อสอบเพิ่มเติม)
ฉันได้เริ่มทำต้นแบบและ POC ที่ถูกเหวี่ยงใน Scala แล้วโดยเฉพาะ ฉันพยายามทำให้ผู้จัดการและหัวหน้างานทราบว่าเป็นไปได้มากที่สุดที่ฉันใช้สกาล่าสำหรับการแข่งขันครั้งเดียวและเน้นว่าฉันสามารถทำให้บางสิ่งบางอย่างทำงานได้อย่างรวดเร็วเพราะสกาลา เราต้องการแอพพลิเคชั่นบนเว็บเพื่อติดตามเกมช้างเผือกปาร์ตี้ของเรา - 1.5 ชั่วโมงกับ Scalatra และ MongoDB และแผนกทั้งหมดของฉันเห็นแอพนี้และถามเกี่ยวกับมัน ลองดูสิคุณจะไม่มีทางอธิบายให้ผู้จัดการทราบว่าภาษามีความหมายมากน้อยเพียงใดหรือว่ารูปแบบการทำงานพร้อมกันนั้นดีกว่ามาก แต่ถ้าคุณแสดงให้พวกเขาเห็นว่าคุณทำได้สำเร็จเร็วขึ้นคุณก็จะได้ผล
แต่ฉันคิดว่าสิ่งที่ยิ่งใหญ่ที่สุดคือการทำให้นักพัฒนาตื่นเต้นกับ Scala ฉันแน่ใจว่าเราทุกคนทำงานร่วมกับนักพัฒนาซอฟต์แวร์ที่ไม่ได้ติดตามเทคโนโลยีใหม่ ๆ และบางครั้งก็ยากที่จะทำให้ผู้คนตื่นเต้นกับการทำสิ่งใหม่ ๆ (ทำไมฉันไม่เข้าใจ) การแสดงให้ผู้คนเห็นถึงประโยชน์บางอย่างของ Scala (ลองใช้ REPL) เป็นกุญแจสำคัญ หากคุณมีนักพัฒนามากพอที่จะพูดคุยเกี่ยวกับประโยชน์ของการผลิตเดียวกันคุณก็มีแนวโน้มที่จะได้รับ Scala ที่นำมาใช้อย่างเป็นทางการในองค์กรของคุณ
การแพร่กระจายคำและทำให้ความพยายามในระดับรากหญ้านั้นเป็นเป้าหมายสำคัญของฉันในปี 2011 เราจะเห็นว่ามันปะทุออกมาเพราะฉันไม่สามารถรอวันที่ฉันจะได้ใช้สกาล่าเป็นจำนวนมากในการทำงานของฉัน
ฉันสงสัยว่าเหตุใดจึงเลือกอย่างใดอย่างหนึ่ง เหตุใดจึงตัดสินใจโยน Java ออกไปและไปที่สกาล่าไปตลอดทาง?
ไม่มีสิ่งใดเป็นเครื่องมือที่สมบูรณ์แบบสำหรับงาน ไม่มีเหตุผลที่จะโยนความเชี่ยวชาญในภาษาหนึ่งออกจากประตูอย่างสมบูรณ์และแทนที่ด้วยภาษาอื่น
ฉันไม่ต้องการทำงาน (อีกต่อไป) ที่ บริษัท ที่เพ่งความสนใจไปที่หนึ่งภาษาหรือสิ่งแวดล้อม tbh เป็นการดีกว่าที่จะรู้หลายสิ่งและเลือกเครื่องมือที่เหมาะสมสำหรับงาน
ถัดจากนั้นเป็นเรื่องยากหากไม่สามารถทำให้องค์กรของคุณเปลี่ยนไปใช้ Scala ได้อย่างสมบูรณ์ ฉันจะพยายามทำให้โครงการบางส่วน (หรือบางส่วนของโครงการ) ทำใน Scala แทนที่จะไปหาวิธีทั้งหมดหรือไม่ทำอะไรเลย ตัวอย่างเช่นคุณสามารถเลือกที่จะทดสอบโค้ด Java ของคุณกับ Specs2 ซึ่งมีไวยากรณ์ที่ดีงามเมื่อเทียบกับ JUnit แบบเก่า - และมันไม่ซับซ้อนรหัส Scala และกระบวนทัศน์ Scala สับสนและยากเพียง syntactic น้ำตาลรอบการกำหนดพฤติกรรมของแอปพลิเคชันของคุณ .
วิธีที่ดีคือการสาธิตโปรแกรมเดียวกันสองเวอร์ชัน โดยการทำที่คุณสามารถแสดงให้เพื่อนร่วมงานของคุณ (ในทางปฏิบัติ) Scala ของการแสดงออก การทำสิ่งเดียวกันสำหรับปัญหาอื่น ๆ (XML, การทำงานพร้อมกันเป็นต้น) สามารถแสดงให้เห็นถึงประโยชน์ของการใช้ Scala แทนการใช้ Java เพื่อแก้ไขปัญหาเฉพาะ
แน่นอนว่าอย่าคาดหวังว่าการย้ายถิ่นจะเกิดขึ้นในหนึ่งวัน มีปัญหามากมายที่คุณอาจประมาท: เส้นโค้งการเรียนรู้, ฐานข้อมูลที่มีอยู่ ฯลฯ