是不是每個一段時間,心裡會有個問題浮現,「我下一個用的程式語言,會是什麼?」
雖然我們都知道 C/C++ 一定會存在,但是,該怎麼面對越來越有生產力的新程式語言?
每一個新的程式語言,總是會比較,同樣的工作,舊的要寫多少行程式,新的要寫多少行程式,
標準就是越少行的程式,就是越有生產力的程式。
這樣的論點有多少人認同呢?這裡就不討論這論點是否為真。
我相信這樣的論點,這多少可以當做參考,但不是絕對唯一的參考。
(程式開發不只是寫程式,花最多時間的是測試。如果打很多字就可以減低測試的時間,
我想我會願意多打一些字。)
程式語言本身可以提升的生產力,不會是減少程式碼行數,而是可讀性。
程式開發不是一兩天,程式的撰寫雖然是給機器看的,但只要程式需要修改,
人就得看那段程式。
如果程式碼短到難以讓人一眼就看懂,才剛寫完一行,隔天得花半小時去研究那一行在做什麼,
或是寫一行程式要加一行註解以避免忘記自己做什麼,這反而降低整體生產力。
也因此,你會看到的,所謂新的程式語言並不在只是強調精簡的語法,
而是合於人性的語法。程式語言本身可以提升的生產力,不會是減少程式碼行數,而是可讀性。
雖然我們都知道 C/C++ 一定會存在,但是,該怎麼面對越來越有生產力的新程式語言?
每一個新的程式語言,總是會比較,同樣的工作,舊的要寫多少行程式,新的要寫多少行程式,
標準就是越少行的程式,就是越有生產力的程式。
這樣的論點有多少人認同呢?這裡就不討論這論點是否為真。
我相信這樣的論點,這多少可以當做參考,但不是絕對唯一的參考。
(程式開發不只是寫程式,花最多時間的是測試。如果打很多字就可以減低測試的時間,
我想我會願意多打一些字。)
程式語言本身可以提升的生產力,不會是減少程式碼行數,而是可讀性。
程式開發不是一兩天,程式的撰寫雖然是給機器看的,但只要程式需要修改,
人就得看那段程式。
如果程式碼短到難以讓人一眼就看懂,才剛寫完一行,隔天得花半小時去研究那一行在做什麼,
或是寫一行程式要加一行註解以避免忘記自己做什麼,這反而降低整體生產力。
也因此,你會看到的,所謂新的程式語言並不在只是強調精簡的語法,
而是合於人性的語法。程式語言本身可以提升的生產力,不會是減少程式碼行數,而是可讀性。
天下沒有白吃的午餐,
同樣一件事,最精簡的做法如果已經出來的話,就不可能有更簡單的做法。
那要寫一個比較少行的程式,要怎麼寫?
就是 code reuse。使用以前寫過的程式、使用別人寫過的程式。
你會感覺到,以前學 C/C++ 的時候,寫程式會很大一段。
因為所有的事情,都從頭開始寫。什麼叫做從頭開始?
就是從最簡單的 IO 開始,如果要開檔案,要開 ftp ,想要弄個 form 還不知道怎麼畫。
因此教科書上通常都會跟你說,看完這本書,可以有一個某某功能的函式,供以後使用。
現在使用新程式語言寫程式為什麼可以比較少行?
就是因為那些事,新程式語言都先寫好了,含在語言的函式庫(library)裡(或叫做 package 或是 module),使用者直接拿來用,就可以少寫很多行程式碼。
所以,以提高生產力來說,選擇一個好的 library 就可以有大幫助了。
而 framework 是一個更大的 library ,除了提供給程式上呼叫的函式,
更提供一個好的開發、測試、整合的環境,讓程式撰寫,更有生產力。
越是新的語言,提供的功能越是可能我們需要的、越是方便。
所以後來的 framework 都是建立一整包開發環境所需要模組,
並且設計方便統一的擴充方式因應未來的需求。
註一、以現在的 C/C++ 來說,他所提供的功能,絕對是大於其他的 language。
但是為何常常被人說生產力不高,原因就是在於語法的架構,
太過於自由,而導致每個人寫出來的東西都不一樣。
大家隨心所欲的寫,使得閱讀難度高。
如果沒有一個固定的 convention,大概只有機器才看得懂。
若是遇到神級的程式寫手,隨意放宣告及任意使用 object 及繼承,
那就不如重寫算了。
註二、程式員 (programer) 這個詞好像是大陸來的,我們這裡似乎沒有人翻譯這個詞,可能教育部的搞教改沒時間弄這個吧。如有得罪或錯誤,請大家指正。
註三、從 VB 到 VB .Net,我個人是覺得投入的時間足夠我去學 ruby 或是 python 了。不過,後兩者的 GUI 都不好弄,還是當做 script 比較好。
註四、比較接近後期的 framework 有一個特殊的例子,就是 .Net framework,
不只強調跨平台,還強調支援多種語言。
使得程式員(註二)不必為了找新的 framework,而換 language,這是一大突破。
並且 .Net framework 相容舊方式的 VC 給了程式員有時間適應。
但是,其他像 VB, VJ 就沒有這麼好了。
VB .Net 雖然還是 VB,但到了 .Net 之後,原來的觀念要修正的很多,
所以障礙還不少,大家可以自己親身體驗看看。(註三)
除了 .Net 之外,大家也熟悉的 Java 也開始把其他 language 加入其 VM 中,
目前成功的模組是 Jython 及 JRuby(這個不知道做完了沒),
Java 的方式是把該 language 的 interpreter 實作在其 VM 中,
雖然語法都是原來的,
但是寫程式的想法要用新的 framework (也就是 Java) 的想法才行。
也因此有些東西,在 Jython 跟 Python 的寫法就會不一樣。
使用的感覺就跟 .Net 一樣,還是要注重到 language 的特色。
同樣一件事,最精簡的做法如果已經出來的話,就不可能有更簡單的做法。
那要寫一個比較少行的程式,要怎麼寫?
就是 code reuse。使用以前寫過的程式、使用別人寫過的程式。
你會感覺到,以前學 C/C++ 的時候,寫程式會很大一段。
因為所有的事情,都從頭開始寫。什麼叫做從頭開始?
就是從最簡單的 IO 開始,如果要開檔案,要開 ftp ,想要弄個 form 還不知道怎麼畫。
因此教科書上通常都會跟你說,看完這本書,可以有一個某某功能的函式,供以後使用。
現在使用新程式語言寫程式為什麼可以比較少行?
就是因為那些事,新程式語言都先寫好了,含在語言的函式庫(library)裡(或叫做 package 或是 module),使用者直接拿來用,就可以少寫很多行程式碼。
所以,以提高生產力來說,選擇一個好的 library 就可以有大幫助了。
而 framework 是一個更大的 library ,除了提供給程式上呼叫的函式,
更提供一個好的開發、測試、整合的環境,讓程式撰寫,更有生產力。
越是新的語言,提供的功能越是可能我們需要的、越是方便。
所以後來的 framework 都是建立一整包開發環境所需要模組,
並且設計方便統一的擴充方式因應未來的需求。
註一、以現在的 C/C++ 來說,他所提供的功能,絕對是大於其他的 language。
但是為何常常被人說生產力不高,原因就是在於語法的架構,
太過於自由,而導致每個人寫出來的東西都不一樣。
大家隨心所欲的寫,使得閱讀難度高。
如果沒有一個固定的 convention,大概只有機器才看得懂。
若是遇到神級的程式寫手,隨意放宣告及任意使用 object 及繼承,
那就不如重寫算了。
註二、程式員 (programer) 這個詞好像是大陸來的,我們這裡似乎沒有人翻譯這個詞,可能教育部的搞教改沒時間弄這個吧。如有得罪或錯誤,請大家指正。
註三、從 VB 到 VB .Net,我個人是覺得投入的時間足夠我去學 ruby 或是 python 了。不過,後兩者的 GUI 都不好弄,還是當做 script 比較好。
註四、比較接近後期的 framework 有一個特殊的例子,就是 .Net framework,
不只強調跨平台,還強調支援多種語言。
使得程式員(註二)不必為了找新的 framework,而換 language,這是一大突破。
並且 .Net framework 相容舊方式的 VC 給了程式員有時間適應。
但是,其他像 VB, VJ 就沒有這麼好了。
VB .Net 雖然還是 VB,但到了 .Net 之後,原來的觀念要修正的很多,
所以障礙還不少,大家可以自己親身體驗看看。(註三)
除了 .Net 之外,大家也熟悉的 Java 也開始把其他 language 加入其 VM 中,
目前成功的模組是 Jython 及 JRuby(這個不知道做完了沒),
Java 的方式是把該 language 的 interpreter 實作在其 VM 中,
雖然語法都是原來的,
但是寫程式的想法要用新的 framework (也就是 Java) 的想法才行。
也因此有些東西,在 Jython 跟 Python 的寫法就會不一樣。
使用的感覺就跟 .Net 一樣,還是要注重到 language 的特色。
請先 登入 以發表留言。