June 3, 2024 上線
此地收羅了程式寫作和相關課題的影片,日後會不斷更新。
這個故事說起來很長,不過我試著長話短說。 我在Johns Hopkins大學讀博士的第二年(1988), 儒林圖書的楊老闆(楊鏡秋先生、一位出版電腦書的先驅)希望我能夠出一本考試用的(電腦)題庫, 我想這是件容易的事就一口答應下來,然而在開始籌備時卻發現:若我也弄一本題庫,那麼這本書和其它題庫就沒什麼差異了! 想了很久,發現寫題庫書並不是我想要的,我期望的是一本與眾不同、幫助學生在程式寫作方面有根本影響的書 (信不信由你,那個時候不少程式設計人認為要讓程式執行夠快是用一個具有極佳優化的編譯程式或使用組合語言, 而不是從根本上設計一個效率高的程式), 楊先生居然同意我的看法、並且鼓勵我試試看(坦白說,在那個年代恐怕只有楊鏡秋先生有此遠見)。 此後近一年的時間,只要有空我就躲到Johns Hopkins大學的圖書館裡頭讀書和論文(幾乎與我的課業和研究無關), 晚上除了做課程有關的閱讀和做習題之外,時間全都用在這本書上。 一年後的1989年夏天,交出所有手稿(真的,那時只能手寫),這本書終於完成。 這一年,楊鏡秋先生的耐心和鼓勵以及娘子的支持才能讓我完成這本書: 名題精選百則。 很慶幸的是,用我有點奇怪的想法寫成的書居然曆久不衰,算是個的異數。
下面是這本書最近一版的封面。
這本書出版後不久,我拿到博士學位開始在國外的研究和教書的生涯, 但從來就沒有在系中教過電子計算機(國內叫做資工)系的學生程式寫作的課; 不過這卻從來沒有打斷過我尋找一些有趣、頗具挑戰性的程式寫作題目的興趣;此後更發展到和程式寫作有關的其它觀念和技巧。 有人說,ACM程式設計的題目也不錯,不過我個人的看法是,那些題目和《名題精選百則》中的題目在重點上是不同的, 前者是比賽題目、後者則是在啟發思考的經典題目,兩者不能混為一談。
此地的每一道題目都能夠為您做深入的分析; 我期望能夠包含了一些基本概念、 走向正確解法的思考方式和方向、 加上一些效率(或複雜度分析)的討論。 我更期望每一集都儘量是一個自成體系的單元、儘可能避免引用其它影片(也期望您能了解這只是希望、不可能完全實現)。 我真的希望這一系利影片可以延伸 名題精選百則 35年來的未完成工作、並且可以幫助您在程式設計基礎上往前大步邁進。 然而必須提醒您的是:此地不會討論那些典型的程式設計習題或考題, 因為我的重點是一些有挑戰性而且得要有點思考的問題。
這些影片都是基於個人興趣發展出來的、而不是個營利的頻道, 我不會從YouTube收到一分一毫,如果您喜歡就比個👍、若覺得對朋友或同學有幫助就分享出去,這樣就夠了。
最後,願在此回答一個二三十年來常見的問題: 這本書是儘可能不用資料結構的「技巧篇」,何時才會有下一冊、譬如「資料結構篇」? 在剛開始時的確是有這個計劃的,接下來還有「理論篇」、「浮點數篇」、「並行篇」、「幾何篇」、等等。 後來因為工作的關係而停了下來,此後就沒有下文了。很抱歉!然而,若這些各後續篇章真的寫完、也出版了, 恐怕會讓出版商虧本,因為國內的資訊環境真的是有點偏食、不夠寬廣的。
多謝!
| 序號 | 內容 | 影片 | 投影片 | 程式 | 日期 |
| 1 | 已知兩個陣列,每一個都包含了自小到大排好、 並且兩兩相異的整數, 請寫一個程式找出這兩個陣列中所有的等值對。 一個等值對包含了兩個相等的值、 每一個陣列各有一個。 本影片討論三個解法,從最粗淺的、到使用二分搜尋的比較好的解法、最後到達一個最佳解。 | 尋找等值對 | 投影片 | 程式 | June 3, 2024 |
我還有另外的中文影片, 並行計算講堂(Concurrent Computing)是討論如何把一個程式切成若干份讓它們同時執行的觀念和與此有關的重要技巧( 基本上就是同步— synchronization); 初等幾何講堂是討論一些初等幾何裡頭的漂亮、有趣並且重要的結果的。 此外,我還有其它英文發音的影片;總之,所有影片的入口網頁在此。
Update History