第140章 自然語言
書迷正在閱讀:重生之全能明星學(xué)霸不太易、紅樓之賈赦修仙記、[綜漫]在下才不要穿小洋裙、抗日之超級(jí)壯丁、紅樓之貴妃是個(gè)小花精、拯救二次元美女、他的陸太太很甜、抗戰(zhàn)雙子星、變身最強(qiáng)之病弱七實(shí)、大宋超級(jí)學(xué)霸
經(jīng)過幾天的思考,林奇做出來了一個(gè)艱難的決定,自己先開發(fā)出來一個(gè)語言。 這門語言要讓所有的認(rèn)識(shí)字的國人都能使用,林奇希望憑借著這個(gè)語言,讓我國的軟件行業(yè)實(shí)現(xiàn)彎道超車,領(lǐng)先于全球。 要實(shí)現(xiàn)這樣的目標(biāo),首先這個(gè)語言必須是漢語言,其中不夾雜一點(diǎn)點(diǎn)外語,不能像之前的一個(gè)宣稱是漢語編程的叫做易語言那樣,只是把if變成了如果,那么簡單的東西。 林奇希望這門語言變得易學(xué),只要有初中程度的文化水平的人也都能在短短的7天內(nèi)學(xué)會(huì)使用這個(gè)語言,真正的實(shí)現(xiàn)《7天精通xx語言》。 這就要求這個(gè)語言足夠簡單,至少是用法上足夠簡單,不管后面邏輯是怎么樣的,只要開發(fā)人員在前臺(tái)輸入了簡單的一些語句,它就能準(zhǔn)確無誤的執(zhí)行。 基于這兩個(gè)主要的目標(biāo),林奇開始了自己的編程語言之戰(zhàn)。 林奇首先給自己定制了一臺(tái)配置超高的計(jì)算機(jī),打開編程軟件,林奇寫下了第一句話xx年xx月xx日xx分xx時(shí)xx秒,開始了x語言(現(xiàn)在林奇也不知道這個(gè)語言要命名為什么)的編寫。 所有的語言在編碼的時(shí)候都要遵守一些特定的規(guī)定,比如有的語言要求,在行尾必須有英文的符號(hào)“;”否則代碼進(jìn)行編譯或者運(yùn)行的時(shí)候就會(huì)報(bào)一個(gè)語法錯(cuò)誤,說這個(gè)文件某某行編寫的有問題,不能運(yùn)行下去。 不過如果你忽略這個(gè),強(qiáng)行運(yùn)行下去,那么他輸出的結(jié)果很難是你想要的結(jié)果,甚至有的程序你根本就運(yùn)行不下去,不是閃退,就是直接報(bào)錯(cuò),這還怎么玩,只能遵守它的游戲規(guī)則。 林奇不想準(zhǔn)守這個(gè),他覺得,既然開發(fā)人員要表達(dá)的主要意思都表示出來了,只要沒有異議,那么像這些邊邊角角的東西編輯器自己加上去就好。 可能一百次中有一次自己加錯(cuò)了,那也沒有問題。 林奇想打破這個(gè)規(guī)則,不讓程序編寫那么枯燥,總是寫一些無關(guān)緊要的東西。 林奇希望程序員只需要全身心的開發(fā)主要的東西就可以了。 還有一個(gè)也是所有的編程語言都知道的,但是偶爾也會(huì)陰溝里面翻船的事情,那就是所有的語言里面的數(shù)組,編號(hào)都是從零開始的,比如我們數(shù)數(shù)都是一個(gè)饅頭,兩個(gè)饅頭,三個(gè)饅頭……一百零一個(gè)饅頭。 而在編程語言里面,就不是這樣的,他們是這樣數(shù)數(shù)的,第零個(gè)饅頭,第一個(gè)饅頭,第二個(gè)饅頭……第一百個(gè)饅頭。 這是因?yàn)闉榱斯?jié)省機(jī)器的空間,因?yàn)槎M(jìn)制電腦是從零開始的,這樣可以節(jié)省一些空間。 但是林奇對(duì)這個(gè)早有詬病,程序是電腦運(yùn)行的,但是源代碼是人看的,這明明是面對(duì)的兩種不同的情況,編譯器內(nèi)部難道不能做這些轉(zhuǎn)換嗎,為什么非要從開始的時(shí)候就定成編號(hào)從零開始。 所以林奇把這個(gè)也加入到了自己必定優(yōu)化的點(diǎn),可能有的人會(huì)說,現(xiàn)在所有的編程語言都是從0開始,你這x語言從1開始,到時(shí)候推廣的時(shí)候人們會(huì)不會(huì)就搞不清楚,會(huì)誤用這塊。 林奇想告訴有這樣想法的人,你們想多了,只要人們知道有這個(gè)用法,那么以后人們絕對(duì)不會(huì)誤用,因?yàn)檫@個(gè)才符合“人”的思維,也許他們用這個(gè)語言習(xí)慣了,可能會(huì)覺得其他語言里面從0開始計(jì)數(shù)的設(shè)計(jì)非常難用。 林奇以前還看了一個(gè)段子程序員去面試,你知道什么叫做“類”(編程語言中的一個(gè)屬于)嗎?程序員回答老板我不知道什么叫做累,我這人干活特別勤快,天天加班到2點(diǎn)都沒有問題。 這個(gè)“類”是語言經(jīng)過了很久的進(jìn)化而出現(xiàn)的一個(gè)高級(jí)產(chǎn)物,它在某些方面很有用途,林奇決定這塊要保留,但是也要進(jìn)行一些變通,讓它使用起來更加的簡單,甚至讓人在不知不覺中就開始用,而不是必須去想著這么用,才去考慮。 對(duì)于函數(shù)、變量這些,所有的編程語言都有這一個(gè)東西,林奇覺得這個(gè)做的挺好的了,也一起保留。 語言還可以分為強(qiáng)類型語言和弱類型語言,就是一個(gè)變量他表示的是1234這樣的數(shù)字,還是“落霞與孤鶩齊飛,秋水共長天一色?!边@樣的字符串,對(duì)于強(qiáng)類型語言,他表示的是什么就是什么,比如是1這樣的數(shù)字,他可以 100編程101,但是不能給他賦值為“小荷才露尖尖角”這樣的字符串。 而對(duì)于弱類型來嚴(yán),這些都無所謂了,你想給他賦值為什么它就是什么。 他們各有各的好處,不過在這里,林奇還是傾向于混合模式,有的情況下可以是強(qiáng)類型,有的時(shí)候就是弱類型。 這樣既有了弱類型易于編程的優(yōu)點(diǎn),又有了強(qiáng)類型易于運(yùn)行的優(yōu)點(diǎn)。 至于函數(shù)的,什么多返回值,什么可變參數(shù)…… 那都是“取其精華,去其糟粕”,只留下了最最好用的。 現(xiàn)在的編程語言都是用的英語,顯有其他的語言,對(duì)于我們國家的人來說,有的英語不太好的。 看別人的源碼的時(shí)候,看到一個(gè)變量,有的時(shí)候不懂,就查詞典,查完之后也沒有查出來什么,最后可能是看到了哪個(gè)犄角嘎啦里面一行注釋才明白,那個(gè)變量原來是一個(gè)漢語拼音的首字母。 甚至有的人是漢語拼音全拼、首字母拼音、英語這樣混著來,更讓接手的人想罵人。 林奇把這塊統(tǒng)一了起來,凡是類名,函數(shù)名和變量名字,必須用漢語,可以說是除非非得處理英語相關(guān)的一些東西,或者是處理一些字母相關(guān)的東西,否則是不允許使用字母的。 這樣只要是正常的國人,看到代碼,至少不會(huì)為了一個(gè)變量名去翻字典了。 至于為什么現(xiàn)在國人編程的時(shí)候,不用漢語來命名,其實(shí)原因有三個(gè),第一個(gè)大部分里面的都是英語,來回切換輸入法名字太麻煩,第二個(gè)原因是因?yàn)橛X得輸入漢語很費(fèi)時(shí)間,第三就是可能有的是因?yàn)橐诺絞ithub開源出去,如果用了中文怕別人看不懂。 第一第二個(gè)就不說了,至于第三個(gè)原因,要給這些人鼓鼓掌,懂得分享是一種美德。 不過為什么別人分享代碼的時(shí)候都使用英語,他們就不怕我們國人看不懂嗎? 林奇按照所有的這些要點(diǎn),編寫了一個(gè)語言,起名為“自然語言”。 自然語言,顧名思義,就是我們?nèi)伺c人的交流,至于背后編譯器是怎么運(yùn)行的,就不需要關(guān)注了。 這個(gè)語言非常簡單,比如我們想編寫一個(gè)軟件來控制電腦定時(shí)開機(jī)關(guān)機(jī),我們只需要在特定的地方寫上“每天晚上12點(diǎn)定時(shí)關(guān)機(jī),每天早上9點(diǎn)定時(shí)開機(jī)”這樣的給人看的文字就可以了,然后自然語言編譯器就能按照指令去執(zhí)行。 至于他背后的邏輯是做了什么,我們完全不需要注意,不需要關(guān)心,我們只知道它能按照我們的意思執(zhí)行就好了。 經(jīng)過了三個(gè)月的努力,林奇開發(fā)出來了這個(gè)非常智能化,非常人性化,非常國人化的編程語言——自然語言。 林奇自己都沒有想到,自然語言后來成為了第二智慧科技的四大基石之一。 s 在現(xiàn)實(shí)世界中我問過專業(yè)的人士,他們說開發(fā)自然語言至少在幾十年內(nèi)是不現(xiàn)實(shí)的,甚至有的說50年以內(nèi)都是不可能的。 還有如果真的開發(fā)一門語言,別說三個(gè)月的時(shí)間了,哪怕三年能開發(fā)一門新的語言也是很快的速度。