2018年8月27日 星期一

設定 VS code 使用 kotlin compiler and kotlin native

先到官方網站 https://kotlinlang.org/docs/tutorials/command-line.html 去下載 kotlin-compiler, 我直接下載 1.2.61.zip 版本:
         https://github.com/JetBrains/kotlin/releases/download/v1.2.61/kotlin-compiler-1.2.61.zip
這是 Kotlin JVM 版本, 還需要事先安裝好 JAVA 才能執行. 用 unzip 可將它解壓縮, 解壓縮的目錄用  mv 指令把它改成  $HOME/kotlinc, 先寫一個 bash script 設定好環境變數 PATH, 將它存成 ktenv 檔案,方便以後使用:
        #!/bin/bash
       alias path='echo "$PATH"'
       function pathadd() {
             if [ -z "$1" ]
             then
                  PATH=$PATH:$(pwd)
             elif [ -d "$1" ]
             then
                    PATH=$PATH:$1
             fi
       }
       pathadd  $HOME/vscode/bin
       pathadd  $HOME/kotlinc/bin
開啟終端機, 執行上述文稿, 並執行 VS code
       .  ktenv
       code
在 VS code裏面點擊側邊欄的拼圖工具(extensions), 搜尋 Kotlin Language 並安裝它, Kotlin 敘述結尾並不需加上分號,寫一個簡潔的  kotlin 程式碼;
         // my.kt
         fun main(args: Array < String > ) {
              var g = {s:String -> s.length } // 定義 g = λ(s), 輸入字串,取出字串長度,
              var f  = {l:Int -> (l%2)==1      } // 定義 f = λ(l), 輸入整數,判斷是否為奇數
        
              listOf("1", "22", "333", "4444", "55555") // 產生字串陣列的物件
              .filter { x -> f(g(x) ) }  // 使用 λ(x) =  f(g(x)) 過濾字串
              .forEach { println(it) }             // 列印出來

              mapOf( 1 to "一", 2 to "二", 3 to "三", 4 to "四")  // 產生字典的物件
              .filter { (x, _) -> f(x) }   // 使用解構式 (key,value),底線忽略.用 λ(x)=f(x) 過濾字串
              .forEach{ (key, value)  -> println("[$key]  $value") } // 列印出來
         }
 開啟下面板的終端機(TERMINAL) 將暫存檔放到 ramdisk (/tmp),避免寫到磁碟,執行以下指令:
        kotlinc my.kt -include-runtime  -d   /tmp/jartmp.jar    &&    java -jar /tmp/jartmp.jar
或是在 VS code 點選上面板的 Tasks -> Configure Task, 將上述指令寫進 tasks.json 檔案裏面,只要修改制訂 label 及 command 就可以了:
  {
     // custom tasks.json
     //  ...
     "versions" : "2.0.0"
     "tasks" : [
          {
             "label" : "runkt"   
             "type"  : "shell"
             "command" : "kotlinc my.kt -include-runtime  -d   /tmp/jartmp.jar    &&    java -jar /tmp/jartmp.jar"
          }
       ]
  }
關閉 tasks.json 並存檔(save), 這時在  Tasks -> Run Tasks 就會看到剛剛新增的工作 runkt , 點擊它會開啟終端機並執行.另外也可以安裝擴充插件像是 Code Runner, 安裝完後會在右上方多出一個三角形按鈕 (run button),點擊 run 按鈕就可以執行 Kotlin 文稿了.

另外可以上官網 https://blog.jetbrains.com/kotlin 下載 Kotlin native comipler,
我下載 Linux 版本
         https://download.jetbrains.com/kotlin/native/builds/releases/0.8.2/linux/kotlin-native-linux-0.8.2.tar.gz
用  tar -zxvf 解壓縮後,再用 mv 指令將目錄改成 $HOME/konan,  把 konan/bin 加入 PATH, 之後用  konanc 編譯 my.kt 成可執行檔:
        pathadd $HOME/konan/bin
        konanc  my.kt -o my
編譯完輸出 my.kexe , 編譯的速度很慢要花上一段時間, 最後執行看看
        my.kexe
本身就可執行, 無需 JVM, 看看輸出結果:
1
333
55555
[1]  一
[3]  三

與 JVM 版的是一模一樣的, 但速度超快,酷 !

 p.s. 美化數學符號
1. 先安裝 Fira code 字型,可到官方網站下載 https://github.com/tonsky/FiraCode 打包的 zip檔用 unzip 解壓縮後, 把裏面 ttf 目錄全部複製到  /usr/local/share/fonts 接著執行 fc-cache -f 讓 linux 系統重新讀取系統字型
          sudo  cp   -r   ttf   /usr/local/share/fonts
          fc-cache  -f
2. 開啟 VS code 點選上面 File -> Preferences -> settings 開啟檔案 settings.json 修改設定, 接著在右邊欄點擊標籤 USER SETTINGS 或是 WORKSPACE SETTINGS 加入以下兩行設定後關閉並存檔(save):
         {
               "editor.fontFamily": "'Fira Code'",
               "editor.fontLigatures": true,
         }
安裝完 fira code 之後一些像是 ==, != , -> 等等符號就改變造型或連接起來了,讓程式變得更像數學方程式,感覺比較順眼


沒有留言: