Study
caterpillar_here
这个作者很懒,什么都没留下…
展开
-
善于遗忘
在获取知识的同时也必须善于遗忘。 这句话看来似乎是相互矛盾的,既然我的目的是在于获得知识,又为何又要去遗忘所学到的事物呢?事实上,除了心理层面的事物之外,人本身就是一个善于遗忘的东西,尤其是知识方面的东西,例如语言,如果学习了一个新的语言而不去用它,久了自然就会遗 忘,即使是母语也是一样,了解人是善于遗忘的这个事实很重要,您学得了一件新的事物,也许现阶段您会使用它,或许只是先学习等待将来的应用,如原创 2006-09-12 20:59:00 · 4116 阅读 · 8 评论 -
Hello World 的試煉
類似Hello World的探索過程,可引導出語法層面外的許多議題 第一個Hello World範例的出現,據稱是在Brian Kernighan寫的《A Tutorial Introduction to the Language B》中,此後成為許多程式語言教學的第一個範例程式。隨著技術演進,Hello World的示範漸漸有另一種意涵,如何用最簡潔程式碼來顯示Hello Wor原创 2012-06-25 09:29:03 · 1887 阅读 · 0 评论 -
程式語言的特性本質(二)類別與原型的物件管理學
類別基礎(Class-based)與原型基礎(Prototype-based)為物件導向的不同風格。前者在設計時先強調物件的種類畫分,之後根據畫分的類別,建立具相同行為與結構的實例(Instance);後者先著重物件個體的行為描述,日後隨著程式演進再來擔心分類等問題。 更多內容:http://www.ithome.com.tw/itadm/article.php?c=73566原创 2012-07-10 09:53:53 · 2135 阅读 · 1 评论 -
程式設計者的技術文筆與寫作
程式設計者是工程師?科學家?工匠或藝術家?Robert C. Martin在《Clean Code》書中第一章即談到:「We Are Authors」。Bruce Eckel在2009年於Artima Weblogs寫了一篇文章〈Writing Software is Like ... Writing〉。《Coders at Work》書中,多位大師也曾提及文筆表達能力對程式設計者的重要性。原创 2012-08-03 08:55:12 · 3163 阅读 · 0 评论 -
受限多重繼承的演進
觀察到兩個以上類別具有重複定義時,可考慮將重複部份抽出至新類別,使用新類別的方式之一是透過繼承,這是由下而上的繼承思考方式;如果觀察到類別已定義某些功能,為了避免在新類別中重複定義,方式之一就是繼承該類別,這是由上而下的繼承思考方式。 無論是直接支援多重繼承或提供受限多重繼承,思考重點都在於由下而上抽取出的重複,或是由上而下繼承的定義是否過於具體。 解決多重繼承複雜問題的規則過於複原创 2012-08-08 10:02:19 · 2135 阅读 · 0 评论 -
程式語言的特性本質(四)往數學領域抽象化的函數程式設計
許多程式語言融合了多種程式設計典範(Paradigm),除了為人熟知的結構化、物件導向等典範外,逐漸也可見函數程式設計(Functional programming)的蹤影,相對於物件導向將問題具體為物件互動的世界,函數設計則往數學領域抽象化,將問題逐項分解為函數定義。 以數學形式定義問題 函數式程式設計(以下簡稱為函數式程設)經常與指令式程式設計(Imperative progr原创 2012-07-25 17:13:21 · 2482 阅读 · 0 评论 -
現代程式庫的多重角色
對於應用程式開發產能的影響,程式語言只是個出發點,現代程式庫不僅是可重用功能的中心,還扮演了規範架構流程、限制語言功能、擴充程式語義、模擬典範(Paradiam)等多重角色,有時體質不良的程式語言,因為有良好的程式庫約束了先天不良元素,反而使得原本不被看好的語言廣為接受而獲得重用。 可重用功能的集中處 基於開發程式時的可維護性與彈性,程式開發過程會不斷消弭重複性。傳統程式庫的角色,就是將重原创 2012-08-17 15:45:35 · 2199 阅读 · 0 评论 -
命令式至函數式隨記(三)
English函數式的思考中心就是分解問題,舉例來說,計算list長度命令式如下:def length(list): c = 0 for i in list: c += 1 return c 將之改為函數式是許多介紹函數式的文章會有的範例:def length(list): return 0 if list ==原创 2012-10-19 07:34:34 · 2548 阅读 · 0 评论 -
命令式至函數式隨記(四)
English在命令式至函數式隨記(三)中最後談到foldRight,本來想說有機會再談,不過剛好有個範例,想說就先隨便記好了,有這之前,建議先看看:List 處理模式抽象資料型 態與 代數資料型態 前幾篇都用Python作示範,那這邊就繼續用它作示範好了,首先想想Python中兩個list的串接怎麼作?用+!像是[1, 2, 3] + [4, 5, 6]如果要在一個list前原创 2012-10-19 07:35:00 · 2715 阅读 · 0 评论 -
命令式至函數式隨記(一)
English這一陣子練習函數式,隱隱約約發現從命令式過渡到函數式有一些模式可循,但還沒很能抓得住,在這邊略作筆記一下,另一方面,最近在看 MapReduce,也是隱隱約約感覺,這種模式,有助於使用 MapReduce 時對資料的分析,總之這是一個典型的例子之一,來試著收集更多的例子,看看能不能歸類出一些模式 ... XD將命令式更改為函數式,需要乾淨點的程式碼與對流程的敏感度,典原创 2012-10-19 07:33:25 · 2535 阅读 · 0 评论 -
命令式至函數式隨記(五)
English來點輕鬆的好了!要把一組list中的資料全部加1怎麼寫?def addOne(list): result = [] for ele in list: result.append(ele + 1) return result改成函數式呢?def addOne(list): return [] if list原创 2012-10-23 11:56:50 · 2814 阅读 · 0 评论 -
命令式至函數式隨記(六)
English從函數式得到的,並不只是將命令式外觀的程式碼重構為函數式外觀的程式碼,重點在於 對問題思考方式的重構,從而影響演算法的設計。下面這個程式是個解 排 列組合 的例子:def rotated(list, i, j): lt = list[i:j + 1] return list[0:i] + lt[-1:] + lt[0:-1] + list[j原创 2012-11-10 08:43:57 · 2984 阅读 · 0 评论 -
程式語言的特性本質(一)靜態語言與動態語言的信任抉擇
型態系統是對底層位元組的抽象化,開發者只要瞭解型態,就可得知如何以高階操作處理資料,開發者選擇程式語言的第一步,就是如何從語法得知型態資訊,也就是決定選用靜態語言或動態語言。 具體來說,靜態語言是指變數是否帶有資料儲存型態,反之則為動態語言。 靜態語言的變數本身帶有型態資訊。例如底下的Java範例中,text宣告為String,就僅可參考String實例,若嘗試參考至其它型態,則會引發編譯原创 2012-07-04 09:25:17 · 2067 阅读 · 0 评论 -
速食文化下的技術本質
作份早餐,多少因素要考慮?光是烤個土司、煎個荷包蛋、煮個咖啡,就得事先買好土司、蛋跟咖啡,隔天得早起料理,用餐完得清洗餐具,想到這麼麻煩,許多人寧可就近到早餐店、點份餐,中餐或晚餐大概也是類似方式解決,在速食文化下,誇張卻常見的現象,是在便利商店就能解決三餐,不少便利商店更以此作為廣告噱頭。 Hello World的本質 當面對的問題太複雜時,人們就會開始傾向簡化問題,幫助自己從複雜問原创 2012-06-18 10:12:16 · 2317 阅读 · 0 评论 -
学习岂有无痛之理
旧的一代永远会埋怨新的一代在学习上过于燥进,新的一代拥有更多的管道、更多的媒介更多的资源来学习,旧的一代总是责成新的一代不懂得善用这些他们 过去所没有的资源,能够怪他们吗?人类的创造活动随着创造工具的越来越方便,创造者的角色已经从一些特定的人转移至每个人的身上,从几个例子中可以看到,出版曾经是一些人的特权,而 今日工具的方便与媒介的普及,使得更多的人也能够投入出版的领域,也更能将自身的想法创造原创 2006-05-27 09:52:00 · 11210 阅读 · 23 评论 -
不要只读一本书
学习上没有经验的入门者,总是幻想拥有这么一本圣经教材,能够救赎他们离开无知的世界。事实上就我而言,这样的圣经是不存在的,即使在现今的世界中,确实存在着某些人口中赞扬的圣经教材,它们传达了许多经典的知识或观念,而为许多人所推崇不 已,我不能否认那些所谓圣经教材的价值,但那些推崇它们的人们,绝对不只靠着这么一本书就获得救赎。 没有任何的书本是为了单一的学习者而量身订作的,即使是自己为自己所编写原创 2006-06-02 18:38:00 · 6709 阅读 · 8 评论 -
扎根、搜寻、过滤、深读
人类的智能活动长久以来已累积大量的知识与经验,对于现在的人与将来的人来说,学习会变成越来越大的负担,一种自然的演化即是知识的分门别类越来越多、越 来越细,一种是既有的知识已经成熟至相当的程度,它被作为基础,新的知识与经验继续不断的建构于这个基础之上。 然而无论是哪个方式,信息丰富所带来的学习负担是无可避免的,学习确实有方法,然而问题是如何取得学习方法?甚而如何建立您自己的学习方法?没有哪 一个原创 2006-06-18 08:56:00 · 2882 阅读 · 5 评论 -
世界杯外的广告 – 为第n次练习干杯
世界杯2006,我偶而会看看,我并不是个专业球迷,对于谁打的好谁打的不好,虽心中有些评价,但太过于个人观感,实在不适合提出来见笑。 然而,在观看球赛的同时,我对于一个广告却特别深刻。广告的画面中,有个球门,有个轮胎挂在上头,接着的画面是,为了将球踢进轮胎中,一球又一球的练习。 在下一个画面,突然轮胎不见了,取而代之的是真正的球赛进球画面,全场欢欣鼓舞,广告的旁白是 – 为第n次练习干杯原创 2006-06-29 17:45:00 · 2359 阅读 · 1 评论 -
阙疑
每个人在生活上必然都有这样的经验,一个难解的问题,在百思不得其解之后,不得以暂时放下一段时间,却在某个不经意的时候灵光乍现、晃然大悟。这是生活上的经验,俗话也有这么的说法:「不要钻牛角尖。」这样的说法在某些程度上,就是要我们暂时停止将焦点放在问题本身,藉由其它的想法来刺激问题解答的产生。学习不免遇到难解的疑问,若然能够将生活上如上的经验转化为学习的一种方式,则对于难解的疑问,我们往往能够寻找出另一原创 2006-07-10 09:54:00 · 3138 阅读 · 13 评论 -
作好提问的功课
在学习的过程中,总难免会遇到一些问题,对于每个学习者来说,他们总是燥进的,面对问题时总会想要寻求立即的解答,有经验的学习者通常会知道克制这种想 法,他们会先自行就以往的经验、可获得解答的各种管道中先试着解决问题,在反复寻求之后即使没有得到解答,他们也厘清了问题的所有,有经验的学习者在提出 问题时,总是能点出问题的核心,甚至令参与解决问题的人们有「大哉问」的感觉。 对于没有经验的学习者而言,面对问原创 2006-07-04 08:51:00 · 3532 阅读 · 13 评论 -
培养抽象思考能力
数学被视为科学之母,可以被广泛的应用其它学科,要讨论为何数学这么一个纯綷的学科具有什么样的特质,使其可以被使用于各个领域,其实一个最简单的回答就是:「抽象」。抽象这两个字,究其字面意义要行解释,本身就很「抽象」,我们举个实际的例子:「1 + 1 = 2」就是抽象,您可以具体的在数字后面加上单位,像是苹果、狗、人等具体的事物,就因为 1 + 1 = 2是抽象,所以它可以解答无数的两个个体相加的结果,原创 2006-07-24 12:34:00 · 6367 阅读 · 12 评论 -
写作的用与趣
我个人喜欢写作,每当学习一件新的事物而有所领悟之后,总会尝试着将这些领悟写作出来。 尝试写作有许多功用与乐趣,虽然明白有的人一提起笔(就现在而言是一打起字)来,就有如千斤重担,不知下一个字该说什么,然而个人认为这只是一开始 而已,在这个计算机信息化与网络化的时代,用文字来表达自己的想法并不是什么困难之事,平常在讨论区总可以看到一些人发表自己的想法,其实写作就是将这些零 碎的想法组织起来再化为文字而原创 2006-08-09 18:26:00 · 4321 阅读 · 10 评论 -
試用Google翻譯為簡體中文
在我的網頁中,「線上文件」旁試用Google簡體中文轉換…希望對看簡體的學習者有所幫助…http://caterpillar.onlyfun.net/Gossip/index.html 線上文 件 - 翻譯成簡體中文原创 2007-04-20 23:22:00 · 3292 阅读 · 1 评论 -
面對技術...是熱情還是生活?
在擔任講師的日子中,接觸過不少學員。 就有些資訊人員來說,面對技術,總有種近乎狂熱的熱情,當看到某種技術可以解決什麼樣的問題時,那種急切想了解與推廣的心情,就像個傳教士般,深怕別人不 了解該項技術的好與可以解決的問題。 然而,對於大部份的資訊從業人員來說,其實,技術本身,就只是一項技能,一個糊口飯吃的東西,對於新技術,他們也許還會覺得多一事不如少一事。 帶著熱情甚至狂熱上課,有時會有兩極化的原创 2007-05-21 15:07:00 · 3973 阅读 · 1 评论 -
简体良葛格学习笔记
花了一些时间,作了一些繁体转简体的工作,不依赖Google Translate,有兴趣的,可以至这边观看…http://caterpillar.onlyfun.net/GossipCN/index.html原创 2007-06-06 13:44:00 · 13477 阅读 · 10 评论 -
命令式至函數式隨記(二)
English使用迴圈循序處理List中元素的問題,基本上都可轉為遞迴解,不必使用計數器,只要有辦法取List的head與tail就可以了。如果迴圈中又有迴 圈,基本上就是處理兩個問題了,函數式就是強迫你要分解問題。舉例來說:def toPFix(infix, isPost): expr = infix if isPost else infix[::-1] stac原创 2012-10-19 07:34:02 · 2334 阅读 · 0 评论