Java是不是一门简单易学的、易上手的编程语言?

作为一个超过10年以上工作经验的Java开发者,我觉得应该可以来回答一下。

1

首先说结论:Java绝对不是最容易学或者最容易上手的语言。

我们稍微观察最近几年开始大规模进入大家实现的几门新兴编程语言,包括Python,包括苹果主推的Swift等等,它们在宣传初期都不约而同的喜欢怼一下Java,并且理由出奇一致:

我们只需要一句话就能写出hello world,但是Java需要定义类,定义方法,在方法内写输出,然后创建类的对象,再调用方法,实现输出。所以你看,我们这门语言多么简洁和高效。

我想这也是很多新人不喜欢Java的原因。但是我们不妨深究一下Java为什么在最初的时候就被设计成这样,顺便也能回答题主的问题。

2

没错,Java最初的理念是脱胎于C++的。C++最大的成功之处是它是一门面向对象的语言。什么是面向对象?万事万物皆对象。用面向对象的思想能够在最大程度上模拟真实的现实世界。如果我们把“人”看成一个“类”,那么你我他、小张小李、隔壁练腰的老王都是这个类的独立“对象”。

身高肤色腿长就全都是这些“对象”的“属性”,而吃饭睡觉工作等等行为就都是这些“对象”的“方法”——方法用来操控对象的属性,从而使对象做出一定的行为。众多对象的行为相互影响,就能做出更加惊天动地的事情——马爸爸这个“人类”的“对象”,用“说话演讲”这一方法,成功影响了十八罗汉们的“工作”这一方法,并提升了他们的“努力值”属性,最终造就了现在的阿里帝国。

这就和我们玩升级打怪的游戏一样,对吧。

3

而C++又是来源于C语言的。C语言没有面向对象的概念,是一门纯粹的“面向过程”的编程语言。我相信很多新手对“面向过程”这个概念都不甚了解。实际上在早期,编程的世界全部都是面向过程的,人们用程序语言直接去处理业务逻辑。

你说需要在寄存器里放进去一个变量?好吧,我先看一下寄存器是否还有空间,如果没有的话,要看看哪些不再使用了,可以取出来,腾出空间,再把新变量放进去。这些操作在面向过程的编程思想中,每一次操作都可以只对应一条编程语句或是一小段简单的逻辑块。

如何把大象放进冰箱?打开冰箱门,把大象放进去,关上冰箱门——这就是面向过程的思维方式,更直接了当。

C语言是面向过程的语言,C++提出了面向对象的概念,但是仍然保留了面向过程的设计思想,而Java是纯粹的面向对象语言,没有面向过程的踪影了,它封装了它们,程序员不再那么容易看得到了。

这也是为什么C++和Java在面世之初,被人们称为“高级编程语言”的原因之一。

4

而前面所提到的一些新兴编程语言,它们所标榜的高效和简洁,其实就是典型的面向过程的编程思想。这也是新手们更容易接受和喜闻乐见的东西——简洁——别忘了推广语言也是需要宣传的,某些时候这真的只是宣传口径而已。

但是你会发现一个很有意思的地方,如果你去苹果官方的Swift网站查看,会发现苹果仍然将这门语言称为面向对象的编程语言,事实上确实它也支持面向对象的编程方式——尽管你能在它的很多官方文档里看到大量的面向过程的编程思想。

想想为什么这些语言一边标榜自己比Java更简洁,又要一边说自己是面向对象语言呢,这不是左右互搏么。

其实是面向对象的方式虽然看起来冗长复杂,但是它更接近人类的自然思维模式,这一点如果不能深刻理解面向对象概念的话,是很难体会的。但是它确实在软件领域能够解决很多更大规模和复杂的事情——数一数有多少互联网巨头在发展之初都是使用更简洁的编程语言,但最后发展到一定的规模后,都不约而同在底层基础架构层面转向了Java吧,他们应该没有串通好或者被Java收买。

其实编程只是软件工程工作过程中的一个环节,而语言又只是编程的工具,没有好坏之分,只有合适不合适。

新人出于本能选择更简单更容易上手的语言是很正常的,但是想要在这一行业内做出成绩来是需要巨大的付出的,但这已经和语言无关了。

注释:内容来自微信公众号程序员就业show

java是最简单的语言吗_Java不是最简单的编程语言,可为什么全世界都在用?相关推荐

  1. java练手代码大全手机版_java循环练习的简单代码实例

    ★打印九九乘法表 public class TestDemo { public static void main(String[] args){ for(int b=1;b<10;b++){ f ...

  2. 描述常见的计算机硬件系统的构成,用简单的语言描述计算机硬件系统构成

    用简单的语言描述计算机硬件系统构成 用简单的语言描述计算机硬件系统构成 一.计算机硬件系统概述 所谓计算机硬件系统,就是指构成计算机看得见的,摸得着的实际物理设备. 常见的计算机硬件组成主要由下图各部 ...

  3. 简单的java图形_简单图形的输出_Java语言程

    简单图形的输出_Java语言程 3.5.4 简单图形的输出 [例3-26] 编程显示以下图形(共N行,N由键盘输入). 程序运行结果:略. 分析与思考:(1)设N=5 第1行 4个空格=5-1 1个& ...

  4. java语言特点_Java语言特点及分析

    Java语言特点及分析 Java是一门面向对象编程语言. (Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程.) Java具有简单性.面向 ...

  5. 雷卷 java,阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性...

    阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性 发布时间:2020-07-04 08:25:36 来源:51CTO 阅读:315 作者:阿里系统软件技术 栏目:云计算 作者 ...

  6. “Java是编译执行的语言”这句话对吗?

    现在让你谈谈对Java平台的理解,你是否会感觉内容过于庞大?这个问题是比较宽泛的,Java发展到现在已经不仅仅是语言这么简单了,Java平台涉及的,包括但不仅限于下面提到的这些内容: Java语言本身 ...

  7. java简单编译器源代码_25行代码实现一个简单的编译器

    起因 <25行JavaScript语句实现一个简单的编译器>实现的是一个简单到不能再简单的玩具的玩具,他的魔法是函数式编程简化了js代码.java 8提供了函数式编程的支持,昨晚脑子抽风突 ...

  8. python语言是编译性语音_最强编程语言 Java 和最受欢迎之 Python 的巅峰对决

    作为程序员们的看家利器之编程语言,倘若技术开发者对其掌握得越深则对自身职业生涯越有益处,然随着技术的更新变革,我们在日常使用不单单只会用到一门编程语言,那么究竟该如何选择一门新的语言来上手?本文中,将 ...

  9. Java语言跨平台性质的优点和缺点_机器人热门编程语言及优缺点分析

    机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同 ...

最新文章

  1. python语言变量命名规则有什-以下选项中,符合Python语言变量命名规则的是_学小易找答案...
  2. 程序人生系列之新闻发布系统 在网站部署经验分享
  3. PHP-数组小记(一)
  4. flask python web开发 可视化开发_Python + Flask 项目开发实践系列六
  5. Android系统自带样式(@android:style/)
  6. 【Python】校选课 第四周作业 py3.0
  7. c语言试卷浙江理工大学杀人案件追踪,浙江理工大学c语言期末考试模拟试卷6 .pdf...
  8. 每扇区2048字节的U盘乱码的数据恢复
  9. iOS 音乐播放器之锁屏效果+歌词解析
  10. js字符串与数字比较大小
  11. 数据分析学习总结笔记09:文本分析
  12. python 多行注释语法_Python 注释-Python注释多行代码-Python注释符-python多行注释-嗨客网...
  13. 英语入门学习笔记2:英语语法知识树
  14. 恒流源差分放大电路静态分析_多级放大电路以及差分放大电路
  15. dojo基础:dojo/request
  16. 深度学习—利用TensorFlow2实现狗狗品种品种(DenseNet121实现)
  17. php把图片处理成圆形透明的图片,做圆形透明头像【微信头像】
  18. 最近比较火的palywright了解一下?
  19. 成都盛迈坤电商:提高店铺商品评分的方法
  20. Mac Edge 浏览器开启几秒后自动关闭问题

热门文章

  1. Linux小小白入门教程(一):Linux简介
  2. 万里挑一的小众APP,分享给你啦
  3. 达梦在湖北银行新核心业务系统的应用实践
  4. js-设计并实现 Promise.race()
  5. gee学习笔记 第二天
  6. 如何将ZAP加入到FoxyProxy代理工具
  7. 10.1 LED灯实验(A7核和M4核)
  8. 从零单刷Leetcode(JAVA描述)—— 557. 反转字符串中的单词 III
  9. select语句的语法顺序和执行顺序
  10. 内边距、边框撑大盒子问题