關於寫軟件的一些思考,是嗎?我不太確定
嘛。其實我從一開始學編程其實就是很有疑惑的。
為啥我寫的C就只是能是在那個黑色的小框框裏面運行,然後就是做一些算數運算。那個時候我就在想。哈,為什麽?這就是編程嗎,好像和我想象中的不是太一樣啊。為啥我寫的程序就是只能在這個黑色的框框裏面運行,Windos是怎麽寫出來的,QQ又是怎麽寫出來的,那些網頁上的遊戲又是怎麽寫出來的。PC上的那麽多的軟件那麽的絢麗的界面。為啥我學的C就只是能在一個黑色的框框裏面運行,為什麽他就只能幹些加減乘除依次之類的鬼東西。
雖然我的承認,一開始計算機的出現就是因為數學的需要,就是為了做算數運算的。但是現在是什麽樣的一個,嗯,世界。所以,我們的學習應該是叫做返璞歸真嗎。這可真奇怪,明明現在的計算機已經不只是為了我們來解決算數運算(諸如此類)的問題了,實際上他對我們的影響很,超級大和廣泛。他可以為我們解決各種各樣子的問題。他應該為我們解決各種各樣子的問題。怎麽解決呢?通過計算機軟件來解決。計算機軟件通過各種編程語言來編寫。
嘛,記得是在那本書上見到過這麽一段話,說是編程語言是人和計算機溝通的橋梁,是讓人和機器對話的。額….話說當時那對話到底是怎麽樣子來寫的我忘記了。反正到現在我只是想起了他錯誤的地方。他錯誤在哪裏呢,他錯誤在把人和計算機描述在有個平等的地位,就好像是什麽。就好像是計算機本來就知道怎麽做,你只要告訴他做什麽就可以了。你可以和他溝通和他交流。事實上根本就不是這樣的。計算機根本就不知道什麽是什麽,所有的一切對他來說都是一樣的,都是一連串的0和1。他完全不知道什麽有意義,什麽沒有意義。所有的這一切都是人類自己在心裏面YY,就好像是說,一張鈔票。那東西實際上就是一張紙嘛,是呀,沒錯呀,就是一張紙。那他是如何成為錢的,是因為所有人都承認了他的兌換價值他才成為了錢。當某一天所有的人都不承認他作為錢的兌換價值了,那他也就只是一張紙了。至多也就不過是一張印刷精美的紙罷了。臥槽,明明這裏我是想說指令的。嘛,現在不上指令這個詞也不晚。
我突然想起來了一個小故事,具體細節記的不太清楚了。
話說有一個外星人來到了地球,他要對地球上面所有的信息進行一個記錄,什麽地理呀,人文呀。然後他要把這些數據帶回去,碰巧飛船上的存儲設備壞了一部分(請忽略這能夠跨星際旅行的飛船突然變成了渣渣科技),然後他必須要想出一個方法來將這些所有的數據完整無缺的帶回去。可是自己的飛船又沒有足夠的存儲容量了。所以一開始他是想把這些數據都轉化為0101的數字編碼來帶回到母星。但是發現這樣依然行不通,存儲容量還是不夠呀。於是他就想到了一個好方法,在飛船的中央刻下一個合適小點,然後這個小點距離飛船尾部距離的,不滿一個單位量的小數部分就成為了所有信息的載體。
哇,這個故事說明了什麽,我也不知道它說明了什麽,我只是覺得他很有趣罷了。所以,就當我放了個屁。
我總是喜歡跑題。事實上是我想要說些什麽我都要忘記了,好吧。我好像有了那麽一點點的印象了。
記得是一個很liuB的人說過吧,是誰就別管了好吧,反正又不沾親帶故的,你說是吧。他不認識我我不認識他的,·.·突然有點莫名的羞愧。
那。這個人說 :
程序 = 算法 + 數據結構 。
另外呢,還有一個網友是這樣子說的。他說:
實際上算法和數據結構並不是搭建一個應用程序所必須的,就像是搭積木一樣。真正組成一個程序的是系統提供的各種API,而算法和數據結構是優化程序用的。
我覺得兩個人說的都挺好,解釋了他們各自對一個應用程序的看法吧。兩個人都是很厲害的,我沒法判斷對錯,不過就我個人而言的話。至少現在我認為在大多數時候後者是正確的。
對了,我前面好像是說到了寫應用程序對吧。那說到這裏就不得不說一下學校。對於學校嘛,教C實際上怎麽說呢。反正我覺得那時候他就是教了一下子基本語法,什麽for呀while呀if啥的,至於數組指針啥的都沒交。怎麽說呢,成天就是各種各樣的算法題(有一點算法題的影子)。不過我更感覺像是在用計算機自己給自己創造難題,而不是解決難題。
然後其實我就不太喜歡上編程課了。因為每次看著電腦上運行的軟件,我想著。這些東西可都不是運行在我那個又黑有醜的框框裏面的,要能寫出這樣子的一個帶圖形界面的軟件要有多厲害呀。然後就有些心灰意冷了,我想。學這些有什麽用,如果不能創造出來一個有意義的程序的話。學編程有屁用。
呀,這裏還要插播一嘴。以前呢,我也一直以為C語言是一門很不適合入門的語言,因為我自己就是這麽感覺的,在加上知乎(B乎?)上的大多數人也是這麽說的。但其實我現在我的看法有些不同了。因為C語言語法簡單,沒有很多語言設計上的坑,並且呢…並且啥我給忘了,那就算了吧。總的來說呢C就是編程語言江湖裏面的郭靖郭大俠。看起來傻傻憨憨的,但其實身負絕世武功,B極了。( ̄▽ ̄)"好像又扯遠了。總之呢,其實不我覺得不是C不適合入門,而是大多數老師都不**(我怕被打死)。很奇怪的,他們從來------------------哦,我想起並且啥來了,並且C可以讓你明白一些程序設計的細節。------------在讓我們回來。他們從來都不教我們怎麽樣子去構建一個程序,程序又是怎麽樣的一個東西,等等。
額,我突然又想起了。那個"C和C++學會了,其他的語言幾個小時就可以上手了。"其實我一開始是很奇怪這句話的。當時我想,不同的語言是有很多不同的語法細節的,還有很多的坑(?)。怎麽可能幾個小時就上手了呢,難道幾個小時你就了解到了一個語言的全部了嗎。後來我想了想,或與是這樣子的一個理由。C是面向過程的典範,C++是(據說沒寫過十幾年的C++都不好意思說精通)面向對象?的典範。並且不少語言的底層(/實現)就是C/C++。實際上不同語言的語法共同之處是很多的,if,else,for好像每個語言都有。。。嘛實際其他的語言學起來也就是多了幾個關鍵字的這樣子,一些細節和特色可以慢慢了解。至於那些坑嗎,其實一開始我並不以為意,反而我當時是認為這是一件很有趣的東西,了解他還是蠻B的。不過後來我在網上逐漸參悟到,也不知道對不對。
凡是對程序設計沒有幫助的,不利於程序設計的,妨礙程序設計的語言特性。都可以說是一門語言的錯誤設計。
不過我發現程序猿還是蠻厲害,因為網上很多人都噴JavaScript的垃圾設計,但是他畢竟成為了世界上最流行的語言之一。並且也很少聽過主寫一門編程語言的人出來噴他從事的這門語言。同時在我學JavaScript的時候,我也從來都沒有覺得(意識到),那些js的坑是JavaScript的錯誤設計。甚至我看不少人還是能利用錯誤設計來搞出不少B的玩兒來的。
….2600多個字了我都不知道TM在說啥,感覺我想說的都還沒說。然後還放了一大堆沒啥用的狗屁。
蛋,睡覺!
我發現我的所有表情符號都沒有出來。嘛,算了。就這樣子吧!!
關於寫軟件的一些思考,是嗎?我不太確定