想搵個處理文字能力強, unicode support得最好既language

我以前寫落一個軟件, 主要係用黎處理text file
軟件係用Java寫的, 選Java主要原因係當時比較熟Java, 同埋Java係原生unicode, 再加上當時喜歡將文字儲存無UTF-16LE, 而Java的原生unicode又正正係UCS2, 所以選左用Java寫

不過時至今日, language已經唔係問題, 隨便一隻language, 甚至係未學過既language, 我都識寫, 再加上我手上既txt file已經唔係只有UTF16LE, 也有UTF8, 所以比我再揀的話, 唔會再用上面所講既理由做選擇

而今日正正要面臨再次選擇, 我打算改進軟件功能, 準備改program, 甚至重寫
我可以在現有java上做改進, 又或者用另一個language重寫, 會點做取決於得到咩答案

如果重寫的話, 我本來打算用python, 因為python等級比java高, 就算做同一件事, code就係要比java簡單, 但後來覺得, 始終重點都係處理文字能力同埋unicode, 所以都係以這兩個能力來做決定

本帖最後由 hihihi123hk 於 2019-3-5 09:15 編輯
我以前寫落一個軟件, 主要係用黎處理text file
軟件係用Java寫的, 選Java主要原因係當時比較熟Java, 同埋Ja ...
3ldk 發表於 2019-3-4 11:39

既然原本用 Java,何不試下轉哂用 Kotlin  

Kotlin 都好值得用,Kotlin 同 Java 比的話,個 Program 愈大就愈顯得出眾

有 Intellij Auto Conversion,可以好快上到手。

不過個人建議成份 Kotlin Doc 睇一次先   Kotlin 好多新 Language Features Java 完全冇

另外,「處理文字能力」理論上由 Library 提供,本身 General Purpose 嘅 Language 點會無端端特登設計成「處理文字」,除非你自創一堆 DSL in 某隻 Language (Kotlin 可以做)去做處理再 Open Source 貢獻世人


所以當你有一個好好嘅 Dependency Management 就唔需要煩加 Library,Gradle + Kotlin 會係一個幾好嘅起手

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP

既然原本用 Java,何不試下轉哂用 Kotlin   

Kotlin 都好值得用,Kotlin 同 Java 比的話,個 Progr ...
hihihi123hk 發表於 2019-3-5 09:09



我有寫開kotlin
如果keep返java code, 的確唔排除會轉成kotlin, 但目前好似未搵到理由keep返java/kotlin (當然, 亦未搵到理由轉其他)

「處理文字能力」理論上由 Library 提供, 依點無錯, 基本語法點會幫助處理文字呢? 所以上面問既, 係包括埋library, 而library範圍, 亦包括std同3rd

同埋我所以會咁問, 因為我見過有一個咁既說法
https://zh.wikipedia.org/wiki/%E ... B%E8%AF%AD%E8%A8%80
當中有提到
"有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁;Perl更適合文字處理;C語言被廣泛用於作業系統和編譯器的開發(所謂的系統編程)。"

雖然我唔知Perl點解更適合文字處理, 但既然有咁既說法, 咁我用"目的"去選擇語言, 應該無錯

至於unicode更是如此, 我曾經覺得自己唔會選擇要用interrupter的語言, 例如java, python, ruby
如果要用, 一定要用c, c++, go 依類
亦真係試過用C去寫, 結果要搞unicode真係非常麻煩
結果都係乖乖地, 用適當既工具去做適當既事

TOP

本帖最後由 hihihi123hk 於 2019-3-5 21:12 編輯
我有寫開kotlin
如果keep返java code, 的確唔排除會轉成kotlin, 但目前好似未搵到理由keep返java/kotlin ...
3ldk 發表於 2019-3-5 17:02

唔係咁講

有 Language Features 先做到好寫嘅 DSL

例如 DSL 想寫成咁

open file “test.txt” {
    transform “/a-z/“  toUpperCase
    save “UpperTest.txt”
}

隻 Language 如果冇 infix 功能及 Builder scope 例如Java 根本寫唔到

最多只可以寫成咁

open(file(“test.txt”))
.transform(“/a-z/“, toUpperCase)
.save(“UpperTest.txt”)

不過寫 DSL 好考功架以及 Domain Driven 設計,對 Programming  技巧要求好高,無返咁上下設計唔出 Powerful 嘅 DSL

如果你想 Heavily Reuse 「處理文字能力」,起一壇 DSL 就最好不過

你問我,就算係 Java 轉去 Kotlin,本身已經可以有好大改進空間,唔係單單只 Syntax 轉換,大部份情況下成個解決問題嘅方法可以寫得更高層次

只不過好多人冇深入了解過 Kotlin ,連比到啲咩 Language Features都未知,跳唔出個框,自然諗唔到可以做成點

Btw, JVM 其實好強大 如果唔係去到要撩 Pointer 咁做 Optimization,JVM Desktop Application 嘅適用程度應該有 99.99%,差在識唔識寫

不過而家大部份 Retail App 都轉哂用 Electron, 始終 React Vue Angular + CSS 寫 UI 做 Theme 實在發展得太好

除非你個 UI 要 Render 幾萬行 Data,咁先會㨂非 Electron 入手

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP

Python處理unicode string的確有d問題
keyword: UnicodeDecodeError
e.g.
https://ithelp.ithome.com.tw/articles/10194277

TOP

唔係咁講

有 Language Features 先做到好寫嘅 DSL

例如 DSL 想寫成咁

open file “test.txt” {
     ...
hihihi123hk 發表於 2019-3-5 20:52


DSL 的話就用 Ruby 啦

TOP

DSL 的話就用 Ruby 啦
xader 發表於 2019-3-5 23:25

寫 DSL 唔係 static typing 已經唔洗考慮

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP

寫 DSL 唔係 static typing 已經唔洗考慮

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)
hihihi123hk 發表於 2019-3-6 00:06



    點解一定要 static typing?

TOP

本帖最後由 hihihi123hk 於 2019-3-6 14:04 編輯
點解一定要 static typing?
xader 發表於 2019-3-6 13:34

Dynamic Typing 易寫但難 Refactor 難 Trace

DSL 需要嘅 Type 一定會設計得好複雜,如果 Trace 唔到,其實好難 Extends 落去

嘅然 Static Typing + Type Inference 已經做到 Dynamic Typing 嗰種方便程度,唔會再好 Verbose 先寫得出,咁仲點解要用 Dynamic Typing  

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP