(54.236.58.220) 您好!臺灣時間:2021/02/28 09:32
字體大小: 字級放大   字級縮小   預設字形  
回查詢結果

詳目顯示:::

我願授權國圖
: 
twitterline
研究生:林雨生
研究生(外文):Lin, Yu-Sheng
論文名稱:Java函數式程式設計在台灣的運用情形之研究
論文名稱(外文):Research on the Utilization of Java Functional Programming in Taiwan
指導教授:李昆翰李昆翰引用關係
指導教授(外文):Li, Kun-Han
口試日期:2019-12-11
學位類別:碩士
校院名稱:臺北市立大學
系所名稱:資訊科學系
學門:工程學門
學類:電資工程學類
論文種類:學術論文
論文出版年:2020
畢業學年度:108
語文別:中文
論文頁數:95
中文關鍵詞:函數式程式設計Java FP的運用情形Java FP的使用概況Java FP的接受性
外文關鍵詞:Functional ProgrammingUtilization of Java FP in TaiwanUsage of Java FPAcceptance of Java FP
相關次數:
  • 被引用被引用:0
  • 點閱點閱:69
  • 評分評分:系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔
  • 下載下載:0
  • 收藏至我的研究室書目清單書目收藏:0
函數式程式設計(Functional Programming,以下簡稱FP)逐年受到軟體工程界的關注,2015年Java第八版也引入其特性;而有關運用的情形近來已引起國外研究的重視,但在台灣幾乎不見探究,因此本研究旨在探討Java FP在台灣的運用情形,藉由問卷調查與行動研究了解Java FP的使用概況和接受性。關於使用概況,問卷顯示有52.9%的從業人員不了解Java FP,主要原因是工作上沒特別要求使用(83.8%),次要原因是不知Java新增了FP的功能(56.8%);而了解Java FP且常運用的人僅5.7%;對於如何提升使用普及率,有79%的從業人員認為若能提供更多機會體會Java FP的優點、有54.5%的人認為鼓勵在工作上使用和45.5%的人認為提供在職訓練的教育課程,能有效提升使用普及率;而從業人員與行動研究者最常運用的功能為Lambda表達式,這點與美國研究相似。有關接受性,在問卷中提供Java FP撰寫的引導案例,從業人員認為Java FP是易於學習的比例有78.6%,易讀易寫的比例有71.4%;學習途徑主要有72.7%是透過閱讀相關書籍,有63.6%是透過網路分享;而學習的困難主要在於不習慣語法(69.7%)及不易掌握使用時機(63.6%);行動研究中也了解若能提供良好的課程, Java FP更容易學習,而掌握Java FP之後,程式也變得易寫,所寫的程式也更易於閱讀;最後發現在案例中的事件驅動適合使用Java FP,在觀察者模式中的註冊(Register)與通知(Notify)觀察者的部份也適合使用Java FP,此外使用forEach()方法和方法引用(Method Reference)能避免迴圈撰寫容易犯的邏輯錯誤,並簡化程式。
Functional programming (FP) has gradually received attention from software engineers. Java included its features in eighth edition in 2015. Its application has been emphasized in foreign studies; however, domestic research has rarely studied it. Therefore, this study used questionnaire survey and action research to investigate the usage and acceptance of Java FP in Taiwan. Regarding usage, the questionnaire results showed that 52.9% of practitioners did not understand Java FP, the main reason being that it was not required at their work (83.8%), and the second reason being that they did not know Java had added the FP function (56.8%). The percentage of people who understood Java FP and used it often was only 5.7%. As for how to increase the penetration rate, 79%, 54.5%, and 45.5% of practitioners believed that providing more opportunities to experience the strength of Java FP, promoting its use at work, and providing on-the-job education training, respectively, could increase the penetration rate. Among practitioners and action researchers, the most frequently used function was the Lambda expression, which was similar to the result from a study conducted in the United States. Regarding acceptability, after providing a guided case written using Java FP, 78.6% of practitioners considered Java FP easy to learn, and 71.4% of them considered it easy to read and write. As for how they learned Java FP, 72.7% of them studied relevant books, and 63.6% of them picked it up through online sharing. The main difficulties encountered by these practitioners were unfamiliarity with the syntax (69.7%) and not knowing when to use it (63.6%). During the action research, we discovered that if favorable courses are provided, Java FP will be easier to learn. After one learns Java FP, he or her will find coding easier, and the code they write will be easier to read. Finally, we discovered that in the case study, event-driven as well as register and notify–observer parts are suitable to be done using Java FP. Also, using the forEach() method and method reference, we could avoid logic error often committed while using loops and simplify the program.
目錄
第一章 緒論 1
第一節 研究背景與動機 1
第二節 研究目的 2
第三節 名詞釋義 3
第二章 文獻探討 5
第一節 Java引入FP的變革 5
第二節 運用FP的相關研究 11
第三節 複合式MVC模式介紹 19
第四節 MVC、策略與觀察者模式的FP撰寫 24
第五節 研究方法的緣由 30
第三章 研究方法 33
第一節 問卷調查 33
第二節 行動研究 36
第四章 研究結果與討論 45
第一節 使用概況 45
第二節 Java FP的接受性 50
第五章 結論與建議 69
第一節 結論 69
第二節 建議 70
參考文獻 71
附錄一、問卷 74
附錄二、複合式MVC案例完整程式碼 83
附錄三、行動研究記錄 90
蔡清田(2011)。行動研究的理論與實踐。T&D飛訊,第118期。
蔣金楠(2014)。ASP.NET MVC 5完全攻略。新北市:博碩出版。
鄭增財(2006)。行動研究理論與實務。台北市:五南出版。
劉德財(2016)。基於函數式編程語言的設計模式研究。上海師範大學,上海。
林信良(2014)。解析JDK8 Functional API演講稿。CodeData website。
取自http://www.codedata.com.tw/java/jdk8-functional-api/
林信良(2014)。Java 8 Patterns演講稿。CodeData website。
取自http://www.codedata.com.tw/social-coding/java8-patterns/
Dekker, A.H.(2006). Lazy Functional Programming in Java. SIGPLAN Notices 41, 3 (March 2006), p30-39.
Finegan, E., & Liguori, R.(2015). OCA Java SE 8 Programmer Study Guide, Oracle.
Freeman, E., Robson, E., Sierra, K., & Bates, B.(2005). Head First Design Patterns. O’Reilly.
Erik, M.,& Sigbjorn.(2001).Lambda, Haskell as a better Java. Electronic Notes in Theoretical Computer Science. p91-119
Goetz, A.(2014). Lambdas and Streams in Java 8 Libraries. Dr. Dobbs the world of software Development. Retrieved from
http://www.drdobbs.com/jvm/lambdas-and-streams-in-java-8-libraries/240166818
JianBing, L., & JinAn, Z.(2013).The Protection Strategy of Data Security Based on JAVA Stream Filtering. Department of Information Engineering, Putian University, Fujian, China.
Martin, R.C.(2017). Clean Architecture, Prentice Hall.
Mazinanian, D., Ketkar, A., Tsantalis, N., & Dig, D.(2017). Understanding the use of Lambda. expression. Proc. ACM Program. Lang., Vol. 1, No. OOPSLA, Article 85. Publication date: October.
Mohan, M., & Greer, D.(2017). MultiRefactor: Automated Refactoring To Improve Software Quality. Queen’s University Belfast, Northern Ireland. UK.
Pankratius, V., Schmidt, F., & Garret, G.(2012). Combining functional and imperative programming for multicore software: An empirical study evaluating Scala and Java. In 2012 34th International Conference on Software Engineering (ICSE’12). p123-133.
Parfyonov, Y.E., & Fedorchenko, V.M.(2015). USING NEW FEATURES OF JAVA SE 8. Information technology in technical systems.
Paul J.D., & Harvey M.D.(2017). Java How To Program 11/e. Pearson.
Rahad, K., Cao, Z., & Cheon, Y.(2017).A Thought on Refactoring Java Loops Using Java 8 Streams. University of Texas Department of Computer Science, Texas, USA.
Reese, R.M.(2017). Learning Java Functional Programming. PACKT publishing.
Saurel, S.(2016). Learning to make a MVC application with Swing and Java. Medium website.Retrieved from
https://medium.com/@ssaurel/learn-to-make-a-mvc-application-with-swing-and-java-8-3cd24cf7cb10
Sciore, E.(2014). Java Program Design: Principles, Polymorphism, and Patterns. Apress Publications.
Su, X., Swart, G., Goetz, B., Oliver, B., & Sandoz, P.(2014). Changing engines in midstream: a java stream computational model for big data processing.VLDB Endowment Volume 7 Issue 13. p1343-1345
Tsantalis, N., Mazinanian, D., & Rostami, S.(2017). Clone Refactoring with Lambda Expressions. In Proceedings of the 39th International Conference on Software Engineering (ICSE ’17). p60-70.
Uesbeck, P.M., Stefik, A., Hanenberg, S., Pedersen, J., & Daleiden, P.(2016). An Empirical Study on the Impact of C++ Lambdas and Programmer Experience. In Proceedings of the 38th International Conference on Software Engineering (ICSE ’16). 760ś771.
Urma, R., Fusco, M., & Mycroft, A.(2014). Java 8 in Action. Manning Publications.
Warburton, R.(2014). Java 8 Lambdas: Pragmatic Functional Programming. O’Reilly.
Ward, A., & Deugo, D.(2015).Performance of Lambda Expression in Java 8.Software Eng. Research and Practice SERP’15.p119-124.
Wohlin, C., & Aurum, A.(2015). Towards a decision-making structure for selecting a research design in empirical software engineering. Empirical Software Engineering 20, 6. p1427-1455.
電子全文 電子全文(網際網路公開日期:20210601)
連結至畢業學校之論文網頁點我開啟連結
註: 此連結為研究生畢業學校所提供,不一定有電子全文可供下載,若連結有誤,請點選上方之〝勘誤回報〞功能,我們會盡快修正,謝謝!
QRCODE
 
 
 
 
 
                                                                                                                                                                                                                                                                                                                                                                                                               
第一頁 上一頁 下一頁 最後一頁 top
無相關論文
 
無相關期刊
 
無相關點閱論文
 
系統版面圖檔 系統版面圖檔