為什麼很多人反對程式語言允許非ASCII碼識別符號?

時間 2021-05-06 10:22:04

1樓:hjiayz

如果加入unicode識別符號如何保證安全?

舉個最簡單的例子 U+0020 U+00A0 U+2002 等等 unicode定義了大量空格在普通的文字編輯器裡看起來不會有任何差異

這一定會導致混亂

類似的問題還有各種特殊字元以及字型檔並不支援等情況。

所以識別符號直接使用所有unicode的效果並不好。

難道就沒有更好的辦法了嗎?

事實上注釋一直是可以使用unicode的,字面量也是如此。

因此要做的事情也許並不複雜。

2樓:

我到也不是反對

就是切換輸入法中英文和全半形標點太麻煩了……

不然我覺得非ascii識別符號非常不錯……起碼我這個渣渣讀起來非常舒適

3樓:物理極客銘

如果是同乙個國家的團隊的話並無所謂,畢竟大家放的蟲就那幾個。

如果是跨國團隊的話就應該禁止。看不懂是小問題,捉蟲才是大問題。你永遠不知道乙個看起來一毛一樣的東西其實差的十萬八千里。

4樓:JimGreen

這樣沒法交流了

想象一下github上面乙個10k+的專案,但是用日語字元寫的,你看的懂嗎?看得懂是吧,那韓語字元寫的呢?德語字元寫的呢?法語字元寫的呢?火星字元寫的呢?

5樓:ABCDEFG

反對任他反對,我就要支援。

大可以允許使用所有Unicode字元,規定使用Unicode造成問題後果自負。

即滿足了用Unicode的需求,又不給寫編譯器的人增加負擔。

除了盎格魯人和精神盎格魯人,還有人會支援只用ASCII?

6樓:吳發東

贊成的人肯定沒帶過5人以上的開發團隊。

中文變數?日和曰,挪和椰,德和徳,口和□,丨和丨,一和一,你能分的清楚?修改bug的人能分得清楚?

7樓:

Unicode裡面很多符號輸入進去後很難察覺或者根本沒有區別,或者和一些常見字元長得非常像。。。。

比如某個變數是以不可見字元結尾的,然後你複製貼上得到處都是,到死你都編譯不過。。

8樓:吳烜

看一堆大佬在這分析 unicode 的複雜性也是醉了。實現細節的複雜性難道這麼些老牌程式語言設計者和開發組、社群都看不到嗎?

兩篇小結文章裡可以清楚看到,幾乎沒看到針對 unicode 本身性質的反對者。

與其在這揣摩某些人反對的動機,還不如好好想想,為何這麼些英文程式語言都選擇費力支援?

用 Rust 語言的設計者的原話:

他指出,「很多年前,我們(Rust 主創們)就早已確認,將識別符號限定於用英文命名是設計上的錯誤,我們應該改用 unicide 識別符號」。並在最後懇請:「這(RFC)本不應再次開啟一場圍繞識別符號命名限於 ASCII 碼是否正確的辯論。

這絕不正確。不要再糾結於此,拜託。」

最後一句:

「從Python到C++都預設支援非 ASCII 碼識別符號。這是正確的作為。」

根本上說,就是有足夠的社群需求推動。實際上,如果這些英文程式語言都堅持不支援非 ASCII 識別符號,既然大家都是開源的,注定會催生魔改版本(就像一直都有人做的 Lua 漢化版)甚至另起爐灶(基於現有生態的語言雖然出一萬rmb拉不動人來復現但也絕非遙不可及,據說只是「本科生水平」不是麼)。

回過頭說為何貌似很多人反對(和很多問題一樣,跳的最狠的往往就那麼一小撮,絕大多數沉默或吃瓜),之前的回答這裡一樣適用:

漢語程式設計是不是動了誰的乳酪,為什麼招黑?

冰層已開裂,春天不遠了。

9樓:JeepCar

因為UNICODE編碼本身就是個陷阱。編碼是用數字表示字元,當初美國以明計算機,字元只有英文本母、阿拉伯數字、若干符號,一百來個,用7位二進位制足矣。現在,考慮各國眾多文字,7位肯定不夠,至少16位6萬多個差不多,那麼就應該以16位統一編碼。

然而unicode卻故意弄得很複雜,英文本母單獨挑出,一套編碼有8位有16位,處理起來非常複雜。而16位的就往往容易亂碼,不時可見16位的漢字已經亂碼,而英文本母卻依然清晰。所以,使得非ASCII字元尤其用在函式名、檔名往往容易出錯。

將所有字元統一16位編碼也許是解決問題的根本方法。

10樓:龍捲風

因為乙個語言關鍵字也沒幾個,而且幾乎所有程式都差不多相同,無外乎for while do等,加一起兩個手可以數過來,如果加上各種其他語言語言,就會太混亂了。寫程式,英文根本不是問題,因為也就10個單詞,英文的問題是文件,文件大部分都是英文的,中文太少

11樓:

舉個不恰當例子,你的編輯器搞你的latin1,我的編輯器有我的cp936,我的配置憑什麼依著你的編碼來?

不客氣地說,整天在這種毫無技術建樹的細枝末節問題上綱上線批判人崇洋媚外的,八成處理不好unicode轉別的編碼的問題。以為搞個中文關鍵字就能大家一起當碼農,屬實天真。

12樓:DamonChen

你寫乙個大寫字母K和乙個溫度開爾文的(U+212A),請問你看到的時候,你能區分麼?不方便的。

程式,最重要的是可以一致的表達,把大家限定在乙個固定的範圍中進行交流,減少一些無畏的開發成本。

如換行符\n和\r\n,就讓很多人麻煩了

如文字中的utf-8編碼和gb2312編碼的表達,也是讓人痛不欲生

如su的切換,不同機器上的切換規則不一致,導致各種相容處理

這些東西,有一些東西有其歷史原因,有合理性,有一些東西,就是設計的時候沒有考慮清楚,隨意新增的。

允許非ASCII碼識別符號,是在原先的實現基礎上增加了乙個規則,這個規則更加開放一些。

但每增加乙個規則,就會多一些學習成本和溝通成本,當規則一項項累計起來後,學習成本就會很高,溝通成本也會增加,除非是不得已,必須要這麼幹的(如linux和k8s都很複雜),否則東西不錯,學的人也會少很多(如各種標記語言,基本上都被markdown給統一了)。

13樓:Ivony

因為很多人壓根兒不知道字元和符號之間的區別。

從某種意義上來說,Unicode是乙個符號集,壓根兒不是字符集。

我們當然不排斥所有的字元都可以當作識別符號,但是字元需要嚴格去定義,而不是幾個偽程式設計師所以為的什麼非ASCII字元,各種你沒見過的亂七八糟的所謂的字元在Unicode裡面海了去了。別說Unicode裡面的奇葩,就ASCII裡面的\r\n()就已經搞得人們死去活來的了……

14樓:

某些語言連emoji的length都處理不好,支援unicode不是自尋死路,怕到時候diff都是錯的。

CJK的字元倒不是最大的問題,阿拉伯語和希伯來語是不是也要支援從左讀到有右啊,要是和英語混寫怎麼辦。

這些都要考慮,世界上就沒啥ide可以用了。

還是省省吧

15樓:程顯通

因為不太可能全用其他語言,混用其他語言會降低體系的可讀性。

最大的問題是,現在的程式設計世界是由英語世界主導的,大部分流行的語言都是英語,導致了現在做程式設計的人,大部分會英語。然而其他語言沒有這個先發優勢,如果需要創造乙個其他的程式設計世界,首先就需要大量的翻譯工作。

這也就涉及到了兩個問題,誰要翻譯?誰來翻譯?

有能力的人不需要翻譯,沒能力的人又翻譯不了。所以乾脆英語就變成了程式設計高階人士的乙個必備技能了。

就像為什麼世界上的科研文獻以英文為主一樣。

有人提到了Julia的解決方案,我個人覺得,Julia的方案的輸入還是侷限了字元的。

16樓:Belleve

複雜文字都是超越想象的:

已經算很簡單的漢字會使用 VS 選擇符選擇異體字,請問 VS 算不算識別符號的一部分?

阿拉伯文、天城文、卡納達文的一些詞語裡面會出現 ZWJ 或者 ZWNJ,請問它們算不算識別符號的一部分?

蒙文目前的編碼模型裡面會用到 NNBSP、FVS 和 MVS 控制字,請問它們算不算識別符號的一部分?

有些 Emoji 的編碼是數字加乙個 Emoji VS 加乙個 Combining enclosing keycap,請問這種該怎麼算?

那麼對於程式語言,要麼好好跟隨 UAX#31,要麼就一刀切只允許 ASCII

17樓:

雖然有你可以不用,但你應該不太希望自己的房子有個一鍵起爆的特性。

你可以不用,萬一和你一起幹活的哥們偷懶或者姿勢水平不夠用了,那你豈不是要加班……

18樓:

輸入是個問題

同形、形近的符號太多。沒有乙個人敢拍著胸脯說自己能夠區分開Unicode中所有的符號,同樣會帶來輸入的問題。

不同編輯器對於不能顯示的符號處理方式不一樣。有的顯示成亂碼,有的顯示成空格,亂碼還好一點,至少提示你這裡有個符號,空格怎麼去辨認?

19樓:億元戶

因為各種編碼裡的ascii碼部分編碼是一樣的,ascii的相容性是最強的,這樣無論用那種編碼方式讀取,那種編輯器開啟都不會亂碼。

20樓:F001

主要反對意見是不能簡單的允許所有unicode字元。你要是知道unicode有多複雜就不會有這疑問了。它裡面有很多顯示效果一模一樣但是編碼不同的字元,有些跟ascii長得非常像但編碼不同的字元,有些是完全不可顯示字元(而且不是空格)。

所以需要有人總結出乙個範圍,哪些unicode字元作為識別符號是不會造成認知障礙的。

主流意見其實是這樣:

只允許 ASCII 碼做識別符號 (可接受)允許經過科學篩選過的一組 UNICODE 字元做識別符號 (最佳)允許所有 UNICODE 字元做識別符號 (災難)

為什麼很多人反對中文在程式設計中的使用?

其實中文可以廣泛應用在高階語言中的變數命名上。比如const水果 李子 香蕉 菠蘿 It works. 風吃風 我覺得無所謂,就算用英文,常用的非變數詞也就那麼幾個,包一層改成中文有啥不行。再說變數也有好多人寫拼音 如果這些語言結構都是國內開發的,或者有一天不需要顧慮國外應用方,或者不需要去網路查b...

為什麼很多人覺得Taylor Swift非常好看?

哚哆朵 因為和甜美的歌聲薄荷嗓聯絡起來就更能get到她的顏了始於顏值陷於才華忠於人品 金髮碧眼的大長腿美妞 I was enchanted to meet Taylor 得BE得 因為Taylor有ocean blue eyesStarry eyes sparking up our my darke...

為什麼有很多人都反對創業?

梁州貓貓洋 先說說我的理解,廣義上的創業是每個人都把自己的事業做到極致。狹義上創業你自己創辦公司,帶著團隊幹。這其實不適合大眾。大眾創業,萬眾創新 很多人對這句話是有誤解的。考察你有沒有創業基因的標準只有乙個 你能不能管理好你自己?我們大多數人 普通人 大眾,普遍是管不好自己的,往往需要被管理。而創...