(转自http://c.biancheng.net/view/2816.html)

本节简单的给大家说一说 java和C的关系和发展历程。

首先呢,大家知道,编程语言的发展,其实是经过了三个比较大的阶段阶段,那就是:汇编语言–>  面向过程语言 ->面向对象语言。

汇编语言由于其难度太大,需要记忆的语句命令过多,但是其对计算机底层的控制和操作能力还是很强大的,由于学习成本太大,效率较低,已经不作为现在计算机系的重点教程了。

C语言可以作为面向过程语言的一种代表,算是一种比较纯正的面向过程语言了。而面向过程的语言也称为结构化程序设计语言,是高级语言的一种。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数则用于完成这些任务,解决问题的焦点集中于函数。所以说C语言的基本单位也是函数。

面向过程的概念最早由 E.W.Dijikstra 在 1965 年提出,它的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即任何程序都可由顺序、选择(if-else、switch-case)、循环(for、while、do-while)三种基本控制结构构造。

面向过程语言的最大的优势就是适合模块化设计。一个程序可以分解为多个函数,通过函数调用过程,使得可以用一条函数调用语句实现函数所完成的复杂运算过程。

这种方法使得可以将一个复杂问题的解决过程分解为较为简单的几个子问题的解决过程:

  • 首先通过编写函数用语句描述解决每一个子问题的解决过程的步骤;
  • 然后可以用一条函数凋用语句描述解决某个予问题的过程的步骤;
  • 最后在一个主程序中用多条函数调用语句描述解决分解为多个子问题的复杂问题的解决过程的步骤。

但是当我们在开发新系统诸如此类的问题时,我们开始肯定不清楚这个系统完工后的架构是怎么样的,所以说,利用模块化设计的语言,就很难对开发出来的系统进行调整(或者工作量会很大)。在此类诸多问题的压力下,面向对象语言便体现出了其独一无二的优势。

面向对象语言(OOP, Object-Oriented Programming)是一类以对象作为基本程序结构单位的程序设计语言。Java 便就是面向对象编程中的的一种代表性语言。

C语言、C++和Java的诞生时间
C语言 19 世纪 70 年代初问世,1978 年美国电话电报公司(AT&T)贝尔实验室正式发布C语言。
C++ 在C基础上,1983 年贝尔实验室推出了 C++。
Java 由 Sun 公司于 1995 年 5 月推出。

其实最早,C++ 相对于C语言的基础上就添加了面向对象和模块的思想,这也可以理解成 C++ 中两个加号的来历。

然而,C++ 在面向对象上做的并不是太好,比如 C++ 支持多继承,多继承会引发不确定性(这个后面谈到继承大家就知道了)。

再如,C++ 还支持指针,指针直接对内存底层操作,虽然效率高,危险系数却非常高。例如,一个简单的病毒程序就可以靠指针完成:你通过一个程序的中给指针随机赋值,能够获取到访问不属于本程序执行空间的其他空间的权限,那么这也就是一个计算机病毒。(当然,真正的病毒不可能那么简单,但这是基本特性)。所以后来的 Java 在 C++ 的基础上移除了指针,增加了引用,提高了安全性。

C++ 中,假如你写同样一个程序,在 Java 里面会报错,而在 C++ 语言里面是不会报错的。为什么?

因为 C/C++ 语言设计的思想是:你想怎么写程序就怎么写,只要你的这种写法错得不是很离谱,就认为你这么写有特殊的含义,可以通过。但 Java 不行:只要你这么写有歧义,或者说这样写不太好,那么它都会报错。

比如 C++ 中你可以将一个浮点型数据赋给一个整型变量,编译时只会警告,因为会丢失精度,但是在 Java 中这样写就会报错,它在语法上就禁止你这样写。这就是不同的语言对同样一个问题有不同的理解和处理方式。

由于 C++ 中大大小小的问题会导致不安全性,所以就在 C++ 的基础上,取其精华,去其糟粕,便形成了早期的 Java 语言。直到现在,Java 又多了很多新的特性,比如说集合,反射,泛型,Lambda 表达式等等。

正因为 C -> C++ -> Java 的发展历史,使得 Java 在一定程度上继承了多数C语言的语法,但又有一定的改变。

转载于:https://www.cnblogs.com/Fingerprint/p/11214298.html

Java和C的关系及发展历程相关推荐

  1. 从Java EE到Jakarta EE的发展历程

    目录 ✍前言 JDK发展简史 什么是Java EE? Java EE发展史 补充:什么是Eclipse基金会 有Java EE SDK吗? 什么是Jakarta EE Jakarta EE发展史 一站 ...

  2. java development kie_Java Development Kit (JDK) 发展历程 及新特性

    "JDK1.5"(开发代号猛虎)的新特性 1.泛型(Generic) C++通过模板技术 可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能.一个集合可以放任何类型 ...

  3. 浅谈java发展历程以及java特点

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Java简述: java的发展历程: java的特点: Java的错误观点纠正: 总结: Java简述: java是面向对象 ...

  4. java语言发展历程

        20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒.面包烤箱.移动电话等)的智能 ...

  5. java 架构发展历史_Java架构发展历程与Spring简介

    一.计算机架构发展历程 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 网站应用的演进 单一应 ...

  6. 从Java EE到Jakarta EE,企业版Java的发展历程

    眼看他起高楼,眼看他宴宾客,眼看他楼塌了. 本文已被https://yourbatman.cn收录:程序员专用网盘https://wangpan.yourbatman.cn:公号后台回复"专 ...

  7. JavaSE入门0之java起源与发展历程

    JavaSE入门0之java起源与发展历程 文章目录 JavaSE入门0之java起源与发展历程 前言 1.Java的起源 2.Java和互联网 3.java历史 4.java语言特点 5.java应 ...

  8. Java发展历程时间线

    前言 世界上并没有完美的程序,因为写程序本来就是一个不断追求完美的过程.同样没有一门语言在一诞生就是完美的,不变的唯有变化.Java诞生至今已经不仅仅是一门语言,背后所涵盖的是一个庞大的技术体系. 网 ...

  9. java概述,发展历程

    1. java概述 首先对于刚刚接触java的小白来说,可能连java是什么,为什么叫这么名字都不知道.其实,Java语言是有个曾用名的~叫Oak,而且起这个名字的时候也是很随心的,只是因为看到了窗口 ...

最新文章

  1. 使用POI创建word表格-在表格单元格中创建子表格
  2. 【leetcode】987. Vertical Order Traversal of a Binary Tree
  3. java线程 打印_java多线程实现 5秒一次打印当前时间
  4. 关于web开发的评论思考
  5. MagicDraw UML 16.8 安装教程(2)-破解补丁
  6. matlab 灰度图像矩阵,MatLab矩阵运算——图像灰度化
  7. 2021热门手机制作表格的软件
  8. Python文件去重代码
  9. 苹果AppId登录注册
  10. Name was not previously introduced as per JSP.5.3的解决办法
  11. 全球及中国建筑弹性体行业发展形势及竞争前景调研报告2022-2027年
  12. GPU accelerated TensorFlow Lite / TensorRT applications - 3D Handpose project(Part A)项目简介
  13. SPSS学习笔记——验证性因子分析
  14. ubuntu下打乱txt文件行序(搬运)批量修改文件名
  15. STM32F103输出PWM
  16. erp oracle mrp,Oracle_ERP_MRP培训.ppt
  17. AndroidStudio_安卓原生开发_apk在线升级_实现安装未知来源应用_亲测可用---Android原生开发工作笔记153
  18. aaPanel安装教程——宝塔面板国际版
  19. CDISC SDTM IG 3.3 版本相比于 3.2版本的变化 (上)
  20. 南京邮电大学电子考研经验

热门文章

  1. linux yum安装python3_在Linux - Centos上安装Python3(上)
  2. plsql保持长连接_知乎千万级高性能长连接网关是如何搭建的
  3. python中凯撒密码_python实现凯撒密码、凯撒加解密算法
  4. python网络爬虫程序_Python写的网络爬虫程序(很简单)
  5. wpf 网易云歌词_网易云音乐粉丝半年涨500万,隔壁老樊为何成今年乐坛最大黑马 | 案例池...
  6. html调用python_HTML网页调用本地Python程序
  7. 同步手机文件到家庭服务器,同步文件到服务器
  8. vscode java settings设置_vscode 搭建java环境
  9. 现在电脑的主流配置_2019~2020电脑配置清单主流配件(下)
  10. java流框架_Java中的IO框架流二