Google改進Android資料儲存方法,推出Jetpack DataStore測試版,以代替SharedPreferences。Jetpack DataStore是以Kotlin協程和Flow功能為基礎,並提供了Proto DataStore和Preferences DataStore兩種實作,Google強調Jetpack DataStore能解決SharedPreferences許多缺點
https://www.ithome.com.tw/news/139839
「kotlin缺點」的推薦目錄:
- 關於kotlin缺點 在 iThome Facebook 的最佳貼文
- 關於kotlin缺點 在 Johntool-工具王阿璋 Facebook 的最讚貼文
- 關於kotlin缺點 在 紀老師程式教學網 Facebook 的精選貼文
- 關於kotlin缺點 在 Re: [討論] 請大家聊聊靜態語言的缺點- 看板Soft_Job 的評價
- 關於kotlin缺點 在 [問題] Kotlin的熱潮幾乎已經全部過去了? - 看板java - PTT數位 ... 的評價
- 關於kotlin缺點 在 恆逸教育訓練中心- 隨著人手一機演變成人手1.5機 - Facebook 的評價
- 關於kotlin缺點 在 AndroidKnowledgeSystem/Kotlin.md at master - GitHub 的評價
- 關於kotlin缺點 在 Kotlin-Android世界的一股清流-优点&缺点 - 雷小歪的博客 的評價
- 關於kotlin缺點 在 [問題] Kotlin的熱潮幾乎已經全部過去了? | PTT 熱門文章Hito 的評價
- 關於kotlin缺點 在 Swift 跟Kotlin 要被淘汰了嗎?-Vlog#055 的評價
kotlin缺點 在 Johntool-工具王阿璋 Facebook 的最讚貼文
不務正業工程師的新單元:「#程式教學」來啦!
如果你想要入門學程式語言,但目前還沒有基礎,也沒有特定目標、
那這篇文章絕對要收、藏、起、來🤗!
如果你已經有特定目標,那可以期待之後的程式教學文章,
會帶你認識不同語言的優缺點👍👎。
程式語言百百種,C、C++、Python、Java、Javascript、Swift、Objective-C、Ruby,
第一次學寫程式,到底該學哪一種語言好呢?
來,照著5點選,準沒錯!
一、#熱門排行🥇:
程式語言熱門排行榜,挑選最多人用的程式語言,例如 :Java、C、Python。
學習語言遇到障礙時,也可以網路搜尋到比較多資源。
二、#有錢途💵:
挑選比較有「錢途」的程式語言,
2019年7月程式語言排行榜前十名分別是Java, C, Python, C++, C#, Visual Basic .NET, JavaScript, PHP, SQL 和Objective-C。
Python作為潛力股,一路過關斬將,擊敗C++,與Java和C成為全球最流行的程式語言。
現在人工智慧正夯,你可以選擇深度學習的 Python ,或是 Google 開發的 Go,都是非常有「錢途」的程式語言。
三、#高階語言👍:
挑選語法簡潔、邏輯較直觀的 「高階語言」,例如 Python 或是 Java,對新手來說相對友善。
阿璋小提醒💡:相較於組合語言、C語言,高階語言的指令顯得更為簡單易懂、容易撰寫。
四、#廣泛運用👥:
挑選可以廣泛運用的程式語言,例如 Java 或 JavaScript,
Java可以跨平台(桌面應用程式、手機 App、網站後端…),
JavaScript(node.js)可以在 Web 領域前後端通吃(前端、後端),
甚至現在連手機 App 或是桌面應用程式也都能寫,
未來找工作更是必備這項程式語言呀。
五、#未來發展🧔:
沒錯,看看自己以後想做什麼、就選什麼!
想自己做 App 就學 Swift(iOS系統)、Java / Kotlin(Android系統),
想做網站可以學 PHP、Python、Ruby、JavaScript,
想做資料分析、AI 可以學 Python等等。
自己的職業生涯自己選,那就先來看看自己最想要做的哪個領域的工作吧🤙🏻。
最後,想跟大家說,
我不認為任何一種語言會優於其他語言,
不過,我很贊成程式師應該學會多門程式設計語言,就讓我們透過簡單的幾點慢慢摸索,
一起找出最適合學習的程式語言吧🙋♂🙋♂🙋♂。
想知道更多?
【歡迎訂閱Johntool-工具王阿璋 @johntooltw ↓↓↓】
facebook► https://www.facebook.com/JohntoolTW/
instagram► https://www.instagram.com/johntooltw/
收到更多 #程式教學 #不務正業工程師 系列!
#程式 #程式語言 #程式教學 #程式語言排名 #engineer #engineering
#C #Cpp #Python #Java #Javascript #Swift #Objective-C #Ruby #Go #PHP #AI #人工智慧
#iOS #Android #Google #code #coding
#分享
kotlin缺點 在 紀老師程式教學網 Facebook 的精選貼文
[網友來信] 有哪一種語言可以寫出手機 App,然後直接用在 iOS 與 Android 上
這個網友不想要 iOS 與 Android 用不一樣的語言,寫兩次一樣的程式。所以問我有沒有什麼辦法,可以寫一次,就能寫出適用於 iOS 與 Android 兩大平台的 App。
方法是有啦...不過有「效能」與「特性」上的考量。來看看我是怎麼回答那個網友的囉~
-----------
想要用一種語言,就寫出橫跨 iOS 與 Android 兩大平台的 App,有很多好用的工具可以使用。茲介紹如下:
1. Adobe 的 PhoneGap
這是用 HTML / CSS / JavaScript 這三種語言聯手造就出能橫跨 iOS 與 Android 兩大平台 App 的方法。HTML/CSS/JavaScript 也是造就「網頁」的基本語言。又,「網頁」是每支手機都支援的,Adobe 公司就巧妙運用這點,用 HTML/CSS/JavaScript 打造 App,使之能橫跨 iOS 與 Android 平台。
PhoneGap 的維基百科簡介如下:
https://zh.wikipedia.org/wiki/Adobe_PhoneGap
2. Microsoft 的 Xamarin
這是用 C# 語言打造好 App,然後讓它能跑在兩大平台的手法。如果你本身就熟悉 C#,那就會推薦直接用這種方法。
Xamarin 的維基百科簡介如下:
https://zh.wikipedia.org/wiki/Xamarin
3. Appcelerator Titanium
這是用 JavaScript 打造 App,然後讓它能執行於 iOS 與 Android 的方法。若你本身熟悉 JavaScript,會推薦這種方法。
Appcelerator Titanium 維基百科:
https://en.wikipedia.org/wiki/Appcelerator_Titanium
4. Ionic
它是用 Angular.js (一種 JavaScript 延伸出來的套件,亦即,語法本身就是基於 JavaScript,但多了一大堆內建的好用函數與快速的新寫法)兜出來的 App。如果你已經會 Angular.js,會推薦你用這個。
Ionic 維基百科:
https://en.wikipedia.org/wiki/Ionic_(mobile_app_framework)
其實還有很多類似的方法。不過這類「跨平台」方法寫出來的 App,都免不了有「效能不佳」,或「無法發揮特定平台特殊功能」的缺點。這也是沒辦法的事,因為要跨平台,就只能取兩個平台都有的功能(交集)。那些各平台特有的功能,只能靠各平台專用語言(iOS 用 Objective-C 或 Swift。Android 用 Java 或 Kotlin)來撰寫了。
所以,如果你要寫的 App 是記帳程式這類簡單 App,用跨平台的方法寫無可厚非。但要寫手機遊戲這類需要效能的 App,就不推薦了。
希望這樣的回答有幫助!
kotlin缺點 在 [問題] Kotlin的熱潮幾乎已經全部過去了? - 看板java - PTT數位 ... 的推薦與評價
是因為Kotlin的優點無法大幅超過從Java遷移到Kotlin所帶來的缺點 ... 雖然Android我只是閒暇摸好玩的但也有點疑惑Kotlin在Android會不會始終保持在小 ... ... <看更多>
kotlin缺點 在 恆逸教育訓練中心- 隨著人手一機演變成人手1.5機 - Facebook 的推薦與評價
Andoird App有兩個程式語言可以選擇:Java、Kotlin 如果你正準備加入手機App開發或者是已經習得其中一個程式語言快來看看這一篇資深工程師對這兩種程式語言的優缺點大 ... ... <看更多>
kotlin缺點 在 Re: [討論] 請大家聊聊靜態語言的缺點- 看板Soft_Job 的推薦與評價
借題發揮一下:static typed for the win
不過還是先切題回答「靜態語言的缺點」:
在大部分常用的靜態語言中,的確可能出現 valid program 不好標注 type 的情況
不過到底有多難標注就完全看是哪個語言跟哪個版本了
-----
個人有碰過的語言依據學習順序大概是這樣
C -> Java -> Python/Ruby/JS/ObjC -> Scala/Kotlin -> Haskell/Idris
(差不多時期學的用斜線表示)
我對這個問題的偏好也從「靜態」轉「動態」再轉回「靜態」
下面大概聊一下我在學習不同語言的時候的感想
-----
##「靜態」轉「動態」
- Java -> Python,覺得 Python 好方便,不用寫長長的 main,且不用宣告變數型態。
## 在各種常見動態語言中遊蕩(?
- 學了 Ruby 後覺得 map/filter 等等使用 block 的函數實在太方便了。而 Python
相對應的答案是 list comprehension。當時不明白明明可以用 Library 解決的問題,
為什麼要使用另外的語法,後來學了 Haskell 才完全了解這東西應該怎麼用,
不過這是另外一個話題。
- 學了 JS 後覺得 Ruby block 語法比較沒有一致性,在 JS 全部用 anonymous
function 就解決了。也大概在這個時間點了解所謂 first order function
是怎麼一回事。
因為差不多在這個時期同時有在接 Android/iOS 專案,所以 Java/ObjC 碰得不少。
ObjC 雖然有 lambda ,但語法異常複雜以至於有這個網站
https://fuckingblocksyntax.com/
而當時 Java 才剛開始有 lambda solution,必須要靠 compiler plugin 才能支援,
但還是 desugar 成 class Function<T, R>,所以在 Java-like lang 寫 lambda
要標註 function type 實在醜,所以在這個時期最喜歡的是支援動態型別、
first order functions 的語言 JS。
## 「動態」轉「靜態」
不過上述問題在 scala/kotlin 等新興語言都有改善。以下是不同語言的 map function
比較:
- Java 8: List<R> map(Function<T, R> f)
- Scala: def map[B](f: (A) => B): List[B]
- Kotlin: fun <R> map(f: (T) -> R): List<R>
- Haskell: map :: (a -> b) -> [a] -> [b]
基本上大部分的情境中 function type annotation 現在應該都不是什麼大問題
當然 OO Lang 還要考慮繼承,所以還有 variance 的問題(不過在這邊就先忽略不談
## Type Annotation 很花時間是指?
Type inference 現在應該都是基本了,所以宣告變數需要重複寫 type 應該已經不是
個問題了。其他常被提到的則跟 sum type/product type 有關。
Product type 基本上就是一個 class 有多個 value members。但 Sum type 大家可能就
比較不熟悉。
舉例來說,一個 function 他需要同時支援 type A 跟 type B 作為唯一的 argument
基本上我知道的語言中,大概有三種方式:
1. 讓 A, B 實作同一個 interface/super class
2. Union Type, typescript/flowtype: type AorB = A | B
3. Tagged Union Type, Haskell: data AorB = A A | B B
其中 scala/kotlin 屬於 1. 但不像 Java 一樣宣告起來麻煩:
sealed abstract class Base
case class A() extends Base
case class B() extends Base
當然還是比 Haskell 的一行多了一些。而 TypeScript 更可以 inline 宣告。
到這邊為止,大部分的語言應該在九成五的 case 都不需要太多成本就能 cover 了。
## Haskell/Idris
當然還是有某些狀況下,type 很難被正確 annotate,例如如果 input 小於某個數字,
就回傳 String 否則回傳 Int。雖然可以用上面提到的 sum type,但是如果我們確定
input 一定大於指定數字,所以不想要處理 String 作為 output 的話,那就要用到
dependent type 了。
而如果使用有 dependent type 的語言,絕大多數的 program 都可以被 annotate
不過問題是:
1. 學習門檻高,大部分的基礎程式課程連 generic 都不會講,更不用講 DT
2. 大部分的語言不支援 DT
## 結論
靜態語言跟動態語言只是一個非常粗略的分法,其中可以討論的面向從純技術層面
到團隊營運跟產品性質都有關係。如果可以在討論的時候舉一些例子會比較有趣 :D
不過一般來說我還是覺得靜態語言比較好一些。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 82.25.26.57 (英國)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1606182325.A.2CA.html
※ 編輯: electgpro (82.25.26.57 英國), 11/24/2020 09:48:00
... <看更多>