作者iLeyaSin365 (365)
看板Programming
标题[问题] 应该用甚麽来识别语言?
时间Fri Aug 27 22:38:15 2021
想请问有在写程式的大大一件事,你们都怎麽识别一门语言的?
因为今天我看一个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://webptt.com/cn.aspx?n=bbs/Programming/M.1630075097.A.B1A.html
1F:→ ddavid: 看副档名,没开玩笑 114.44.13.49 08/27 22:52
2F:→ ddavid: 就算是流行的一些多语言IDE,大半情况也都 114.44.13.49 08/27 22:53
3F:→ ddavid: 先看副档名直接决定 114.44.13.49 08/27 22:54
4F:→ ddavid: 虽然,根本上是根本不知道你问这个问题的 114.44.13.49 08/27 22:59
5F:→ ddavid: 意义何在就是XD 114.44.13.49 08/27 23:00
6F:→ ddavid: 你可以想想,你怎麽分辨英式英语跟美式英 114.44.13.49 08/27 23:08
7F:→ ddavid: 语的?如果听不到口音的情况下,你是不是 114.44.13.49 08/27 23:08
8F:→ ddavid: 毕竟还是只能从惯用字细节里面去区别 114.44.13.49 08/27 23:09
9F:→ ddavid: 或是像日文各地方言,本来就没有单一项绝 114.44.13.49 08/27 23:09
10F:→ ddavid: 对识别特徵,可能A方言跟B方言差在X这个字 114.44.13.49 08/27 23:10
11F:→ ddavid: ,但B方言跟C方言却是X没差Y才有差 114.44.13.49 08/27 23:10
12F:推 NDark: 如果只看for C/C++/C#/JavaScript 几乎一样 114.24.75.252 08/28 01:25
13F:推 NDark: 以前C++还没有foreach 114.24.75.252 08/28 01:27
14F:→ ddavid: Javascript有差比较多啦,function定义函 114.44.13.49 08/28 02:41
15F:→ ddavid: 数、用let或var宣告变数等等 114.44.13.49 08/28 02:41
16F:→ ddavid: 说起来看副档名也不是完美解就是了,若像 114.44.13.49 08/28 02:44
17F:→ ddavid: jinja2这种有时直接塞在.html里面的情况XD 114.44.13.49 08/28 02:44
18F:→ iLeyaSin365: 对,我意思就是跟二楼一样,假设只 111.83.179.209 08/28 11:26
19F:→ iLeyaSin365: 看代码的话,可能很难区分,副档名 111.83.179.209 08/28 11:26
20F:→ iLeyaSin365: 直接解答了这样看出来也没意义。 111.83.179.209 08/28 11:26
21F:推 CoNsTaR: 你的问题自相矛盾了吧,演算法本来就是流 1.164.91.189 08/28 18:31
22F:→ CoNsTaR: 於形式的东西,难道演算法还要先考虑心 1.164.91.189 08/28 18:31
23F:→ CoNsTaR: 情或人际关系之後才能算吗? 1.164.91.189 08/28 18:31
24F:推 CoNsTaR: 然後你应该要先定义你讲的“语言”是包含 1.164.91.189 08/28 18:37
25F:→ CoNsTaR: 哪些语言的集合,如果有不同语言要加入 1.164.91.189 08/28 18:37
26F:→ CoNsTaR: 考虑,识别的演算法就可能要改变 1.164.91.189 08/28 18:37
27F:推 CoNsTaR: 要不然如果有一只猴子随便敲键盘,那他 1.164.91.189 08/28 18:40
28F:→ CoNsTaR: 打出的东西交给你你也拿来识别吗? 1.164.91.189 08/28 18:40
29F:→ ddavid: 二楼并没有同意你的问题啊?有些语言确实 114.44.13.49 08/28 20:33
30F:→ ddavid: 很像,但是这跟「为什麽要能一眼看出语言 114.44.13.49 08/28 20:33
31F:→ ddavid: 」这个动机一点关系都没有XD 114.44.13.49 08/28 20:34
32F:→ ddavid: 副档名直接看出来解答才是最有意义的,你 114.44.13.49 08/28 20:34
33F:→ ddavid: 想要硬看code一眼看出哪个语言才是相对没 114.44.13.49 08/28 20:35
34F:→ ddavid: 意义的那边 114.44.13.49 08/28 20:35
35F:推 yasamnoya: 大 AI 时代,当然是全部丢进去 train 118.160.88.103 08/29 16:28
36F:→ ddavid: 但是原Po想要「一眼即知」,train出来的 114.44.19.235 08/29 23:39
37F:→ ddavid: model高机率没法给人用来一眼即知XD 114.44.19.235 08/29 23:39
38F:推 LPH66: 然後还有 polyglot 这种东西 180.177.0.237 08/30 00:17
40F:→ MOONRAKER: 以前有人号称他可以直接看16进位码 220.135.118.23 08/30 11:17
41F:→ MOONRAKER: 知道是什麽CPU 220.135.118.23 08/30 11:17
42F:嘘 kisaraki1976: 比对副档名跟保留字很难? 114.137.143.63 09/02 22:22
43F:推 chuegou: 我会看副档名猜是那个作业系统的可执行 36.227.250.19 09/02 22:37
44F:→ chuegou: 档 36.227.250.19 09/02 22:37
45F:推 AntaresStar: vim很会猜语言 但不知道里面怎麽做的 36.228.104.170 09/03 21:51
46F:→ loadingN: vim不就是用附档名吗 101.10.94.45 09/03 23:56
47F:→ AntaresStar: 查了一下 它是副档名为主 关键字为辅 36.228.104.170 09/04 13:09
48F:→ AntaresStar: 原po想要的应该是ft.vim里面的逻辑 36.228.104.170 09/04 13:10
49F:→ AntaresStar: 一个副档名有多种可能时 它会用关键 36.228.104.170 09/04 13:16
50F:→ AntaresStar: 字或前面几行的长相来猜 36.228.104.170 09/04 13:16
51F:推 CoNsTaR: 执行档要附档名的也就 Windows 而已?101.136.241.185 09/05 14:47
52F:推 Neisseria: 副档名、shebang、保留字 112.105.246.64 09/06 06:37
53F:→ Neisseria: 除非要写处理多种程式码的语言工具 112.105.246.64 09/06 06:37
54F:→ Neisseria: 要不然这个功能不太实用 112.105.246.64 09/06 06:38
55F:→ james732: 话说新版vscode也说会自动认语言223.136.139.121 09/06 20:49
56F:推 ddavid: 别说了,Html跟Jinja Html就是VScode分不 114.32.17.60 09/07 14:01
57F:→ ddavid: 出来的案例之一XD 114.32.17.60 09/07 14:01
58F:→ ddavid: @CoNsTaR 你把档案执行权限跟档头定义视为 114.32.17.60 09/07 14:03
59F:→ ddavid: 一种如同副档名的meta information就好 114.32.17.60 09/07 14:04
60F:推 ddavid: Windows吃.exe .com .dll等副档名,linux 114.32.17.60 09/07 14:06
61F:→ ddavid: 吃执行权限以及某些档头指定interpreter之 114.32.17.60 09/07 14:07
62F:→ ddavid: 类,这只不过是方式上不同,并没有做到不 114.32.17.60 09/07 14:09
63F:→ ddavid: 用看 114.32.17.60 09/07 14:09
64F:推 lc85301: 像这个根本就无从判断是哪个语言XD220.134.248.249 09/16 22:20
66F:推 jeff082: 观察语法啊 还能怎麽看? 112.104.74.187 09/19 17:40
67F:→ jeff082: 如果你够熟悉这个语言,没道理认不出来吧 112.104.74.187 09/19 17:41
68F:推 CoNsTaR: @ddavid 是不是 cue 错人了 orz101.136.179.215 09/21 00:11
69F:推 ddavid: 我是回你这句「执行档要附档名的也就 114.44.23.131 09/21 03:42
70F:→ ddavid: Windows 而已?」没错啊 114.44.23.131 09/21 03:42
71F:→ ddavid: 我意思是别人不看副档名,还是要看其他东 114.44.23.131 09/21 03:43
72F:→ ddavid: 西,所以其实还是一样都要看某些meta info 114.44.23.131 09/21 03:44
73F:嘘 F04E: 心眼118.238.237.116 09/28 13:41
74F:推 milkBK: 看他import还是include啊 114.32.18.127 10/10 08:32
75F:嘘 yzfr6: 程式码 原始码 220.137.2.77 11/07 20:14
76F:推 Dracarys: 当然是看name mangling 140.114.235.98 12/27 17:54
77F:推 CoNsTaR: @ddavid 我那句是在回 chuegou orz... 174.112.13.222 01/07 09:58
78F:嘘 yzfr6: 不然你是要通灵识别吗 220.137.12.28 06/21 20:33
79F:→ diabolica: XDDDDDDDD 49.158.78.174 09/08 21:48