作者: 3ldk 時間: 2016-3-22 21:43 標題: functional programming真係適合用黎寫軟件?
請注意, 而家講緊既係software, 唔係system
點解我咁著重話係軟件既, 因為正常一個programmer餘暇時間, 為興趣, 為方便自己, 寫出黎的, 多數都係軟件, 好少話成個系統咁寫出黎
返工寫既program, 我就不感興趣, 我著緊的, 當然係自己閒時寫的program, 所以想了解一下, 用黎寫軟件, 究竟適唔適合?
事源係咁的, 見到網上D人講到functional programming咁神,
例如有人話近年○○○或×××興起, 所以FP又重新火熱起來
又有人話多得FP, 先得以另△△△實現出黎
甚至有人話, 而家經歷緊一場典範轉移, 由OOP轉去FP
講到咁, 所以引起我注意, 於是走去開始學, 有無用我唔敢講, 但作為一個programmer, 學多樣技術都係好合理既
但既然係學concept, 自然就唔考慮實用性, 所以就選擇用Haskell來學
學programming, 基本上D tut係廢的, tut學到既野, 連幼稚園程度都不如, 所以睇晒tut之後, 最實際就係寫個有用既program
所以作為練習, 我就將我以往寫過既program重新寫一次
用FP寫軟件, 所遇到既奇怪問題我就不說了, 我只想探討一下, FP係咪真係適合用黎寫大中小型軟件?
所謂既大中小型軟件, 我每樣隨便搵左幾個例子, 例如:
小型:
1. 自己寫的幾百行, 幾千行, 一兩個class搞掂既小tools
2. HxD
3. ConvertZ
4. putty
一句講晒就係D簡單軟件
中型:
1. filezilla
2. 7zip
3. foobar2000
4. vlc
大型:
1. Office
2. 各大IDE (VS, IDEA)
以上例子, 只係比大家想像一下點為之大中小型, 唔係問用FP寫返list入面既軟件得唔得
我沒有任何偏見, 所以不管結論如何, 我一樣會學FP, 因為正如我所講, 我作為一個programmer, 學多樣技術係好合理既
最多只會影響我將來選擇update邊個由我寫出黎既program
作者: hihihi123hk 時間: 2016-3-22 22:05
Haskell 作為學習 FP 十分唔錯,不過學術成份好重
實用少少又極度 Functional 嘅
可以試下用 Erlang。 WhatsApp、 LOL Chats 都係 Erlang 底
想新穎啲又實用又多例子
可以試下用 Swift 實踐 Functional, 網上都有好多教學、例子
https://gist.github.com/JaviLorbada/4a7bd6129275ebefd5a6
我自己最近都睇緊 Swift 寫 iOS
作者: hihihi123hk 時間: 2016-3-22 22:49
Immutable Models on iOS ( From Facebook App Developer )
https://www.youtube.com/watch?v=DK3vO3fUnlo
作者: 杜龍 時間: 2016-3-22 23:13
無分別, 最緊要快, 有得整unit test
作者: qweefb 時間: 2016-3-23 00:45
Functional Programming真係係大學除左上Programming Language堂時學過用過之外,其他時間真係未用過....
睇黎係時候都要睇下,update下自己
作者: jj2a3 時間: 2016-3-23 09:26
我自己如果有d 想法想prove, 會用quick basic 4.5試, 算唔算FP ?
作者: look_yau 時間: 2016-3-23 11:13
server side 野
作者: KinChungE 時間: 2016-3-24 09:21
Office其實都未必係全FP啦
可能用左好多C++
作者: raizenchan 時間: 2016-3-24 10:32
自己寫就你覺得邊隻適合就邊隻啦,又唔使同人夾。
究竟係啲勁人寫左勁野令到個技術出名,定係啲出名既技術造就左勁人呢?
作者: ironbluevision 時間: 2016-3-25 00:54
我地公司backend有D microservice係scala
作者: wfu2009 時間: 2016-3-28 00:20
本帖最後由 wfu2009 於 2016-3-28 00:23 編輯
其實如果你明白Functional Programming係源自lambda calculus
就應該理解到呢個原本係一個數學家既玩意,試圖探究電腦既解題能力極限。
Lambda calculus係一埋紙上的東西,而Functional Programming亦無視左電腦內部構造。所以點解最初既Programming Language都係C/Java玩晒,因為Functional Programming既Performance太差。順帶一提C/C++/Java呢類Langauge叫Von Neumann architecture Programming Langauge
最近幾年開始流行返Functional Programming,係因為硬件性能上升到可以任意虐待Compiler。但幾乎可以肯定既係Programming Language Syntax趨向Functional Programming方向發展係從一開始就定好左既劇本。
如果你談的是Functional Programming paradigm沒有適不適合的問題,學就對了
如果你談的是Functional Programming Language,你就要從 生產力vs Performance之間取捨
ps1. Ruby作者成日強調生產力就係因為一個Programmer打字速度總有極限,打少d Code一定比打得多Code既Language高生產力好多
ps2. 始終電腦性能最終受限於Von Neumann architecture
ps3. 如果你在搞Distributed computing請無視ps2所講既野
最後,歡迎指錯...
作者: hihihi123hk 時間: 2016-3-28 00:55
回覆 11# wfu2009
補充: 一啲比較 Modern 嘅 Language, 因為多咗好多 syntax 幫助 Coding ,Compiler 真係做多好多野
另外,大家 Agree 用咗同一個 Lang , 學識咗個 Syntax 之後,啲 Code 寫得愈少野亦代表你睇得愈快
