Kotlin ปรากฏตัวครั้งแรกในปี 2011 และสร้างความฮือฮาให้กับโลกแห่งการเขียนโค้ด ฉันได้ยินภาษานี้เป็นครั้งแรกเมื่อปีที่แล้ว ซึ่งบังเอิญเกิดขึ้นไม่นานหลังจากที่ "Google ประกาศ Kotlin ให้เป็นภาษา Android อย่างเป็นทางการ" ตั้งแต่นั้นมาก็มี “บิ๊กแบง” อีกสองสามอย่างตามมา และการคาดการณ์ในปัจจุบันยังเพิ่มการใช้งานทั่วโลกอย่างต่อเนื่อง ด้านล่างนี้คือรายละเอียดของที่เก็บ Github ตามภาษาในปีนี้:

พัฒนาโดยทีม JetBrains เล็กๆ ในเซนต์ปีเตอร์สเบิร์ก Kotlin เป็นภาษาที่พิมพ์แบบคงที่ซึ่ง:

  • ทำงานบน JVM
  • สามารถทำงานร่วมกับ Java ได้
  • แสดงความลื่นไหลระหว่างกระบวนทัศน์เชิงวัตถุและเชิงฟังก์ชัน

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

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

  • พินเทอเรสต์
  • กราเดิล
  • อูเบอร์
  • สิ่งสำคัญ
  • แอตลาสเซียน

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

อาจเป็นเสียงฮัมที่ดังขึ้นเรื่อยๆ จากชุมชนที่กำลังเติบโต บางทีอาจเห็นได้จากวิวัฒนาการของเนื้อหา KotlinConf แต่ฉันกลับรู้สึกว่า Kotlin อาจเป็นกลุ่มวิทยาศาสตร์ข้อมูลถัดไป

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

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

Thomas Nield พบวิธีแก้ปัญหาการกำหนดเวลา: สลับระหว่างการปรับให้เหมาะสมและอัลกอริธึมที่โลภโดยการอุ่นอุณหภูมิอีกครั้งหลังจากถึงค่าต่ำสุดในพื้นที่

Roman Elizarov แสดงให้เห็นว่าฟีเจอร์ Coroutines ใหม่ของ Kotlin 1.3 สามารถช่วยจัดการปัญหาการทำงานพร้อมกันและกำหนดการในชีวิตจริงได้อย่างไร

FP ช่วยรักษาซอฟต์แวร์ที่ปรับขนาดได้

Functional Programming(FP) มีประโยชน์ในการสร้างสแต็กข้อมูลที่มีเสถียรภาพมากขึ้นสำหรับซอฟต์แวร์ที่มีขนาดและความซับซ้อนเพิ่มมากขึ้น:

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

การพิมพ์แบบคงที่และความปลอดภัยแบบ null ช่วยเพิ่มเสถียรภาพรันไทม์

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

Kotlin ยังมีความปลอดภัยแบบ null ซึ่งเป็นข้อผิดพลาดมูลค่าหลายพันล้านดอลลาร์ Java ที่ยังคงประสบอยู่ในปัจจุบันกับ NPE ซึ่งทำให้รันไทม์ล่ม

เข็มขัดนิรภัย? ตรวจสอบ. หมวกนิรภัย? ตรวจสอบ.

Kotlin ให้ความสำคัญกับการเห็นพ้องต้องกันและความเท่าเทียม

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

ปีที่แล้ว ฉันคงแปลกใจกับแนวคิดที่ว่าผู้คนต่างพยายามใช้ val แบบพิเศษมากกว่า var — แต่ ความไม่เปลี่ยนรูป สามารถทำให้การทำงานกับเธรดที่เกิดขึ้นพร้อมกันสามารถบำรุงรักษาได้มากขึ้น

สมมติว่าคุณอยู่บนเครื่องบินระยะไกลซึ่งคุณต้องใช้ห้องน้ำร่วมกับลูกเรือและผู้โดยสารคนอื่นๆ โดยทั่วไปแล้ว กฎห้องน้ำหนึ่งข้อคือสามารถเข้าห้องน้ำได้ครั้งละหนึ่งคนเท่านั้น และอาจจะล้างมือด้วย

คุณไม่ต้องการให้คนอื่นเดินเข้ามาหาคุณโดยใช้ห้องน้ำ โปรแกรมเมอร์บางคนอาจจัดการการทำงานพร้อมกันด้วย TDD (ห้องน้ำมีคนอยู่หรือเปล่า) คนอื่นๆ อาจใช้ล็อค (ล็อคประตู) หรือสัญญาณ (VACANT/IN USE บอกผู้คนให้พยายามเปิดประตูหรือไม่) เพื่อจัดการหลายเธรด หรือผู้คนเข้าถึงเธรดเดียว ทรัพยากร.

ในทำนองเดียวกัน หากสองเธรดเข้าถึงทรัพยากรเดียวกันซึ่งไม่แน่นอน ก็เป็นไปได้ว่าทรัพยากรนั้นอาจได้รับการแก้ไขในลักษณะที่ทำให้เกิดความล้มเหลวในการเข้าถึงสิ่งที่ไม่มีอีกต่อไป ได้รับผลลัพธ์ที่แตกต่างกันสำหรับอินพุตเดียวกัน หรือแม้แต่กดปุ่ม out-of- มีข้อยกเว้นจากการคำนวณ

การเห็นพ้องต้องกันไม่เหมือนกับความเท่าเทียม แม้ว่าการเห็นพ้องต้องกันเกี่ยวข้องกับปัจจัยกำหนด ความเท่าเทียม กังวลว่างานหลายอย่างจะเสร็จสิ้นพร้อมกันได้อย่างไร

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

แล้วอะไรต่อไป?

หากคุณสงสัย มี รายชื่อไลบรารีและเฟรมเวิร์กยอดนิยมใน Kotlin ซึ่งคุณสามารถสำรวจสิ่งที่คุณอาจสนใจได้

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