Web 开发用 PHP,Java,Node.js
基础设施用 C/C++
网页设计用 HTML,JS,CSS
数据库用 SQL 。
为什么不发明一种万能的编程语言,我只需要学一门语言就能做所有的事情。
这可能吗?
目前 Python 有这种趋势,但还是无法全面覆盖,比如移动端的 App 开发。
1
PureWhiteWu 2021-10-21 16:25:34 +08:00
为什么没有一个万能且通用的人,什么都能做到最好呢?
|
2
ZHenJ 2021-10-21 16:25:44 +08:00 11
没有银弹
|
3
LokiSharp 2021-10-21 16:26:40 +08:00
有了啊 C# 啊
|
4
Chad0000 2021-10-21 16:27:15 +08:00 2
你应该说目前 C#有这种趋势,都已经包括了移动端 APP 啦。
|
5
Chad0000 2021-10-21 16:31:44 +08:00
dotnet.microsoft.com ,看看官方说法:A developer platform for building all your apps 。
|
6
imkerberos 2021-10-21 16:32:02 +08:00 38
有啊, 汇编.
|
7
AoEiuV020 2021-10-21 16:36:23 +08:00
很多东西不是好和坏能够概括的,
同样一个特点,有人觉得是优点,有人觉得是缺点, 觉得是缺点的人就可能选择不用这门语言,另外开发一门语言解决这个“痛点”, 其他有同样看法的程序员就跟上了也用新语言, 程序员割裂了直接导致不同语言的生态不一样了,自然就能划分出哪些语言擅长什么,实际上是这门语言的主流用户擅长什么, |
8
hongweiliuruige 2021-10-21 16:37:01 +08:00
这不就是 js 吗,,atwood 定律:所有能被 js 实现的应用终将被 js 实现,,
|
9
kop1989 2021-10-21 16:38:56 +08:00
其实现在哪个语言都差不多是“万能”的,只是在某个产品领域是否被认可,是否流行的区别而已。
|
10
qiayue 2021-10-21 16:44:23 +08:00 2
有万能的语言,文字就是,你用文字把你的需求描述清楚,别人能帮你开发产品。
|
11
masterclock 2021-10-21 16:45:23 +08:00 2
定义一门语言 Ring,把过去、现在、未来一切语言都作为祂的 DSL 。
|
12
onice OP @Chad0000 问下.NET 是像 Java 那样是免费的吗?看了下官网,跟 Java 差不多,也有自己的 Runtime 。
是不是上了微软的.NET ,全套都得用微软的东西了,操作系统,数据库,云。 |
13
simple233 2021-10-21 16:50:36 +08:00
突然想到了 js...
|
14
dajj 2021-10-21 16:53:29 +08:00 2
如果不够抽象,就封装一层。 既然不能有万能的语言,那么找好几个程序员,楼主主要对程序员下命令就行。
轻松扩展支持更多语言,岂不美哉 |
15
yixiang 2021-10-21 16:53:57 +08:00 1
haxe 了解一下?可以编译成 JavaScript, C++, C#, Java, Python, Lua, PHP 。
死亡细胞就是这玩意写的。 |
16
Vegetable 2021-10-21 16:56:06 +08:00 2
实际上你说的中国话就是。
严格来说,所有人们使用的编程语言都是自然语言的子集。 你觉得没有只是因为你抽象的层次不够。当然这么说就有点抬杠的意思了,你实际上想问的,我觉得是:「传统编程语言为什么难以做到适应所有的场景」 这是因为不同场景的需求不同,语言作为一个工具,必然有其擅长工作,比如菜刀可以切菜,也可以切水果,但是人们还是发明了水果刀。瑞士军刀能切菜也能切水果,但是没有谁家厨房或者果盘里放的是瑞士军刀对吧? 工具的功能存在取舍,一味的加特性,去适配更多的场景,损失的就是易用性。同时,当一个工具的功能足够多时,可能会出现另一个情况:不同人群都使用的其中的部分功能,大家互相没有交集,vb 和 c#都属于 dotnet,那你说他们还算一种编程语言吗 |
18
signalas1 2021-10-21 16:59:40 +08:00
javacript
|
19
Chad0000 2021-10-21 16:59:52 +08:00
@onice 是啊完全免费,而且是 MIT 协议,免费得比较彻底。现在 .net 已经真正跨平台了,不用依赖于微软自家的产品,我这边一般都部署在 Docker 中然后跑在 linux 上了。也不一定非要在 Windows 下开发。而且 C#除了 APP 还有手游还有 WebAssemply,貌似是其他语言不大好 Cover 的方向,哈哈。
|
20
signalas1 2021-10-21 16:59:55 +08:00
javascript
|
21
myd 2021-10-21 17:02:53 +08:00
javascript
|
22
ruchee 2021-10-21 17:08:20 +08:00
有的,Haxe
|
23
Smilencer 2021-10-21 17:13:04 +08:00
javascript
|
24
onice OP @Chad0000 感谢分享。之前初学编程的时候,那个时候 C#还没开源,开源社区的大佬也在抨击这门语言,就很鄙视看不起。没想到现在这么厉害了。以后打算有时间学习学习,做个人项目很棒啊。。但是听说国内用这个的不多,工作不太好找。
|
25
echo1937 2021-10-21 17:23:00 +08:00
有没有一种工具是万能且通用的呢,比如瑞士军刀。
|
26
leafre 2021-10-21 17:23:38 +08:00 1
0101011010101010101010
|
27
Clarke 2021-10-21 17:25:45 +08:00 via Android
Python 这种脚本语言还是算了吧,有也可能是 C 、C++和 Rust 这种的
|
28
kerro1990 2021-10-21 17:26:32 +08:00
C#
|
29
xwhxbg 2021-10-21 17:31:24 +08:00
有啊,rust 上可当 react 写网页,下可 no-std 撸驱动
|
30
industryhive 2021-10-21 17:32:16 +08:00
java,java 可以写后端,可以写客户端,可以写中间件(数据库、搜索引擎),可以写大数据平台,可以写嵌入式,未来也可能写操作系统,也可以作为查询语言替代 sql 。
|
31
ReferenceE 2021-10-21 17:32:29 +08:00 via Android
@onice C#国内没人用,想做先跑路
|
32
fgwmlhdkkkw 2021-10-21 17:34:02 +08:00 1
kivy
|
33
industryhive 2021-10-21 17:36:12 +08:00
@Clarke c/c++/rust 适合写小型系统,越大型的系统越不适合使用它们写。最关键的原因是 c/c++/rust 没有 JIT,在运行效率方面比不上有 JIT 的语言,比如 java
|
34
snw 2021-10-21 17:39:54 +08:00 via Android 2
大部分通用编程语言都是图灵完备的。
所有已知的图灵完备系统都是图灵等价的。 理论上你确实只要学一门语言就能做任何事,只有适合与不适合的差别。 如果一门语言容易做所有事情,那它本身就是极其复杂的;如果一门语言本身不很复杂,那么它只容易做某些事情。 |
35
jeeyong 2021-10-21 17:43:30 +08:00 1
那个....Python 可以做移动端..kivy
|
36
yazinnnn 2021-10-21 17:51:19 +08:00
kotlin 正在尝试
kmm,jvm,js,kotlin-native 想干的事很多,就怕步子太大扯到蛋 |
37
clf 2021-10-21 17:52:19 +08:00
那么问题来了,我在 Java 里定义了一个 String 对象,对象里放的是 html 的代码,这个对象属于 java 语言的一部分还是 html ?
我用 Java 的 js 解释器跑了一个'consolo.log("hello world")',这时候这玩意算 java 的代码还是 js 。 |
38
rioshikelong121 2021-10-21 17:52:39 +08:00
大部分高级语言都可以干这些事情。问题只在于基础设施。
|
39
lechain 2021-10-21 18:08:38 +08:00 via Android
@industryhive kernel:???
|
40
linyuyizhizou 2021-10-21 18:14:12 +08:00
可以,但是没必要。
|
41
tanranran 2021-10-21 18:18:03 +08:00
C# 没有之一
|
42
zjsxwc 2021-10-21 18:31:22 +08:00 via Android
transpiler 了解下,楼主的问题全不是问题
|
43
industryhive 2021-10-21 18:33:18 +08:00
@lechain 像 Windows 、Linux 这种客户端软件很可能是 C/C++能开发的最大的单体软件,规模再大的软件很可能就不适合了。
|
44
atpking 2021-10-21 18:34:02 +08:00
瞧不起二进制?
|
45
TAFMT 2021-10-21 18:39:14 +08:00
汇编语言
|
46
zwgf 2021-10-21 18:39:34 +08:00
javascript
|
47
cmdOptionKana 2021-10-21 18:48:30 +08:00 1
一个简单的真理:在特定场景,通用的工具必然不如专用工具。
这个真理的原因是:场景和问题本身是复杂的、多样化的。而专用工具就是针对特定问题的特殊性而专门设计的。 这就是没有一个万能语言的原因。 |
48
xarthur 2021-10-21 19:26:25 +08:00 via iPhone
楼主提到的 Java C++ Python Javascript 就是通用编程语言啊。
这些语言都是图灵等价的,表达能力的上限是相同的,不存在某个语言能写,另一个语言就不能写的情况。 至于为什么不能用 Python 写 App,实际上可以的,你可以写一个 object-c 和 python 之间的 bridge 就能写了。 至于为什么没人这么干,这是商业问题不是技术问题,答案也很简单,没什么必要,商业上也划不来。 不要想着有这种学一门编程语言就够了,至少得会个 6 们以上的编程语言吧。 |
49
charlie21 2021-10-21 19:53:02 +08:00 2
首先,这么好的东西,它肯定贵
其次,它贵 就会有人寻找便宜的近似替代品 第三,有人就会制造出近似替代品,它就会在喜欢便宜货的人群之中流传开 以上三点是唯一物品和唯一物品替代物出现的原因,商品社会里没有意外。商品社会常识就是这样。当你有了无可替代的理由并彻底堵死 “近似替代物” 机会,就会出现无可替代的唯一物品 |
50
lostpg 2021-10-21 20:22:34 +08:00 via Android
@industryhive cc cpp rust 虽然没有 jit,但你也不能看不起人家 aot 的性能优化吧。。
|
51
industryhive 2021-10-21 20:32:59 +08:00
@lostpg AOT 性能优化上限不如 JIT,并且 java 也不是不能 AOT,现在 java 只能 AOT 和 JIT 二选一,但是说不定未来哪一天 java 可以实现先 AOT 编译再 JIT 运行。
|
52
zpxshl 2021-10-21 20:36:22 +08:00 via Android
@industryhive 51 android 不就是吗? aot jit 并存
|
53
agagega 2021-10-21 20:36:34 +08:00 via iPhone
@industryhive 没有 jit 但是有 pgo..不考虑程序员水平的情况下,Cpp 的上限肯定是比 Java 高的
|
54
IvanLi127 2021-10-21 20:42:14 +08:00 via Android
万能不就是啥都能做,也只是能做?
|
55
muzuiget 2021-10-21 20:44:44 +08:00
其实图灵完备都是万能语言,只不过开发效率上你接受不了。
|
56
industryhive 2021-10-21 20:48:58 +08:00
@agagega PGO 的优化上限还是不如 JIT 。目前来看 java 并没有明显不可克服的缺陷,cpp 能做的 java 都可以做,但是 java 的 JIT 却是 cpp 没有的(当然 cpp 可以自己写一个 JIT 编译器,这样 java 和 cpp 就持平了,但是通过 JIT 运行的 cpp 还能不能叫做 cpp 就见仁见智了)。
|
57
andytao 2021-10-21 21:06:04 +08:00
目前来看只有 x86 ISA 是真正的跨平台的了。
|
58
andytao 2021-10-21 21:11:09 +08:00
目前来看只有 x86 ISA/ ARM ISA 是真正的跨平台的万能语言了,大多数高级语言都受限于框架和各种库,限制了它的跨端能力。
|
59
lostpg 2021-10-21 21:14:00 +08:00
@industryhive #51 动态优化确实有着独特的优势,只是目前来看 jit 的成果也依然是在追平和 aot 的差距,虽然这个差距在很多时候都不需要去考虑,而是首要考虑代码实现和质量。
操作系统,数据库和浏览器内核这类应用目前来说,c cpp rust 的性能优势依然存在。考虑程序员心智负担,团队合作与语言生态的场景中,java 优势得天独厚,飞龙骑脸的那种 |
60
littlewing 2021-10-21 21:14:10 +08:00
机器语言
|
61
musi 2021-10-21 21:19:13 +08:00
js 不是嘛,桌面端,移动端,web 前后端,数据库就 ORM,网页设计就 jsx css in js
|
62
Rorysky 2021-10-21 21:34:56 +08:00
assembly
|
63
Leviathann 2021-10-21 22:09:56 +08:00
@industryhive 虽然但是,java 没有零开销抽象啊
比如集合的 map 、filter 啥的操作 javac 几乎是 0 优化的(相比 gcc rustc 之类的) 连 kotlinc 都能用 inline 的方式把这种操作编译成 for in 循环(当然如果是要求惰性的链式调用也得上 sequence ) |
64
lysS 2021-10-21 22:42:05 +08:00
SQL 、CSS 也叫编程语言?
|
65
GeruzoniAnsasu 2021-10-21 22:44:50 +08:00
|
66
GeruzoniAnsasu 2021-10-21 22:47:38 +08:00
因为现实世界并不简单到仅用一种逻辑系统即可描述
|
68
reedthink 2021-10-21 23:01:35 +08:00
有了啊,c++
|
69
xulolololololo 2021-10-21 23:08:52 +08:00
能别把 PHP 放首位吗?最近写着犯恶心
|
70
Daming 2021-10-22 00:14:21 +08:00
@ck65 #67
任何能用 JavaScript 实现的应用,最终都会用 JavaScript 实现。 Any application that can be written in JavaScript, will eventually be written in JavaScript. |
71
Felldeadbird 2021-10-22 01:26:57 +08:00
JS 目前是。
|
72
msg7086 2021-10-22 02:23:19 +08:00 2
越通用就越不专业。为什么要自虐去用通用的东西?
卡车能载重,公交车能载人,小汽车操控灵活,跑车速度快,飞机能飞。 然后你要弄一个既能载重,又能载人,又操控灵活,又能飙车,又能飞的交通工具? |
73
GeQi 2021-10-22 03:37:57 +08:00
难听的说问出这种问题就是菜……
|
74
Chad0000 2021-10-22 03:45:37 +08:00
@onice 哈哈,所以我写着写着 C#我就写出国了,现在还用它来写 APP 啦。国内现在情况怎么样我不清楚,但我出来时国内传统行业用得还是比较多的,我当时就是带着部门用 C#搞自助终端平台的。
|
75
AX5N 2021-10-22 05:06:25 +08:00
@msg7086 楼主就是在问为什么不存在一个“既能载重,又能载人,又操控灵活,又能飙车,又能飞的交通工具”啊,你又把问题重复了一遍。
|
76
astkaasa 2021-10-22 06:33:25 +08:00 via iPhone
来人,上 xkcd
|
77
yazinnnn 2021-10-22 08:30:13 +08:00
昨天 kotlin 官方发了一个 kotlin & wasm 的介绍 |
78
sugars 2021-10-22 08:34:45 +08:00
js yyds
|
79
Cbdy 2021-10-22 08:38:26 +08:00
js
|
80
urmyfaith 2021-10-22 08:42:34 +08:00
瞧不起汇编?
|
81
ShareDuck 2021-10-22 08:43:25 +08:00
@onice 大佬应该不是抨击 C# 这门语言,这门语言在社区一直都是赞誉有加的。抨击的应该是 .Net Framework 。
|
83
desstiony 2021-10-22 08:47:48 +08:00
单机片上能跑 js ? 硬件驱动能用 js 写?
|
84
wangxn 2021-10-22 09:03:03 +08:00 via Android
@industryhive C/C++/Rust 本身都预编译成机器码了,还要 JIT 干嘛?
|
85
yunyuyuan 2021-10-22 09:12:26 +08:00
有啊,英语不就是吗
|
86
xdeng 2021-10-22 09:12:46 +08:00
010101101010101010101 二进制就是
|
87
Lemeng 2021-10-22 09:14:18 +08:00
js:选我选我
|
88
p1gd0g 2021-10-22 09:15:42 +08:00
只能说计算机体系还不够成熟,毕竟还不到 100 年,未来一定会有吧。
|
89
huangmingyou 2021-10-22 09:27:27 +08:00
产品经理的语言!
|
90
industryhive 2021-10-22 09:31:32 +08:00
@wangxn 预编译是 AOT,AOT 的性能优化上限不如 JIT,JIT 的存在目的就是获取运行时信息进行比 AOT 更高程度的优化。java 也可以进行 AOT 编译,但是 java AOT 之后就不能 JIT 了,以后可能会实现先 AOT 编译再 JIT 运行。
|
91
janus77 2021-10-22 09:32:59 +08:00
你说这话不仅是计算机知识不够,最主要的是逻辑知识都不够
我就举个和计算机无关的例子,假设法:假设有这么一个语言已经涵盖了现在所有的场景。 那么明天突然有人发明一种新的开发领域(就好像 android 出来前和出来后),你怎么保证这个语言能满足这个新的场景? 这是纯逻辑问题。这个问题用脚想也知道是无解的 |
92
Chad0000 2021-10-22 09:33:35 +08:00
@yazinnnn C#这边 Blazor 都如火如荼了。:-),我涉猎面比较窄,不敢说 C#满足楼主所说,但它已经足够接近了。
|
93
Zakun 2021-10-22 09:36:27 +08:00
00011101010101010
|
94
industryhive 2021-10-22 09:39:37 +08:00
@lostpg 目前来看 JIT 的确还有非常大的发展潜力,这也是为什么我说越大型的系统越适合用 java 开发,因为越大型的系统 JIT 能发挥的作用就越大。目前来看 cpp/rust 等用来编写一些小型系统仍然存在某些优势,但是现在 java 也不是不可以做这些事,而且很多时候还比 c/cpp 做的更好。比如分布式内存计算平台 apache ignite 性能比 redis 更好并且功能还比 redis 多,分布式数据库 Casandra 性能比 MongoDB 好。还有前几个月开源的商用数据库 StarRocks 就号称比 ClickHouse 好,只不过 StarRocks 选用的开源协议受到了很多人抨击。另外,java 和 jvm 平台也在迅速发展,未来 java 的缺陷都会被一一克服。
|
95
industryhive 2021-10-22 09:42:00 +08:00
@Leviathann 零开销抽象虽然不是 java 的理念,但 java 也不是不能做到零开销抽象。javac 只是个前端编译器,最主要的优化都在后端 C1/C2 进行,JIT 的作用就是用来进行运行时优化的。
|
96
industryhive 2021-10-22 09:43:43 +08:00
@GeruzoniAnsasu 所以汇编和 C 语言一样,只适合用来开发一些小型软件。
|
97
ww2000e 2021-10-22 09:46:14 +08:00
硬件限制,编程语言只能在难易度和性能上各种取舍,形成自己风格
|
98
Codelike 2021-10-22 09:49:11 +08:00
论造轮子的快乐
|
99
silkriver 2021-10-22 10:02:30 +08:00
编程语言只有一种,叫 programming launguage
|
100
lqf96 2021-10-22 10:13:43 +08:00 via iPhone
@industryhive Rust 的 cranelift 后端以后是计划 JIT 执行 rust 的,效率应该会有提升,当然这种情况下 ffi 对效率会有一定影响(其实 gcc 后端用的是 libgccjit,说不定也行)
|