![]() | 1 yukiww233 2019-03-02 13:36:49 +08:00 ![]() 日常引战 |
![]() | 2 woscaizi 2019-03-02 13:40:57 +08:00 via iPhone ![]() 因为 java 的类型检查,强约束,编译时检查可以使普通程序员也能写出还可以运行的代码。 并且 java 生态非常非常好,尤其是国内。 |
![]() | 3 Lonely 2019-03-02 13:44:55 +08:00 ![]() 是的,走好不送。 |
![]() | 4 rockyou12 2019-03-02 13:45:35 +08:00 回 lz,真的只有你。特别是你写过大点的项目,多会几门后端语言后才知道为啥 |
![]() | 5 misaka19000 2019-03-02 13:46:25 +08:00 via Android 是的,Java 很垃圾,PHP 是世界上最好的语言 |
![]() | 6 bumz 2019-03-02 13:48:08 +08:00 ![]() 只写 50 行代码你用机器码都没人拦你 500000 行代码没有静态检查全靠运行时?重构都没法重构 |
7 lynskylate 2019-03-02 13:53:09 +08:00 via Android 等你写 c 艹写多了就知道 java 有多好了,有相对完善的标准库,完善的包管理,丰富的生态,优秀的虚拟机(还可以 hack 字节码),不用考虑对象生命周期,操蛋的 abi 兼容,过多遗留代码以至于语法上。以上几点 c 艹基本都很烂,就标准库来说,到现在还没有网络库,文件库,想要跨平台还得自己去做兼容。 |
![]() | 9 orangeade 2019-03-02 13:54:09 +08:00 via Android 所以诞生了 kotlin/scala/go,个人项目我才懒得用 Java,公司项目无所谓,循行内部编码规范就行 |
10 lynskylate 2019-03-02 13:56:05 +08:00 via Android 等你写 c 艹写多了就知道 java 有多好了,有相对完善的标准库,完善的包管理,丰富的生态,优秀的虚拟机(还可以 hack 字节码),不用考虑对象生命周期。而 c 艹这些方面都很烂,就标准库来说,到现在还没有网络库,文件库,想要跨平台还得自己去做兼容。除了缺少上面 java 的优点外,c 艹还有操蛋的 abi 兼容,过多遗留代码以至于写库还得向下兼容到 98。 打错重发一遍 |
![]() | 11 lhx2008 2019-03-02 13:57:16 +08:00 ![]() 并不复杂,相反是简单,Java 用少量的可预测的 API 构建高楼大厦,而不是各种组装好的预制板,通过奇怪的切割方法来使用。 另一个证明 Java 简单的方法是,你可以比较轻松的看懂别人写的 Java 代码,但是你在 Python 和 Javascript 里面要看懂那些“高手”写的代码是极其困难的。 |
12 liujj 2019-03-02 13:58:21 +08:00 via iPhone 1 考虑招人成本,至少培训班出来的写 Java web 领域还是没问题的 2 企业级稳定性和生态,Java 是国内事实上的标准,良性循环加一大堆布道师 3 然而对于个人而言,学习 Java 很难深入系统底层,深入的是 jre,有一句笑话是写 Java 的不知道 nginx 也不懂 linux 原理 4 所以我选择 golang |
![]() | 13 woscaizi 2019-03-02 13:59:43 +08:00 via iPhone @Linxing golang 确实不错,不过需要多人协作的项目,还是会考虑 java,因为会 go 的人还是少。 |
![]() | 14 Raphael96 2019-03-02 14:00:42 +08:00 via Android ![]() c# 比 java 好,什么你说生态环境?哦,你们聊我先走了 |
![]() | 15 Salvation 2019-03-02 14:01:23 +08:00 ![]() 觉得糟糕就不用呗. 1. 一个东西,如果你认为糟糕,但是用的人非常多.你应该自己沉下心好好思考下,思考其优点究竟在哪里,为什么这个优点可以盖过其缺点等等内容.这个思考过程对人的帮助很大. 2. 这种帖子很难拿到真实的原因.因为你没有真正用这几种语言写过、维护过大型项目.很多理由写在纸上是一个意思.但是看到再多次也不能理解到.等动手做一次之后就能很清楚.所以你看了再多的回帖,不懂的还是不懂.你去做一下,可能瞬间就明白了. 3. 糟糕这个词形容 java 不太好.如果你认为糟糕,首先你得说清楚,哪个场景,和什么语言对比,结果如何,为什么糟糕.否则你说的这些缺点未必是真正的缺点.如果能具体到某个点上去聊.能深入一些 |
![]() | 16 webjin1 2019-03-02 14:08:40 +08:00 via Android |
![]() | 17 westoy 2019-03-02 14:11:59 +08:00 你去 CSDN、javaeye 之类的论坛找找十几年前的论战, 尤其敏捷开发流行的时候各种动态语言撕 X Java 的, 理由和你的差不多 于是后来又流行了一句话, 动态一时爽, 重构 XXX 就入门门槛、开发效率、防止犯错, 有利于重构、生态这几块,java 算是最均衡的 |
![]() | 18 bokchoys OP @lynskylate 谢谢,了解啦 |
![]() | 25 bokchoys OP @misaka19000 Ahahahaha |
![]() | 27 wly19960911 2019-03-02 14:35:57 +08:00 复杂的有自己的理由,首先复杂的原因是有一部分冗余代码用来提高设计上的灵活。 反而越灵活的代码越难入门的时候掌握到一些设计上的门道,容易走偏。 |
![]() | 28 DevRoss 2019-03-02 14:36:33 +08:00 via Android 不觉得糟糕,但觉得写得不爽罢了 |
![]() | 29 wly19960911 2019-03-02 14:40:19 +08:00 @wly19960911 #27 我就举例 js 把,js 很多时候把 java 基础的面向对象各种反复强调实现,表面看起来灵活,你只能知道实现了面向对象,入门的时候学习你根本体会不到面向对象的好处,另外如果想要面向对象,为什么不一开始就看面向对象实现的东西呢。 |
![]() | 30 1002149271 2019-03-02 14:42:19 +08:00 via Android 又臭又长,人生苦短,所以我用 python … |
![]() | 31 bokchoys OP @1002149271 ahahahah |
32 Cbdy 2019-03-02 14:46:17 +08:00 Java 历史悠久也很流行,所以有很多用户,这些用户中有很多是半吊子或者民科 事实上 Java 并不糟糕,相反,它的竞争对手更糟糕(如 Python、Go 甚至是 C++)。当然 Java 平台确实有一些过度工程或者过度设计的地方,但是放到 2019 年看,Java 仍然是最优秀的严肃的工业级别的通用编程语言 如果你觉得 Java 糟糕,并不是你比 Java 设计者聪明或者 Java 应在 IT 行业的演变过程中淘汰,而是你没有掌握正确的方法 |
![]() | 33 ClutchBear 2019-03-02 15:49:47 +08:00 就虎扑这种口水网站, 用 "只有我觉得 xxxx" 当标题的, 直接小黑屋 15 天以上 |
34 loveCoding 2019-03-02 15:51:48 +08:00 Intellij idea 可以让你一直爽 |
![]() | 35 lovedebug 2019-03-02 16:02:45 +08:00 Java 也在进步,只是你没看到被网上文章带了节奏 |
![]() | 36 lovedebug 2019-03-02 16:04:54 +08:00 Java 的生态目前是最好的。下一个可能 Node ? python 或者 Go ?不确定 Java 底层的 JVM 技术是目前不少新式语言在学习的。 Java 非常适合团队开发,犯错可能性少,Node Python 等弱类型语言团队开发考验每一个人的水平 |
37 HuHui 2019-03-02 16:06:24 +08:00 via Android 个人觉得目前就生态上,go 可能有希望 |
39 micean 2019-03-02 16:07:51 +08:00 生态、调试、重构,用来用去只有 java 最舒服 嗦是嗦了一些 |
![]() | 40 lht260 2019-03-02 16:12:49 +08:00 兄弟,等你写过大型项目就知道为啥了 |
![]() | 41 gejun123456 2019-03-02 16:57:16 +08:00 via iPhone intellij 熟练点 很多代码都能自动生成 |
![]() | 42 kljsandjb 2019-03-02 16:58:59 +08:00 |
![]() | 43 rockyou12 2019-03-02 17:00:01 +08:00 |
![]() | 44 Maboroshii 2019-03-02 19:34:52 +08:00 golang +1 |
45 presoul 2019-03-02 19:39:06 +08:00 via Android 只有我觉得 这种标题的人都是什么心理… |
47 nicevar 2019-03-02 19:43:13 +08:00 我们都老了,这是 00 后找存在感专用标题格式。。。 |
![]() | 49 icylogic 2019-03-02 20:06:54 +08:00 via iPhone 我从短暂的人生当中学到一件事…… 所有说自己无意引战的,全部当做引战处理就可以了! |
![]() | 51 josephok 2019-03-02 22:25:51 +08:00 via Android ![]() Rust 也挺好的。就是国内用的少。 |
52 dot2017 2019-03-02 22:30:54 +08:00 Java 别的都好,内存回收实在太垃圾! |
![]() | 53 deadEgg 2019-03-02 22:44:40 +08:00 以前 java、python 写了很久, 现在在写 pure c,来对比下写 c 你将遇到什么 1. 平台移植兼容,你将需要面对各种平台写一堆另新手费解的宏,定义自己的基本数据类型根据编译器,cpu 位数,我见过一个很老的项目甚至兼容 8bit 的平台。不同的平台提供的库也很难去弄,一个不成熟的 c 项目可能带给你的是编译要弄很久。 2. 编译选项,不同的编译选项导致编译进不同的代码,所以你有时候会发现一堆定义相同的函数,当遇到这类事情你还得了解编译场景。。 3. 混编汇编,别问,问就看不懂 4. 多流派写法,不同的项目都有自己的写法流派,有些 struct 去面向对象,去做接口,有些写法不理解个半天根本不明白它在写什么。 5. trick 代码,可以说 c 是最能写出花样的,新手很难理解一些 trick 的代码片段。比如内核常用的 container_of 这种。或者一些大数实现中对结构内存的分配调整,很难以上层的思维模式去理解,上层可能可以很轻松的获取操控内存大小,但是在 c 里面,总是很难明白在一个 struct 里面的 char *到底里面有多大内存。 6.分包自由,代码很长,我有见过把所有核心功能都放到名为 lib 包的项目,一个.c 文件可能几千行然后也不面向对象,只面向功能去做(或者说面向组件),上手一个 c 的项目其实都很去理解他的核心思路。 7. 和别的代码混着写,反正 makefile 足够自由,可以加入很多别的语言在里面。。 所以,少年珍惜 java 把,java 这门语言可以说是上手算是挺快的了。 |
![]() | 54 msg7086 2019-03-02 22:51:32 +08:00 不如试试 C 井? |
![]() | 55 justin2018 2019-03-02 22:57:45 +08:00 楼主 来做前端 ~ 总有新花样~ |
![]() | 56 zorui 2019-03-02 23:17:52 +08:00 当你使用其他语言做一些项目的时候你才会想起 java 的好。 |
![]() | 57 cpdyj0 2019-03-02 23:59:41 +08:00 感觉吐槽的点不太对,环境配置这都不叫事,况且我觉得 Jaa 算是简单的了…… 私以为 Java 最大的缺点(或者说是最大的优点-见仁见智吧)语法过于简单,导致表达能力较低,写起来不爽;不过也极大地限制了大家自由发挥,加之设计模式的推广极大降低了理解他人代码的难度(?). |
![]() | 59 vegito2002 2019-03-03 02:18:11 +08:00 java 编写代码复杂??? |
![]() | 60 EscYezi 2019-03-03 03:11:20 +08:00 via iPhone Java 算是相对简单的语言了,想要的包 Maven 都能找到,语法简单限制严格,比较嗦但是可读性和可维护性好。 曾经我也一度瞧不起 Java,因为太嗦。写了一段时间 PHP,回来捡起 Java,才知道自己当初还是太年轻,代码量一大,才知道 Java 的好。 |
![]() | 61 EscYezi 2019-03-03 03:28:10 +08:00 via iPhone @zhazi #58 用 Kotlin 举个简单的例子: fun f(i: Int, s: String?): String { return s ?: when (i) { 1 -> "one" 2 -> "two" 3 -> "three" else -> "unknown" } } 同样的功能用 Java 实现一下试试( |
![]() | 62 KasuganoSoras 2019-03-03 06:30:42 +08:00 @EscYezi #61 <?php function f($i) { $list = Array("one","two","three"); return isset($list[$i]) ? $list[$i] : "unknown"; } (笑 |
![]() | 63 KasuganoSoras 2019-03-03 06:36:50 +08:00 @EscYezi 忘了还有空指针判断 <?php function f($i, $s) { $list = Array("one","two","three"); return $s == null ? isset($list[$i-1]) ? $list[$i-1] : "unknown" : $s; } |
![]() | 64 hasunday 2019-03-03 06:37:51 +08:00 via iPhone 日常引战。lz 不想学 java,可以学 go scala |
![]() | 65 SpiderXiantang 2019-03-03 08:00:32 +08:00 via Android java 就是为了简化工程复杂度而生的 |
67 13160919135 2019-03-03 08:36:26 +08:00 生态好,太多公司用,不学不好找工作。虽然我也认为这个语言很垃圾 |
![]() | 68 cuebyte 2019-03-03 08:41:37 +08:00 得是因用到正的工具,sdkman 推主。 另外,各 SSM/SSH 配置的粹是 legacy,用上 spring boot 就爽快多了。 Java 除了 NullPointerException 以外大毛病,可以通 lombok 或者 Kotlin 消除,且其他言也有。 如果得文件大,Jigsaw 迎你。 |
![]() | 69 cuebyte 2019-03-03 08:45:49 +08:00 |
![]() | 70 woscaizi 2019-03-03 09:42:56 +08:00 via iPhone @EscYezi 老铁,是不是查表法更优雅? kotlin 确实很简约,不过 java 的很多代码可以用 idea 来生成啊。 |
![]() | 71 crack105 2019-03-03 09:43:19 +08:00 IntelliJ IDEA 一直爽 |
72 dbpe 2019-03-03 09:50:08 +08:00 动态语言一时爽...重构火葬场... |
![]() | 74 abcbuzhiming 2019-03-03 10:01:41 +08:00 @EscYezi 我也一样,只有在静态语言写过一段时间回见,跳到动态语言后,被动态语言的优点和缺陷都洗礼过,才知道 Java (静态语言有类型检查)的好。我现在基本不考虑任何没有类型检查的语言写项目 |
![]() | 75 k8ser 2019-03-03 10:25:41 +08:00 简单的例子,代码水平不高的时候,python 里面一个函数想返回啥返回啥,一时爽了,后面维护起来跟坨屎一样。 |
![]() | 76 Allianzcortex 2019-03-03 10:53:00 +08:00 我也曾经有同样的想法并且中二到发朋友圈长篇大论说这个,真想捶死自己....楼上的很多回复让我想起了之前看有人发过 Pornhub 的面经, [Manager 问了一些基础的问题,C++和 Java 的区别,多线程,垃圾回收,然后问了一个项目。大约半个小时。他们组主要是用 Go 和 Java] ,Java 和 Go 果然是未来的趋势 |
77 lihongjie0209 2019-03-03 11:04:37 +08:00 环境配置 复杂??????????? 还有比 java 环境配置简单的嘛???? |
![]() | 78 sonyxperia 2019-03-03 11:07:14 +08:00 可能他们不觉得 Java 糟糕吧 |
80 gam2046 2019-03-03 11:33:05 +08:00 Java 从业者,同样觉得 Java 有些方面有点糟糕,主要原因是历史包袱太过沉重,在这种古老语言上,Java 的向下兼容做的算是不错了。相比更古老一点的 Python,直接语法大改了。对标 C,Java 的入门门槛真的低了很多。其他与 Java 同时代的编程语言,目前还在使用的,基本上都已经变成特定场景下的特定编程语言。 但是与同类型的.Net 相比,毕竟.Net 出生晚,没有那么多需要顾及的历史包袱。.Net 优越性比 Java 高不少。不过反过来说,因为 Java 历史悠久,因此大量的第三方轮子很多,并不需要自己造,也就是所谓的生态好很多。 单纯从语言上来讲,我自己觉得.Net 比 Java 好的很多。Java 那个基于类型擦除实现的假泛型,就搞的很头痛。 |
81 tairan2006 2019-03-03 12:32:02 +08:00 ![]() Java 的优越性在生态上,语法简单也是优势。但是又臭又长,包特别大,泛型实现垃圾。 .Net Core 语法好,生态差。 Golang 语法简单,生态也好,但是没有泛型,抽象能力差。 所以 Go2 才是最好的选择(还没有 |
![]() | 82 gamexg 2019-03-03 14:18:04 +08:00 在 C#、go 还没有出来时,java 基本是大型项目最好的选择吧。 c/c++ 的内存管理是个大问题,即使顶级公司一样会出现空指针、内存泄漏等问题。 php、python 等不是静态类型语言,小项目没什么问题,大型项目真的是重构火葬场。 java 的槽点大概是写起来非常嗦,非 java 程序员,记得一次临时用 java,发一个 http 请求用了 30 多行。但是这个问题并不是无解,使用第三方库后一个 http 请求几行就能够完成。 .net 系列现在的确挺好。但是 x 年前,.net 只能在 windows 下运行。第三方开源尝试实现 linux 支持,结果被微软威胁,我记得开源版被迫停止开发并执行代码审计移除可能侵权的代码。现在微软倒是开始拥抱开源了,但是黑历史在那里。 go 太年轻了,生态倒是还好,但是开发人员招不到(付费简历库全省居然只有 3 份简历...)。还有说不支持泛型是个问题的,不过我感觉无泛型支持问题倒是不大,也就个别时候多写点代码吧。 |
83 wangxiaoaer 2019-03-03 14:31:46 +08:00 @tairan2006 #80 哈哈哈,不知道有生之年能不能等到 go 的泛型和方便的二进制发布以及包管理,目前的 gomod 感觉用起来还是不爽,总感觉一个包管理直接引用源代码很不灵活。 |
84 Cbdy 2019-03-03 14:34:10 +08:00 via Android |
85 wangxiaoaer 2019-03-03 14:41:39 +08:00 @Cbdy #83 如果作为 DSL 的话,那就没必要跟 java c#比较了,但现在看来,远远不是只作为 DSL 的存在。 所以“ go 是 c++的升级版”这种观点,我觉得在现阶段还是比较稳妥的一种说法。目前跟 java 还是没法比。 |
86 wangxiaoaer 2019-03-03 14:47:28 +08:00 @lhx2008 #11 我也觉得 java 不管是从可读性还是编码速度都很好,即使可能会有乱用设计模式绕来绕去,但是起码读起来很清晰,写起来也没有各种千奇百怪的符号。 最起码,除了泛型的 < > 和 lambda 的 => 其他都不需要组合键。 |
87 Cbdy 2019-03-03 15:17:31 +08:00 via Android @wangxiaoaer C 语言我信,C++就算了 |
89 closedevice 2019-03-03 20:26:40 +08:00 忌讳半瓶子水的时候发表任何语言的评论,语言的好坏,得先等你深入了解并实战几门语言之后,有更好的结论.上来就来各个 XXXX 语言不好,你得举出各种同样情况的对比案例,然后才能进一步分析吧 |
90 sweetx523 2019-03-03 20:31:41 +08:00 半吊子水的学生==。 |
91 ifxo 2019-03-03 20:32:55 +08:00 主要是用的人多了,没人敢说它不行,好比皇帝的新衣,你会说自己傻吗 |
92 yingfengi 2019-03-04 08:54:04 +08:00 via Android 生态是一切。 |
93 haon 2019-03-04 09:02:51 +08:00 借楼问一下 go 的生态好在哪里 |