琐碎的想法(三)对Java的批评的看法
编写本文的目的
在大环境下,Java是一个饱受争议的语言,一方面在工程上它的流行程度非常高;另一方面,越是资深的软件工程师就越容易对这个语言感到不满。
在这种情况下,博主希望每一个Java程序员能够耐下心来好好看看对于Java的批评,独立思考。
P.S.如果你认为它优秀, 一门优秀的编程语言应该是经得起时间的检验,也经得起批评的。
PP.S.如果你认为它不足,需要合理地黑,而不是人云亦云。
对Java的经典批评
译文《Java语言学校的危险性(译文) - 阮一峰的网络日志》
本文批评了一种现象,美国一些大学将Java作为入门的编程语言,让很多连指针和递归都不理解且不懂编程的毕业生进入了编程的市场(Java比较简单,无法区分一个软件工程师的优劣)。《Why Java Sucks and C# Rocks (1):比较的意义与目的》
本系列文章的意义在于通过和C#编程语言的对比,劝导Java程序员转向Scala等其他JVM平台上的语言(尤其指出了某些特性不仅仅是缩减代码长度,更是它们从设计到使用上更符合逻辑,直觉)。
个人的看法
从理性上,博主非常认同上述文章的观点,但是主观情感上,Java是自身第一个深入学习的编程语言,主观上一定会有所倾向。
一开始,想从下面几个角度辩解,
- Java有些蹩脚的地方是在于对之前版本的兼容,这主要是取舍问题。
- Java的亮点在于JVM,而很多文章基本不谈。
- Java的设计问题在新版本后正一点点被弥补,可以期待Java11今后的发展。
- 在工程上,的确Java的生态会比其他的要好一些。
...
但是在博主读了下面这篇文章《122. 十年学会编程》后,释然了。
要成为一个真正的编程人员,只会一门编程语言是绝对不够的。
是一个Java开发者,并不意味着你放弃了其他编程语言。这本来就是一个非零和博弈。
为什么你不去学习一下新的编程语言呢?
如果你觉得有一些道理,那么从现在开始吧!
琐碎的想法(三)对Java的批评的看法的更多相关文章
- AVL树(三)之 Java的实现
概要 前面分别介绍了AVL树"C语言版本"和"C++版本",本章介绍AVL树的Java实现版本,它的算法与C语言和C++版本一样.内容包括:1. AVL树的介绍 ...
- 二叉查找树(三)之 Java的实现
概要 在前面分别介绍了"二叉查找树的相关理论知识,然后给出了二叉查找树的C和C++实现版本".这一章写一写二叉查找树的Java实现版本. 目录 1. 二叉树查找树2. 二叉查找树的 ...
- 伸展树(三)之 Java的实现
概要 前面分别通过C和C++实现了伸展树,本章给出伸展树的Java版本.基本算法和原理都与前两章一样.1. 伸展树的介绍2. 伸展树的Java实现(完整源码)3. 伸展树的Java测试程序 转载请注明 ...
- 二叉堆(三)之 Java的实现
概要 前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本.还是那句话,它们的原理一样,择其一了解即可. 目录1. 二叉堆的介绍2. 二叉堆的图文解析3. 二叉堆的Java实现(完整源码) ...
- 左倾堆(三)之 Java的实现
概要 前面分别通过C和C++实现了左倾堆,本章给出左倾堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 左倾堆的介绍2. 左倾堆的图文解析3. 左倾堆的Java实现(完整 ...
- 斐波那契堆(三)之 Java的实现
概要 前面分别通过C和C++实现了斐波那契堆,本章给出斐波那契堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆 ...
- (第三章)Java内存模型(下)
一.happens-before happens-before是JMM最核心的概念.对于Java程序员来说,理解happens-before是理解JMM的关键. 1.1 JMM的设计 从JMM设计者的 ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
随机推荐
- ubuntu20部署php-swoole开发环境
第1步:安装依赖 add-apt-repository ppa:ondrej/php apt install php-dev 第2步:编译安卓swoole wget https://codeload. ...
- CentOS7安装Elasticsearch7
下载地址:https://www.elastic.co/cn/downloads/elasticsearch 使用YUM安装 # 下载并安装公共签名密钥 rpm --import https://ar ...
- java: Compilation failed: internal java compiler error
IDEA 编译项目出现java: Compilation failed: internal java compiler error 原因: 项目Java版本不一致 解决办法: 点击FIle> ...
- FPT: Feature Pyramid Transfomer
导言: 本文介绍了一个在空间和尺度上全活跃特征交互(fully active feature interaction across both space and scales)的特征金字塔transf ...
- Map集合,Map常用子类
Map 集合 1,Collection中的集合,元素是孤立的,向季和忠储存的元素采用一个元素方式储存 2,Map中的集合,元素是成对存在的,每个元素中的集合称为双列集合 3,Collection中的集 ...
- CI持续集成理论知识
(1)什么是CI What is CI? CI就是持续集成,持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过 ...
- 一致性HASH算法在分布式应用场景使用
其实不管redis还好,Mysql也好 这种数据存储介质,在分布式场景中都存在共同问题:即集群场景下服务路由.比如redis集群场景下,原本我们分3主3从部署.但万一有一天出现访问量暴增或其中一台机器 ...
- Kubernetes官方java客户端之四:内部应用
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 加薪攻略之UI组件库实践—storybook
目录 加薪攻略之UI组件库实践-storybook 一.业务背景 二.选用方案 三.引入分析 项目结构 项目效果 四.实现步骤 1.添加依赖 2.添加npm执行脚本 3.添加配置文件 4.添加必要的w ...
- 洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
题目描述 神犇 \(Aleph\) 在 \(SDOI\ Round2\) 前立了一个 \(flag\):如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇 \(Aleph\) 的实力,他轻松地进了山 ...