第274章 267.c++:动不动就崩溃的脆皮大宝贝
把开发浏览器的任务打包甩给赵文来之后,赵德彬开始投身于Java语言设计工作当中,致力于编写Java的使用手册。
因为Java脱胎于c++,赵德彬直接拿了一本c++的工具书,照葫芦画瓢,以c++为蓝本,将记忆中的Java相关知识给回忆出来。
打个比方:
如果把编程语言视做人类的语言,那么因为c++和Java的相似性,可以一齐划分到中夏文的范畴。
编程语言的操作手册就相当于是字典。
在这种情况下,c++可以视做用文言文写的字典,Java就是用白话文写的字典。
即便是你对于中夏文字和语法烂熟于心,想要凭空把一本字典从头到尾回忆出来,也是一件不太可能的事情,因为这事它“离谱”啊!
但若是你手上有一本文言文词典,那么以这个为参照,不管是回忆,还是自己翻译,都能“靠谱”地得到一个白话文字典。
要写Java的操作手册,赵德彬先要写代码注释和代码规范。
这部分没什么难度,Java的代码与c++差异不太大,两种语言之间主要的区别不在代码上,而是在语法上。
Java语法是Java语言设计的基础,是赵德彬设计发明工作的核心,它是一套规则和指南,告诉计算机如何理解和执行你的Java代码。
举个例子:daqu.org 西瓜小说网
Java语法要求你在每行代码末尾加上分号,这样才能让计算机知道每条代码在哪里结束。
如果开发者忘了加分号,那么就会把计算机给整懵圈了。
赵德彬是中夏国最早一批接触Java的工程师,科研所倒了之后,他去大专教书,就教过Java的课。
前头,赵德彬刚说完“Java里有两种代表结束的符号,一是‘}’大括号,二是‘;’分号”,板书还留在黑板上。
在这种时候,总会有学生走神、摸鱼,或者没注意听。
于是,到了实操阶段,问题就来了。
总会有学生举起手,好学地问道:“赵老师,怎么我的代码跑不起来\/运行结果跟别人的不一样呀?”
这个时候,赵德彬会放下保温杯,双手背在身后,挺着肚子,老神在在地踱到学生身边,裤腰带上的钥匙串随着他的走动哗啦作响。
赵德彬瞥了一眼学生的代码,宛若一名看遍人间疾苦的老中医,心如止水地说道:“每行代码末尾要加分号,你没加分号,判断语句没有起作用。”
所以说,编程语言的语法,是一个至关重要的东西。
要是这玩意写错了,不光别人看不懂代码,计算机也捣鼓不明白。
赵德彬作为Java语言的发明者,他必须要将Java语法设定清楚,确保没有漏洞。
并且,通过语法的设置,赵德彬可以使Java的代码编写更清晰、更有可读性、更容易被理解。
只有这样,后续赵文来开发Java语言的开发平台时,才能让软件在编译代码的过程中,直接把大多数常见的编程错误检测出来。
这样一来,由于Java编程软件可以自动纠错,代码的稳定性和健壮性也随之提升。
通俗来说,就是使用Java的门槛被大大降低了。
不仅用Java编程要比其他语言容易,修改和扩展代码也更方便了。
这个世道,时间就是金钱,软件开发的成本就是在人力资源上,而Java可以缩短写代码和调试时间,并且减少代码的维护成本。
如此一来,Java焉有不火遍全球的道理?
赵德彬正在做的是,在确保Java语法简单,且易于理解、记忆的前提下,定义一系列的内容,比如:定义变量类型、关键字、分隔符、运算符等。
一些c++语法里面常用的、但比较难的东西,赵德彬都给删掉了,就像是:指针、操作符重载、头文件、多重继承这些。
这上面提到的每一个名词,后面都掩藏着无数程序员的血泪。
以老大难的“指针”为例:
这是一个足以让c++菜鸟听了腿肚子就开始转筋的名词。
在处理指针时,开发者需要了解内存地址、指针类型、指针的引用和解引用等很多知识点。
明白了知识还不够,在实际操作中,c++的指针需要你手动进行内存管理,分配和释放内存。
如果不小心出现内存泄漏或者悬垂指针等问题,那就完犊子了。
马上,程序就会崩溃,或者出现一些你不想看到的错误。
你这个内存管理还必须得管理得恰到好处,因为指针可以进行一系列的算术运算,存在着潜在的指针越界和数组溢出等问题。
要是一个不小心,超出了指针所指向的内存空间,那又双完犊子了,程序又双要崩溃了,或者又双要产生莫名其妙的错误。
指针和指针还不一样,有很多种类型,例如void*、int*、char*等等。
每种指针都有自己独特的用途和限制,开发者必须要根据情况选择正确的指针,不能乱点鸳鸯谱,否则就会出现类型不匹配和编译错误之类的问题。
除此以外,c++中的指针语法还特别复杂,像是取地址符、解引用符、箭头符号等等,全都属于看了名字就不想去了解的东西。
——小剧场开始——
你美滋滋地坐在电脑面前,快乐地打开了你最爱的编辑器,非常嗨皮地要写一段程序。
但你贱不娄搜地选择了c++。
你开始编写一个函数。
在函数中,你使用了一个指针。
一个没注意,你粗心大意地把指针的地址给改错了,可你认为它是对的。
不知为何,你才思如泉涌,如有神助地写完了代码。
你编译程序,接着运行它。
然后,程序就像平常一样,又双叒叕崩溃了。
此时,你嗨皮的心情已经荡然无存。
你在心中暗骂:特喵的,我明明已经把指针弄对了啊!
无奈之下,你只能回到编辑器,逐行逐句地检查每一行代码。
就这样,一晚上过去了,你的黑眼圈耷拉到了腮帮子上,但可怜的你却一直找不到任何错误。
你恼羞成怒地删掉了所有代码,准备重新写一遍这个程序。
光棍地删掉了一切,你准备重新开始。
你点开指针,在输入数值的时候,你猛然发现:
卧了个大槽!
原来只是个地址没写对!
我竟然因为这个de了一晚上bug!
还特喵的没de出来!
——小剧场结束——
c++就是一个脆皮大宝贝,功能确实强大,但它动不动就崩溃。
就好像是你隔着电脑屏幕呼吸声音突然大了点,里头的c++就要崩溃。
所以说,只有高手才能玩得转c++。
赵德彬前世头顶上寸草不生,就跟c++有很大的关系。
如果他平常只是要用Java、python这种语言编程,他绝不至于秃到那种程度。
没办法,实在是需要动脑的地方太多了,时刻需要不停思考、计算,调用脑海之中相关知识,不秃真是没天理。
而Java,相比于c++,则是“秀发友好”得多了!