看板 Programming 關於我們 聯絡資訊
想請問有在寫程式的大大一件事,你們都怎麼識別一門語言的? 因為今天我看一個yt教設計模式,他的代碼我看了一下,發現我自己是靠著 輸出句子的寫法是system.out.write.printf這樣,我才看出來。 可是感覺有點怪怪的:『一門語言的差異難道只是靠看它print怎麼寫嗎?』 而單靠著其他跡象,例如表頭的宣告、函數的寫法,來識別也是有點流於形式的感覺 Java: System.out Ojjective-c:Log@ C#: using System C++ : include <stdio> 、cin>> 、cout<< python:__def__ 這樣一來,一些文字特色比較不明顯的語言(Scala、Javascript、Lua、Haskell、rust) 好像無法一眼即知 應該怎麼看一個程式碼是用甚麼語言寫的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.179.209 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1630075097.A.B1A.html
ddavid: 看副檔名,沒開玩笑 114.44.13.49 08/27 22:52
ddavid: 就算是流行的一些多語言IDE,大半情況也都 114.44.13.49 08/27 22:53
ddavid: 先看副檔名直接決定 114.44.13.49 08/27 22:54
ddavid: 雖然,根本上是根本不知道你問這個問題的 114.44.13.49 08/27 22:59
ddavid: 意義何在就是XD 114.44.13.49 08/27 23:00
ddavid: 你可以想想,你怎麼分辨英式英語跟美式英 114.44.13.49 08/27 23:08
ddavid: 語的?如果聽不到口音的情況下,你是不是 114.44.13.49 08/27 23:08
ddavid: 畢竟還是只能從慣用字細節裡面去區別 114.44.13.49 08/27 23:09
ddavid: 或是像日文各地方言,本來就沒有單一項絕 114.44.13.49 08/27 23:09
ddavid: 對識別特徵,可能A方言跟B方言差在X這個字 114.44.13.49 08/27 23:10
ddavid: ,但B方言跟C方言卻是X沒差Y才有差 114.44.13.49 08/27 23:10
NDark: 如果只看for C/C++/C#/JavaScript 幾乎一樣 114.24.75.252 08/28 01:25
NDark: 以前C++還沒有foreach 114.24.75.252 08/28 01:27
ddavid: Javascript有差比較多啦,function定義函 114.44.13.49 08/28 02:41
ddavid: 數、用let或var宣告變數等等 114.44.13.49 08/28 02:41
ddavid: 說起來看副檔名也不是完美解就是了,若像 114.44.13.49 08/28 02:44
ddavid: jinja2這種有時直接塞在.html裡面的情況XD 114.44.13.49 08/28 02:44
iLeyaSin365: 對,我意思就是跟二樓一樣,假設只 111.83.179.209 08/28 11:26
iLeyaSin365: 看代碼的話,可能很難區分,副檔名 111.83.179.209 08/28 11:26
iLeyaSin365: 直接解答了這樣看出來也沒意義。 111.83.179.209 08/28 11:26
CoNsTaR: 你的問題自相矛盾了吧,演算法本來就是流 1.164.91.189 08/28 18:31
CoNsTaR: 於形式的東西,難道演算法還要先考慮心 1.164.91.189 08/28 18:31
CoNsTaR: 情或人際關係之後才能算嗎? 1.164.91.189 08/28 18:31
CoNsTaR: 然後你應該要先定義你講的“語言”是包含 1.164.91.189 08/28 18:37
CoNsTaR: 哪些語言的集合,如果有不同語言要加入 1.164.91.189 08/28 18:37
CoNsTaR: 考慮,識別的演算法就可能要改變 1.164.91.189 08/28 18:37
CoNsTaR: 要不然如果有一隻猴子隨便敲鍵盤,那他 1.164.91.189 08/28 18:40
CoNsTaR: 打出的東西交給你你也拿來識別嗎? 1.164.91.189 08/28 18:40
ddavid: 二樓並沒有同意你的問題啊?有些語言確實 114.44.13.49 08/28 20:33
ddavid: 很像,但是這跟「為什麼要能一眼看出語言 114.44.13.49 08/28 20:33
ddavid: 」這個動機一點關係都沒有XD 114.44.13.49 08/28 20:34
ddavid: 副檔名直接看出來解答才是最有意義的,你 114.44.13.49 08/28 20:34
ddavid: 想要硬看code一眼看出哪個語言才是相對沒 114.44.13.49 08/28 20:35
ddavid: 意義的那邊 114.44.13.49 08/28 20:35
yasamnoya: 大 AI 時代,當然是全部丟進去 train 118.160.88.103 08/29 16:28
ddavid: 但是原Po想要「一眼即知」,train出來的 114.44.19.235 08/29 23:39
ddavid: model高機率沒法給人用來一眼即知XD 114.44.19.235 08/29 23:39
LPH66: 然後還有 polyglot 這種東西 180.177.0.237 08/30 00:17
LPH66: https://reurl.cc/83QR8d 180.177.0.237 08/30 00:17
MOONRAKER: 以前有人號稱他可以直接看16進位碼 220.135.118.23 08/30 11:17
MOONRAKER: 知道是什麼CPU 220.135.118.23 08/30 11:17
kisaraki1976: 比對副檔名跟保留字很難? 114.137.143.63 09/02 22:22
chuegou: 我會看副檔名猜是那個作業系統的可執行 36.227.250.19 09/02 22:37
chuegou: 檔 36.227.250.19 09/02 22:37
AntaresStar: vim很會猜語言 但不知道裡面怎麼做的 36.228.104.170 09/03 21:51
loadingN: vim不就是用附檔名嗎 101.10.94.45 09/03 23:56
AntaresStar: 查了一下 它是副檔名為主 關鍵字為輔 36.228.104.170 09/04 13:09
AntaresStar: 原po想要的應該是ft.vim裡面的邏輯 36.228.104.170 09/04 13:10
AntaresStar: 一個副檔名有多種可能時 它會用關鍵 36.228.104.170 09/04 13:16
AntaresStar: 字或前面幾行的長相來猜 36.228.104.170 09/04 13:16
CoNsTaR: 執行檔要附檔名的也就 Windows 而已?101.136.241.185 09/05 14:47
Neisseria: 副檔名、shebang、保留字 112.105.246.64 09/06 06:37
Neisseria: 除非要寫處理多種程式碼的語言工具 112.105.246.64 09/06 06:37
Neisseria: 要不然這個功能不太實用 112.105.246.64 09/06 06:38
james732: 話說新版vscode也說會自動認語言223.136.139.121 09/06 20:49
ddavid: 別說了,Html跟Jinja Html就是VScode分不 114.32.17.60 09/07 14:01
ddavid: 出來的案例之一XD 114.32.17.60 09/07 14:01
ddavid: @CoNsTaR 你把檔案執行權限跟檔頭定義視為 114.32.17.60 09/07 14:03
ddavid: 一種如同副檔名的meta information就好 114.32.17.60 09/07 14:04
ddavid: Windows吃.exe .com .dll等副檔名,linux 114.32.17.60 09/07 14:06
ddavid: 吃執行權限以及某些檔頭指定interpreter之 114.32.17.60 09/07 14:07
ddavid: 類,這只不過是方式上不同,並沒有做到不 114.32.17.60 09/07 14:09
ddavid: 用看 114.32.17.60 09/07 14:09
lc85301: 像這個根本就無從判斷是哪個語言XD220.134.248.249 09/16 22:20
lc85301: https://github.com/mame/quine-relay220.134.248.249 09/16 22:20
jeff082: 觀察語法啊 還能怎麼看? 112.104.74.187 09/19 17:40
jeff082: 如果你夠熟悉這個語言,沒道理認不出來吧 112.104.74.187 09/19 17:41
CoNsTaR: @ddavid 是不是 cue 錯人了 orz101.136.179.215 09/21 00:11
ddavid: 我是回你這句「執行檔要附檔名的也就 114.44.23.131 09/21 03:42
ddavid: Windows 而已?」沒錯啊 114.44.23.131 09/21 03:42
ddavid: 我意思是別人不看副檔名,還是要看其他東 114.44.23.131 09/21 03:43
ddavid: 西,所以其實還是一樣都要看某些meta info 114.44.23.131 09/21 03:44
F04E: 心眼118.238.237.116 09/28 13:41
milkBK: 看他import還是include啊 114.32.18.127 10/10 08:32
yzfr6: 程式碼 原始碼 220.137.2.77 11/07 20:14
Dracarys: 當然是看name mangling 140.114.235.98 12/27 17:54
CoNsTaR: @ddavid 我那句是在回 chuegou orz... 174.112.13.222 01/07 09:58
yzfr6: 不然你是要通靈識別嗎 220.137.12.28 06/21 20:33
diabolica: XDDDDDDDD 49.158.78.174 09/08 21:48