码出高效:Java开发手册-第1章(9)

简介: 本书源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。本书以实战为中心,以新颖的角度全面阐述面向对象理论,逐步深入地探索怎样成为一位优秀开发工程师。比如:如何驾轻就熟地使用各类集合框架;如何得心应手地处理高并发多线程问题;如何顺其自然地写出可读性强、可维护性好的优雅代码。 本书旁征博引、文风轻松,秉持“图胜于表,表胜于言”的理念,深入浅出地将计算机基础、面向对象思想、JVM探源、数据结构与集合、并发与多线程、单元测试等知识客观、立体地呈现出来。紧扣学以致用......

1.7 编程语言的发展

      编程语言以既定的语法规则,使用一组自定义的特定标记字符流或关键字,实现基本的顺序、条件、循环处理,这样的逻辑通过编译或解释形成计算机底层硬件可以执行的一系列指令,来自动化执行某种逻辑计算或实现某种需求。计算机语言诞生的历史虽然很短,可是已经产生了上千种编程语言。为什么编程语言如此之多?其实这反映了一种生物多样化的自然属性。随着时代的进步,编程语言就像一棵树,树根是0 与1,越往上生长树枝越多,这些树枝快速产生的原因和计算机技术应用的快速蓬勃发展有关。计算机从单机时代,到网络时代、移动时代、云计算,直至目前的AI时代,总有一批编程语言随着大潮退去,又有一批新的语言随着浪潮诞生。从编程语言类型的角度,可划分为三个编程语言时代:

第一代,机器语言时代。机器语言的编程就是单纯的0 与1 的二进制流输入。机器语言的优点是可以直接对芯片进行指令操作,最大的问题也来源于此。换一套不同的硬件环境,机器语言几乎100% 卡壳。另外,指令不利于记忆,语言的生产率非常低。汇编语言本质上与机器语言处于同一个时代,只是在与机器指令对应的字符编程方式,以及助记符之上增加了编译功能。

      第二代,高级语言时代。高级语言正是当前百花齐放的时代。正因为机器语言面向机器编程,理解度差,复用度低。无论是面向过程,还是面向对象,都是面向问题程,不是描述计算机具体应该执行什么样的分步操作,而是更倾向于描述需要解决的问题本身。面向过程更多描述的是解决问题的步骤,在实际步骤中协调各个参与方达成最后的目标;面向对象是抽象问题各方的参与者,包括领域对象、问题域、运行环境等,然后定义各个参与者的属性与行为,最后合力解决问题。高级语言时代,尤其是C、C++、Java、Python 等这些工业级语言的诞生和发展,使计算机行业得到极大的发展,推动了互联网和人工智能的快速发展。

第三代,自然语言时代。自然语言编程是面向思维或模糊语义的编程方式,软件生产只是思考问题本身的存在性和合理性,而不是定义问题的解决方式和解决步骤。这个时代很遥远,但很唯美。相信随着AI 科技的不断进步,一定会实现。

      存在即是合理,本节并非讨论编程语言的高低优劣;对编程语言历史的回顾,只是让我们更加热爱从事的编程事业,了解那些大师们的伟大,体验语言背后的魅力与时代特征。

      早在1936 年,图灵在《论数字计算在决断难题中的应用》论文中提出了图灵机的设想。图灵机假想有一条无限长的纸带,纸带上有一系列带有某种信息的方格,机器会根据当前状态和控制规则,处理当前方格上的信息,然后纸带移动或跳转一格。编写这个纸带的过程就是最初的编程雏形,形成的规则来操控图灵机进行顺序读取,或者直接跳至某个方格,在另一条纸带上写入某些信息。

      冯·诺依曼被称为“计算机之父”,从世界上第一台计算机ENIAC到现在的服务器、笔记本、手机,基本上沿用了他的计算机结构设计理念。它根据电子元件双稳工作的特点,从简化机器逻辑线路的角度出发,明确提出了二进制理论,采用0 与1 代表十进制数值;提出计算机的基本工作原理是存储数据、处理数据、相关控制,定义出新一代机器的雏形,即分成五个部分,运算器、控制器、存储器、输入设备和输出设备。任何程序要想运行都需要加载到内部存储器(内存)中,在内存中才有资格和运算器、控制器进行对话,执行逻辑运算和数据处理,计算机雏形如图1-34 所示。

1.jpg

图1-34 计算机的基本结构


      1946 年,按此设想的第一台计算机诞生,从此自动化处理的场景越来越多。计算机能够自动化处理的事情是需要以它可以理解的方式进行设计并录入的,这个过程称为编码。计算机只能消化两种录入的信息:0 或1。在机器语言编程的时代,编码就是这样枯燥的0 与1 的数据流录入。汇编语言以方便记忆的代号表示0 与1 的指令流,在执行时,再反向转成0 或1 的二进制流,这个过程称为编程。不再直接编写0 或1的机器码指令,而是以一定的方式组织成程序。至此,可以阅读的代码开始出现。到了20 世纪70 年代,丹尼斯·里奇设计的C 语言在BCPL 语言基础上诞生。UNIX 和Linux 系统成功推动了C语言的普及,至今C语言仍然是TOP 的主流语言,在操作系统、底层编译、硬件设备上依然发挥着不可替代的价值。C 语言是高级语言时代中的低级语言,低级的意思是更加贴近于硬件底层。这类低级语言使编程者有机会深入了解底层硬件,后续的众多高级语言的编译器本身就是由C 语言编写的。

      后来出现的一种高级语言,火了一个岛屿和一种饮料:爪哇岛和咖啡,即Java语言。它的校验首字段即为十六进制的cafe babe,诉说着与咖啡的不解之缘,这是第一个真正面向对象的语言。

      据不完全统计,当前编程语言超过1000 种,优秀的程序员至少需要掌握3 门语言,这有助于知晓不同语言的各自特性,更重要的是洞悉语言的共性和编程语言思想,跨越语言的抽象思维和架构掌控力。但是掌握不等于精通,真正的大师,需要醉心在某种语言,不断研究、不断打磨、不断回炉,才能达到炉火纯青、登峰造极的境界。我们写的每一行代码都是站在巨人的肩膀上,使我们看得更远。虽然任何编程语言的结构都是顺序、条件、循环,任何编程语言的本质都是输入与输出,但是0 与1 的世界一定会因为编程而变得更加智能、更加美好。

相关文章
|
4月前
|
小程序 JavaScript Java
【资料】阿里Java开发手册
本文是关于分享阿里Java开发手册资源及促进编程规范学习的指南。作者以个人经历引入,讲述了公司领导通过细致讲解阿里Java开发手册,提升了团队对代码质量和编程规范的认识
892 0
【资料】阿里Java开发手册
|
4月前
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。
|
7月前
|
Java
电子书阅读分享《Java开发手册(嵩山版)》
电子书阅读分享《Java开发手册(嵩山版)》
|
7月前
|
Java
Java开发手册之控制语句,2024最新Java笔经
Java开发手册之控制语句,2024最新Java笔经
|
7月前
|
Java
电子书阅读分享《Java开发手册(泰山版)》
电子书阅读分享《Java开发手册(泰山版)》
电子书阅读分享《Java开发手册(泰山版)》
|
7月前
|
SQL Java API
《Java开发手册灵魂13问》正式上线,带你剖析阿里巴巴的开发细节
一线大厂怎么用Java?看阿里技术专家给你分析!《〈Java开发手册(泰山版)〉灵魂13问》电子书正式上线带你剖析阿里巴巴一线团队开发思维。
|
Java Apache Spring
Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache PropertyUtils 5、Dozer 那么,我们到底应该选择哪种工具类更加合适呢?为什么Java开发手册中提到禁止使用Apache BeanUtils呢
Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache PropertyUtils 5、Dozer 那么,我们到底应该选择哪种工具类更加合适呢?为什么Java开发手册中提到禁止使用Apache BeanUtils呢
106 0
|
14天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
5天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
4天前
|
安全 Java 开发者
Java中的多线程编程:从基础到实践
本文深入探讨了Java多线程编程的核心概念和实践技巧,旨在帮助读者理解多线程的工作原理,掌握线程的创建、管理和同步机制。通过具体示例和最佳实践,本文展示了如何在Java应用中有效地利用多线程技术,提高程序性能和响应速度。
28 1