Java帝国的崛起

前言:

分享技术之前先请允许我分享一下黄永玉老先生说过的话:“明确的爱,直接的厌恶,真诚的喜欢。站在太阳下的坦荡,大声无愧地称赞自己。”

编程常识知多少

走进编程的殿堂

高级语言大锅烩

前面写的三篇博客如果有朋友认真的看了,现在对编程和编程语言应该有了一些了解,下面我针对之前介绍过的编程语言来讲一个故事《Java帝国的崛起》

C语言

C国的统治

Long long ago(1972年),在古老的东方有一个国家叫C国(C语言),这个国家很强大,C国国王已经在此统治很长时间了。在C国生活着许多程序员,这些程序员都是国王亲自挑选的,他们的任务就是每天跟电脑交流,保护C国网络安全。要成为C国的程序员要求很高,必须要用C语言跟计算机进行交流,而且必须无条件服从。说起C国的C语言,不得不承认,确实很厉害,随着C语言的诞生和UNIX的问世,无数程序员都疯狂的追求着它们,C语言就跟金庸老先生的武侠小说中的葵花宝典和九阴真经一样,值得天下的程序员为之疯狂。但这种秘籍不是什么人都能修炼的,只有C国国王亲自挑选的程序员才能修炼完整的C语言,好在C国人口众多,学习的人也是不少。

C语言的强大之处在于:贴近硬件、运行极快、效率极高。因此C国的程序员们借助C语言的强大开发了很多软件,比如操作系统、编译器、数据库、网络系统等等吧。物极必反,凡事有利必有弊,学习C语言的程序员很辛苦,学习C语言的程序员们都被套上了两个沉重的枷锁:指针和内存管理。虽然指针无比强大,能直接操作内存,但是C语言却没有提供工具去做越界的检查,导致很多新手程序员轻易犯错。至于内存管理,C语言更是放任:自己分配的空间,自己去释放!更要命的是,这些问题在编译期发现不了,在运行时才会突然暴露,常常让程序员们手忙脚乱,昏天黑地地去调试。可以说C国程序员们的大量时间和宝贵精力都浪费在小心翼翼地处理指针和内存分配上。每个程序员都被这两个东西搞得焦头烂额!

哪有什么岁月安好,只是你没看到C国的程序员负重前行。C国的程序员们除了有指针和内存管理两个枷锁外,还有一点让他们也是苦不堪言,C国国王宣称C语言有可移植性,在一台机器上写的程序,只要在另一台机器上编译就可以了。但事实真的是如此吗,No!C国国王要求程序员们在使用C语言的时候要用标准的C函数库,如果遇到了一些针对特定平台的调用,则需要针对每个平台都写一份!只要有一点点小错误,都会导致编译失败。

说到这,可能你还对C语言的可移植性理解不深,我再来解释一下:

先说源程序,源程序也叫源代码,是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令,在现代程序语言中,源代码可是以书籍或者以磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译。通过编译器完成,如果按照源代码类型区分软件,通常被分为两类,自由软件和非自由软件。

自由软件一般是不仅可以免费得到,而且公开源代码。

非自由软件则是不公开源代码。

了解了上面介绍的这些,我再说C语言的编译过程,假如此时的你刚写完一段输出HelloWorld的代码,其实你写的这段代码就是源程序,现在这个源程序只有你认识,但计算机不认识,要想让计算机认识,就必须把你写的源程序通过编译器编译成计算机能识别的二进制文件。假如现在你的源程序叫Hello.c,如果你编译用的是Windows系统,编译器就会编译出能在Windows系统下能运行的可执行文件Hello.exe。我为什么要强调一下是在Windows系统下能执行,这就是上面我提到的让C国程序员们头疼不已的C语言的可移植性,一般的高级语言如果要在不同的系统平台上运行,至少需要编译成不同的目标代码。C语言亦是如此,在Windows系统下编译的C语言程序,在Linux系统下是不能运行的,当然,在Linux系统下编译的C语言程序在Windows系统下也是不能运行的。所以试着理解一下C国的程序员们吧,秃头也是有原因的。

C++的出现

到了1982年,C国又推出了一门新的语言C++,添加了面向对象的功能,兼容C语言,有静态类型检查,性能也很好。功能越强大,内容越复杂。顾名思义,C++,就是在C语言的基础上增加了一些功能,本身C语言就让C国的程序员们苦不堪言,再加点复杂的。emmmmmmm,表示同情。不要小看C++的复杂,C++虽然在图形领域和游戏上取得了很大的成功,但是很多C国程序员都学不好它,它的很多特性实在是让C国的程序员们无法驾驭,整个C国的程序员们叫苦连天,怀疑人生,对天长叹曰:既出C,何出C++,然后剑光一闪,削发表示反抗,这就是C国有好多秃头的原因之一。

此篇完

写到这已经有两千字了,意犹未尽,考虑到让读者缓解视力疲劳,我决定埋下伏笔,把真正的主人公JAVA留到后面。

欲知后事如何,且看下回讲解。

分享的越多,你的价值增值越大,支持我就让更多的人关注我吧

*****************************************************************************************************

我的博客园地址:https://www.cnblogs.com/zyx110/

【原创声明】此篇为作者原创,未经本人同意不得转载,经本人同意转载请说明出处。

我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,人生赢在转折处,改变从现在开始!

支持我的朋友们记得点波推荐哦,您的肯定就是我前进的动力。

Java匹马行天下之C国程序员的秃头原因的更多相关文章

  1. Java匹马行天下之教你用学汉语式方法学编程语言

    Java匹马行天下之教你用学汉语式方法学编程语言 前言: 前段时间接连更新了带小白从入门到了解的几篇博客: <Java匹马行天下之编程常识知多少> <Java匹马行天下之走进编程的殿 ...

  2. Java匹马行天下之新手学习目录

    Java匹马行天下之新手学习目录 学习路线 [Java匹马行天下——Java学习路线] [Java匹马行天下——开篇学习计划] 基础篇 [Java匹马行天下之学编程的起点——编程常识知多少] [Jav ...

  3. Java匹马行天下之 Java国出了个Java——举国欢庆

    Java帝国的崛起 前言: 看庭前花开花落,宠辱不惊, 望天上云卷云舒,去留无意. 闹心的事儿,选择释怀: 纠缠的人儿,试着放下, 生活其实很美. 心若向阳,就无惧悲伤. 愿你明朗坦荡纵情豁达,有得有 ...

  4. Java匹马行天下之Java帝国的崛起(大结局)

    Java匹马行天下之Java帝国的崛起大结局 前言: [博客*缘] 网络真情伴, 博客友谊连. 笑中藏泪暖中寒. 回想那些悲喜, 苦涩也缠绵. 往事难回首, 新篇染旧言. 世间多少梦能全. 感谢相牵, ...

  5. Java匹马行天下——开篇

    个人感言: 匹马行天下是我高中时候看过一部叫<九鼎记>的小说中的其中一个大章节标题,在整个这一章中,讲的是是主人公滕青山历经艰险,又心如磐石,一心修行,最后巅峰归来的故事.现在回想,依旧心 ...

  6. Java匹马行天下之JavaWeb核心技术——JSP

    JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...

  7. Java匹马行天下之JavaWeb核心技术——JSP(续一)

      十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...

  8. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  9. Java匹马行天下之JavaSE核心技术——异常处理

    Java匹马行天下之JavaSE核心技术——异常处理 异常的简介 在Java中,异常就是Java在编译.运行或运行过程中出现的错误. 程序错误分为三种:编译错误.运行时错误和逻辑错误 编译错误是因为程 ...

随机推荐

  1. 纯数据结构Java实现(4/11)(BST)

    个人感觉,BST(二叉查找树)应该是众多常见树的爸爸,而不是弟弟,尽管相比较而言,它比较简单. 二叉树基础 理论定义,代码定义,满,完全等定义 不同于线性结构,树结构用于存储的话,通常操作效率更高.就 ...

  2. iOS 11 变化

    首先我是开发者,更关心对技术的影响,我又需要关注.学习哪些技术,猫神的文章:http://www.cocoachina.com/ios/20170607/19457.html 介绍了 ******** ...

  3. 【数据结构】9.java源码关于HashTable

    1.hashtable的内部结构 基础存储数据的hash桶由Entry结构的数组存放而entry数据结构,有hash,key和value,还有一个指向下一个节点的引用next对象 这里就和hashma ...

  4. python画混淆矩阵(confusion matrix)

    混淆矩阵(Confusion Matrix),是一种在深度学习中常用的辅助工具,可以让你直观地了解你的模型在哪一类样本里面表现得不是很好. 如上图,我们就可以看到,有一个样本原本是0的,却被预测成了1 ...

  5. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery

    题意略. 思路: 这个题目求的是第一个可行解,由此想到用二分试探的方式来解决. 现在讲讲怎么验证该解是否合理: 先用floyd求出两两之间的最短距离. dp[ i ][ j ]表示,i 到 j 至少要 ...

  6. Leetcode之回溯法专题-212. 单词搜索 II(Word Search II)

    Leetcode之回溯法专题-212. 单词搜索 II(Word Search II) 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单 ...

  7. 一个手写的Vue放大镜,复制即可使用

    一个手写的vue放大镜 组件使用less,请确保已安装loader 本组件为放大镜组件,传参列表为: width: 必传,设置放大镜的宽高(正方形),放大区域等同,放大倍数为2倍 picList:必传 ...

  8. POJ-2387 Til the Cows Come Home ( 最短路 )

    题目链接: http://poj.org/problem?id=2387 Description Bessie is out in the field and wants to get back to ...

  9. atcoder E - Jigsaw(思维)

    题目链接:http://agc017.contest.atcoder.jp/tasks/agc017_e 题解:这题很巧妙运用了cnt[i]抽象的表示了上下互补的状态,最后上面突出的一定要处理完.下面 ...

  10. 牛客小白月赛4 B 博弈论 思维 字符串

    链接:https://www.nowcoder.com/acm/contest/134/B来源:牛客网 题目描述 铁子和顺溜在学习了博弈论的sg函数之后,解决了很多很多博弈题,现在他们遇到了一道难题. ...