Kotlin

**קוטלין** (באנגלית: **Kotlin**) היא שפת תכנות כללית, חוצה פלטפורמות בעלת טיפוסיות סטטית, אשר פותחה על ידי תאגיד התוכנה הצ'כי JetBrains ויצאה לראשונה בשנת 2011. קוטלין פותחה על מנת לעבוד באופן מלא עם ג'אווה. קוטלין פועלת בעיקר במכונה הווירטואלית של ג'אווה (JVM), אך ניתן להדר אותה גם ל-JavaScript. ב-7 במאי 2019, הכריז תאגיד התוכנה Google שקוטלין היא שפת התכנות המועדפת לכתיבת יישומים במערכת ההפעלה אנדרואיד – אשר נפוצה בעיקר בטלפונים חכמים.

קוטלין היא שפה מרובת פרדיגמות, כלומר, היא תומכת במספר פרדיגמות (עקרונות) תכנות, כגון:
* תכנות פרוצדורלי – חלוקה לתוכניות ולתת תוכניות
* תכנות פונקציונלי – קריאה לפונקציות ופישוטן כביטוי
* תכנות מונחה עצמים – תכנות בו מגדירים מבני נתוניים מתקדמים בשם אובייקטים על פי תבניות, שנקראות מחלקות
* תכנות אימפרטיבי (פקודתי) – הרצת פקודות (Statements) זו אחר זו.
* תכנות דקלרטיבי (הצהרתי) – בפרדיגמה זו, התוכנית מתארת **מה** היא עושה, בשונה מתכנות אימפרטיבי שבה היא מתארת **איך** היא מבצעת את הפקודות. דוגמה לשפה אשר פועלת לפי פרדיגמה זו היא שפת השאילתות SQL.
* תכנות מקבילי – תכנות המתאים לעיבוד מקבילי, שבו מספר מעבדים או ליבות מעבדים חלק אחר מן הקוד.

Kotlin נחשבת לשפה כללית, משום שניתן להשתמש בה בתחומים רבים, בניגוד לשפות ספציפיות (Domain Specific Languages).

בנוסף, היא חוצה פלטפורמות (Cross Platform): היא רצה על פלטפורמות ומערכות הפעלה רבות. היא רצה על מערכות ההפעלה Windows, Linux, MacOS, watchOS, iOS ואנדרואיד, ועל הפלטפורמות JavaScript, WebAssembly, Java Virtual Machine.

## היסטוריה
ביולי 2011 JetBrains חשפה את קוטלין, שפה חדשה לפיתוח במכונה הווירטואלית של ג'אווה (JVM) שהייתה בפיתוח במשך שנה. לטענת דימיטרי ג'רמוב מ-JetBrains, לרוב השפות אשר רצות על ה-JVM אין את הפיצ'רים שהם מחפשים חוץ מ-Scala, אך ל-Scala ישנו הידור איטי, אשר מתפרש בעיניו כחסרון. לכן, אחת ממטרותיה העיקריות של Kotlin היו לבצע הידור באותה מהירות כמו Java.

השם קוטלין נובע מהאי קוטלין, שנמצא ליד סנקט פטרבורג שברוסיה. הצוות החליט לקרוא לקוטלין על שם אי בדיוק כמו ש-Java נקראה על שם האי האינדונזי ג'אווה (אם כי ייתכן שהוא נקרא על שם קפה ג'אווה, אשר נקרא גם הוא על שם האי).

בשנת 2012 הפכה JetBrains את קוטלין לפרויקט קוד תחת רישיון Apache 2. גרסת v1.0 של קוטלין יצאה בשנת 2016, והיא נחשבה לגרסה הרשמית הראשונה שהייתה יציבה.

בכנס המפתחים השנתי Google I/O שהתקיים בשנת 2017, Google הכריזה על תמיכה בקוטלין בשביל מערכת ההפעלה אנדרואיד .

גרסה 1.2 של קוטלין שוחררה ב-28 בנובמבר 2017. בגרסה זו הוסף פיצ'ר חדש המאפשר שיתוף קוד בין המכונה הווירטואלית של ג׳אווה (JVM) לשפת התכנות JavaScript.

גרסה 1.3 של קוטלין שוחררה ב-29 באוקטובר 2018.

ב-7 במאי 2019, הכריזה חברת גוגל שקוטלין היא שפת התכנות המועדפת לתכנות יישומים במערכת ההפעלה אנדרואיד.

גרסה 1.4 של קוטלין יצאה באוגוסט 2020, עם שינויים קלים בתמיכה בפלטפורמות מבית תאגיד התוכנה הבינלאומי אפל.

## תכנון ומבנה השפה
מנהל הפיתוח של קוטלין, אנדריי ברסלב, ציין כי קוטלין תוכננה להיות שפת תכנות מונחית עצמים, אשר עמידה בפני שגיאות ותקלות (Industrial Strength) וטובה יותר מ-Java.

ניתן לשים נקודה פסיק ( ; ) בסוף כל הצהרה, אם כי הדבר לא נחוץ ברוב המקרים, שכן המהדר (אשר אחראי על המרת השפה לשפות תחתיות יותר לצורך הרצת התוכנית על ידי המעבד) יסיק זאת לבד מהתחלת שורה חדשה.

בהגדרת משתנים ורשימות פרמטרים לפעולות, יכתב שם המשתנה או הפרמטר, שלאחריו נקודתיים ואת סוג מבנה הנתונים של המשתנה. לדוגמה, `var number1:Int = 5` ייצור משתנה חדש ששמו number1 מסוג Int (מספר שלם, Integer) וערכו 5. זאת בדומה לשפות התכנות BASIC, פסקל, TypeScript וסוויפט. ניתן ליצור משתנים שניתן לקרוא אותם וכן לשנות אותם (**Mutable**) באמצעות המילה השמורה `var`, וקבועים שניתן רק לקרוא את ערכם (**Immutable**) באמצעות המילה השמורה `val` (קיצור של value).

שדות בתוך מחלקה הם פומביים (`public`) כברירת מחדל, כלומר ניתן לגשת לגשת אליהם מכל המקומות, כגון מחלקות אחרות. המחלקה עצמה מסוג `final` כברירת מחדל, כך שלא ניתן לרשת ממחלקה אלא אם כן מוסיפים בהגדרת המחלקה לפני המילה השמורה `class`, את המילה השמורה `open`. לדוגמה:
```kotlin
open class Person(age: Int) {
 // code for eating, talking, walking
}

class MathTeacher(age: Int): Person(age) {
 // other features of math teacher
}

class Footballer(age: Int): Person(age) {
 // other features of footballer
}

class Businessman(age: Int): Person(age) {
 // other features of businessman
}
```


## כתיבת קוד בקוטלין
תוכנית Hello World בקוטלין:

```kotlin
fun main(args: Array<String>) {
 println("Hello World!")
}
```
כאן הורצה פקודה אשר מדפיסה את ההודעה "Hello World!" בשורה חדשה על ידי שימוש בפונקציה המובנית `println` בתוך הפעולה `main`. פעולה זו תתרחש בכל פעם שהתוכנית תרוץ. את רוב הקוד רצוי לכתוב בפעולות אחרות, ולזמנן בהתאם ב-`main`.

### מבני נתונים בסיסיים בקוטלין

## ראו גם
* ג'אווה (שפת תכנות)
* Java Virtual Machine – JVM
* JetBrains (תאגיד תוכנה)
* אנדרואיד (מערכת הפעלה)

## קישורים חיצוניים

* 

## הערות שוליים

קטגוריה:Java
קטגוריה:אנדרואיד
קטגוריה:שפות תכנות מונחות עצמים
קטגוריה:שפות תכנות פונקציונליות