跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 客語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 深奧个程式語言 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
深奧个程式語言
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''深奧个程式語言'''('''Esoteric programming language''',有時簡寫為'''Esolang''')係一類程式語言,佢等分人設計愛用在測試電腦語言表達个極限,抑係做一個概念个證明 ( POC ),抑淨係一個程式設計師个冷玩笑。_ esoteric _ 同佢等與開發人員正式用在編寫軟體个語言區莫開來。一般情況下,'''Esolang'''个創作者一般毋會打算分佢變做主流程式語言,就算恁呢,一兜深奧个功能像係視覺空間語法,啟發了在藝術當中个實際應用。這種語言在駭客摎愛好者之間通常較流行。 設計者大體毋會以提高這語言个易用性為目標,毋過會保證邏輯頂高个可用性。設計者一般會徙除抑係取代傳統語言个輒常見著个功能,毋過還係會強調同保持圖靈完備性。 ==歷史== 最早、還係深奧語言典型个案例係 INTERCAL,由唐 ・ 伍茲摎James ・ 里昂在一九七二年設計,想愛在創造一種同佢等知个語言無共樣个語言。佢戲學吔當時通用个語言,像係 Fortran、COBOL 還有組譯。 INTERCAL 个早期實現試等係在 IBM System / 三百六十摎一臺身分不明个雅達利電腦(可能係 Atari 二千六百)上進行个,毋過無成功。恁多年來,INTERCAL 單淨伸在佢 INTERCAL 手冊中。一九九零年 Unix 中 C 語言个實現復興了這個語言,刺激吔深奧電腦語言个設計熱潮。 一九九二年,Wouter van Oortmerssen 建立吔一隻細堆疊導向个程式語言 FALSE,厥个語法設計成本身就能夠使代碼來混亂、混亂,還過難以閱讀。值得注意个係,佢有一隻淨一千空二十四個元組个編譯器。這擺啟發了 Urban Müller 建立一隻還較細个語言,乜就係這下有名个 brainfuck,其中單淨包含了八隻做得看識字个元。佢同 Chris Pressey 个 Befunge(當像 FALSE,毋過有一個二維个指令指標)一品,成為這下最多支援个行程式語言。這兜都係最細化个圖靈焦油坑、摎多餘个語言混亂功能个典型例子。brainfuck 个極細化設計兼具了優雅摎純淨;實際上佢摎圖靈機 P''系列有關。 ===術語=== ===圖靈焦油坑=== 圖靈焦油坑(Turing tarpit)有圖靈完整性个程式語言,毋過厥个指令、運算元抑係這兜效物件非常少。其中包含 brainfuck(八個指令,零個運算元), 單一指令電腦(一隻指令,兩到三個運算元)摎 Thue(一隻指令,兩個運算元)。 ===Turning tarpit===Turning tarpit 係有狀態編碼个圖靈焦油坑,即語言當中个命令用於從一個有限个範圍內選擇操作,然後將這兜操作應用到程式个當前狀態當中。恁樣个例仔包括 reMorse、Whirl,無定著還包含 INTERCAL。 ===有狀態編碼=== 一種編寫程式个方式,分代碼中个逐隻子串: 一 . 定位到列表裡肚个下一條指令,還過二 . 應用到轉換這下个程式狀態。注意每一個單一個指令總係包含兩個連續个階段:選擇一個操作,還過執行佢。操作列表可能係靜態个—— 像係 reMorse 抑係 THRAT,抑係動態个—— 像係 reMorse 四 ever。 下背係一隻 reMorse 抑係 THRAT 个例仔 : ` ` ` Select Next Operation in list Perform Operation ` ` ` ===語言範式=== 程式語言个範式做得分做干類,這兜類別做得用來大體了解特定語言个操作方式。其中包含命令式語言,像係 brainfuck,佢指令講吔仰仔修改資料;函數式語言,像係Unlambda,其中个資料摎代碼都或者係多少仔做得交換,而程式个執行係通過重複迭代呼喊函式實現个;摎重寫語言,像係 Thue,其中做得使用變換函式使狀態初始化。 ===Funges=== '''funge'''係一類深奧个程式語言,佢个程式係因為度量空間當中个坐標系个(一般係笛卡爾坐標系,毋過無一定係)。 執行个時,通過在程式空間當中通過移動指令指標(用一個位置向量表示這下執行个指令), 來確定空間當中个點,從而執行指令。無共樣个指令指示了指標个徙動方向,故所決定指令个執行順序。 目前嗬,這兜語言行為个官方標準係 Funge 種吔九十八隻規範。這個規範係 Befunge 語言—— 一個有二維環面拓撲結構个語言—— 語意个一個概含。嚴格遵守這隻標準个語言有時節也分人喊做 _ funges _,像係 Unefunge(一維)摎 Trefunge(三維), 還較多有明顯个差別「遠親」分人喊做 _ fungeoids _,像係 Wierd。 ===非確定性語言=== 對確定性語言,係講分定程式个該央時狀態,總係使得預測厥个下一隻情形啦。毋過非確定性个語言就毋係恁呢。大多數个語言都係確定性个,但係有兜語言提供了一個內建个隨機指令,比將講 Befunge。另外,有兜語言,像係 Java 二 K 只有隨機指令。故所,就算係編一隻像有好靠輸出恁樣簡單个程式,往往都係一項艱辛个任務。 非確定性語言做得用來搜尋大範圍个空間,比論講對語法,用搜尋係毋切實際个。隨機文字生成器,比將講 the Dada Engine 摎 rmutt 都係非確定性語言个例仔。 還較神奇个係,無確定性演算法既經用於超計算个理論研究當中。 ==網際網路社群== 在網際網路項,有一個規模細哦、毋過有活力个社群,聚集了使用摎設計語言个愛好者,目前主要圍等 Esolang wiki 進行(見下文)。 esolang 社群成時會當活跳,討論个範圍對爭論某一種語言係毋係圖靈好勢,到仰仔在編程環境中,摎形象化个數學概念搣到抽象摎難理解。有一個郵寄清單,毋過做得講就係廢棄毋使,大部分時節係在 wiki 抑係在 IRC 上來討論。 圖靈完備性係一個熱門个討論話題,因為語言个圖靈完備性絕毋係一隻目珠就看得出,還過向等需要證明方法頂項个飛躍正做得解決。新語言摎新功能一直創造出來,故所,證明圖靈完備性係一個挑戰。 程式語言愛好者另外一個相關个追求係混亂代碼。 ==範圍例仔== 底下係息把仔深奧个語言个典型範例: ===/ / /=== '''/ / /'''係一門由坦納斯 ・ 韋特(Tanner Swett)在二零零八年發明个程式語言。這個程式語言單淨含有一個運算子——「/」,功能係替換字串。 Hello World 程式範例: ` ` ` Hello , world ! ` ` ` 少可複雜个 Hello World: ` ` `/ world ! world ! / Hello , / world ! world ! world ! ` ` ` 在上列代碼當中,第一擺出現个嗬「world ! world !」先分人換做「Hello ,」,得著了「Hello , world !」。 隨後个代碼个功能為列印。 ===Befunge=== Befunge 類語言做得分使用代碼,分指令指標在幾下隻維度當中漫遊。比將講,下背个程式將「Hello World」字元以相反个順序壓入棧,過吔通過指令 [>]、[:]、[v]、[\ _]、[,] 摎 [^] 用順時針方向迴圈,佢等還在迴圈裡背列著印字元。 ` ` ` " dlroW olleH " > : v ^ , _ @ ` ` ` ===二元 Lambda 演算=== 二元 Lambda 演算係對演算法資訊理論个角度設計个,好來就在盡少个語句意義下寫出就可能密集个代碼。佢有一個二十九個元組个自直譯器,一个二十一位元組个素數篩選器,同一個一百一十二個元組个 Brainfuck 直譯器。 ===Brainfuck=== Brainfuck 个語言設計當簡單,還過做得寫出混亂个代碼。佢个程式當中淨八隻無共樣个字元。比將講,下背个程式輸出「Hello World」: ===Chef=== Chef 係一種堆疊導向个程式語言,由 David Morgan-Mar 設計,目的係使程式看起來像菜譜。程式當中包含標題、列表中个變數摎值,同操作堆疊个指令列表。雖然第一擺提出出時,佢个設計原則係「程式菜譜毋單淨應該產生有效个輸出,還做得用這方便个準備好食个東西」,毋過,係講正經會照大部分程式當中原料个組合還有數量,會有困難个症頭(係有嗬)。 下背个程式係一個例外,做得做出 Hello World 巧克力醬雞卵糕: ` ` ` Hello World Cake with Chocolate sauce . This prints hello world , while being tastier than Hello World Souffle . The main chef makes a " world ! "cake , which he puts in the baking dish . When he gets the sous chef to make the " Hello " chocolate sauce , it gets put into the baking dish and then the whole thing is printed whenhe refrigerates the sauce . When actually cooking , I'm interpreting the chocolate sauce baking dish to be separate from the cake one and Liquify to mean either melt or blend depending on context . Ingredients . 三十三 g chocolate chips 一百 g butter 五十四 ml double cream二 pinches baking powder 一百一十四 g sugar 一百一十一 ml beaten eggs 一百一十九 g flour 這頂高个三十二個 g cocoa powder零 g cake mixture Cooking time : 二十五 minutes . Pre-heat oven to 一百八十 degrees Celsius .Method . Put chocolate chips into the mixing bowl . Put butter into the mixing bowl . Put sugar into the mixing bowl . Put beaten eggs into the mixing bowl . Put flour into the mixing bowl . Put baking powder into the mixing bowl . Put cocoa powder into the mixing bowl . Stir the mixing bowl for 一 minute . Combine double cream into the mixing bowl . Stirthe mixing bowl for 四 minutes . Liquify the contents of the mixing bowl . Pour contents ofthe mixing bowl into the baking dish . bake the cake mixture . Wait until baked . Serve with chocolate sauce . chocolate sauce . Ingredients . 一百一十一 g sugar 一百空八 ml hot water 一八 ml heated double cream 一百空一 g dark chocolate 七十二號 g milk chocolate Method . Clean themixing bowl . Put sugar into the mixing bowl . Put hot water into the mixing bowl . Put heated double cream into the mixing bowl . dissolve the sugar . agitate the sugar until dissolved . Liquify the dark chocolate . Put dark chocolate into the mixing bowl . Liquify the milk chocolate . Put milk chocolate into the mixing bowl . Liquify contents of the mixing bowl . Pour contents of the mixing bowl into the baking dish . Refrigerate for 一 hour . `` ` 雖然佢讀起來像係壞蹄个機器翻譯,其中還有一兜無麼个清楚个指示,毋過照這配方確實做得做出巧克力醬雞卵糕。 ===FALSE=== FALSE 係一種堆疊導向个程式語言,有單字元摎變數。比將講,三 + 一个結果做得通過執行 ( λ x → x + 一 ) ( 三 ) 得出:` 三 [一 +] ! ` ===INTERCAL=== INTERCAL 好「縮寫無法度發音个編譯器語言」(Compiler Language With No Pronounceable Acronym)係。 ===JSFuck=== JSFuck(抑係避免畫圖寫作JSF \ * ck)係一種深奧个 JavaScript 編程風格。用這種風格寫做个代碼裡肚單淨使用 ` [`、`] `、` ( `、` ) `、` ! ` 摎 ` + ` 六種字元。分其他深奧程式語言無共樣个好,以 JSFuck 風格寫出个代碼無需要另外个編譯器抑係直譯器來執行,無論係瀏覽器抑係 JavaScript 引擎个原生 JavaScript 直接翻譯器都做得直接執行。 ===LOLCODE=== LOLCODE 被設計為相像 lolcat 个講話方式。以下係「Hello World」个例仔: ===Malbolge=== Malbolge(地獄个第八圈仔)分人設計做最困難還有最深奧个程式語言。 ===單一指令電腦=== 單一講電腦係一種淨一個操作个機器語言。這實際上係一類語言,因為對任何分定个操作,都做得定義恁呢个語言。===Piet=== '''Piet'''係由 David Morgan-Mar 設計个,這個語言个程式係點陣圖,看起來像抽象藝術。編譯器由一個「指標」引導,在圖像肚從一個色塊徙動到下一隻。指標徙出一個區域時執行一個操作。 二十種色有指定个行為:十八種「彩」色,照六步色調周期摎三步亮度周期排序;烏色同白色無排序。當由一種「彩」色進入到另外一種時,執行个操作由色調摎亮度个變化數確定。烏色做毋得入去啦,係講指標試等進入一隻烏色个區域个時節,將會改變選擇下一隻垤个規則。係講所有可能个規則都試過吔,行程式終止。圖像邊界以外个所在也分人看做係烏色。白色毋執行操作,但係允准指標「通過」。 二十種指定以外个色行為由編譯器或者直譯器指定。 變數有符號整數儲存在記憶體當中个單一堆疊內。操作講係在這個堆疊項進行个,其他操作使得在棧上進行輸入 / 輸出,或者摎編譯器移動指標个規則講。 Piet 係用荷蘭畫家皮特 ・ 蒙德里安(Piet Mondrian)命名个。原定个名稱 _ Mondrian _ 既經分人占用吔。 ===Shakespeare=== Shakespeare 語言(SPL)个目的係愛分程式看起來像莎士比亞个戲劇。比將講下背个語句聲明咧程式中个一個點,做得通過一條 GOTO 語句轉到:` Act I : Hamlet's insults and flattery . `。 ===Whitespace=== Whitespace 語言淨使用空白字元(空格、制表符合 Enter), 還過無注意著所有个字元。這同傳統語言無共樣个空白字元、毋區分空格摎制表符合相反。這個特性還允准 Whitespace 程式囥在其他語言程式个原始碼裡肚,比將講 C。 ===Chicken=== Chicken 語言單淨「chicken」一隻關鍵字。比將講下背个程式做得輸出「Hello , world !」。 ` ` ` chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chickenchicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken ` ` ` ==相關个條目== * IOCCC ==參考文獻== ==外部連結== * Esolang—在煞猛在深奧程式語言个維基站點。 * EsotericProgrammingLanguage,位在 WikiWikiWeb ===列表=== * esolang wiki 上个 esolang 列表 * 開放式目錄計畫當中摎 Obfuscated Programming Languages 相關个內容 [[分類: 待校正]]
返回到「
深奧个程式語言
」。