Board logo

標題: [轉貼] 看蘋果副刊 "寫App好容易" 論 香港的科技廉價化 [打印本頁]

作者: evec    時間: 2016-3-14 12:39     標題: 看蘋果副刊 "寫App好容易" 論 香港的科技廉價化

仲以為個 "好姿勢" 有甚麼料,原來又係PowerPoint式App,如果整個PowerPoint叫App我承認好易寫App。
人地外國教code 寫App,只係學習電腦Logic理論,無叫個個變科技人材,
香港就借二路來壓價,來鼓吹人人能做編程大師,IT神童。
所謂科技人才培訓面臨困局就係制造更多半桶水的化費金錢買課程証書再頂爛市做成更加劣的困局。

正如現在寫HTML變為寫BLOG,要維持個BLOG的技術就變得更困難,一個APP能夠有獨特性面對的技術面更加係有增無減,只有專才成,例如一間公司就只專注開發人工智能中某一特定資料庫分析己經係一門價值幾億美金生意,香港同大陸鬥程式農民?同台灣韓國鬥代工成本?香港仲有甚麼可以做到,叫你學以色列就學唔到,借東風找著數就最快手,香港這樣世界仔找快錢賺水魚心態注定同科技/創新無緣。



http://hk.apple.nextmedia.com/su ... t/20160314/19528019


校友會午餐例會的演講題目素來以經濟、投資、旅遊為主,避免講政治。校友會是畢業生聯誼,拓展社交網絡,認識不同年代校友的地方,不宜涉及極度爭議性的話題,例如在2014年講佔中,校友肯定分裂為黃絲帶、藍絲帶兩批,嗌起架來,有失校友情誼。左丁山經常講,中大學生讀書時百花齊放,匯聚各類不同思想的人物,譬如同是教育界,便有張文光、楊耀忠之分,畢業後到社會參與政治,便有吳明欽與馬力之別,今日在政府政壇活躍的陳茂波、吳克儉、高靜芝、麥美娟、鄧家彪等人的思維當然與在校的張秀賢、岑敖暉有天淵之別。有見於此,左丁山在校友會堅持不講政治,有意見的,請各自參與泛民或民建聯,以至勇武本土派。
今個月的演講題目,苦思良久,請了城市大學副教授張澤松博士(新亞計算機科學1999)講演,張教授在城大主持一個Apps Lab訓練學生寫程式,做Apps,搞機械人研究,興趣十分廣泛。左丁山是科技盲,但聽他在城大開班教長者,到赤柱監獄培訓囚犯寫Apps,卻似很輕鬆、容易,赤柱囚犯且搞出了一個利物浦球迷的Apps。
他的學生又弄出一個「好姿勢」(可在手機下載)的App,以量度、測試個人的脊椎骨是否合乎健康標準。
張教授說英國教育部已明令把Coding列入中學課程,中學生學會後便懂得自製Apps,比較之下,香港的中學電腦課程甚為落後與沉悶,顯然跟不上特區政府這一兩年推動科技創新的政策步伐,難怪坊間已出現一些IT補習學校,不少富裕家長送子女上Coding補習班。張教授慨嘆香港中學改制後,學生選讀科技科目反為更少,香港的科技人才培訓面臨困局。左丁山以為,這與三三四學制無關,與三三四學制下的課程內容大改革有關。學校為壓逼學生取得良好DSE成績,不准學生讀8科(部分名校除外),學生普遍只讀6科,即中英數通識四科加兩科,根本達不到大學理學院的要求。張博士入大學時,大概要4科A才可進入電腦系,現在DSE拿4個D已可進入大學工學院,而且進了大學才讀微積分,把大學理工科教授弄得啼笑皆非。張教授說希望香港的中學以天水圍翁祐中學為榜樣,注重IT教育。不過,翁祐中學是特殊例子,其他學校怕學不來。
作者: polarhei    時間: 2016-3-14 13:10

不是香港, 每個地方也是如此. 科技只佔運營成本大約25%-33%. 你需要搞清楚究竟人要咩野先得. 科技是低廉的, 但應用就不是低廉. 香港學不到以色列其中一個原因是沒有居安思危的意識. 內地有機會學的原因, 主要是美國.

如果人地畀二拾萬美金. 你應該知道個業務值最少二百萬美金.
作者: alanlam11    時間: 2016-3-14 15:03

其實你係呢行就會知,大陸Code農一D都唔比香港平。。。。
作者: Databases    時間: 2016-3-14 15:09

提示: 作者被禁止或刪除 內容自動屏蔽
作者: evec    時間: 2016-3-14 18:41

不是香港, 每個地方也是如此. 科技只佔運營成本大約25%-33%. 你需要搞清楚究竟人要咩野先得. 科技是低廉的, ...
polarhei 發表於 2016-3-14 13:10

你要知道係人地比廿萬你買咗成功咗先有二百萬,而且人地通常係買咗件野連你本人都一齊要。
香港就係要成果ONLY,人唔要,技術就更加唔想知,只想要錢穩賺。


其實你係呢行就會知,大陸Code農一D都唔比香港平。。。。

   大陸CODE唔比香港平,無錯,而家大陸一般等級唔係咁有少少料可找六七千至一皮,約普通工種價格三倍左右,但大陸基數低,所以比一般人三倍的人工都唔覺高,但香港的出手同IT公司的質素同水平大家都知幾低,塘水滾塘魚。
作者: polarhei    時間: 2016-3-14 18:44

不是單單香港, 任何地方都係噉。 只是, 部份地方想知道過程......
作者: 杜龍    時間: 2016-3-14 18:47

大陸vendor收3-5K /manday
香港大vendor 收8-10K/manday
microsoft/adobe 收20K...
作者: hihihi123hk    時間: 2016-3-15 00:02

你見香港啲公司仲用緊 Java 開新 Project

仲繼續 Monolithic

根本無得同外國比

我覺得香港根本就斷咗層,有能力嘅好多都走哂外國發展,淨番中中間間嗰啲又唔敢變。惡性循環之下,尖子唔揀 CS 真係無可厚非

係咁架啦,好出奇呀?

via HKEPC Ionic Reader v1.2.7 - iPhone
作者: Mathk    時間: 2016-3-15 00:13

CDU係咁上下質素。
作者: 556556bt    時間: 2016-3-15 00:35

你見香港啲公司仲用緊 Java 開新 Project  

仲繼續 Monolithic

根本無得同外國比

我覺得香港根 ...
hihihi123hk 發表於 2016-3-15 00:02


好正常, 成本同風險問題.... 邊個咩飛? 上左位既5,60, 坐多幾年同咬糧, 邊個會同自己份退休金過唔去?
唔做幾年耐又唔會死既. 做左既話自己個位都唔知保唔保得住.

係咁架啦. HK 呢個market 連自己都唔珍重. 係無人會特別理架啦
作者: seasky    時間: 2016-3-15 08:58

提示: 作者被禁止或刪除 內容自動屏蔽
作者: shing1630    時間: 2016-3-15 09:21

外國用咩 開新 project?
seasky 發表於 2016-3-15 08:58



我都想知
佢講到用JAVA 好out咁
作者: hihihi123hk    時間: 2016-3-15 10:14

本帖最後由 hihihi123hk 於 2016-3-15 10:19 編輯
外國用咩 開新 project?
seasky 發表於 2016-3-15 08:58



    外國好多人分享自己點樣由 Monolithic slowly migrate to Microservice,

講緊一個 System 應該要 Reactive、 Rescillient、Elastic 、Message driven

一個 Message drvien 嘅System 根本唔需要擔心用乜野開發,每個 Service 都係 Single responsibility,根據 Service 嘅需要揀最適合嘅 Language

例如話一個 System 有幾個 Microservice 可以由幾種 Lang 組成,例如話: Nodejs, Golang , Scala , Python

但就一定唔會揀 Java,無錯 Java 真係好 Out , 係外國寫 Java 會被 Consider 為 Low down productivity。原因就係因為佢係 Strictly OOP, 同埋本身太簡單好多 Design 都要夾硬 Apply 落去又或者完全 Apply 唔到 ,直性可以話 The Simplicity become Complexity 。

其中一隻可以無縫取代Java 又行 Jvm 嘅就係 Scala,一個原生支技 OOP + Functional 嘅 Language。

大把外國巨頭由 Java 轉去 Scala。Netflix、Twitter、Linkedin。咁樣自然多人講、多人學,根我所知香港其中一間好成功嘅 Starup (onesky) 都開始全面 Migrate 去 Scala

Reactive System
http://www.reactivemanifesto.org

How Scala solve Java Daily Problem
https://www.slideshare.net/mobil ... praveentechnologist

Scala at Morgan Stanley
https://vimeo.com/147697498

就連 Java 之父都係咁講
http://www.azquotes.com/quote/801349
作者: hihihi123hk    時間: 2016-3-15 10:19

回覆 12# shing1630


    開新 Project 仲用 Java」我知呢句好難聽,但真係我心聲。我自己寫過兩三年 Java,公司話要轉用 Scala 嗰下,我都好猶豫,但係深入去學之後,就會覺得我係 Scala 實淺到嘅野令啲 Code 更加易 Main,Java 係完全比唔到我,都係嗰句「因為 Java 太簡單」
作者: seasky    時間: 2016-3-15 10:39

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hihihi123hk    時間: 2016-3-15 10:51

請教一下, 傳統寫 app, 不論是 mainframe 式 centralized, client server, multi-tier.

都不外乎 prese ...
seasky 發表於 2016-3-15 10:39


有時間可以睇咗先,  Lightbend ( 前名 Typesafe) 係其中一個 organization  support Scala development
    https://www.youtube.com/watch?v= ... FT7XNMa5jwrgKWxM%3D
作者: 7h1r733n    時間: 2016-3-15 10:53

例如話一個 System 有幾個 Microservice 可以由幾種 Lang 組成,例如話: Nodejs, Golang , Scala , Python
hihihi123hk 發表於 2016-3-15 10:14

好處係乜? 養多一大班人?
作者: hihihi123hk    時間: 2016-3-15 10:56

本帖最後由 hihihi123hk 於 2016-3-15 10:57 編輯
好處係乜? 養多一大班人?
7h1r733n 發表於 2016-3-15 10:53



    每隻 Microservice 因為 Complexity 低、易 Main 、易 Deploy 、易用新 Tech => 容易被取代

當然你可以一個 System 幾個 Microservice 然後用番 同一種 Language
作者: 7h1r733n    時間: 2016-3-15 10:58

Complexity 低、易 Main 、易 Deploy 、易用新 Tech 、容易被取代

當然你可以一個 System 幾個 Mic ...
hihihi123hk 發表於 2016-3-15 10:56


有冇試過唔知邊個service出事?
作者: hihihi123hk    時間: 2016-3-15 11:06

有冇試過唔知邊個service出事?
7h1r733n 發表於 2016-3-15 10:58





睇你點定義咩係出事,不過用呢個以下呢 pattern 基本上可以 99.99999999999999999999% uptime

    Microservice + docker + kubernetes

死機自己生番一隻新 Docker
作者: seasky    時間: 2016-3-15 11:14

提示: 作者被禁止或刪除 內容自動屏蔽
作者: polarhei    時間: 2016-3-15 11:37

回覆 8# hihihi123hk

大部分人走去商界發展,畢竟向錢走. 因而出現商科人多,工科人少. 唔係單單香港有, 連內地自己都有. 我記得某導師講過,無論遇到咩野情況,堅持入CS(資科), 唔好入BS(商科), 入左BS就BS鳥. 最初我不知其因,我照做, 直到接觸保安課時,睇過傳媒報導某伍佰人所作所為後,接觸過當中一人一次後, 逐步知道其意味.  我會搞清楚弱點後再試.

維持繁榮未必需要先入商科,入部份冷門科可能有利, 但需要知道點配合現時財主同時設法升級. 對香港,日本,美國而言, 做清潔工,做貨車司機,前車可鑑,有可能比入商科更理智.  既然係噉, 我下一步就要掌握兩樣野, 鐵馬同VAN仔(3號,2號).

部份人年收入, 扣入息稅,間接稅後仲有伍萬多美元一年.
作者: vichui    時間: 2016-3-15 13:49

外國好多人分享自己點樣由 Monolithic slowly migrate to Microservice,

講緊一個 System 應該要  ...
hihihi123hk 發表於 2016-3-15 10:14


原本唔想回, 見得啖笑都係回下你啦...
話分兩頭, 第1, 可唔可以migrate to Microservice, 唔係睇你用咩 Language, 而係睇你點design 個 architecture, Microservice本身係一個新瓶舊酒的東西, 只不過係呢個雲端, 大數據年代, 有d system 1秒鐘downtime都唔能夠 afford 時變得尤其重要.

第二, 唔好為language定高低, 每隻language都有自己的强項, 樓主你講近的每一隻都係weak typing language, weak typing强項只係易寫, 但一d都唔好maint. 唔明的話交自己的code俾人睇就知, 易寫同易maint係兩回事....

第三,Java係咪out? 只需要一張圖就說明.....

作者: vichui    時間: 2016-3-15 13:53

回覆 21# seasky

"If I were to pick a language to use today other than Java, it would be Scala"

呢句的潛台詞係, 有得揀一定揀Java, 真係冇得揀Java先會揀Scala, 即係Scala只係second choose....
作者: evec    時間: 2016-3-15 14:21

本帖最後由 evec 於 2016-3-15 14:28 編輯

真係唔明講講下有會拉去 JAVA唔掂,又講貨車司機,各地金融大都市背後都係有大量科技同產業支持,例如倫敦周邊衛星城市全部係科技創新業,東京支持日本整個產業帶,人地講繄創新帶動需求,創新科技配合財主就己經唔係創新,係回歸翻的士佬貨車佬的性質。

成日就係識講錢,唔係唔講錢,看咗D個POST的回覆更加覺得香港無得救,又講收幾多錢,又話學JAVA out 找唔到錢學其他,所以話塘水滾塘魚就係咁解,以上仲有人講JAVA綁手綁腳,真係好笑,層次低到仲係到爭議用邊個編程軟件,技術實現需求而己,唔係技術綁技術,寫Android唔用JAVA用甚麼?

話翻轉頭我都唔明有咪野JAVA係寫唔到 ?外國話JAVA 降低生產力 ?人地理你用甚麼寫CODE,人地係看你結構性LOGIC實現方法而己,JAVA係調轉,太多年的歷史補丁使複雜性提高,講得 JAVA The Simplicity become Complexity 的人
玩掂咗JAVA泛型到神化階級?
作者: hihihi123hk    時間: 2016-3-15 14:39

回覆 23# vichui


   
我都唔想評論,紙上談兵

我都好明白未寫過 Scala 嘅人根本唔會明,永遠覺得 Java 已經好足夠

我未接觸 Scala 之前曾經有同樣想法

不過我想強調 有質素嘅公司轉用 Scala 係鐵一般嘅事實

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: hihihi123hk    時間: 2016-3-15 15:01

我都打番個好簡單嘅比喻, 係我眼中, 要係 Java 做同樣嘅 Task 會係咁

Java
7+7+7+7+7+7+7 = 49

Scala
7 * 7 = 49

無錯呀,大家做到嘅野係一樣,但係 Scala 寫出黎會比較 Clean、 Intuitive、Elegant  啲, 個大前題就係你要識得 乘數,就算你唔識得乘數係 Scala 一樣可以寫番 7+7+7..... 然後就會有人話 乘數好複雜喎,我都係鐘意加數簡單啲
作者: evec    時間: 2016-3-15 15:53

本帖最後由 evec 於 2016-3-15 16:00 編輯
我都打番個好簡單嘅比喻, 係我眼中, 要係 Java 做同樣嘅 Task 會係咁

Java
7+7+7+7+7+7+7 = 49

Scala
7 ...
hihihi123hk 發表於 2016-3-15 15:01


你都亂講一通
係JAVA我可以寫到

7 power of 2 就係如此簡單
作者: vichui    時間: 2016-3-15 16:30

我都打番個好簡單嘅比喻, 係我眼中, 要係 Java 做同樣嘅 Task 會係咁

Java
7+7+7+7+7+7+7 = 49

Scala
7 ...
hihihi123hk 發表於 2016-3-15 15:01


唔好以為得你一個人寫過scala先得....
唔係話Java好定Scala好, 只係你真 知道的話就唔會話邊個language 好..
你睇睇Java 8的 lambdash先再講....
係Java寫起上黎係好長, 但 Scala 寫出黎係唔係會比較"Clean、 Intuitive、Elegant" ??就比較個人感覺

Scala
val iList = List(2, 7, 9, 8, 10);
val iDoubled = iList.filter(_ % 2 == 0).map(_  *2)

Java
List<Integer> list = Arrays.asList({2, 7, 9, 8, 10});
List<Integer> iDouble = list.stream().filter(s -> s % 2 == 0).mapToInt(s->s*2).collect(Collectors.toList());

冇compiler係手...Something like that la...
Java係寫多幾隻字, 但係唔係比Scalak冇咁"Clean、 Intuitive、Elegant"呢??
作者: hihihi123hk    時間: 2016-3-15 20:08

本帖最後由 hihihi123hk 於 2016-3-15 20:36 編輯
唔好以為得你一個人寫過scala先得....
唔係話Java好定Scala好, 只係你真 知道的話就唔會話邊個language  ...
vichui 發表於 2016-3-15 16:30

如果你用啲 Java都有好類似 Code 去同 Scala 比,係對 Scala 極度不公平,不過我都好明白有咁嘅諗法係好正常。

我打 "7+7+7+7+7..." 係一個比喻,意思係表達嘅喺 Scala 好輕鬆處理嘅 Logic 、 Design, 係 Java 寫好水蛇春咁長 。

加上你已經自暴其短 ......

Scala 有 Console 直接打就出到 Result , 試野、學野一流

Java 無記錯要等到 Java 9 先會有 Console Mode 比你試 Code ,以下就係用 Scala Console + Intellij 去做嘅

你嘅然話你都做到 Java 都可以寫得好 Clean 、Intuitive、Elegant,你可以試下係 Java  Implement 一模一樣嘅野比較下,圖在此
[attach]1873254[/attach]

可以體驗下 Scala 嘅 Clean、 Elegant。

極級希望你都可以放番 一張用 Java Impl 嘅圖出黎,比其他 EPC友比較一下,不過一個咁簡單嘅 Pattern matching Logic 我相信寫過下 Java 嘅 Programmer,腦海已經有答案要點樣寫
作者: hihihi123hk    時間: 2016-3-15 20:32

我係由 寫 Java 轉寫 Scala, 過來人身份,好明白 Java 有啲乜野做到做唔到

我又舉多個例
[attach]1873257[/attach]

係 Java 我係咪要開多 3 個 method 做 overloading 然後總共 4個 Method

仲要個個都係 String Type ,要望實個次序唔好出錯喎,一錯次序又會出 Bug

只要你嘗試係 Java 世界諗下點 Impl 我 Scala 寫嘅同樣 Logic,你會發現 寫 Java Productivity 其實低咗好多
作者: evec    時間: 2016-3-15 20:35

如果你用啲 Java都有好類似 Code 去同 Scala 比,係對 Scala 極度不公平。

我打 "7+7+7+7+7..." 係一個比 ...
hihihi123hk 發表於 2016-3-15 20:08

唔明你寫一樣野點解要寫到咁複雜
JAVA:
    static String greater10(int x){
            return String.format("%s And %s 10",x%2==0?"isEven":"isOdd",x>10?"Greater":"Smaller that or equal to");
    }
作者: hihihi123hk    時間: 2016-3-15 20:38

本帖最後由 hihihi123hk 於 2016-3-15 20:46 編輯
唔明你寫一樣野點解要寫到咁複雜
JAVA:
    static String greater10(int x){
            return String ...
evec 發表於 2016-3-15 20:35


真係對牛彈琴 ,我都唔想解釋, 嘅然你做到咁,咁你做番一模一樣嘅做以下幅圖吧
[attach]1873260[/attach]


而家用例子去講 平時寫 Code 點處理啲 Logic ,一個 Pattern Matching ,

唔係叫你點樣砌番一模一樣嘅 Result
作者: evec    時間: 2016-3-15 20:49

本帖最後由 evec 於 2016-3-15 21:08 編輯
真係對牛彈琴 ,我都唔想解釋



你做到再講吧,而家用例子去講 平時寫 Code 點處理啲 Logic ,一 ...
hihihi123hk 發表於 2016-3-15 20:38

真係唔知你想表達D咪,寫一D咁奇怪可讀性咁低的Code出來,上面就夾硬話METHOD抽一大堆String話JAVA更易錯唔夠CLEAN








不過可唔可以看清楚個Topic討論緊咪野,唔好太離題。
作者: hihihi123hk    時間: 2016-3-15 21:04

本帖最後由 hihihi123hk 於 2016-3-15 21:09 編輯
真係唔知你想表達D咪,寫一D咁奇怪可讀性咁低的Code出來,上面就夾硬話METHOD抽一大堆String話JAVA更易錯 ...
evec 發表於 2016-3-15 20:49


我估到你會咁講,所以我都打定一個 真正 Use Case ,Java 技窮係人之常情。

我認為絕對無離題,啲人成日話 HK no it ,根本你自己 Productivity 都唔夠人地高,咁點同人爭?

[attach]1873263[/attach]

我絕對同意 Java 做到 Scala 同樣做到一樣嘅野。

但要記住 論速度,Scala 做到嘅必定會快過 Java 做到嘅。加上兩邊都係 行 JVM ,講緊一個 Java Project 隨時可以 Import Scala,用 Scala compile Scala +Java => 出番隻 Jar 出黎,放落邊度行都可以。 有興趣了解更多 Scala 嘅師兄都可以 PM 我,我都唔想見到 HKIT 陸沉


但我認為 Developer 雖要考慮嘅應該係 寫得
1.  Clean 唔 Clean
2. 易唔易 Main & Debug
3. Productivity 高唔高

我相信你自己都心
作者: evec    時間: 2016-3-15 21:09

本帖最後由 evec 於 2016-3-15 21:12 編輯
我估到你會咁講,所以我都打定一個 真正 Use Case ,Java 技窮係人之常情。

我認為絕對無離題,啲人成日 ...
hihihi123hk 發表於 2016-3-15 21:04



    講Logic你的Code又唔知邊到精,講Pattern更加唔知咪野Pattern,正正常常係咁寫
  1.     static String greater10(int x){
  2.         if (x%2==0){
  3.             if (x>10)
  4.                 return "xxxxxxxxx";
  5.             else
  6.                 return "llllllll";
  7.         }else{
  8.             if (x>10)
  9.                 return "ddddddd";
  10.             else
  11.                 return "gggggg";
  12.         }
複製代碼
如果你想話要用CASE
  1. static String greater10case(int x){
  2.         switch (greater10(x)) {
  3.             case 1:
  4.                 return "xxxxx";
  5.             case 2:
  6.                 return "ddddd";
  7.             case 3:
  8.                 return "eeeee";
  9.             case 4:
  10.                 return "1111";
  11.             default:
  12.                 return "";
  13.         }
  14.     }

  15.     static int greater10(int x){
  16.         if (x%2==0){
  17.             if (x>10)
  18.                 return 1;
  19.             else
  20.                 return 2;
  21.         }else{
  22.             if (x>10)
  23.                 return 3;
  24.             else
  25.                 return 4;
  26.         }


  27.     }}
複製代碼

作者: hihihi123hk    時間: 2016-3-15 21:12

本帖最後由 hihihi123hk 於 2016-3-15 21:18 編輯
講Logic你的Code又唔知邊到精,講Pattern更加唔知咪野Pattern,正正常常係咁寫如果你想話要用CASE} ...
evec 發表於 2016-3-15 21:09



    如果你覺得咁樣寫係 Clean 過 我個Scala example

我都無話可說  

你可以再挑戰埋 #35 個「真實」 Example

#35 我寫出黎 我 Guarantee 到個 Logic 絕對無漏, Java 呢? 幾層 if case ,想番 Check 嗰陣仲要慢慢 Trace

講多少少心聲,我個人認為寫 Scala 係一定會少啲 Bug,因為 Java 要做到同樣效果要寫多好多野,只要個 Developer 一懶,就好容易做漏 Case 。相反 Scala 好輕鬆就做到啲,要清楚易名,花同樣時間做嘅 Coding ,必然會少啲 Bug
作者: evec    時間: 2016-3-15 22:11

本帖最後由 evec 於 2016-3-15 22:20 編輯
如果你覺得咁樣寫係 Clean 過 我個Scala example

我都無話可說  

你可以再挑戰埋 #35 個 ...
hihihi123hk 發表於 2016-3-15 21:12


夾硬用CASE寫到亂曬大龍就係叫 少BUG,好講唔好聽你D CASE咁簡單的都己經看死人啦,你唔服的就投票以下CODE同你個CODE邊樣更好,CASE唔係咁樣來用的
  1.    class Account {
  2.         Boolean vip;
  3.         Account(Boolean vip) {
  4.             this.vip = vip;
  5.         }

  6.         String deposit(int amount, String type) {
  7.             boolean morethat1000 = amount > 1000;

  8.             switch (type) {
  9.                 case "CREDIT_CARD":
  10.                     if (!vip && morethat1000)
  11.                         return "Urgent contact this user";
  12.                     else
  13.                         return "All Credit card welcome with no limitation ";
  14.                 case "BANK_TRANSFER":
  15.                     if (!morethat1000)
  16.                         return "BANK_TRANSFER must > 1000";
  17.                     if (!vip)
  18.                         return "Only accept vip to do BANK_TRANSFER";
  19.                     return String.format("Accept amount = %d", amount);
  20.                 default:
  21.                     return String.format("cannot handle isVip= %b, amount= %d, type:%s", vip, amount, type);
  22.             }
  23.         }
  24.     }
複製代碼

作者: hihihi123hk    時間: 2016-3-15 22:13

原本唔想回, 見得啖笑都係回下你啦...
話分兩頭, 第1, 可唔可以migrate to Microservice, 唔係睇你用咩 L ...
vichui 發表於 2016-3-15 13:49


   
除咗第三,極度認同你嘅觀塘

如果你有第二嘅想法:你都認為易寫同易 Main 係兩回事

Java Compared with Scala 就係樣版

我都順免個下 Scala 有乜缺點。

Scala 最大缺點就係 Compile 得慢,因為本身 Language 太自由,Compiler 需要做多好野。

以前啲電腦運算能力咁弱,再加上做啲 Monolithic 嘅 System 出黎,幾十萬行 Code, 弱點蓋過優點

但而家時代唔同,幾千蚊嘅 Desktop 電腦已經有 i7 ,例如 整個 Project Compile time 就算相差 2倍 都唔會相差好遠

再加上有 Docker 加持令 Microservice 流行, 正正常常一個 Scala Project Compile time 普遍低於2分鐘

我前幾個 Post 嘅 Scala 例子 只係一啲皮毛,仲有大把深入嘅野可以做。我亦都相信你係未寫過 Scala 先會講話 Java 未 Out,

講多少少,
1.Scala 係 100% compatible with Java

2.所有 Maven / Gradle Project 都可以加一個 Scala compiler dependency ,再用 Scala compiler compile Java + Scala 出 .jar

3.所有 Java library 可以係 Scala import 之後用

仲有,有人話 Android 唔用 Java 用什麼,無錯就係用 Scala,唔信可以自己 Google

Thats why, 基本上新 Project 完全用 Scala 開波係無問題(如果你搵到人才

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: hihihi123hk    時間: 2016-3-15 22:44

本帖最後由 hihihi123hk 於 2016-3-15 22:53 編輯
夾硬用CASE寫到亂曬大龍就係叫 少BUG,好講唔好聽你D CASE咁簡單的都己經看死人啦,你唔服的就投票以下CO ...
evec 發表於 2016-3-15 22:11


   
你呢個係正路 Java 做法 你可以數下自己用咗幾多個 if 、switch ,正常情況仲有 {} 包住。加上並不 Intuitive


我知 Intuitive 呢個字好抽象

比個情境題你:

假如有一個同事/新人,你叫佢例出 所有 Not Vip 嘅人 Deposit 喺點樣 Handle

我段 Scala Code ,只要新人有少少 Scala 知識,知道 _ 就係 Any,可以少於 5秒就例哂所有情況,會出啲乜野。因為啲 Code 本身做到 「self documented 」

你段 Java code 對於一個新人黎講, 有好高機會單靠 !vip 去認, 有極大機會 Miss 咗 "All credit card welcome...."

That is the difference

再有個情境題? 要例出 Deposit > 1000 點 Handle

比較已經好明顯

我再重申, Scala做到、Java 都會做到。結果一定係一樣,討論嘅位係邊一邊比較 Clean 、 Intuitive 、Elegant

只係一個咁簡單嘅 Logic 都相差咁遠,你試諗下一個萬幾行嘅 System?

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: lulufish    時間: 2016-3-15 23:28

如果你用啲 Java都有好類似 Code 去同 Scala 比,係對 Scala 極度不公平,不過我都好明白有咁嘅諗法係好正 ...
hihihi123hk 發表於 2016-3-15 20:08


左面係Java? 完全睇唔明

利申:新手
作者: evec    時間: 2016-3-15 23:35

你呢個係正路 Java 做法 你可以數下自己用咗幾多個 if 、switch ,正常情況仲有 {} 包住。加上並不 ...
hihihi123hk 發表於 2016-3-15 22:44



    曬氣 再複雜就會用切件組合式,再用CASE,Desposit >1000 有幾難,你個CASE又加多個
variable扮簡潔 ? 如果我要你計結餘再處理文字輸出,你又係個CASE 到加多一個variable扮簡單 ?
如果你個CASE有五個Variable如何處理Bug ?  
JAVA 無multiple variable 咁耐你估真係唔加得?目的就係防止你D類Programme 初級水平的人亂玩局。

作者: vichui    時間: 2016-3-15 23:57

我估到你會咁講,所以我都打定一個 真正 Use Case ,Java 技窮係人之常情。

我認為絕對無離題,啲人成日 ...
hihihi123hk 發表於 2016-3-15 21:04


如果你係我下屬, 見你咁寫我實ban 到你七彩, 點解?
如果要加 Payment method, 你點加?
你唯一可以做的就係加case, 而因此做Testing 要呢段code中所有Case 重新test 過哂, 因你的快令到Tester慢。。。
作者: hihihi123hk    時間: 2016-3-16 00:12

左面係Java? 完全睇唔明

利申:新手
lulufish 發表於 2016-3-15 23:28


左面係 Scala , 右面係 Run time result
作者: hihihi123hk    時間: 2016-3-16 01:20

本帖最後由 hihihi123hk 於 2016-3-16 01:42 編輯

Delete , Duplicate Post
作者: hihihi123hk    時間: 2016-3-16 01:21

本帖最後由 hihihi123hk 於 2016-3-16 01:50 編輯
如果你係我下屬, 見你咁寫我實ban 到你七彩, 點解?
如果要加 Payment method, 你點加?
你唯一可以做 ...
vichui 發表於 2016-3-15 23:57



嘩,  真係大開眼界,我展示緊 Pattern Matching 令到啲 Code 更加 Intuitive 。你就話「無理由會咁樣做」

Pattern matching 其中一個用處 就係可以將原本啲 Java 經常會用嘅 Nested If  branches  flatten 去變成 Single Level 令啲 Code 更清楚易明,  ( Java 要做 Single Level ?  啲 「!」 都睇死你 )

如果 If  branches 有增加, Pattern Matching 就要增加 Case 去 Handle

即係如果你話你加多咗個 Payment method 但係啲 If branch 無多到,咁 pattern matching 自然都無需要加 Case 去 handle

呢個係常識

如果你話唔會多到,即係啲 Branch 但係會跌落同一段 Code ,

Scala pattern matching 個 Syntax 仲可以咁做,唔係你想像中咁樣,淨係開 case 開 case 開 case
[attach]1873329[/attach]

我都唔知點解會浪費咁多時間去解釋 , Scala 係咪比 Java 好,呢個問題係 Google 根本一早有答案,喺 Google Search 啲中性字眼,正反比例一目了然。

不過講多咗,並唔係因為我想嗌贏邊個,可能因為呢個 Pattern matching 當日衝擊咗我寫咗兩年 Java 嘅生涯:「原來啲 case 可以表達得咁清楚,可以成個 Truth Table 寫出黎,仲要可以無縫 Migrate with Java」

試想下,我比一個 4x4 嘅 Truth Table 叫你去 Implement, 永遠只會有呢 16個情況, Java ?學你話齋, If 到七彩吧。無錯 Java 得一種方法可以寫,亦係我所講「 Simplicity become Complexity 」

Pattern Matching 嘅衝擊點止咁少,仲有好多好實用嘅例子,有興趣嘅朋友自己可以試下。




用 Scala 好難?其實只係加兩句 Config 就直接可以係原有嘅 Project 寫 Scala

請自行 Google "mixing scala and java in the same project"

原理係原有嘅 Java Project ( Maven / Gradle ) 加番一個 Scala compiler,係 Setting 指番用 Scala Compiler compile 埋 src/java, src/scala 就可以開始寫 Scala ,最後 Compile 番做 JVM byte code 就可以係 JVM 度行

或者用 Intellij 裝 Scala Plugin, 是但開個 Empty Project 開個 Scratch File ( Command + N )就可以玩 interactive Scala Console
作者: 3ldk    時間: 2016-3-16 01:49

我個人沒有偏向支持Scala或Java
因為不是對兩個語言都有好深入既了解, 所以無資格, 亦都能力去比較, 而且唔知邊一邊先岩
不過見面上面爭左咁耐, 有點好奇, google左一下, 搵左少少資料, 可以多點思考空間
https://www.zhihu.com/question/21740715
同樣, 入面講既野我都係唔知岩唔岩, 因為未用過Scala
作者: edl0025    時間: 2016-3-16 05:00

回覆 47# 3ldk


    睇完大家講左咁多.... 再睇番個TOPIC

我只係諗到..... 老細只會用隻LANGUAGE, 多人識,易請人, 人工平, 洗錢小....
到底係VB, C#, JAVA 定 SCALA..... 跟本老細吾係好想知......

productive 低, 係DEVELOPER 做得吾夠快....
隻LANGUAGE 有限制..... 佢會話..... "咁請你番嚟做物野"

"寫App好容易" 論 香港的科技廉價化  --> 養家都有問題,過多幾年叫邊個去做?

如果後生, 有料. 就吾好係香港做I.T TECHICAL.
去外國做, 我見D同事, 攪移民都好容易,人工都吾差....
作者: seasky    時間: 2016-3-16 08:55

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-16 09:07

提示: 作者被禁止或刪除 內容自動屏蔽
作者: getwayhk    時間: 2016-3-16 09:34

本帖最後由 getwayhk 於 2016-3-17 09:21 編輯

我唔認同JAVA好out, 睇過hihihi123hk的例子, 都唔認同hihihi123hk話scale較易maintable, productivity高.

夾硬用CASE寫到亂曬大龍就係叫 少BUG,好講唔好聽你D CASE咁簡單的都己經看死人啦,你唔服的就投票以下CO ...
evec 發表於 2016-3-15 22:11


不過, 以事論事, hihihi123hk的isEven, isGreaterThan10例子的確較readable,testable,而且附合logic要self documenting原則.


如果你係我下屬, 見你咁寫我實ban 到你七彩, 點解?
如果要加 Payment method, 你點加?
你唯一可以做 ...
vichui 發表於 2016-3-15 23:57


我估hihihi123hk只係想比個簡單例子比較下個分別, 唔考慮extendable原則, 如果要考慮埋, 依個位唔關language問題,都唔係拆method咁簡單, 要program to Interface, 引入Strategy Pattern之類既design pattern.


利申: 唔知hihihi123hk的history係唔係成日無料鳩up個種人, 但老實講咁寫比好多香港所謂AP, SA都好
作者: vichui    時間: 2016-3-16 10:21

回覆 46# hihihi123hk

其實唔明的係你, Pattern Matching為何Scala獨有?
Scala 的Pattern Matching對programmer來真真正正的 Devil and angel, Petty but dangerous..
正正因為Pattern Matching看似簡單, 但實際複習, 真係 "Intuitive" ? 只是一種口號來的...
"Intuitive"?? 那Code stabilization去了那裡? 完全失!! 而你的Code 正好完美地示返了...!
而且你係好唔明 white Box test 點做, 只著眼自己的Code點寫可以少d..
更慘的是你了解OOP嗎? 真係唔明你唔會講得出咩要好多Nested If .....
Decomposition 同 Logical encasulation去左邊? 呢兩樣正正係可以幫你解決
1. Nested If 2. Code stable
我唔想俾Code你, 因為太冇意思,
一堆Code(係我習慣用一堆一堆去形容), 好唔好Maint., 係咪Readable唔係用多定少去決定...
作者: hihihi123hk    時間: 2016-3-16 10:24

Execution Console 係 basic 年代, 198x 年已有, 並唔係咩新奇發明.
印像中, 之後嘅 DBase (198x), Visu ...
seasky 發表於 2016-3-16 08:55


   
唔係架, IDE 只不過係幫助 Syntax highlighting + interactive mode (即係邊打邊 Compile )

事實上 Native 有 Scala console

例如
Brew install scala / apt-get install Scala

> scala (會進入 Scala Console mode)
> println("hello world")

無記錯, 去到 Java 9 先會有呢個功能

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: hihihi123hk    時間: 2016-3-16 11:09

本帖最後由 hihihi123hk 於 2016-3-16 11:36 編輯

回覆 52# vichui


   
你講嘅野已經去到

Application design 嘅 Level

已經唔係
Same use case => Language comparison

說穿了,所有 Program descompose 到最後其實都係 case by case 咁做,你只不過係話將啲 Logic Encapsulate 去 Meaningful ways。

唔好意思,如果講 Application Design , 我寫 scala 就係可以將啲 Logic Design 得更加 Meaningful, 因為我多好多方法去 Archive,真係要比嘅話 Scala 嘅 OOP 比 Java 更加強大

不過如果你認為 Nested If 比較好 Main 嘅我都幫唔到你,
我知 「Java can only code in this way」

要記住 "只可能咁樣做" 唔代表一定係表達得最好

加上 Pattern matching 係 Fp 最基本嘅野,老早就出現,咁不如我用 F#?

Scala 就係 極致 OOP +極致 FP + On top of JVM + 100% compatible with Java project

呢個組合先係 衝擊到我嘅地方, 事關 JVM 好強大,好多 Profiling Monitoring 嘅 Tool 好幫得手,係揀 JVM Language嘅時候,Scala 真係絕佳

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: hihihi123hk    時間: 2016-3-16 11:18

你呢樣係 parameter default, 其實早在 c/c++(198x, 199x 年代) 已有.

Java 1.0 係 design 時, 已認定咁 ...
seasky 發表於 2016-3-16 09:07


   
Default parameters 如果無 named parameters 搭配

的確會造成混亂,我十分同意。當年唔加入去 Java 都好合理。

但有咗呢兩個配搭, Design function 嘅時候會變得更完美

而家 Java 要寫同樣嘅野,正如我個例子,係 Java 我咪要 Overload 幾次 再 call 同一個 function

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: seasky    時間: 2016-3-16 11:37

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-16 11:45

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-16 11:59

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-16 12:04

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hihihi123hk    時間: 2016-3-16 13:05

本帖最後由 hihihi123hk 於 2016-3-16 13:07 編輯
其實 Scala 仲有一點擔憂,

佢係 base on JVM 嘅直譯或語言, 而別一個 JVM 最常見嘅語言係 Java,
現今大部 ...
seasky 發表於 2016-3-16 11:59



    Compiled to JVM byte code , 理論上可以同 Java 一樣咁快, 至於佢入面點做我無深究,行得快唔快真係好睇 Scala Team 寫 Compiler 寫得好唔好

係 Compile 做 JVM  Byte code 會比較慢,因為 Scala 有好多 syntax + free style,亦係缺點之一
作者: 7h1r733n    時間: 2016-3-16 13:45

仲以為個 "好姿勢" 有甚麼料,原來又係PowerPoint式App,如果整個PowerPoint叫App我承認好易寫App。
人地外 ...
evec 發表於 2016-3-14 12:39


好姿勢
phonegap app一個
...."完"

作者: evec    時間: 2016-3-16 14:05

我唔認同JAVA好out, 睇過hihihi123hk的例子, 都唔認同hihihi123hk話scale較易maintable, productivity高.

...
getwayhk 發表於 2016-3-16 09:34



    只係講,單論佢比出來的例子,其實只係好簡單學校的例子,仲要係低級階段教statement 無論係 可讀性可測試性以至整個LOGIC來表達,都係一個好差好差的Example,講擴展性簡直係太低, 講得難聽D係佢想夾硬找scala 的好處而迫出來例子。所以我唔同佢講Scala同Java邊一個優勝,因為佢很多基礎觀念係錯,以至講得太多對牛彈琴,好似D個例子,正路OOP係要分開 帳戶薄,客戶, 存款, 以至最後要另做一個String Machine 輸出,例如點解要VIP分開,就係VIP係客戶特性唔會跟存款變的特性,所以我先講,再大型少少要切件式,切件唔係割眼切細,而係平衡可重用性,效能。
isGreaterThat10 咁簡單的例子只係一行最終文字輸出,為求簡單用?!無問題,佢的例子先無readable,testable,係雙數同大過10 明明係二樣分開無關聯的特性,夾硬拉成4個輸出 ?
第一LOGIC己經錯了,所以佢先夾硬又要想第二條四個文字輸出完全不同,不過更加突顯佢比的例子係無意思。


話 if 盡量唔用,!唔用,知唔知Switch開銷大過if 係以10倍計,boolean 開銷最低,要極致效率會改到用bitwise,但可讀性極低,通常亂用Switch一直係低手的缺點,當然Switch係特定情況下多選項係有用, 多變量Switch 係雙面刀,。
作者: evec    時間: 2016-3-16 14:10

非也,
要決定 console mode 是否語言特點, 要睇返語言嘅 spec.  
小弟見識少, 從未見過有語言會以 conso ...
seasky 發表於 2016-3-16 11:37



    我都係第一次聽人以有無Console mode 來定性語言優劣,大開眼界。
作者: seasky    時間: 2016-3-16 14:23

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hihihi123hk    時間: 2016-3-16 15:18

本帖最後由 hihihi123hk 於 2016-3-16 15:58 編輯
理論上可以, 但實際上才是問題所在.

理論上 JVM 又係 Intermediate language , C# 又係 Intermediate l ...
seasky 發表於 2016-3-16 14:23



   
你講緊嘅係只 Blocking / non-blocking 概念

基本上你寫得 GUI  Programming 如果啲 Long running task 無 Non-blocking 呢個概念, User Experience 一定差

例如話: 我禁個制 Gen report, 成個 UI 會 freeze 咗 幾十秒乜都知做唔到(可能個 User 嗰幾十秒想繼續去第二度睇下其它資料)

我唔知道 M$ 要寫 High concurrent 嘅Code 會唔會好難,但我肯定用 Scala 搭 Akka Actor System 會好容易就寫到 High concurrent 嘅 Code,因為我寫過

有啲github 實驗性嘅 android Scala Project 將 Akka 套入 Android  度用,望落幾 make sense

當你做到 Non blocking 呢個概念, GUI 必定好順暢

補充:
Actor 呢個概念其實幾適合做 GUI  programming

Akka( Actor System Framework)  Scala / Java / .Net 都有
http://akka.io/
https://github.com/47deg/macroid-akka-pingpong#master

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: 燕飛    時間: 2016-3-16 15:34

寫Case  得幾個 input 就無咩所謂 一多input 好煩

via HKEPC Reader for Android
作者: getwayhk    時間: 2016-3-16 15:36

只係講,單論佢比出來的例子,其實只係好簡單學校的例子,仲要係低級階段教statement 無論係 可讀性 ...
evec 發表於 2016-3-16 14:05



    師兄歡迎理性討論, 有錯請指正^ ^
1. 可能佢係copy學校簡單例子, 但anyway, 我依然覺得咁寫係readable同testable,原因如下
做refactoring 時, 我地會extract 一的logic to method, 而single method should serve single purpose, method名要代表其purpose, isGreaterThan10絕對self-descriptive, 做unit test時, encapsulate 左依個logic to method, 絕對有利testing
2. 認同'正路OOP係要分開 帳戶薄,客戶, 存款....', 唔會變既野group埋一堆, 會有機會變既又一堆, 附合大原則open for modification closed for extension. 但hihihi123hk佢只係想表達Scale同Java分別在switch case 上, 所以唔應該考慮擴展性問題, 如果下下做example都諗埋OOP一大堆原則, 好難simplify到成一個簡單例子.
3. 做technical illustration, 作的奇奇怪怪的business logic 無咩問題, 唔應該judge佢依的野

最後利申, 唔覺isGreaterThan10個的例子prove到Scale better than Java, 寫少幾行code唔代表少的bug
作者: hihihi123hk    時間: 2016-3-16 16:42

回覆 61# 7h1r733n


   
易學難精 呢個道理  

真係講到厭

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: 556556bt    時間: 2016-3-16 16:45

回覆  3ldk


    睇完大家講左咁多.... 再睇番個TOPIC

我只係諗到..... 老細只會用隻LANGUAGE, 多人識, ...
edl0025 發表於 2016-3-16 05:00



    其實咩language 同行業前景全無關係, language syntax 黎架je. 得既人用咩language 都係咁做. 只係Learning curve 既長知既問題. 講到productivity, 仲要計埋成套stack 由IDE到framework, plugin 同support. language 本身係中性既, C/C++ 係windows 同Unix 已經話係兩回事, 雖則syntax 一樣. 但做到既野已經不盡相同. 就好似當既Delphi 都係Pascal 黎je. 但你唔會話Pascal 就等如Delphi 架.

都係果句啦.. 香港呢個market 執意用咩有前途/易做有錢途都係塘水滾塘魚.
其實從來都無前途可言
作者: 556556bt    時間: 2016-3-16 16:56

只係講,單論佢比出來的例子,其實只係好簡單學校的例子,仲要係低級階段教statement 無論係 可讀性 ...
evec 發表於 2016-3-16 14:05



      當年我都有睇過D bitwise 既例子.. 的確係用左好多時間先睇得明寫乜.. 但普遍大家都知呢D 先係靚CODE同勁人. 一句搞掂晒.  當年點解寫成咁, CPU 無咁勁卦. 或者時下D U 勁得仔.. SIDE 下無乜所謂卦..
我地當年都有討論if the else 定switch case 好D. 不過近年都好似好少人再提了. 無法做到就算...  更枉論D Code 係咪意粉咁.. 都無乜人理了
作者: 556556bt    時間: 2016-3-16 17:06

你講緊嘅係只 Blocking / non-blocking 概念

基本上你寫得 GUI  Programming 如果啲 Long running ...
hihihi123hk 發表於 2016-3-16 15:18



    你講既multithread 或同backgroundworker 係十幾年前已經有. 到近年C# 既concurrency 有埋async await. 變相令到 lengthy task 更易handle. simultaneous task 再唔使自己去handle D thread. 由一個thread pool 去處理, 你唔使理係single core 定multi core running 全部自動optimize 晒. 呢D 都係Frontend GUI prog 既基本動作了.  況且上邊CHING 所講既耐唔耐好多時同frontend 無直接關係, 個system 用左咁多年, backend 既capacity 或者concurrent access 都多左好多.. server handle 唔切咪覺得慢囉.  就算你non block 左個UI thread 你整個菊花輪係咁轉user 都會話唔夠爽...
作者: seasky    時間: 2016-3-16 17:07

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-16 17:52

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 7h1r733n    時間: 2016-3-16 17:53

回覆  7h1r733n


   
易學難精 呢個道理  

真係講到厭

via HKEPC Ionic Reader v1.2.9 -  ...
hihihi123hk 發表於 2016-3-16 16:42

而家好多人build到個apk/ipa就以為自己識寫app..
作者: polarhei    時間: 2016-3-16 18:02

回覆 25# evec

你要搞係極需要錢先有得搞. 問資安公會或問會計公會, 聽吓佢地點講先. 佢地似乎異口同聲講我之前類似既野. 一個重視攻擊,另一個重視成本.

我相信我其中兩個朋友冇做錯. 一個係中六決定入三行. 另一個做運輸賺學費. 我可能係某尐人眼中, 因為月薪極少, 可能蠢過前者, 因為佢地一萬蚊一個月.

不過, 冇人知道聽日事. 今日我係噉, 聽日可能唔係噉.  因為仲有一樣叫分工合作, 甚至比現時更"迤"既工,人工極高都有. 我目前設法混入去. 盡可能做到一日超過三佰港元. 因為我個情況就係噉樣.
作者: seasky    時間: 2016-3-16 18:23

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 556556bt    時間: 2016-3-16 20:09

可能我出道早, 早年睇外國 programming 雜誌已有用 bitwise 做運算
(ie: 計 xy memory address, y  ...
seasky 發表於 2016-3-16 18:23


   
都會架.. 對D 新人黎講.... 玩到Bitwise 真係好絕既.
我見過有人一個byte 黎做8支flag 果part 無乜comment 初頭唔知佢做緊乜..
後來睇真D... ~ 勁.. 通常正路用8 個variable 去store. 家陣只要一個byte, 慳位又快...

via HKEPC Ionic Reader v1.2.9 - Web
作者: 556556bt    時間: 2016-3-16 20:20

No true, 有無見過 Oracxx 8.x 內付嘅 enterprise manager?  

佢要 load 起已慢, 未做任何野, 淨係較下 ...
seasky 發表於 2016-3-16 17:52


   
呢D 可以話用java 用到"極緻" 將九十年代 GUI 將黎既好處一一破壞
so call cross platform, 最終帶來performance 既損耗 什或以提高HW spec 黎去tradeoff 都係有D 本末倒置

via HKEPC Ionic Reader v1.2.9 - Web
作者: evec    時間: 2016-3-16 20:27

都會架.. 對D 新人黎講.... 玩到Bitwise 真係好絕既.
我見過有人一個byte 黎做8支flag 果part 無 ...
556556bt 發表於 2016-3-16 20:09


單純以一個byte 當八個Flag來講,係現代32Bit或以上高階CPU編程軟件來效率唔會提升,因為Complier己經代作,bitwise 真正作用係借bitwise 來加速,例如bitwise shift XOR 等的應用,可以看下系統 math.abs 的實現方法,Graphic 同OS/driver的編寫,還是會使用bitwise 的。
作者: evec    時間: 2016-3-16 20:33

No true, 有無見過 Oracxx 8.x 內付嘅 enterprise manager?  

佢要 load 起已慢, 未做任何野, 淨係較下 ...
seasky 發表於 2016-3-16 17:52


JAVA GUI 係OSX下表現比WINDOWS好得多,當然唔及NATIVE好,但三四年MAC機內運行JAVA 客戶端軟件的流暢到絕對無問題。
作者: evec    時間: 2016-3-16 20:49

本帖最後由 evec 於 2016-3-16 20:52 編輯
你講既multithread 或同backgroundworker 係十幾年前已經有. 到近年C# 既concurrency 有埋async awa ...
556556bt 發表於 2016-3-16 17:06


Multithreading  其實係好基本,但係除咗Apple GCD 外,其他真係美其名,只做到Async,即開一個GUI外的另一個線程運行繁忙東西,但係做唔到完善的多線程管理,即我四個線程運行四堆野係適當時間集中變成一個線程再分比二個線程計算,像Android用到八核,但係相信絕大部份的程式都只係運行緊單線程加一條Async線程,如果真係 開THREAD寫線程,你會發現效能無點高到,卻根本確切唔到係部部機Run到。
如果要順暢,係要利用 Cache方法做緩沖,D方面香港寫開辦公室ERP堆人差到連聽都未聽過。
作者: 556556bt    時間: 2016-3-16 20:52

單純以一個byte 當八個Flag來講,係現代32Bit或以上高階CPU編程軟件來效率唔會提升,因為Complier己經代 ...
evec 發表於 2016-3-16 20:27


   
呢個只係一個例子去說明一個problem 可以有好多solutions. 每個solution 有其利與弊.
有人追求解決就得, 有人執意要最beauty. 所以無絶對好壞.

同埋頭先果個佢當然唔係純為flag 而用bit la.. 因有其他原因先其後做埋bitwise operation.. 不過太多年唔係好記得了
咁岩CHING 講開bitwise, 先諗番起

via HKEPC Ionic Reader v1.2.9 - Web
作者: 556556bt    時間: 2016-3-16 21:02

Multithreading  其實係好基本,但係除咗Apple GCD 外,其他真係美其名,只做到Async,即開一個GUI外的另 ...
evec 發表於 2016-3-16 20:49


   
CHING 咁嚴重? .... 邊間公司呀
的確好多concurrency 都係aysnc only, 都未去到真正multithread.
用multithread, 都要睇下係咩task, 為做而做拆開黎行, D thread mange 得唔好, 最終必得不常失.

via HKEPC Ionic Reader v1.2.9 - Web
作者: hihihi123hk    時間: 2016-3-16 21:25

CHING 咁嚴重? .... 邊間公司呀
的確好多concurrency 都係aysnc only, 都未去到真正multithread.
...
556556bt 發表於 2016-3-16 21:02


   
Thread...  非必要都唔好開 Thread 做野, 開行太多 Thread 反而會消耗 System resource

而家寫 High concurrent 嘅 Code, 要開一定係開 Future , 再Submit 去 Execution pool

btw, Java 8 終於有個 CompletableFuture API, 其實已經改善咗好多,但 Scala 始終可以寫得簡潔啲


不過用 Future 實踐 High currency 始終唔夠人性化,

用 Actor model , Message driven 番作件事會比較容易 Dev & Main

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: 556556bt    時間: 2016-3-16 21:47

Thread...  非必要都唔好開 Thread 做野, 開行太多 Thread 反而會消耗 System resource

而家寫 Hi ...
hihihi123hk 發表於 2016-3-16 21:25


   
十幾年前既CPU 只係單春.. 最叻都係HT 假雙春. 自行開thread, pro 多過cons.
但自從multi-core CPU 年代要achieve high efficiency, 就麻煩得多.
老實講已經要handle system logic 仲要搞埋咁low level 既logic flow 真係邊兼顧得咁多野.
有thread pool 已經幫助好大.

via HKEPC Ionic Reader v1.2.9 - Web
作者: hihihi123hk    時間: 2016-3-16 22:00

十幾年前既CPU 只係單春.. 最叻都係HT 假雙春. 自行開thread, pro 多過cons.
但自從multi-core CP ...
556556bt 發表於 2016-3-16 21:47


   
如果你覺得要Archive High Concurrency  會麻煩好多

我真心推介你要試下 Akka Actor System   

Java Scala 都有

當然, 要Apply Actor Model 整個 System Design 好緊要,架構、寫法都會唔同咗

2016 年要 Efficiently utilize system resouce 其實已經簡單咗好多

外國有好多成功例子 由 普通Java/ Ruby / Php 轉去 Akka Actor System , 可以由 幾十部 Server 減到幾部 Server   令人鼓舞

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: hihihi123hk    時間: 2016-3-16 22:07

本帖最後由 hihihi123hk 於 2016-3-16 22:08 編輯
No true, 有無見過 Oracxx 8.x 內付嘅 enterprise manager?  

佢要 load 起已慢, 未做任何野, 淨係較下 ...
seasky 發表於 2016-3-16 17:52


   
我又無咁嘅體驗喎,大學嗰時做過一個用 Swing  寫 Twitter Client,正常速度

會唔會係你 Jvm config setting 有問題,定係你部機真係...

定係個 Program 淨係食到你單春

via HKEPC Ionic Reader v1.2.9 - iPhone
作者: FlyingForever    時間: 2016-3-16 22:31

可能我出道早, 早年睇外國 programming 雜誌已有用 bitwise 做運算
(ie: 計 xy memory address, y  ...
seasky 發表於 2016-3-16 18:23
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     printf("%d\n", 1 << 2 + 3);
  5.     return 0;
  6. }
複製代碼
結果係咩?
就咁睇落係7,實際上係32。
咁你話會唔會睇唔明……
作者: 556556bt    時間: 2016-3-16 22:46

如果你覺得要Archive High Concurrency  會麻煩好多  

我真心推介你要試下 Akka Actor Syst ...
hihihi123hk 發表於 2016-3-16 22:00


   
我諗你誤會左我意思...

via HKEPC Ionic Reader v1.2.9 - Web
作者: 7h1r733n    時間: 2016-3-17 00:52

Thread...  非必要都唔好開 Thread 做野, 開行太多 Thread 反而會消耗 System resource

而家寫 Hi ...
hihihi123hk 發表於 2016-3-16 21:25


講起multithreading又要出圖..
[attach]1873547[/attach]
作者: 556556bt    時間: 2016-3-17 01:52

講起multithreading又要出圖..
7h1r733n 發表於 2016-3-17 00:52


   
所以......... 用下好啦. 唔好太認真...

當年讀algorithm, 其中一個好typical 既problem 做simulation 係一條queue 定多條queue好
現實同理論係.....

via HKEPC Ionic Reader v1.2.9 - Web
作者: seasky    時間: 2016-3-17 08:46

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-17 08:50

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-17 08:51

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-17 08:57

提示: 作者被禁止或刪除 內容自動屏蔽
作者: seasky    時間: 2016-3-17 08:59

提示: 作者被禁止或刪除 內容自動屏蔽
作者: FlyingForever    時間: 2016-3-17 12:59

No, 現代 compiler, 一般計,
如果 define structure
struct x {
unsigned char a, b, c, d, e, f, g, h; ...
seasky 發表於 2016-3-17 08:50

http://ideone.com/8b1uA4
我諗你搞錯左少少alignment既concept……
compiler係要做到「係struct x array入面,每個struct x既每個field既address都要同果個field既type對齊」。
所以如果係
  1. struct x {
  2.     char a;
  3.     int b;
  4. };
複製代碼
咁由於b要對齊到sizeof(int),a後面會多3個bytes做padding,於是sizeof(struct x)會係8(假設sizeof(int) == 4)。
但你講既case,由於sizeof(unsigned char) == 1,點擺都冇問題,所以唔會有padding。

via HKEPC Reader for Android
作者: evec    時間: 2016-3-17 13:00

No, 現代 compiler, 一般計,
如果 define structure
struct x {
unsigned char a, b, c, d, e, f, g, h; ...
seasky 發表於 2016-3-17 08:50



    朋友,你用邊隻語言 flag 唔係用bool 走去用char,用錯類型唔好怪人。
作者: evec    時間: 2016-3-17 13:19

咦, 我當年都做過, 但當年好似用 pascal 寫, 未識 multi thread,  結果用 loop 扮.

當年模出來係 singl ...
seasky 發表於 2016-3-17 08:59



    當年同今時今日的multi-core 己經唔同,加上現在CPU,越用少CORE,每一單春CPU就可以運行越快,GUI系統己無時無刻用咗幾條線,所以用傳統方法自行分配Thread係客戶端上運行就HIGH曬野,
但Android Google 做半桶水,你唔自行分配Thread就運用唔到自行分配Thread的八成功力,
為保證運行通用性,只能用佢個Asyn功能(每隻Device又可能會Custom咗個運行方法),
其實為用盡GUI幾春,而家寫野己經盡量係GUI入面做最後輸出計算,放曬Rendering的資料入去,然後比個指令GUI運行特定指令令佢生成動畫效果,CPU就盡量處理單線或二線的計算,有時唔用得Multithread 係Debug太難,死循環問題,計算先後次序問題,Apple的GCD就係能夠相對用簡單幾個指令使到管理GUI的先後級同程式計算的多核先後問題,所以正路Android慢過IOS程式,寫軟件的人可以係ANDROID TUNE的彈性好低,當然可以用NDK寫,但NDK有通用性問題,小型PROJECT亦不現實,不過Android的架構做法好處係入門門檻低唔易運行唔到,效率就放次要,只要GOOLGE的軟件TUNE到靚GOOGLE就得,其他理得你死,iOS則較難做到穩定性好,不過APPLE STORE把關嚴。
作者: FlyingForever    時間: 2016-3-17 13:26

朋友,你用邊隻語言 flag 唔係用bool 走去用char,用錯類型唔好怪人。
evec 發表於 2016-3-17 13:00

C冇bool……

via HKEPC Reader for Android





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2