編程語言有韻律嗎?
手語也有prosody~好奇編程語言有沒有~
自然語言的韻律主要用於幫助分析句法組成部分的層級結構。因為一句話是線性音素序列,韻律有助於我們分詞,分短語,以及分句。
編程語言中具有同等功能的策略包括括弧(Java等語言大量使用)和對齊(Python等語言大量使用)。
但自然語言的韻律有二分性(輕重,長短,強弱),和基於二分性的周期性。在這一點上編程語言是沒有的。
有,C族語言壓分號,PASCAL族壓BEGIN END,ML的壓LET
Excited! 就喜歡這種腦洞大開的問題。剛查了一下手語韻律頓覺開了眼界。
照維基的說法,韻律Prosody指的是語法之外的超音段supersegmental成分。儘管韻律通常是跟語音聯繫在一起,但這可能是因為作為通常研究對象的語言是「說」的。如果語言的載體不是聲音,比如題主提到的手語,依然有「語音」、「音系」、「韻律」的概念存在。實際上「音段」的英語也是「段」,不一定非要「音」嘛。
受到手語韻律啟發,我們不妨也在程序語言里找找一些韻律概念的對應。值得注意的是,程序語言不是說的語言,而是寫的語言。這個聽覺線索和視覺線索的區別,造成很多概念遷移的時候會在形式上很不一樣。我們不妨激進一點(俗稱開腦洞)。以下是我想到的:
- mora,音拍,韻律最小單位,延續等長時間。 =&> 字元,代碼最小單位,往往選用等寬字體,佔據等大空間。- syllable,音節,一次完整的發聲。 =&> token?token內部在空間上不能割斷。- stress,重音,通過音高、音響、音色等聲學特徵來強調和區隔音節。
=&> 各種方便看清identifier的命名規則,比如駝峰命名法(每部分首字母大寫),每部分下劃線隔開。通過空白、高低等空間分布特徵來強調和區隔部分。- tone,音調。 =&> 變數命名風格?可以很長很描述性(Java說的就是你),娓娓道來。也可以硬是一個字母ijkl,因為時間有限或者用完就仍或者為了不被看懂。- intonation,語調。=&> 代碼塊的格式formatting,往往根據語法層次scope縮進。不被語言要求,但為語言使用者提供更多視覺線索。這麼說來Python的語調還是語法性的, gramatical intonation (lol)。
其他還有一些,比如在寫字典常量的時候的對齊,代碼塊開括弧是同一行還是下一行,if後面有空格還是沒空格,運算符直接有空格還是沒空格,函數參數列表要換行的時候怎麼對齊,等等。有的人有。有的人沒有。有的人有時能被沒有的人逼得想死。稍微cos了一下沒有的,你感受一下。
public void Button6_Click(object sender, EventArgs e)
{
Button6 .IsEnabled = false ;
TextBlock1.Text= "正在登陸,請稍後...";
string yonghuMin =TextBox1 .Text
.Trim() ;
string MIMA = TextBox2.Text .Trim();
DENGLU denru = new DENGLU (yonghuMin , MIMA);
bool chengong=denru.Try(); if(chengong) { this.deng() ;
} else {
MessageBox
.Show
("用戶名或密碼錯誤!請從新輸入!"); Button6.IsEnabled=true; } }
面向韻律編程啊,當然有啊
Source Code Poetry
# The Sieve of Eratosthenes - 埃拉托斯芬篩法
use Lingua::Sinica::PerlYuYan; 用籌兮用嚴。井涸兮無礙。印曰最高矣 又道數然哉。。截起吾純風 賦小入大合。。習予吾陣地 並二至純風。。當起段賦取 加陣地合始。。陣地賦篩始 繫繫此雜段。。終陣地兮印 正道次標哉。。輸空接段點 列終註泰來。open-close
推薦閱讀:
※有人質疑PL研究,比如program slicing的價值。如何解釋?
※英語和數學不好的學渣能學計算機嗎?
※Linus 對 C++ 的批評有無道理?
※你最喜歡的國外編程網站是哪些?
TAG:編程語言 |