iT邦幫忙

2023 iThome 鐵人賽

DAY 1
2
Kotlin

Kotlin is all you need系列 第 1

[Day 1] Why Kotlin ?

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20231013/20152821tiUub9MLw9.jpg

開賽前言

以前都有想過用一種程式語言實作基本演算法,之前試過 C++Python,不過寫幾天後就沒碰了 :)

這次是透過 Kotlin ~

以前在 Mobile Application 開發的經驗不多,一開始是透過 Java 開發

在去年,有參加 Google Study Jam 才開始接觸 Kotlin

這次想說透過這 30 天鐵人賽來了解基礎 Kotlin 並實作一些資訊工程上基本的演算法

參賽目錄

Data Structure (Day 2 - Day 5)

  • Array
  • Linked List
  • Stack
  • Queue
  • Hash Table
  • Heap
  • Tree
  • Graph

Sorting Algorithm (Day 6 - Day 10)

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Quick Sort
  • Heap Sort
  • Counting Sort
  • Radix Sort
  • Bucket Sort

Tree (Day 11 - Day 12)

  • Binary Search Tree
  • AVL Tree
  • Red-Black Tree

Graph (Day 13 - Day 16)

  • Breadth First Search
  • Depth First Search
  • Topological Sort
  • Dijkstra's Algorithm
  • Bellman-Ford Algorithm
  • Floyd-Warshall Algorithm
  • Prim's Algorithm
  • Kruskal's Algorithm

Dynamic Programming (Day 17 - Day 20)

  • Fibonacci Sequence
  • Longest Common Subsequence
  • Longest Increasing Subsequence
  • 0-1 Knapsack Problem
  • Coin Change Problem
  • Rod Cutting Problem
  • Matrix Chain Multiplication
  • Edit Distance

Greedy Algorithm (Day 21 - Day 24)

  • Activity Selection Problem
  • Huffman Coding
  • Job Sequencing Problem
  • Fractional Knapsack Problem
  • Minimum Spanning Tree
  • Shortest Path

Backtracking (Day 25 - Day 30)

  • N-Queens Problem
  • Sudoku Solver
  • Hamiltonian Cycle
  • Graph Coloring
  • Subset Sum

Rewind (Day 31)


Kotlin

Kotlin 是一跨平台的、靜態類型的程式語言,最初由 JetBrains 開發,於 2011 年首次發佈。

它是一個通用型的語言,可用於開發各種應用程序,包括 Android 移動應用、Web 應用、桌面應用和服務端應用。

Kotlin 的一些主要特點和優勢:

  1. 簡潔和表達力Kotlin 設計簡潔且易讀,減少了程式碼中的冗余。

  2. 跨平台Kotlin 可用於不同的平台,包括 Android、iOS、Web、桌面和服務端。

  3. 互操作性Kotlin 可以與現有的 Java 程式碼無縫互操作。

  4. 靜態類型Kotlin 是一種靜態類型語言,這意味著在編譯時會檢查類型錯誤,這有助於減少運行時錯誤,提高程式碼的可靠性。

  5. 官方支持的 Android 語言:Google 在 2017 年宣布 Kotlin 為 Android 官方開發語言,這使得 Kotlin 在 Android 生態系統中變得更加重要。

Difference between Java

Kotlin 的優勢:

  1. 簡潔性和可讀性: Kotlin 的語法相對簡潔,減少了冗余的程式碼,使程式碼更易讀、維護和理解。

  2. Null Safety: Kotlin 在語言層面上提供了 Null Safety,可以避免許多空指針異常(NullPointerException)的問題,使程式碼更可靠。

  3. 函數式編程支持: Kotlin 支持函數式編程風格,包括高階函數、Lambda 表達式和不可變性,這有助於編寫更具表達力的程式碼。

  4. 互操作性: KotlinJava 無縫互操作,可以在 Kotlin 項目中使用現有的 Java 程式碼,而無需進行重大修改。

  5. 擴展函數: Kotlin 允許為現有的類添加新的函數,而不需要修改它們的源碼,這種功能被稱為擴展函數。

  6. 更好的工具支持: Kotlin 在流行的集成開發環境(IDE)中有良好的支持,如 IntelliJ IDEA 和 Android Studio。

Java 的優勢:

  1. 成熟度: Java 是一門成熟的語言,已經存在多年,擁有龐大的生態系統和社區支持。

  2. 廣泛的應用範圍: Java 可用於多個領域,包括桌面應用、Web 應用、企業應用、大數據和服務端開發等。

  3. 性能: Java 在某些情況下可能比 Kotlin 稍微更快,因為它經過了多年的優化。

  4. 大型專案支持: Java 適用於大型和複雜的專案,並具有豐富的庫和框架。

以下圖片僅針對 Android 開發進行比較

https://ithelp.ithome.com.tw/upload/images/20230910/201528215HWbSzUWCI.png

Developing Platform

以下是一些 Kotlin 開發環境(IDE)和工具:

  1. IntelliJ IDEA(帶 Kotlin 插件):只需在 IntelliJ IDEA 中安裝 Kotlin extension,即可開始使用 Kotlin 開發。這是許多 Kotlin 開發人員的首選。

  2. Android Studio:它基於 IntelliJ IDEA,並且內置了對 Kotlin 的支持。Android 官方推薦 Kotlin 作為 Android 應用程序的開發語言。

  3. Visual Studio Code(帶 Kotlin 插件):Visual Studio Code 是一個輕量級且強大的跨平台代碼編輯器。通過安裝 Kotlin extension 來在 Visual Studio Code 中開發 Kotlin 項目。

  4. Eclipse(帶 Kotlin 插件)

  5. Kotlin 命令行工具:傾向於使用文本編輯器和命令行,使用它來編譯和運行 Kotlin 程式碼。

  6. Kotlin Playground:無需安裝任何 IDE。

接下來將以 Kotlin 來實作這些演算法 ~

/images/emoticon/emoticon08.gif

所有 Code 可以在 Github 找到 ~

Reference


下一篇
[Day 2] 環境設定 / Array / Linked List
系列文
Kotlin is all you need31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
艾薇 Ivy
iT邦新手 4 級 ‧ 2023-09-23 20:35:55

從Day14回來看!很棒的資料結構與演算法架構,文字說明簡單易懂,厲害了!

whoami iT邦新手 3 級 ‧ 2023-09-23 21:21:26 檢舉

感謝支持

我要留言

立即登入留言