[網文觀點] 李家同先生:不會畫流程圖,就表示他沒有邏輯思考的能力,不可能會寫程式
原文出處: https://goo.gl/UxxUeM
----------(本文開始)----------
前不久拜讀李家同先生的「怪不得很多資訊相關科系的學生不會寫程式」,對於其中他觀察到的現象「某些資訊系畢業生不會寫程式」,肇因於「沒有邏輯思考能力」,最後得出「會畫流程圖才有邏輯能力,才會寫程式」,我一半同意,一半不同意。所以撰文抒發一下我個人的淺見。
根據我自己在電腦補習班教書 30 年的經驗(我從 1989 年開始在電腦補習班執教),我同意「要會寫程式 --> 需要有邏輯能力」這條推論。但「要有邏輯能力 --> 要會畫流程圖」這一條我就不太敢苟同了。
先定義一下「邏輯能力」。我認為的邏輯能力是,遇到一個問題,腦袋能把「先做哪一件事,再做哪一件事」這個順序安排得好。邏輯能力與數學無關。就我看來,我家附近最有邏輯能力的人,是巷口早餐店的掌廚阿姨。大家絡繹不絕的點餐,她還是有辦法指揮廚房內的三名助手:「小A,你先下兩杯冰咖啡...小B,準備好一份切邊土司,兩份漢堡麵包...小C,XX 桌去收一下,然後幫李大哥結帳...」一切有條不紊!這也是程式設計最重要的能力:「把解題步驟有條不紊地依序寫成程式碼」。我覺得她來學程式,一定是會學得很好!
養成「邏輯能力」的方法很多,「畫流程圖」只是其中一種方法。所以「能畫流程圖 --> 有邏輯能力」這條我贊成。但李先生說的「要有邏輯能力 --> 必須要會畫流程圖」這條反過來的推論,我就不贊成了!「能畫流程圖 --> 有邏輯能力」這條,並非「反之亦然」的條件。「有邏輯能力」對應出去的,是個「一對多」的關係。能畫流程圖的人,邏輯能力一定不差,但邏輯能力好的人,不一定會畫流程圖。否則巷口早餐店掌廚阿姨不會畫流程圖,不就成了最沒有邏輯能力的人?(不知道我這樣解釋,大家覺得我的邏輯能力還可以嗎? XD )
另一點我不太贊成讓程式初學者去靠「畫流程圖」學會程式邏輯的原因是,業界已經不太要求程式設計師繪製流程圖了。用流程圖來表示程式邏輯,已經是 1980 年代「結構化程式導向」工法那個時期的事情了。進入 1990 年代,程式已經全面改用「物件導向程式設計」工法,「流程圖」裡的那些方塊、菱形,沒有辦法表示出「物件」、「類別」...等這類概念。所以 1990 年代業界提出另一套符號,叫做「UML(Unified Model Language)」圖。用「Use Case」、「Class Diagram」、「Sequence Diagram」...等這幾套符號,全面取代以前的流程圖符號了。想簡單了解 UML 的朋友可以參考這篇文章: https://goo.gl/LTv4fS
時序進入 2000 年代,大家發現「寫程式前先畫流程圖 / UML 圖」這件事是不切實際的。因為 2000 年代的軟體生命週期更短!汰換率比以前更快!已經沒有時間讓程式師慢慢畫流程圖後,才開始寫程式。況且,辛苦畫好的流程圖,會因為修改程式碼但忘了順便修改流程圖,導致流程圖漸漸無法反應現時這套程式的邏輯,而成了廢物。另外,流程圖並非每位新進員工都會,新人訓練還要加上教會他流程圖的各種符號,以便看懂公司內各種文件,C/P 值太低了!所以 2000 年後,資訊業界就不太要求程式師用流程圖或 UML 圖,來表示程式邏輯了。
那現在資訊業界用什麼方法表示程式邏輯呢?最簡單的方法:用文字條列。把一小段的程式該做哪些事情,一條條列出來,簡單描述即可。把該做的事情用文字條列,人人都不用特別學習另一套符號,成本超低!也能表現出程式邏輯(其實流程圖要表示的,不就是程式邏輯嗎?用文字表示效果一樣)。甚至於還能把這些條列文字,用「註解」的方式,寫入原始碼中。這樣修改原始碼,就會順便修改註解,保持「邏輯」與「原始碼」同步。如果你想把程式邏輯從註解抽出來變成文件,用特殊軟體抽出註解、拋棄原始碼就行了。業界最出名的這類抽取註解變文件的工具,有 JavaDoc(這部影片有示範 JavaDoc 抽出來的註解可以變成多精美的文件: https://youtu.be/Ls-NHebXY20 )。正因為用的是最簡單的「文字」,才能輕易地把程式邏輯內嵌在原始碼中。如果是圖形,那就辦不到了。
如果你真的要用圖形表示程式邏輯,業界現在流行「直接把操作介面畫出來」。不用畫得很精緻,用一些方框代表「這裡是文字框、這裡是確定鈕」即可。這類手法,稱為「Wireframe」。這邊有一篇 Wireframe 的中文說明: https://goo.gl/KIrq0Y 。用 Wireframe,不僅好學(基本上沒有特定規則,看得懂就好),畫出來也可以分享給客戶,示範我們會怎麼幫他設計他想要的程式,而不用擔心客戶看不懂流程圖。更適合用來表達 1990 年代後期興起的「圖形使用者介面(GUI, Graphical User Interface)」。流程圖某種情況下,只適合表示 1980 年代那種「文字式介面」的需求了。
那為什麼現今資訊系畢業的學生,不會寫程式的比例變多了呢?事實上,是現在資訊系學生要學的東西變多了。所以分配到每一樣的「練習」變少,就變成「樣樣通、樣樣鬆」了。光學完理論,還來不及實作,就被逼著去學下一項。就像剛考上普通駕照,沒時間給他道路駕駛,然後逼著他又去考職業駕照、大客車駕照、連結車駕照,再來感嘆:「現在年輕人道路駕駛變差了」。我開始學程式設計的時間,應該只比李家同先生晚一點,大概都是 1980 年代前後。那時候,只要學會 C 語言,加上資料結構、演算法,人家就虎視眈眈地問你什麼時候畢業、能去他們公司工作了。沒有 GUI、沒有網頁程式設計、沒有手機程式設計、沒有大數據...通.通.都.沒.有!所以,不太會寫程式的原因,是「練習不夠」,而「邏輯能力」就是靠大量實作練出來的。因此,真正的因果關係,我認為是「學習項目太多 --> 實作練習不足 --> 邏輯能力無法提昇 --> 寫程式時腦袋一片空白 --> 被人家說不會寫程式」。真正解藥是:「專注一項,多多實作練習」。你至少要把一種語言練到精通,養出基本的程式撰寫邏輯後,再去跳其他語言。這樣就不會「樣樣通、樣樣鬆」了(我個人的基本功底,是 C 與 Java。兩種語言我都練到真的很強!學新語言,我都會去找對照關係:這個語法對應到 C/Java 的哪一種,來加速學習)。
最後讓我重述一下我的觀點:我不反對用繪製流程圖來訓練邏輯能力,但說訓練邏輯能力,一定要會流程圖,這件事情我不贊同。天底下還有比流程圖更簡單、也能訓練邏輯能力的方法。千萬不要認為「流程圖」是訓練邏輯能力的唯一方法就行了。
啊!對了!麻煩不要拿著我這篇文章貼到李家同先生的網誌去戰人家。您可以兩篇文章都看,甚至選擇不同意我說的論點。李先生是我們這行的大前輩,我個人還是蠻尊敬他的。
「普通大客車可以開什麼車」的推薦目錄:
- 關於普通大客車可以開什麼車 在 紀老師程式教學網 Facebook 的最佳貼文
- 關於普通大客車可以開什麼車 在 紀老師程式教學網 Facebook 的最佳解答
- 關於普通大客車可以開什麼車 在 華人民主書院 New School for Democracy Facebook 的最讚貼文
- 關於普通大客車可以開什麼車 在 剛考上普通大客車駕照能做甚麼職務呢? - Mobile01 的評價
- 關於普通大客車可以開什麼車 在 職業大客車駕照可以開什麼車的推薦,MOBILE01、PTT 的評價
- 關於普通大客車可以開什麼車 在 職業大客車駕照可以開什麼車的推薦,MOBILE01、PTT 的評價
- 關於普通大客車可以開什麼車 在 最近才去考職業大貨,請問要多久才能再考聯結車駕照 ... 的評價
普通大客車可以開什麼車 在 紀老師程式教學網 Facebook 的最佳解答
[網文觀點] 李家同先生:不會畫流程圖,就表示他沒有邏輯思考的能力,不可能會寫程式
原文出處: https://goo.gl/UxxUeM
-\-\-\-\-\-\-\-\-\-\(本文開始)-\-\-\-\-\-\-\-\-\-\
前不久拜讀李家同先生的「怪不得很多資訊相關科系的學生不會寫程式」,對於其中他觀察到的現象「某些資訊系畢業生不會寫程式」,肇因於「沒有邏輯思考能力」,最後得出「會畫流程圖才有邏輯能力,才會寫程式」,我一半同意,一半不同意。所以撰文抒發一下我個人的淺見。
根據我自己在電腦補習班教書 30 年的經驗(我從 1989 年開始在電腦補習班執教),我同意「要會寫程式 -\-\> 需要有邏輯能力」這條推論。但「要有邏輯能力 -\-\> 要會畫流程圖」這一條我就不太敢苟同了。
先定義一下「邏輯能力」。我認為的邏輯能力是,遇到一個問題,腦袋能把「先做哪一件事,再做哪一件事」這個順序安排得好。邏輯能力與數學無關。就我看來,我家附近最有邏輯能力的人,是巷口早餐店的掌廚阿姨。大家絡繹不絕的點餐,她還是有辦法指揮廚房內的三名助手:「小A,你先下兩杯冰咖啡...小B,準備好一份切邊土司,兩份漢堡麵包...小C,XX 桌去收一下,然後幫李大哥結帳...」一切有條不紊!這也是程式設計最重要的能力:「把解題步驟有條不紊地依序寫成程式碼」。我覺得她來學程式,一定是會學得很好!
養成「邏輯能力」的方法很多,「畫流程圖」只是其中一種方法。所以「能畫流程圖 -\-\> 有邏輯能力」這條我贊成。但李先生說的「要有邏輯能力 -\-\> 必須要會畫流程圖」這條反過來的推論,我就不贊成了!「能畫流程圖 -\-\> 有邏輯能力」這條,並非「反之亦然」的條件。「有邏輯能力」對應出去的,是個「一對多」的關係。能畫流程圖的人,邏輯能力一定不差,但邏輯能力好的人,不一定會畫流程圖。否則巷口早餐店掌廚阿姨不會畫流程圖,不就成了最沒有邏輯能力的人?(不知道我這樣解釋,大家覺得我的邏輯能力還可以嗎? XD )
另一點我不太贊成讓程式初學者去靠「畫流程圖」學會程式邏輯的原因是,業界已經不太要求程式設計師繪製流程圖了。用流程圖來表示程式邏輯,已經是 1980 年代「結構化程式導向」工法那個時期的事情了。進入 1990 年代,程式已經全面改用「物件導向程式設計」工法,「流程圖」裡的那些方塊、菱形,沒有辦法表示出「物件」、「類別」...等這類概念。所以 1990 年代業界提出另一套符號,叫做「UML(Unified Model Language)」圖。用「Use Case」、「Class Diagram」、「Sequence Diagram」...等這幾套符號,全面取代以前的流程圖符號了。想簡單了解 UML 的朋友可以參考這篇文章: https://goo.gl/LTv4fS
時序進入 2000 年代,大家發現「寫程式前先畫流程圖 / UML 圖」這件事是不切實際的。因為 2000 年代的軟體生命週期更短!汰換率比以前更快!已經沒有時間讓程式師慢慢畫流程圖後,才開始寫程式。況且,辛苦畫好的流程圖,會因為修改程式碼但忘了順便修改流程圖,導致流程圖漸漸無法反應現時這套程式的邏輯,而成了廢物。另外,流程圖並非每位新進員工都會,新人訓練還要加上教會他流程圖的各種符號,以便看懂公司內各種文件,C/P 值太低了!所以 2000 年後,資訊業界就不太要求程式師用流程圖或 UML 圖,來表示程式邏輯了。
那現在資訊業界用什麼方法表示程式邏輯呢?最簡單的方法:用文字條列。把一小段的程式該做哪些事情,一條條列出來,簡單描述即可。把該做的事情用文字條列,人人都不用特別學習另一套符號,成本超低!也能表現出程式邏輯(其實流程圖要表示的,不就是程式邏輯嗎?用文字表示效果一樣)。甚至於還能把這些條列文字,用「註解」的方式,寫入原始碼中。這樣修改原始碼,就會順便修改註解,保持「邏輯」與「原始碼」同步。如果你想把程式邏輯從註解抽出來變成文件,用特殊軟體抽出註解、拋棄原始碼就行了。業界最出名的這類抽取註解變文件的工具,有 JavaDoc(這部影片有示範 JavaDoc 抽出來的註解可以變成多精美的文件: https://youtu.be/Ls-NHebXY20 )。正因為用的是最簡單的「文字」,才能輕易地把程式邏輯內嵌在原始碼中。如果是圖形,那就辦不到了。
如果你真的要用圖形表示程式邏輯,業界現在流行「直接把操作介面畫出來」。不用畫得很精緻,用一些方框代表「這裡是文字框、這裡是確定鈕」即可。這類手法,稱為「Wireframe」。這邊有一篇 Wireframe 的中文說明: https://goo.gl/KIrq0Y 。用 Wireframe,不僅好學(基本上沒有特定規則,看得懂就好),畫出來也可以分享給客戶,示範我們會怎麼幫他設計他想要的程式,而不用擔心客戶看不懂流程圖。更適合用來表達 1990 年代後期興起的「圖形使用者介面(GUI, Graphical User Interface)」。流程圖某種情況下,只適合表示 1980 年代那種「文字式介面」的需求了。
那為什麼現今資訊系畢業的學生,不會寫程式的比例變多了呢?事實上,是現在資訊系學生要學的東西變多了。所以分配到每一樣的「練習」變少,就變成「樣樣通、樣樣鬆」了。光學完理論,還來不及實作,就被逼著去學下一項。就像剛考上普通駕照,沒時間給他道路駕駛,然後逼著他又去考職業駕照、大客車駕照、連結車駕照,再來感嘆:「現在年輕人道路駕駛變差了」。我開始學程式設計的時間,應該只比李家同先生晚一點,大概都是 1980 年代前後。那時候,只要學會 C 語言,加上資料結構、演算法,人家就虎視眈眈地問你什麼時候畢業、能去他們公司工作了。沒有 GUI、沒有網頁程式設計、沒有手機程式設計、沒有大數據...通.通.都.沒.有!所以,不太會寫程式的原因,是「練習不夠」,而「邏輯能力」就是靠大量實作練出來的。因此,真正的因果關係,我認為是「學習項目太多 -\-\> 實作練習不足 -\-\> 邏輯能力無法提昇 -\-\> 寫程式時腦袋一片空白 -\-\> 被人家說不會寫程式」。真正解藥是:「專注一項,多多實作練習」。你至少要把一種語言練到精通,養出基本的程式撰寫邏輯後,再去跳其他語言。這樣就不會「樣樣通、樣樣鬆」了(我個人的基本功底,是 C 與 Java。兩種語言我都練到真的很強!學新語言,我都會去找對照關係:這個語法對應到 C/Java 的哪一種,來加速學習)。
最後讓我重述一下我的觀點:我不反對用繪製流程圖來訓練邏輯能力,但說訓練邏輯能力,一定要會流程圖,這件事情我不贊同。天底下還有比流程圖更簡單、也能訓練邏輯能力的方法。千萬不要認為「流程圖」是訓練邏輯能力的唯一方法就行了。
啊!對了!麻煩不要拿著我這篇文章貼到李家同先生的網誌去戰人家。您可以兩篇文章都看,甚至選擇不同意我說的論點。李先生是我們這行的大前輩,我個人還是蠻尊敬他的。
普通大客車可以開什麼車 在 華人民主書院 New School for Democracy Facebook 的最讚貼文
北京商住戶上街散步維權
有海外媒體報道,在中國大陸,繼一周前上海市近千名商住房業主上街抗議當局禁止商住房的新政策後,6月18號,北京市的一批商住房業主也集體上街“散步”維權。當局派大批警察到場戒備,有參加者被警方帶走。有北京市民認為,北京房價飆升,當局調控房市的政策朝令夕改,令很多購房者受損。
據海外中文的的多維新聞網報道,6月18號下午,部分北京市商住房業主到靠近歐美使館區的三裡屯太古裡鬧市區街道集體散步維權。有參與的業主表示,他們大多是客居北京的外地人,集體維權是希望在北京找到棲身之地。他們花數百萬元購買商住房,結果一夜之間就被當局出台的商住房違法的新規定套牢。
北京的市民許永海就此對本台記者表示,在北京,商住房,也就是商用和居住房的問題,一直處於政策的灰色地帶,
“商住兩用房不同於普通住宅,產權年限短,只有40年,而普通住宅是70年。而且外地人購買商住房,也不能在北京落戶,孩子也無法上學。北京的房價已經貴得離譜,我居住的二環路與三環路之間的房子已經漲到了15萬一個平米。一個臥室的小套就價值6百萬左右,北京人也很痛苦。”
報道說,有上街散步的商住房業主說,他們在三裡屯集體散步時,被檢查身份證的警察攔截。有人被警察送上大客車帶到郊區的久敬莊訪民接待中心。
北京市民許永海認為,北京的高房價造成了很多社會問題,
“每個星期一,在北京市政府門前都有拆遷戶請願,要求解決拆遷遺留問題,十幾年都是如此。另外還有經濟適用房問題,現在又加上商住兩用房(問題)。”
多維網的報道說,在北京,由於商住房價格較低,而且不受限購政策影響,近年來許多北漂族選擇購買商住房。北京當局今年3月26日出台了商住房新政,規定商務類房屋不得作為居住使用,新建商業房不得出售給個人。同時,要求商業銀行暫停對個人購買商辦類住房的個人購房貸款。 今年5月,曾有成百上千的北京商住房業主在北京市政府前維權,高呼“商住無罪”,“要見市長”等口號,後被警察驅散。
北京理工大學經濟學教授胡星鬥對此表示,北京政府出台的新商住房政策確實存在朝令夕改問題,
“一下子政策就變了,讓普通業主遭受損失,這是不應該的。調控房價,應該從供給側入手,增加土地供應。”
目前,中國大陸的住房市場呈現畸形狀態,胡星鬥教授說,
“很多人把(購買)住房當作一種投資手段,有些人有多套房子,根本不是用來居住的,買了就空在那裡。西方發達國家也有投機房地產的,但是大多數住房都是用來居住的。但是中國的住宅已經失去了居住的屬性。”
如何化解中國大陸目前住房市場的亂像呢?胡星鬥教授建議,中國各地政府應該增加土地供應,提高空置房的稅費和房屋交易的稅費,還可以征收房產稅,以打擊房地產市場的投機行為,
“現在人們踊躍投資房地產,這是因為實體經濟不景氣,投資什麼都賠本。而房地產確實是只賺不賠,而且中國一線城市的房地產在可見的未來,沒有下跌的趨勢。”
中國大陸各大城市今年3月以來陸續出台商住房新政策,禁止商住房銷售給個人,禁止將商用房改造為住宅。 今年6月10日,上海數千上海商住房業主在南京路,抗議當局的新政策令他們的商住兩用房(酒店式公寓)變為純商業用房。業主們要求當局對政策出台前購買的商住房網開一面。但業主們的抗議被當局派警鎮壓,場面一度混亂,多名抗議者被強行帶走。
(記者:高山; 責編:嘉華; 網編:安克)
本新聞由自由亞洲電台提供
普通大客車可以開什麼車 在 最近才去考職業大貨,請問要多久才能再考聯結車駕照 ... 的推薦與評價
請問大家普通大貨已經考出來10幾年了,最近才去考職業大貨,請問要多久才能再考聯結車駕照? ... 7噸半大貨車,從花蓮到台中,有哪些路線可以行駛,第一次跑,謝謝大家. ... <看更多>
普通大客車可以開什麼車 在 剛考上普通大客車駕照能做甚麼職務呢? - Mobile01 的推薦與評價
如: 1.校車司機(限學校自購大客車);公司行號自購的交通車通常是大巴或是20人中巴不過這種工作流動率極低,挺稀有的,但是相對穩定! 2.大客車可以降階開大貨車,可以找公司行號 ... ... <看更多>
相關內容