本帖最後由 marco709394 於 2016-3-21 11:27 編輯

回覆 139# evec

佢確實講得無錯 test需要warnup time 因為第一次建造map需時而不應計算在performance內
可以參考呢個test
http://java-performance.info/string-switch-performance
唯一corner case係所有string都不同length 甘EqualsIgnoreCase會快一點

p.s. 我無意討論Java or Scala is better, 只係甘岩見到有人講switch-case to if-else
p.p.s. Scala的Pattern-matching case並不是switch case, 底層compile出來是if-else, 除非使用@switch annotation

TOP

回覆 140# shing1630


我唔覺你從中掌握咩野. 反而去錯方向都似.

TOP

本帖最後由 pl8888 於 2016-3-21 13:53 編輯
三 的確!如你所言,呢個亦係 Imperative 最難 Main 嘅地方。
我最慘痛嘅經歷,我見一個 public SomeThing createSth( User u , XXX xxx) 。好啦,入面水蛇春咁長咁 Build 個 Something 出黎,見你有 Return, 嘩點知,佢唔小心 Call 咗 User.yyyy() 去就佢個 Builder , 成個 User 就咁被人郁咗,仲要係某啲 User 先出現呢個問題,要縮窄個範圍去到呢個 Function 先搵到呢啲 Bug

你可以話只不過係人為因素至有呢個問題,但我亦都可以話用Scala 就完全無呢個題


依個係寫 createSth (或者用 createSth) 既 coder 既問題, 多個 language 既問題.

如果寫 createSth 既 coder 冇享 contract 指明會改 User state, 但實際係改左, 個錯係享寫 createSth 既 coder 到.  否則, 如果有指明會改 User state, 而用 createSth 個 coder assume 冇, 就唔關寫那個事.

依個係 contract 既作用. 如果你用 open source library 就有得睇 code 姐, close source 點會有 code 你睇, 純粹靠 documentation 辦事.

你話 Scala 完全無呢個題, 願聞其詳, 我都想學下野.

TOP

成個 Java/Scala 討論因為我一句「開新 Project 仲用 Java」

等我詳細啲解釋、分享返呢一句我背後有乜野睇法

Why Scala ? (你可以話我好主觀嘅因素)

1. 100% compatible with Java Project
2. All Java Library can be reuse
3. Clean & elegant syntax
4. Type inference
5. Designed for extreme Functional & OO

點解係 Scala? 點解唔係 Go lang 、Swift、F#、Erlang ?

Scala 咁特別係因為佢 100% Compatible With Java。如果佢唔係有呢一個 Feature ,我根本無可能用到,一間公司邊有可能下下斬掉重練、剷底重做?

如果講我鐘意嘅 Language 一定未輪到 Scala, 我自己比較鐘意 Swift (寫過 Scala 嘅人可以好快Pickup 到 Swift),尤奇鐘意佢個 Optional? Syntax。鐘意還鐘意,咁又點?我可唔可係現有嘅 Java Project 度用 Swift?

其實 Swift 個情況同 Scala 極度相似,又係 100% compatible with ObjC、All ObjC Library can be reuse、Type inference 、Clean & elegant ,缺點又係 Compile 得慢!

嘅然係咁如果我話:
「開新 iOS Project 仲用 ObjC ?」

如果你有一刻覺得呢句好合理,咁樣只係簡單改一改類近情況:
「開新 JVM Project 仲用 Java ?」

對於我黎講,呢兩句同樣 Make sense。
Swift 因為 Created by Apple 令全世界都知,同樣外國愈黎愈多高質公司轉用 Scala 令 Scala 名聲慢慢愈黎愈大,比較多嘅例子係 Scala + Akka Actor System 。

如果你覺得我踩親你條尾嘅話,我講聲 Sorry 先,的確 2016年一樣仲會有公司、有人用 ObjC 做新 iOS project。唔用 Swift 開新 Project 原因可以有好多:「公司無人識、請唔到人、無需要、無人帶」,反問一下,咁點解你唔可以做第一個呢?

有興趣嘅朋友,可以問下你嘅 iOS developer 朋友由 ObjC 轉 Swift 喺咩感覺,同樣我相信當你由 Java 轉 Scala 會得到好接近嘅感覺。

經驗、自我感覺我都分享咗。我都唔想再講/回啲有關 Scala 而且 Google 到嘅討論問題!

送句格言比睇到最後嘅 Developer
"If a programming language is sufficient powerful, then the limit is your fantasy"

Other Java Alternative?
近幾年 Intellij 都出咗隻 Kotlin 又係 100% compatible with Java,比 Scala 更加易 Pickup。我公司第二Team 同事已經用緊 Kotlin,佢話上網搵到有好多例子係用係 Android development, 主要原因都係 Android Develoment 只係用到 Java 1.6,令佢地焗住棄用 Java 轉用 Kotlin 提高 Productivity。

via HKEPC Ionic Reader v1.2.9 - iPhone

TOP

成個 Java/Scala 討論因為我一句「開新 Project 仲用 Java」

等我詳細啲解釋、分享返呢一句我背後有乜野睇 ...
hihihi123hk 發表於 2016-3-21 18:11

有理有據,令人信服

via HKEPC Reader for Android

TOP

本帖最後由 evec 於 2016-3-21 20:40 編輯
回覆  evec

佢確實講得無錯 test需要warnup time 因為第一次建造map需時而不應計算在performance內
可以 ...
marco709394 發表於 2016-3-21 11:25


Benchmark Test 係唔一定要Warmup,你要清楚個Warmup用來做咪,用來排除甚麼問題,個Benchmark Test用來做咪,如果程式根本要動態生成Map,那"生成Map"本身就係程序運行的一部份
你夾硬用 WarmUp 比佢所謂Run順,
這個WarmUP Test就根本是破壞整個Benchmark準確性。

而且我的Benchmark設計係唔同佢,我係一堆程式入面抽一些位置插入Switch/If 來做比較,之前會做Ramdom生成數據,不是單純的Loop n次。

TOP

本帖最後由 evec 於 2016-3-21 21:14 編輯
成個 Java/Scala 討論因為我一句「開新 Project 仲用 Java」

等我詳細啲解釋、分享返呢一句我背後有乜野睇 ...
hihihi123hk 發表於 2016-3-21 18:11



    我知你抄Google抄得好幸苦,不過你越講得多越看得出你論點之薄弱,仲要吹到唔用Swift用Objetive C係因為唔做第一個,話Swift-Objective C 關係如 Scala-Java 又夾硬玩二樣野等同化來偷天換日概念,
唔係話自己主觀意見就可以亂Up又要威又著曬太空衣,

話公司唔用Swift係唔肯變(用Swift定Obj-C寫唔重要,重要係後面的都係Apple,但Apple而家都係成堆用緊Obj-C啊,大部份接口都係Obj-C,你試下唔識看Obj-C走去寫下IOS單純眼入面只有Swift成唔成事,寫IOS用邊種語言又要曹,有經驗的人都知寫IOS係學Framework重要個語言,除非寫你覺得好重要的Playground consonle就真係要Swfit啦 ,唔好意思都係唔講唔係一陣間又話thinking in Obj-C ),都係個句基礎概念錯想野又鑽牛角尖,實際寫下先講啦。再見

TOP

依個係寫 createSth (或者用 createSth) 既 coder 既問題, 多個 language 既問題.

如果寫 createSth 既 ...
pl8888 發表於 2016-3-21 13:45


   
你講得無錯,的確係人為問題!

Codes are created by human.

以我遇過最壞嘅例子為例,根源上無人可以阻止到呢啲人為問題。唯一可以做嘅就係於 Object 落手 ( Immutable Object ),限制其它 Developer mutate Object

簡單啲講,如果要修改此 Object 就一定要產生一個新 Object 。

不過係 Java 要實踐呢樣野可以話係極度困難,係 Scala 實踐輕鬆好多

基本概念就喺由 Imperative 轉去 Functional,此轉變將會令整個 Application 點樣 Handle Logic 都會徹底唔同,三言兩語未能夠講得清楚。

返到香港,先比個簡單例子

via HKEPC Ionic Reader v1.2.9 - iPhone

TOP

我知你抄Google抄得好幸苦,不過你越講得多越看得出你論點之薄弱,仲要吹到唔用Swift用Objetive C係 ...
evec 發表於 2016-3-21 21:05


   
學海無涯,希望你都唔好鑽牛角尖,學多啲野

其實淨係見到你 #32 嘅帖,我已經知道同你無討論空間。

再見   好行夾唔送喇

via HKEPC Ionic Reader v1.2.9 - iPhone

TOP