趣談程式語言結構 函式

2022-04-06 16:11:08 字數 1763 閱讀 4589

你有沒有想過這樣一件事情,你有乙個函式,賦予它乙個名字,那麼你能不能夠在的程式裡面,提到它,提到它的的名字?我是說提到,不是去叫它,即通常所謂的呼叫。ok,如果你不明白我在說什麼,那麼讓我試著說得更清楚一些。相聲演員郭德綱,他有乙個名字,他很擅長說相聲。我們可以提到他的名字,但是我們並沒有叫他到這裡來。這就是我要說的。

程式語言告訴我們,我們可以編寫乙個函式,賦予它乙個名字,然後我們可以通過這個名字去呼叫它。台灣人把這個行為說的很形象,他們說「 *呼叫* 」乙個函式,多麼形象。叫乙個函式過來自然就是要讓它給我們做事的,這就是程式語言存在的目的,這也是我們這樣的人之所以寫程式的目的。當然我並不是說這麼做有什麼不對,但是,一門語言,尤其是程式語言,他會引導你的思維。它會使你潛移默化地用這個語言所提供的方式去思考問題。就是到現在為止,以上所說的一切仍然沒有問題。說中文的人和說英文的人思維的方式就是不一樣的,這很正常。但是,問題在於多數程式語言,和自然語言相比,它們的侷限性都太大了。或者換句話說,它們的描述能力都太差了。當乙個人用這樣一門語言思考問題的時候,他將不可避免的受限於語言本身的侷限性。或者說語言的侷限性將會不知不覺的演化成思維方式的侷限性。這就是問題所在了。

簡單來說,當乙個人的思維方式被限制住的時候,那麼,他的麻煩就大了。當然了,電腦科學發展這麼多年了,人類在這個領域取得的成就不計其數。應該有一些具備足夠描述能力的語言存在吧。至少我要提到乙個函式的名字,這不是乙個什麼過份的要求。

是的,確實存在這樣一種語言。他的名字叫 lisp。

lisp 是一門非常古老的語言了。如果我沒記錯的話,最初的誕生應該可以追朔到2023年。想一想吧,2023年,那是乙個什麼樣的年代?反正……解放了。在 lisp這門語言裡面你就可以提到任何函式的名字,當然也可以提到任何變數的名字。先不要問我這樣的能力能做什麼?至少它沒有告訴你說,你「不能這樣做」。我們剛才講到語言的侷限性,以及由此帶來的思維的侷限性,當你想要思考並描述乙個問題的時候,你所使用的語言不能告訴你說「你不能這麼做」。我們唯一可以接受的失敗是什麼?是「我做不到」,不是「我不能做」。

下面讓我們看看提到乙個函式的名字能夠幫我們做什麼。說起來其實就和自然語言是一樣的。當我們可以提到乙個事物的名字的時候,就可以把這個事物告訴別人。同樣的道理,當我們可以提到乙個函式的名字的時候,就可以把這個函式 *告訴* 別的函式。別的函式可以選擇是僅僅知道這個函式,或者使用這個函式來為他們做事。為誰做事?不是為我們(當然間接的還是),而是為別的函式去做事。

或者讓我說的更明白一些。你可以把乙個函式看做是一組指令,也就是說,你可以把一組指令告訴另乙個函式。想想在很多其他程式語言裡面,它只允許你把一些資料告訴另乙個函式。舉個例子吧。想想你有乙個秘書函式(想想人們為什麼要有秘書吧),小張是乙個行政助理函式,小王是乙個接待員函式。你通常會怎麼工作?你會告訴你的秘書讓小王煮兩杯咖啡拿過來,然後讓小張趕緊把會議室的桌椅布置一下。瞧,這就是指令的作用。如果你的函式只能夠傳遞資料進去,優惠怎麼樣呢?讓我們想想咖啡機函式。你輸入資料2和卡普奇諾,咖啡機生成兩杯卡普奇諾給你。這就是區別。你必須要自己動手,你不能夠有秘書。至於布置會議室的函式用這種方式來描述好像過於困難了,我就不舉例子了。

另外你還可以讓小王去泡杯功夫茶給你。雖然以前小王從來沒泡過,我是說她不會。但是你可以把功夫茶的每乙個步驟作為指令傳遞給她。如果你所使用的程式語言不能夠傳遞指令,那麼很顯然你需要再單獨雇用乙個功夫茶函式。然後還有綠茶函式、酸梅湯函式,芝麻糊函式…… 當然了,也許你可以僱乙個全能函式(呵呵,偉大的 if-else),雖然這可能很貴。而且,人無完人,總有她不會的。

另外,我們在這裡舉的這個例子只討論了一兩個函式之間的指令傳遞。現實生活當中肯定不會一直都這麼簡單。小王雖然是負責接待,但是她手下很可能帶領著乙個接待科的。這就能作成非常複雜的事情了。

c 選擇結構(函式)

swicth條件函式 if 條件 else if 條件 else cout input your score.score if score 80 elseif 60 score score 80 else 後面沒有 而裡面 要 謹記,c 不能像python一樣0if 條件 else if else ...

內建資料結構 函式

元組 t1 print type t1 t2 1 print type t2 t3 1 print type t3 t4 1,print type t4 t5 1,2 print type t5 1.針對元組的元素,只有1個的時候,需在括號裡面的資料後,新增逗號 2.當元組的元素超過兩個資料時,無需...

Python JS基礎 基礎結構 函式

四 函式初級 什麼是函式 具有特定功能的 塊 函式與方法的區別 呼叫方式的不同 函式通過函式名 方法通過呼叫者.語法呼叫 如何定義函式 function 函式名 引數列表 函式的分類 無參函式 function fn1 fn1 有參函式 function fn2 a,b fn2 10,20 1 函式...