1
liuidetmks 2021-12-18 17:14:47 +08:00 via iPhone 1
格局小了,现在是无代码 😏
|
2
Jooooooooo 2021-12-18 17:19:25 +08:00
时代变了, java 都底层了.
(上学没学过 c 吗 |
3
Weny 2021-12-18 17:27:08 +08:00
就算是汇编,只要是人类可读的其实都还好了... 只是不熟悉而已。来个例子
```C void* memmove(void *vdst, const void *vsrc, int n) { char *dst; const char *src; dst = vdst; src = vsrc; if (src > dst) { while(n-- > 0) *dst++ = *src++; } else { dst += n; src += n; while(n-- > 0) *--dst = *--src; } return vdst; } ``` |
4
rykinia 2021-12-18 17:29:15 +08:00
java 没有框架强行实现 bug 一堆?
js 没有框架照样爽? 很好奇什么神奇的需求能达到这种效果 |
5
Cbdy 2021-12-18 17:30:16 +08:00
原生不支持 JSON 是挺麻烦的
|
6
industryhive 2021-12-18 17:50:01 +08:00
java 是瘦语核的语言,光学会 java 的语法什么也做不了,必须使用 JDK 提供的类库或者框架才能实现一些复杂的功能,没有框架确实什么也做不了
|
7
linbingcheng 2021-12-18 17:54:22 +08:00
那是你没看过 C 和 C++ 的相关代码吧,简直绝望
|
8
Features OP |
9
seakingii 2021-12-18 18:24:08 +08:00
现在都 AI 写代码了,谁还自己写.
|
10
sagaxu 2021-12-18 18:25:12 +08:00
PHP 是最好的语言,虽然用 PHP 的公司越来越少了
|
11
makelove 2021-12-18 19:20:49 +08:00 2
不知道现在的 java 是什么样,以前我用的时候 java 社区开发习惯的确过于封装且追求高大全,后来一路 php/py/js 下来那些都没这么复杂,一眼就直接见底了
最近 java 那个漏洞也从侧面说明了一个小小的 logger 功能多到竟然也能搞出这么多事 |
12
hello2090 2021-12-18 19:32:02 +08:00 3
工作 10 多年了,从没挑剔过语言,钱给够让用啥用啥。
|
13
Borch 2021-12-18 19:47:00 +08:00 3
首先,这不叫底层。
|
14
Chihaya0824 2021-12-18 20:12:36 +08:00
现在的大学都不会稍微碰一下汇编吗?我就上过一个 arm 的汇编课那真的阴间,学完了以后觉得 C 真好用(
|
16
Brentwans 2021-12-18 21:14:57 +08:00
@industryhive 咦?有什么语言,语法包含了框架功能吗?
|
17
Mohanson 2021-12-18 21:20:34 +08:00
有没有大佬说下 log4j 是图灵完备的吗?
|
18
pengtdyd 2021-12-18 21:53:56 +08:00
只要能赚钱,管他有没有 bug ,有 bug 给钱修就行。
|
19
limbo0 2021-12-18 22:22:52 +08:00
是的, 习惯脚本语言 Java 是有点蛋疼
|
20
voidmnwzp 2021-12-19 00:22:41 +08:00 via iPhone
你是不是对底层有什么误解?没学过 c/cpp ?
|
21
snw 2021-12-19 00:44:02 +08:00 via Android
想起当年劳动技能课玩过单片机,用的是汇编语言,
|
22
snw 2021-12-19 00:45:37 +08:00 via Android
…只是控制几个 LED 按各种规律发光,用汇编挺容易的。
|
23
snw 2021-12-19 00:51:53 +08:00 via Android 1
但要说爽,还是巨硬家那些语言爽。像 Java 得知道整数比较时 127 和 128 会有不同结果,js 以前用 var 时还得考虑变量作用域和闭包,用.NET 就没这么多奇怪的东西,可以少死几个脑细胞。
|
24
harwck 2021-12-19 06:30:44 +08:00
最近在看 React ,结果什么脚手架都有
|
25
charlie21 2021-12-19 07:21:25 +08:00 via iPhone
加利福尼亚的首府是萨克拉门托
|
26
yinzhili 2021-12-19 08:35:31 +08:00 1
bug 是写代码的人水平不够。不能怪语言。真的。
|
27
fiypig 2021-12-19 09:30:56 +08:00 via iPhone
最好的项目是自己写工具,不依赖别人的框架
|
28
fsdrw08 2021-12-19 11:19:56 +08:00 via Android
所以说学编程,应该直接上框架,学什么基础语法都是屁,把框架撸一遍踩坑了再看基础语法也不迟
|
29
Kylin30 2021-12-19 15:47:04 +08:00
这个在圈子里的黑话叫生态不行
|
31
shellic 2021-12-19 17:24:22 +08:00 via Android
要想写的爽还得 PHP
|
33
industryhive 2021-12-20 10:08:37 +08:00
@Jooooooooo
@voidmnwzp 就看你怎么定义“底层”了,GraalVM 是完全由 java 实现的通用高性能虚拟机,做到了和真实物理机指令集对应而不是和某一门编程语言语法对应,也就是说你用汇编干的活用这玩意都能干,这个算底层不? |
34
vincent7245 2021-12-20 10:12:59 +08:00
可见大学计算机专业从 C/c++ 语言开始入门是多么明智的安排
|
35
Jooooooooo 2021-12-20 10:21:08 +08:00
@industryhive 我认为 java 并不底层的原因在于, 一个 volatile 直接屏蔽各种软硬件的差异, 实现统一语义. 从这点看是相当不底层. volatile 已经是具备足够抽象的语义. jvm 帮助我们在不同软硬件上采用不同实现.
|
36
industryhive 2021-12-20 12:51:26 +08:00
@Jooooooooo 按照你这个观点,那正好说明 java 和 C 、C++一样底层。所谓跨平台,是因为 jvm 屏蔽了底层的细节,比如你说的 volatile 。但是 volatile 之所以能实现所有平台语义的统一,完全是靠底层的 jvm 实现的。所以现在有了下一代的通用高性能跨语言虚拟机 GraalVM ,GraalVM 是一个完全由 java 实现的 java 虚拟机,如果你有需要,你完全可以自己实现底层细节,你想要修改 volatile 的语义,你可以自己修改 GraalVM ,你甚至可以自定义 java 的语法规范。而在 GraalVM 出现之前,这些细节的工作是由 C++实现的。所以,GraalVM 的出现,说明 java 至少可以做到和 C++一样底层的事情。
|
37
Jooooooooo 2021-12-20 14:13:21 +08:00
@industryhive 正是因为 jvm 屏蔽了底层细节, 所以才说 java 并不底层.
|
38
industryhive 2021-12-20 14:20:59 +08:00
@Jooooooooo 所以当你自己写 jvm 的时候,要直接处理底层细节,你说这个时候 java 是否底层?
|
39
Jooooooooo 2021-12-20 14:25:45 +08:00
@industryhive 肯定不属于啊. Java 面对使用者来说, 是相当高层以及抽象的语言. 底下具体是怎么实现的完全不关心.
比如 volatile 在不同软硬件下有着完全不同的处理方式(比如有些强一致的软件下, volatile 直接被抹掉了), 用 java 的人可不知道这一点 |
40
industryhive 2021-12-20 14:53:28 +08:00
@Jooooooooo 那是否可以这么说,用 java 写上层应用的时候,java 是高层和抽象的语言,因为按你的说法,使用者不关心硬件或平台底层细节;用 java 写 jvm 或 OS 的时候,那按你的说法,java 是底层语言,因为这个时候使用者必须非常关心和了解硬件和平台底层细节。你觉得我这说法对吗?
|
41
voidmnwzp 2021-12-20 18:56:57 +08:00 via iPhone
@industryhive java 怎么可能写 os 一个 runtime 的语言,写出来也是底层也是跑在 jvm 上的虚拟系统,底层的内核得靠 c/cpp native 实现
|
42
industryhive 2021-12-20 20:34:06 +08:00
@voidmnwzp java 怎么不可能写 os ,Java ME 就运行在资源极其受限的设备上,根本就没有操作系统,所有的硬件资源都是靠一个极其精简的 jvm 管理。那扩大到 Java SE 平台,jvm 当然也可以管理更丰富的硬件资源。所以对于 java 来说,操作系统是冗余的,如果让 jvm 直接管理硬件资源,会大大提高性能。
有一篇文章就说了这个设想:一种新的操作系统设计 http://www.yinwang.org/blog-cn/2013/04/14/os-design 。知乎上也有对这篇文章的讨论:如何看待王垠对于内存管理的理解? - 灵剑的回答 - 知乎 https://www.zhihu.com/question/484194993/answer/2098751994 。总的思想就是让 JVM 直接运行在裸机上,去掉操作系统的冗余,这样 JVM 就是操作系统,极大的提高程序的运行性能。其实这样的想法我很早之前也想到的,现在全世界几十亿台安卓设备,底层都是 Linux 系统,然后在 Linux 之上运行了 jvm ,在 jvm 之上再运行安卓应用。我就想为什么不直接运行 jvm ,去掉 Linux 呢?这对于安卓设备来说运行效率会极大的提高。 |
43
gearkey 2021-12-21 07:39:45 +08:00
脚本语言万岁! js 、python 万岁!
|
44
kergee 2021-12-21 08:47:22 +08:00
给你们看看更底层的,软件的数学基础 https://softwarefoundations.cis.upenn.edu/
|
45
exiledkingcc 2021-12-21 10:37:27 +08:00
@industryhive
那是把 JVM 写成 OS ,而不是用 JAVA 写 OS 。 |
46
industryhive 2021-12-21 11:39:36 +08:00
@exiledkingcc 不不不,像王垠的这个设想 ,jvm 就是 OS ,而且有许多狭义上的 jvm 没有的功能,比如安装第三方应用、客户端远程连接等。只不过是把传统的操作系统内核给换成 jvm 而已。所以 java 能写 jvm ,当然也能写 OS ,这是 java ME 和 GraalVM 已经验证过的事情。
|
47
Joker123456789 2021-12-21 15:18:49 +08:00
java 的生态这么丰富,你居然说啥都要自己实现, 你这是连 sql ,业务逻辑都想自动化了吗
|