要回答这个问题,首先就要阐述中国有自己的编程措辞吗?实在这个问题极难回答,如果我说真话,就要戳穿很多原形。
会引来无数人的谩骂和嘲讽。如果我撒谎话吧,那我谈中文编程还有什么意义?既然要谈这个问题,就不要怕被骂。
可能我在讲述客不雅观事实的时候,会让你的虚荣心受损。但我不是故意打击国人信心,而是让更多人看清中文编程的现状和意义。

实际上我国最早的中文编程措辞,可以追溯到上个世纪60年代初期,它是由中科院打算机所设计的BCY措辞,
同时这也是我国最早的实用高等程序措辞。BCY措辞长什么样呢?
初看会觉得跟当代的编程措辞差别很大。上来就像是单片机才会利用的二进制开关位。
由于它便是是运用于电子管打算机上的。(当代打算机最小的数据单位便是字节,一字节8位。
也只有单片机或者更早的数字芯片,才会须要对某一个二进制位进行开关量操作。)
但是仔细看,这种代码依然有VB和VC的语法特色。
若 M>0 或者 M<10 则
放到VB里便是:
If M>0 Or M<10 Then
放到易措辞里便是:
如果 M>0 或者 M<10 则
(彷佛大于小于得用中文,我这输入法实在打不出来)
放到其它措辞里便是:
if(M>0 || M<10)
再看后面的代码:
对付 I=1 到 80 步长 1
实行...
终否则;
...
终;
放到VB里便是:
For I=1 To 80 Step 1
...
Else
...
End IF
显然这个代码险些便是BASIC措辞的直接翻译。
For翻译成“对付”
To翻译成“到”
Step翻译成“步长”
Else翻译成“否则”
End翻译成“终”
虽然BCY措辞在进入微机时期后被迅速淘汰,但不得不说,中国的第一代打算机科学家,
就已经意识到了中文在编程措辞中的代价,“中文培基”便是朱邦复于80年代初期发明的入门编程措辞,
它的语法和BASIC措辞基本相同,进行了大略汉化。
现在已经找不到“中文培基”编程的详细资料了,单从图片上的信息,觉得比BCY措辞更难懂(^o^)。
中文编程如果上网去查,一定能查到很多。
如:“周蟒”和“中蟒”,便是汉化了Python措辞;“易乐谷”是汉化了的LOGO措辞;“丙正正”是汉化了的C++
O措辞基于汇编措辞开拓;中文培基基于BASIC措辞开拓;习措辞基于C措辞开拓;中文小海龟基于Logo措辞开拓;
以上的中文编程大家可能有些陌生,国人利用最多的中文编程,肯定非“易措辞”莫属了。
易措辞一贯被称为“国产自主研发措辞”,拥有自主研发了汉语内核,汉语可被直接编译为机器码;
这句话出自百度百科的原文,事实真的如此吗?
众所周知,易措辞利用了C++的链接器,用户还可以下载更换不同版本的“链接器”。
那么什么是链接器呢?要讲明白它的含义,相对付我的表达能力来说,确实有些困难。
那我就直说吧,(可能利用易措辞的人都不爱听。)利用链接器,终极目的便是把你的代码,天生CPU能读懂的机器措辞程序。
(当然现在很多编程利用阐明器了,非机器措辞。易措辞也要把中文“转换”成英文,才能交给“链接器”)
正常编程时,链接器也只有少数“编程高手”会利用到,所谓的“高等编程”都不会让你打仗到这个层面。
常常有人说记事本便是万能的编程软件,它可以写任何措辞的代码,如果你对该措辞的编程布局足够理解。
就可以把记事本写的代码,交给链接器去“编译”。{实际上终极交给链接器的代码,跟你写的代码是有差别的)
那么大家认可记事本是“万能的编程软件”这个说法吗?既然记事本都不算,那么其他所谓的“中文编程”,
调用别的编程措辞的链接器,“天生程序”的软件,能算真正的国产编程吗?好,我这是野蛮无理,歪曲事实。
那你以为什么是“编程”?如果编程可以理解为编译程序,是不是该理解为把用户代码,“天生”CPU能实行的机器措辞。
可是现在大多数所谓的编程措辞,都不是自己天生的程序,而是交给“第三方”完成。(这个第三方不在海内)
当然大多数编程者都会说,不管用什么天生的,反正我能达到目的,能写出有用的东西不就行了。管它是自己天生的还是别人替你天生的。行业内有一句著名的话“何必要重复造轮子”,别人的造的轮子又圆又便宜,为什么要自己造?
我先声明,我并不反对你用国外的东西,人家确实好用且免费。而且真正意义上的国产编程有吗?我们有的选吗?
确实没有。抑或是有,但是不足完善。我要谈论的并不是对待是否国产的问题,我是要说中文编程的意义在哪里。
二、中文编程的意义
我这里所说的中文编程,不是指汉化或者利用其它措辞的链接器之类的编程措辞。也不是说只要能把中文天生机器措辞就算中文编程。我也研究过所谓的中文汇编,那实在还是对英文汇编的汉化。我也不是想说,搞编程就一定不能利用或借鉴国外现有的编程体系。而是说中文编程相对付中国的国情,其意义是什么。
听说目前环球有几千种编程措辞,而一个程序员能闇练节制的编程措辞常日不过一两种,因此目前真正盛行的编程措辞也就十来种而已。剩下的有一小部分在圈子里利用,用于办理特定场景下的问题,绝大多数的措辞都没机会终年夜就会中途短命。也便是说,在当代中国软件行业整体衰弱的大环境下,这几个中文编程措辞,去世掉是常态,活下来才是有时。
而在今日,唯一活下来的中文编程措辞,正在程序员社区措辞鄙视链的底端困难生存,垃圾、骗子、病毒、从入门到入狱是它的代名词,显然我说的便是“易措辞”。我并没有鄙视易措辞的意思,易措辞的开拓者吴涛,既不是科班出身,也没有名校或留学经历,在中文编程极度冷落的情形下,他也没有停下脚步,连续在做火山编程,号称是“措辞之上的措辞”,我在这里除了钦佩之外,也不作任何评价。
而我想说的是,中国经由几代人的努力奋斗,在打算机领域,无论是硬件还是软件,都没一样真正自主研发自己创造的东西。(我此时是站在讲台上说这话,估计早就被鸡蛋和石头砸去世了。)那我为什么要说这么欠打的话呢?吃饱了撑的吗?
虽然我说的话极其难听,但是这是事实。这一现状也深深刺痛了很多中国人的内心。
华为的鸿蒙系统和仓颉编程是真正的自主研发吗?凭良心说“不是”!
我可真不是要黑华为,华为随便一个技能员都比我强百倍,我有什么资格黑人家。
当年鸿蒙系统在作宣扬的时候,我就一贯在等他的编程软件,第一韶光下载研究。
无论是安装过程,还是末了打开“编程器”,没看到一个汉字。现在一年多过去了,
仍旧没有对外开放,“汉化”一个软件真就那么难吗?
实在编程软件根本不是汉化那么大略,如果你拿到国外一个编程软件,你自己都对它的编程语法没有通透的理解,你美意思说这个编程是你写的吗?大略汉化一下发布出来便是你的了?里面要做的事情远比你想像的要繁芜很多。真正要“拿得脱手”,华为人一定会慎之又慎的。
那我凭什么敢说鸿蒙系统也不是自主研发的。请把稳我这里不是要给华为“判刑”,也不是要辩论什么是自主权,我只是想阐明编程和操作系统的意义。想跟我吵架的,为华为鸣不平的“专家”请靠边站。还有我的态度是支持华为的,我买手机一定是华为等国产品牌,绝不买国外的。
首先说编程软件,本身便是为系统做事的。不恰当的说,一个编程措辞的语法,十几种就够了。为什么会是几百种都不止呢?如果编程软件不在系统下运行,它的语法也根本没多少,无非便是判断语句、跳转语句、赋值数据等,(循环语句是判断加跳转)
但是一个操作系统有多繁芜,就不用我多说了吧。并没有一个操作系统,有底层核心利用解释书的。操作系统的无数功能接口,没有“解释书”又如何充分利用呢?这就要靠编程软件来实现了,编程软件便是把操作系统那些极其繁芜的功能接口,“做”成很多类似于函数库、API扩展、工具库等等形式的东西。(不同系统开放的这些东西定义不同,我只是笼统的表达个大概意思)
总之编程软件便是供应了很多很多五花八门的“功能模块”,编程职员只用学习如何运用就行了。
完成编译为机器措辞最为核心的是“链接器”或称“编译器”吧,(不是所有编程软件都叫这个,也不是全部都有这个东西)。
系统最底层的“功能模块”肯定是用最底层的“编程软件”完成的,“链接器”也是由软件“编译”成的。自主开拓编程软件,要对系统底层知识有足够的理解。由于你从网上查到的资料,都是用什么措辞如何写,问题是不用别的措辞,你怎么写程序?
说这么多,意思还是说要实现不用现有的编程措辞,去“自创”一种编程措辞,实在是太难了。我们能见到的程序,不都是由别的“程序”编译出来的吗?那最初、最原始那个“编程”软件是怎么出来的?这跟问地球上第一个生物是怎么来的差不多,说来话太长。
总之一句话,操作系统一定是先有一个不依赖于其它任何措辞的“编程器”,写出最底层的那些文件。然后逐步发展出更高等的编程软件,才会让让编程变得更大略,也可以说是更随意马虎的对操作系统进行合理利用。
以是说编程软件都是基于操作系统的,我们用现有的编程软件,只能开拓操作系统已经具备的功能,或者说编程软件本身已经定义好的功能。
开拓的软件也只能在对应的操作系统下利用。如果没有不依赖于其它任何措辞的“原始编程器”,怎么可能开拓出属于自己的操作系统?
我们目前设计芯片的软件全是国外的,指令标准也是由国外授权的。有人说为什么我们不自己设定标准,不自己制订编程方案,然后做自己的芯片?
还是一言难尽啊!
就算你弄个全新的指令集,现有的所有编程都无法运用到它,没有一种软件能利用它,有用吗?同样道理,为什么我们不自己做操作系统?
如果不能跟现在的系统体系兼容,或者说进行“交集”,你的底层通讯、IO掌握,乃至是图像视频笔墨等数据都无法交流。那还有用吗?
那么我终极要表达意思,便是说我们无论是要开拓自己的操作系统也好,做自己的编程也罢,并不是说一定要抛开国外的所有东西。我们可以借鉴和收受接管现有的编程体系。但是想做属于自己的东西,纯挚学习别人是远远不足的。就像编程软件利用别人的“链接器”,并不算真正意义上的编程。虽然形式上全是中文,但是终极还是把中文代码,更换成英文的,然后让别的编程器去“天生”程序,别人的编程器是不可能拿来开拓操作系统的。
总结来说,如果我们只是为了写软件,那永久用国外的或者汉化的编程软件,是完备可以的。国外的已经足够好了,为什么还要“自创”呢?由于就算全体中国人都不须要国产,但是也会有人坚持去做属于自己的东西,只管他做出来的东西远没有国外的好。你这辈子不去用就行了,也没必要进行讽刺、挖苦、嘲笑、讥讽、谩骂、羞辱、以及人身攻击了。你喜不喜好国产是你的自由,但别人想做真正国产的东西,也是他的权利和自由,你管不着吧!
三、中文编程该如何崛起
至今唯一幸存的中文编程“易措辞”,他的兴衰史相信很多人已有理解。在2004年之后,易措辞就再没有重大更新,各种问题也没有去办理。
易措辞虽然供应了全面的中文支持,但毕竟它不是真正自主完成编程的,而且它的界面又和Visual Basic高度类似。在那个时期,以模拟起身在中国本属常事,但此后易措辞却没有走上逐步创新发展的道路,没有找到最贴近中文习气的编程表达办法,一贯背着抄袭、骗子、绑架的骂名。
还有大量易措辞用户利用它开拓游戏外挂、电脑病毒、黑客软件,使得易措辞负面新闻不断,措辞本身的特点又导致它极易被杀毒软件误杀,使得许多爱好者不得不调换门庭。
在易措辞之后,中国又涌现了其它一些个人主导的中文编程措辞,但都寂寂无名。现如今,各种通用软件、游戏、电影纷纭推出官方中文版,但在各种专业领域,英语却有大一统的趋势。
比如2017年,海内航空牵制开始逼迫利用英语互换,而在学术上,揭橥英语论文彷佛已经是许多专业的科研职员成为学术大牛的唯一选择。
如此说来,中文编程真的就没有发展前景了吗?当然不是,中文编程之以是发展不起来,是由于并没有国人真正去做过“核心编程”,很少有人认识到从底层开拓的主要性。
我可不是在否定前辈们的造诣,他们的技能远在我之上,我没有资格去否定他们。在DOS时期的FREEDOS、天汇汉字、WPS等,我都一贯崇敬的放在电脑硬盘中,保存至今。
还有windows时期,相称崇拜开拓Foxmail的张小龙(后来为腾讯开拓了微信)、windows优化大师的开拓者鲁锦(现在被360收购,改名为鲁大师)等等,我就不再列举了。
那么若何才能从底层开拓编程软件呢?正如我前面说过的,编程软件也是由其它编程软件开拓的,其它编程软件是由更底层的编程软件开拓的。更底层的编程软件是为开拓操作系统做“铺垫”的,操作系统本身的那些程序是由更更底层的编程软件开拓的,系统本身便是用最最底层的编程软件开拓的。那最最底层、最最原始的软件又是怎么来的?(这个问题先留给你自己思考)
首先操作系统本身便是为英文而生的。上世纪末,我们急须要发展打算机家当,面对最大的难题便是中文信息化。比如,如何用键盘输入中文;如何让打算机处理中文;如何在操作系统界面显示中文;如何通过软件编辑中文文档等。当时外国专家曾断言:“只有拼音笔墨才能救中国,由于汉字无法进入电脑。”海内某有名刊物也称,“方块汉字在电子打算机上碰着的困难,彷佛一个行将就木的朽迈病人。历史将证明,电子打算机是方块汉字的掘墓人,也是汉语拼音笔墨的助产士。”
但是事实上这些预言并没有应验。1983年,王永民发明了五笔输入法,真正办理了汉字的键盘输入问题;同年,严援朝研发了第一款汉字磁盘操作系统CCDOS,有了中文操作系统;1985年,倪光南发明的遐想汉卡开始发卖,奠定了这家国际品牌之名;1988年,求伯君研发了中国大陆第一套笔墨处理软件WPS,至今仍被广泛利用。
然而所有编程软件都是基于操作系统而开拓的,如果没有系统这个框架,编程软件也就不会运用的这么广泛。而操作系统的底层知识,是从来不对外开放的,Linux说是完备开源,但是开源的那一部分只能说是冰山一角,在“水下”的那部分你永久也看不到全貌。以是说限定中文编程和自主研发中文操作系统,最大的阻碍还是“技能封锁”。我们最多只能查到现有编程软件的代码怎么写,很难查到不用现有的编程该怎么做。
也便是说只有抛开现有的编程体系,才能做自己的编程。可是属于我们的第一个“编程软件”用什么来写?难道用键盘距阵或者用开关在单片机上手动开拓吗?虽然这些是外国人走过的老路,我也曾经用数字电路开拓过可编程的“烟花炮竹燃放掌握器”。(我强调一下,没有利用单片机,纯逻辑电路实现的。)
有些懂行的朋友肯定会有疑问(不懂的请略过此段)。不用单片机纯逻辑电路也能做编程?怎么编?最初我也确实用了大量数码管,编码开关和按钮。第二代电路只用两个按钮,一个用来选择哪一起。另一个用来掌握计数,数码管循环显示脉冲计数。到须要设定的数值时停下。脉冲计数就会锁存。另一个开关选择到“启动”灯亮起,就会开始计数。扫描每一起锁存数据,符合计数条件就自动触发继电器,燃放相应组烟花。
实在我说这些并不是要你能听懂,也不是虚假我的知识“渊博”。而是说学编程时,不要把编程看得太大略了,也不要把编程看得过于繁芜了。即便不用CPU的标准逻辑门,也能实现“编程”。再比方说编程里的定时器和延时函数。用两、三个元件组成的振荡电路和阻容延时电路也能够实现。我也在做单片机上利用的微型系统,像基本的短信和通话功能、音视频播放功能,无线网,文本编辑器这些都是有的。但是离真正的能广泛运用,差的实在是太远。这只能算是我个人“兴趣”罢了。
真正能实用的,还是要在现有操作系统的框架下,不借助别人的编程组件,完备自主的实现软件编程。当然这非常难,由于你根本找不到干系资料,网上确实有利用VC等如何做出自己的编程措辞,那不还是利用VC吗?既然原创编程这么难,那能不能先借鸡生蛋?
我开始也这么做了,先做一个网站做事器,然后解析脚本措辞。能像ASP、PHP那样的做事器也会有用啊。于是我的初代产品,便是WWS网站做事器,支持三种措辞脚本:VBScript,Jscript,Javascript。详细过程不展开说了,终极功能便是可以开拓网站之外,还能开拓网络游戏,架设H5做事器等。把游戏开拓须要的核心功能都写成相应的工具,网站代码不但可以处理各种二进制数据,还能和游戏的内存数据(工具)交互。算是网站做事器、游戏做事器、谈天做事器、H5运用做事器的集成产品。
但是这能算是真正的编程吗?虽然说它可以媲美ASP、PHP、JSP等网站做事器,乃至有很多它们不具备的游戏开拓“引擎”,但是这仍旧是用现有的编程体系,并不是真正意义上直接天生CPU指令。
那么该如何实现自己的编程?我是这么做的,用VB和VC去写一句代码,用二进制工具看它们天生的程序文件是什么样的。然后不断改代码,一直的剖析二进制数据。说实话,当时我连汇编都不懂,硬去看这些数据,真跟看天书一样。但是我先不管这些,我也天生一样的二进制数据,测试能不能运行。只有不断的考试测验,才能逐步的理解这是为什么。持续研究了三年多,才基本节制了汇编和操作系统核心的干系知识,并对内存管理有了更深的理解。
如今我开拓的SEC中文编程,已经可以编写中小型网络游戏等低级的运用了。虽然是中文编程,但是也能兼容VC等语法,由于你在网上能找到的编程代码,最多的还是C系列措辞(形式上大同小异),而中文的代码险些是找不到的。那么你从网上复制的代码,不用怎么改,就能在SEC编程里直策应用。
我这并不是在模拟C措辞,而是先学会兼容别人。只是兼容而已,并不代表我须要别的编程措辞才能编程。由于在现有操作系统下利用,你肯定要利用系统的太多东西。如果你是开拓单片机运用,那肯定不须要利用系统的功能了。我现在紧张利用的是32位X86系列指令,但是也可以兼容8位和64位CPU的。
有人肯定会说我在胡说八道,8位那是单片机,64位CPU指令也不一样,怎么可能兼容?我以为也没必要辩论这个,我也不敢担保是100%兼容。只是我用SEC开拓过的大量程序,是可以完美兼容的。ARM系列还在研究当中,指令上虽然有很多是一样的,但是目前并没有同一个操作系统可以同时在X86和ARM的不同CPU上运行的。以是它们能不能兼容也不敢妄下结论。
四、中国软件家当和程序员的现状
能看到此处的朋友,已经是给我莫大的光彩了。刚才我的一通乱侃,涉及到太多领域的知识。本来还想说说仿照集成电路到数字集成电路以及逻辑门电路的,但是考虑到能理解的朋友不多,我的表达能力也实在堪忧。还是说说海内软件业的一些情形吧。这个话题实在是太大,这是“国家统计局”该干的事情,我怎么能天花乱坠呢。以是我不谈大的,只是从个人亲自经历,映射一下海内编程行业的一些情形。
我是临床医学专业,从医很多年。02年学习组装电脑,04年开始对医疗软件感兴趣,并开始学习编程。也和很多人一样,买书自学VB和VC++。那张包含Visual Studio C++、Visual Basic、Visual Foxpro等浩瀚编程软件的光盘,也被我安装无数次,直到彻底读不出来。终极结果也和很多人一样,学了多少,忘了多少。没有做出一个程序来,多年之后居然都忘却我曾经学过编程了。
从我这么多年跟外界的交往的经历来说,打仗到的程序员大多数是学VB和易措辞的。C++的也都懂一些,但都没敢说精通。C++被评为天下上最难学的措辞,也是有某方面的缘故原由吧。最难懂的措辞不应该是汇编吗?一方面是由于学汇编的人极少。另一方面是由于学汇编的人每每不是用来编程,而是用来破解别人的软件。他们只要具备零散的汇编知识,能够实现破解就足够了。
关于破解、黑客、反汇编这些词都算是敏感话题,越是不懂的人,越是感兴趣。这并不是一个“难”字就能概括的。我在没有任何资料的条件下,去反向研究如何“编程”,实在便是标准的“反汇编”,问题是我当时险些什么都不懂。有些人不懂就去问,就去查,就去看书,但是我要“研究”的并没有现成的资料啊。
我相信很多人对我“开拓”中文编程软件的经历是持疑惑态度的。我这么多年潜心研究,有时候走着路,乃至开家长会的时候,都在考虑如何定义中文编程的语法词汇。肯定会跟别人说过,我在开拓自己的编程措辞。此话一说出口,无一例外的,都会引来别人的嘲笑和谩骂。反正没人相信,我也是习气了。当然被羞辱最为严重的,还是在精易火山互换群。
我完备能预见到他们会如何攻击谩骂和羞辱我。这跟网上那些键盘侠骂人是一样的。当你的谈及的事物超出了他们的知识储备范畴,他们就会认为你在胡说八道,颠倒黑白,搬弄是非,造谣生事。但是如果情形反过来,你表达的内容,是他们能够理解的,他们仍旧会认可你,附和你。那么当你认清了利用易措辞用户群体的编程水平之后,不免会陷入深深的思考:“易措辞”对付中国的软件发展,究竟是利还是弊呢?
易措辞在很大程序上降落了编程的难度,让很多人轻松的学会了编程。显然对付中国人学习编程来说,肯定是利益更多一些。但是弊端也是要提一下的。首先易措辞不同于其它任何编程,代码编辑器都采取“表格加箭头指向”的分外形式。那么就造成它跟任何措辞都不“相通”,乃至连“复制”代码都很困难,更别提复制的代码能不能在其它编程措辞里利用了。
还有便是易措辞让很多人轻易的学会编程,他们就更随意马虎自满。而且想当然的认为这便是编程的实质,这便是经典。只要你谈及的编程知识跟他们理解的不一样。他们就会骂你,说你狗屁不通,还不懂装懂。
说真的,爱因斯坦也有错的时候。比如说他跟玻尔为代表的哥本哈根学派的多次“较劲”中,也都是爱因斯坦“错”了。当然科学的道路上没有绝对的对与错,也没有绝对的真理。我还曾经用四条充足的“情由”,来证明相对论是错的。现在看来只是个笑话,当时我也是在不足理解相对论的情形下,提出的一些质疑罢了。
那么我想说的是,易措辞虽然很大程度上推动了中文编程的发展。但由于它本身过于封闭,又基于VC链接器编程的,自然摆脱不了C措辞的所有框架束缚。毕竟是建立在别人框架之上的,编程的代码就更加抽象化,离编程的实质也就越来越远,编程用户极难明获得更深层次的东西。
我也并不是说,学编程就一定要理解编程的实质,这毕竟太难了。但是能学会更深层次的知识,显然对付编程的帮助是很大的。当你知其然又懂以是然的时候,自然可以有更多层面的运用。理解实质也并不是要你懂每一个电子元件是如何事情的,你只用在有能力的情形下,轻微思考一下为什么代码要这么写,这么写的好处和意义在哪里。能弄明白更好,弄不明白也多试几次,是不是不这样就一定会出错。当然这是在你有充足韶光和精力的情形下。
关于易措辞对付国人的影响到底有多大,我也无需再多说什么。仁者见仁,智者见智吧。没有人拿易措辞跟其他编程措辞相提并论,也没有人把易措辞编程者和其他程序员进行类比。我并不是说易措辞编程者的能力比别人差,而是看到他们的思维过于“僵化”,可能这便是“中文编程”带来的负面影响吧。同等情形下,初学其它措辞的程序员思维也很局限,但是他们仍旧保留着客气学习的态度。大概便是由于英文编程学的时候一贯都难,总觉得自己很多都没学会。而易措辞由于结束不前,加上本身的局限性,极随意马虎让人产生“学到尽头”的觉得,也就难免的骄傲自大。
易措辞发展到现在的状况,的确不是有时。“措辞之上的措辞”,的确没有瞎说。为什么是凌驾于别的措辞之上的?老外的编程体系是很弘大,我们用中文的代码,末了更换“关键字”变成英文,你还不是“乖乖的”给我天生程序了?……那么我也想反问一下,你把别人踩在脚下,还美其名曰“站在巨人的肩膀之上”,你就没有想过巨人会一贯乐意被你踩吗?
无论我们在芯片家当上受到多么严重的制裁,海内的程序员永久不会相信软件会有被制裁的那一天。他们可以信誓旦旦的担保,别的软件可能收费。编程软件绝不可能收费。这便是利用破解版易措辞的用户,普遍这么说的。没错啊,任何收费的软件,都会有人破解的。没有人思考“软件保护法”的意义何在,也没有人会去想为什么老外会如此对我们,反正都是别人的错。
总体来说,中文编程想要遍及,险些是“难比登天”。至少我看到的这部分初学编程的人,他们险些都学过易措辞。就算你跟他们关系很好,想让他们学习新的措辞,那是绝对不可能的事。有位打仗过易措辞的朋友,道出了原形:由于他们的水平已经被限定到了初学阶段,离开了易措辞,他们什么也不会。
我的一位铁哥们也曾经劝我,不要考试测验让那些学过编程的人,去接管你的编程措辞,你去跟他们互换,也就降落了你的层次,变得跟他们一样了吗?你该当考试测验让那些没学过编程的人,能学会你的编程。
我当然也明白这个道理,但是没学过编程的人,又想学编程的人,我一个也不认识啊。我哪来机会跟他们互换。再者说,受易措辞熏陶变得思维僵化的这一部分人,也须要有人改变他们的思维啊。由此我就想到,在鲁迅时期那种“俯首甘为童子牛”的精神。编程也是一种“文化”,文化的发展离不开教诲的进步。
近代以来教诲最大的改革,当然是汉字的简化了,当然也包含有汉字的拼音化斗争。结果总体来说还是好的,中国也并没有放弃汉字和汉语。有很多人认为,印度之以是软件业远超中国,是由于他们利用的是英语,利用英语为母语,才更随意马虎学会编程。那么事实真的如此吗?
五、英文真的适宜编程吗
编程措辞之以是称为措辞,便是由于它跟我们说话的措辞一样,能够形成弘大的“文化体系”。打算机软件已经在各种行业起到主要的浸染,而操作系统更是把繁如星海的运用程序,组成了我们不可或缺的生态体系。
我们中华的文化博大精湛,轻易不会被西方的文化淹没。虽然我们也学习他国措辞,乃至用外语进行沟通互换、写日记、写小说和学术论文,但是我们绝不可能用外语来创造或者改变我们的文化。
然而电脑和手机却在不断的刷新我们的认知,改变我们的习气,影响我们的生活。我们在这一领域备受制裁的同时,却对目前的现状无可奈何,打算机编程仍旧是限定我们发展的主要成分之一,以是说开拓中文编程并形成中国的编程文化,意义依然十分主要。我自己也是时候关注着海内CPU家当,看到有国产芯片能兼容x86和ARM指令架构,支持指令多达两千多条。可是真正在编程时,常用的CPU指令,连二十条都不会超过。那我们国家为什么要生产这么多指令的CPU呢?是由于国人不懂编程?
当然不是国人不懂编程,我国也不乏编程界的大神。但是很多会编程的朋友,会认为中文不适宜编程,存在输入困难等问题。但是实际情形并不是这样,由于程序员在学习编程的时候,并没有适宜的中文措辞可供选择。一旦学会了英文编程,就会受到英文编程的逻辑思维限定,而不会去质疑英文编程是否合理。由于一旦写错一个字,就可能导致严重缺点,以是不会去思考我这样写代码到底好不好。
我前前后后研究和开拓编程措辞也将近十年,深知开拓编程措辞,并不是大略的模拟和汉化,能实现程序的基本功能就行,而是要做到更易懂的同时,也要更效率稳定、更加人性化。
编程代码也不是越普通越好,程序代码终极都是要编译成CPU能读懂的措辞,也便是机器措辞。
对付打算机来说,显然是代码越精髓精辟,实行效率就越高,程序也就更不随意马虎出错。
与机器措辞最靠近的,也便是汇编措辞了,它是由英笔墨母组成的“助词符”,而并非英文单词。
因此并不能认为你熟习英文,就能看懂汇编,那怕是英美的程序员,也是只有少数人懂汇编的。
那么“高等措辞”,便是由更易懂的英文单词来编写吗?也不是。由于英文想要精确表达一个意思,须要很长的词汇。书写起来也是非常的未便利,以是高等措辞为了书写方便,仍旧利用更简短的英笔墨符组合。比如编程措辞里
最常用的循环语句:for、do、while等,直面意思分别是:为、做、虽然。觉得都跟循环没有关系,你大概会说是我翻译的太片面,没有表达出它们的原意。那么我想请教英文好的国人,如果你没学过编程,能一眼看出来这些个单词便是循环的意思吗?那么编程这样书写,是为了打算机更好编译吗?然而并不是!
编程里利用最多的便是判断语句、循环语句,它们的事理都是由条件跳转构成。那么我就举例解释一下,英文编程有多么的反人类和反电脑。在机器措辞里的跳转分为条件跳转和无条件跳转。虽然也有几个循环指令,但是这些指令都是自循环,并不适宜对用户编写的代码进行循环。以是高等措辞的循环,大多是用跳转实现。
for循环常日是这样写的,for(i=0;i<10;i++){...用户代码}意思也便是对大括号里的用户代码循环10次,
首先让i这个变量即是0,(汇编便是mov 0到i的内存地址)这是循环前要做的,第二句i<10是根据第三句i++
这是让i每次增加1,然后第二句的条件是i增加只能小于10。编译成机器措辞便是,如果i大于即是10,就跳转到
用户代码之后。我们姑且的认为,意思便是先讯问一个“实行官”,我要跳到这一段代码之后吗?他说不用跳,
我就开始实行这一段用户代码,实行完怎么办,把i增加1啊,然后再跳回之前的地方,再把i增加之后,问我要跳过这段代码吗?当你实行这段代码10次,i每次增加1。这时i即是10了,他就判断i大于即是10,就直接跳走,不再循环。
不管是会不会编程的朋友,上面的话不要去穷究个中的意思,不用试图去理解看明白。总之是for循环小括号里有三句代码,在编译为机器措辞时候,要把这三句“拆开”,分别放在循环之前,“循环代码”开始和“循环代码”结束。
那么你再试试看SEC中文编程措辞的代码,也看不懂没紧要,是不是觉得大略了?
示例1:
循环(10){信息框(0,"朋友们大家好","中文编程真简便",信息图标);}
示例2:
行号=1;
循环{信息框(0,成员表(行号).名字,成员表(行号).职位,信息图标);行号++;}(行号=成员表.行数 或者 成员表(行号).名字=0)
小括号里便是要循环的条件,大括号里是要循环的代码。条件可以放在循环之前,便是提前声明要循环10次,循环内并不须要利用这个次数。条件也可以放到循环之后,也可以是单个或多个条件,示例2条件的意思是一贯循环到行号即是表的行数为止,或者读取的名字为空截止。编译成机器措辞,便是设置循环“{”处为A点,实行完用户代码,判断不符合设置的条件就跳回去连续循环,直到符合条件就结束循环。以是这样编译出来的机器措辞,只用一个标记点,一个实行跳转,这样的编程语句不仅写法大略,编译起来也更随意马虎。
如果懂编程的朋友,可能会创造示例2的代码有个明显的缺点。成员表里的名字该当是笔墨吧,在编程里文本怎么可能和数字进行比较(名字=0)?
我可以这么回答,不仅文本可以跟数字比较,文本也能直接进行数学运算,SEC编程能“预测”到你是要把多个文本拼接,还是对文本进行加减乘除运算。
估计学习易措辞的朋友一下就懵了。没听错吧,文本还能进行数学运算?如果用户写的代码,不是让文本运算,让二进制十六进制数据进走运算,那不就崩溃了吗?那我这么说吧,程序运行时候,在内存里全都是二进制(或称十六进制)数据,并没有整数、字节、文本、小数等等类型的区分。
之以是学过编程的会有如此疑问,是由于易措辞便是“转换”之后的C措辞。在C措辞里,不止是数据类型有严格的规定,语法代码限定极其去世板。当你调用函数库之类的操作时,所用的“工具”类型也是有严格的规定,我这里说的“工具”是对所有东东的统称,包括句柄、实例等等成千上万种东西。就我说的两个翻译过来的名词:“句柄”和“实例”就有点难明得了吧。何况还有数千种更难表达的英文术语,而且写代码时候你还不能弄错。这大概便是C++被称为最难懂的编程措辞的缘故原由之一吧。而汉语编程大多都是在“套用”或“汉化”国外现有的编程措辞。这么多生搬硬套的专业术语,都要翻译成相应的汉语词汇,翻译过来也是超级难懂的汉字。
而我开拓的编程措辞,不依赖任何其它的措辞,自然不受任何框架限定。以是才会有前面所说的数据类型之间,无需分外的“转换”,就可以自由利用。
这里说的转换也是其它编程必要的操作。在一堆二进制数据里,截取特定位置和长度的二进制数据,用转换函数或者“复制数据”到变量地址进行转换。
后面这种转换是VB里常用的操作,那么既然是把那里的数据,复制到这里,就完备了“转换”,其意义何在?估计学编程的也不会去思考这个问题。
以是编程措辞不再规定这么多意义不大的去世板定义时,写代码就变得特殊大略随意马虎,管它什么工具不对象,统统皆可整数。二进制数据也不用去特定位置截取特定长度,然后再去转换,直接去这里“拿”数据,就可以进走运算。你如果是跟整数运算,我就按整数,你跟小数运算,就按小数。说到“工具”,这也是打算机专业术语,就由于这个我还被易措辞用户骂的体无完肤。“你懂不懂什么是工具”、“工具岂能跟什么什么混为一谈”、“不懂不要装懂,滚回去搞你的垃圾编程去吧,这里不须要你来胡说八道”
由此我们不丢脸出,所谓的中文编程采取生硬的翻译之后,让很多汉语词汇失落去了原来的意思。就算你绞尽脑汁改换“适宜”的汉语,依然摆脱不了毁中文的结局。以是这也是中文编程始终没有发展起来的缘故原由。一贯都是在拿国外现有的编程措辞,“改成”自己的措辞,只会让中文更难懂,把很多汉语授予极不和谐的意义。
这也是易措辞给中文带来的负面影响,让这些“用户”无法正常和中国人利用汉语进行互换了。还好我没学习易措辞,而我也会英文编程,怎么思维没被固化呢?
首先我之前学过编程不假,但是我是学了多少,忘了多少。现在我又想起一件事。在我没有电脑的时候,买过学习机啊,也正是用它学会了五笔打字。
当时那张“学习卡”上居然有个QBASIC编程,这我怎么可能懂。凑巧的是我有一本93年的电子报合订本,上面就有一个QBASIC的编程代码,是叫什么EEG脑电生物反馈仪器的一部分。电子报上的所有电子仪器我全都低廉甜头过,唯独这个还带编程的,一贯没研究。于是我就拿这段代码在学习机上练习,还真给编写成了。运行之后,出来一个“滑动条”和一个“滑块”……
扯得太远了,我们回到正题。我后来真正懂编程,并不是“学”会的。当年在论坛发帖子时候,还不能上传图片,但是可以把网络上的图片地址,加到帖子里发出来。为了找图片地址,就须要查看网页源代码,后来网页代码看的多了。我就考试测验修合法地网页,逐步的我就摸索懂了ASP代码。这个过程便是想学没学会,没想学反倒会了。
但是由于没学过根本,都是改了之后刷新测试当作果。当时看到比较多的便是a=a+1,这是VB里最常用的递增了,等同于C措辞的a++。
会编程的一定以为这多常见啊,可是我当时就不明白,为什么a能即是a加1?按照数学公式,这一定是错的。但是编程的逻辑便是如此,从没有一个程序员以为这不合理。
刚才只是说了,我虽然懂编程,但不是专业程序员,完备不会受英文编程框架的影响。下面我再举个例子,说说英文怎么就不适宜编程了。
比如编程代码里最常用的数据类型int,实际上是Integer的缩写,也便是整数的意思。而int的直译却是智力。
我们在C措辞的代码里,看到大量的int,程序员一眼就知道这是整数类型,而普通人却会看到很多“智力”
那么我们再来说说Integer这个整数类型,在VB里的范围是-32768到32767,而在C措辞里却是-21亿到21亿。
编程措辞不应该是精准表达吗?为什么会这样混乱?实在吧整数这个词,在汉语体系里,也没规定数值范围。
汉语的计数单位有:个十百千万十万百千万万亿,以及兆、京、垓、杼、穰、沟、涧、无量。确实也找不到
42亿这样的计量单位用词,但是汉语很喜好造量词,比如一打即是十二个,一提是6罐啤酒,一扎是三升。
哈哈,怎么跟啤酒杠上了。我是想说,英文在编程的时候,也仍旧须要造词,可是英文想表达的词组都太长了,须要简化。而且英文单词之间要有空格。可在编程时候的任何名称都不许可用空格,空格是把名称分割开来的主要标志。而中文就可以用很简短的几个字,精准的表达意思,且不须要空格。
六、为什么说中文更适宜编程。
我再来举个实例。在写网络编程的时候,最为常见的参数 FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE
这是几个参数组合利用的情形,竖线实在是“或”运算,在这里等同于相加。它们相加之后便是一个数,直接用数字肯定更好啊。
那英文之以是这样写,大概是为了便于老外理解吧。那么把这些换用中文表达,就会更加简洁。
常量 读写断开=[FD_READ | FD_WRITE | FD_CLOSE];
常量 读写连断=[FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE];
常量 监听断开=[FD_ACCEPT | FD_CLOSE];
这段代码是什么意思呢?这一堆英文都是常数,也叫常量。编程时候常常会利用大量的数字,可是太多不好记呀,老外们就给这些数字起了相应名字起名太多又不能重名,前面就加什么什么下划杠。那么我用中文起名,读写断开就可以表示“FD_READ | FD_WRITE | FD_CLOSE”
读写连断就可以代表“FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE”。有人问我这是翻译吗,有你这么翻译的吗?
当然不是,我是借此来解释,当我们须要用一个名称来代表某一个或某一组合数字时,用中文不仅简炼,而且意思清楚,又不随意马虎重复。
那你有没有想到,打算机编程的时候,实在很多时候是数字,为了好记,外国人才用英文符号代替。你这么想就对了,不是很多时候是数字,而是全是数字。
变量是数字,常量是数字,字符串(文本)也是多个数字的组合。工具、子类、小程序、函数等等所有老外定义的东西,全是数字。
数字是你“看不见”的,比如我现在打的字“0123456789”是笔墨,它们对应的数字是48到57。那0怎么不是对应数字0,却是48?
由于数字0是空字符,1是正文开始,2是标题开始,3是正文结束,4是传输结束,5是要求,6是收到关照,7是响铃,8是退格,9是水平制表符(Tab)
这什么乱七八糟的?先别焦急,我连续再说几个你大概就懂了:10是换行,11是垂直制表符,12是换页符,13是回车键
回车键总算明白了吧,这些定义是早期机器打字机时期就已经定好了,到32开始才是空格和其它英文标点符号,空格键也知道吧。
一贯排列到127是DEL删除键,至此所有英笔墨母和标点符号全部包含了。至于汉字和其他国家的字,便是后来的事情了。总之每个字都对应一个数字。
数字不便是数学上的吗?阿拉伯数字又不是英文,环球通用啊。打算机既然是“处理数字”的,凭什么就不适宜用中文?那么这就涉及到打算机的历史了。
学过打算机的朋友一定知道二进制和逻辑门的关系。在数学界有一位大神叫莱布尼茨,他是读了易经之后,才发明了二进制。后来被打算机直接采取。
这个二进制比较随意马虎理解,打算机便是由0和1组成的。而CPU的运算是由最原始的门电路发展而来。根本的门电路有三种,与门、或门、非门。它们可以相互组合就能得到更多更繁芜的逻辑门。像刚才说的竖线是或运算,用或门就可以实现。
而加减乘除等运算就须要多个门组合利用才能实现,详细怎么实现就不谈论了。就连这些个术语,我理解起来也以为困难,可能是翻译的不足好吧。
还有门电路有一个主要的环节,便是要组合成三态门,才能实现繁芜的运算。也便是高电位、低电位和高阻态,分别对应1、0和无效。
1和0是参与运算的,高阻态不参与运算。准确来说,打算机不是0和1组成,还包括无效。(我不敢称之为空,空是编程里的术语)
见过河图洛书的朋友,一定更随意马虎明白。为什么打算机会采取二进制,河图洛书便是用黑点和白点组成的。然而你又会创造,只有0和1又不能进行“运算”,须要三态才可以,还有CPU是由三个基本的逻辑门组成,是由于“三生万物”啊。八卦符号不便是有三爻吗,三组阴和阳,组合出来是八卦。八位二进制便是一字节。
一说到易经八卦,很多中国人的印象都是“晦涩难懂”,可是老外怎么“懂”了,还利用它发明了打算机。可能我说的有些牵强了,而我真正想表达的意思是:
有时候看上去很繁芜的东西,实在事理都很大略,“大道至简”呀。当你现在看到操作系统如此弘大,编程如此繁芜的时候,会觉得这些也太难学了吧。
可是再繁芜的操作系统也是由最初很根本很大略的编程软件开拓出来的啊,又回到了之前的那个问题,天下上第一个“软件”是怎么出身的?
如果你知道了打算机的事理,这个问题自然不难回答。第一个“软件”肯定是用硬件开拓出来的,更繁芜的软件也都是由大略的软件给编译出来的。如果你能把问题大略化,那么你就具备了编程的思维,而软件并不一定要用“代码”才能创造出来,而是由你的聪慧创造出来的。但是程序员则认为程序便是用代码写出来的呀,如果你这么想的话,那你学编程就学不到精髓,学到的只是技能,而不是一种技能。
技能和技能的差异,一样平常程序员是不会明白的。那么我开拓编程的意义是让你学会这门技能,而不是让你学会编程的技能。技能就相称于你学会易措辞之后,离开它你就什么也不会了。
而你又学会了一门别的措辞,但是这门措辞被新的措辞淘汰之后,你又没法编程了。而技能便是你学会了之后,纵然没有编程软件,你也还是能编程。当然这个例子说的太极度了些,不用编程软件难道用硬件编程吗,那学编程还有什么意义?实在你可以换一种理解办法,技能和技能的差异就好比生存技能和生活技巧的差异。技能在任何条件下都能适用,技能就不一定。
好,不扯别的了,这一章节是谈论中文的上风的。我又想起来贴吧里一位网友的帖子,他说中文打字未便利,可以首拼取代,像循环可以用XH,整数可以用ZS等。实在这种办法并不实用,由于首拼太随意马虎重复了,我用中文写代码,也常常碰着这个汉语名称已经用过了,或者便是嫌汉字输入慢,那就用首拼代替。结果造成多次起名冲突的情形。
还有一点我要明确一下,拼音也是英笔墨母。它最早的起源便是古代来中国学习的外国人(利玛窦),为了快速节制汉语,就用西文发音来表明汉字。而中国的汉语拼音实在长这样:
声母:ㄅ玻 ㄆ坡 ㄇ摸 ㄈ佛 ㄉ得 ㄊ特 ㄋ讷 ㄌ勒 ㄍ歌 ㄎ科 ㄏ喝 ㄐ基 ㄑ欺 ㄒ希 ㄓ知 ㄔ蚩 ㄕ诗 ㄖ日 ㄗ资 ㄘ雌 ㄙ思
韵母:ㄚ啊 ㄛ喔 ㄜ鹅 ㄝ耶 ㄞ哀 ㄟ(ei)诶 ㄠ熬 ㄡ欧 ㄢ安 ㄣ恩 ㄤ昴 ㄥ(eng)嗯 ㄦ耳 ㄧ衣 ㄨ乌 ㄩ迂
有人说这汉语拼音的符号太难记了吧,以是现在都不再学汉语拼音,而改学英笔墨母。那么你可以问家里上年经的老人,他们反而是认识汉语拼音,英笔墨母很多不会读不会写。你之以是以为英文更好记,是由于你从幼儿园,到小学、初中、高中、大学都一贯在学习英语。还有为什么这些汉语拼音的符号,可以在电脑上打出来,是由于台湾和日本一贯在用。往后看到这些字,就算不认识,也别说这这天语了。
还有习惯用拼音打字的朋友,不要想当然的认为,英文拼音是中国的。有拼音的书本,除了幼儿园的教材,还有哪些报刊文章新闻媒体利用过?英笔墨母的拼音,实在是给国外人看的。他们看到汉字不会读,但是一看到拼音就能读出来,而且人家还不用学“拼音”。实在中国古代也有拼音,只是没有注音符号。上面那些注音符号是1918年才开始利用,如果仔细比拟拉丁拼音和西笔墨母:
啊 α A 是不是这三个字前音很像啊。再看 玻 β B 发音也很像。得 δ D 又很像。如果拼音是中国原生的,怎么会跟希腊、罗马、拉丁语这么靠近?
然后你不妨再看看赵元任师长西席写的两篇文章,如果全用拉丁拼音,你还能看懂意思吗?
《施氏食狮史》石室诗士施氏,嗜狮,誓食十狮。施氏时时适市视狮。十时,适十狮适市。是时,适施氏适市。施氏视是十狮,恃矢势,使是十狮逝世。氏拾是十狮尸,适石室。石室湿,氏使侍拭石室。石室拭,施氏始试食是十狮尸。食时,始识是十狮尸,实十石狮尸。试释是事。
《季姬击鸡记》季姬寂,集鸡,鸡即棘鸡。棘鸡饥叽,季姬及箕稷济鸡。鸡既济,跻姬笈,季姬忌,急咭鸡,鸡急,继圾几,季姬急,即籍箕击鸡,箕疾击几伎,伎即齑,鸡叽集几基,季姬急极屐击鸡,鸡既殛,季姬激,即记《季姬击鸡记》。
唧唧鸡,鸡唧唧。几鸡挤挤集矶脊。机极疾,鸡饥极,鸡冀己武术及鲫。机既济蓟畿,鸡计疾机激几鲫。机疾极,鲫极悸,急急挤集矶级际。继即鲫迹极寂寂,继即几鸡既饥,即唧唧。
上面的文章都是用文言文写的,也确实有人用文言文写过代码,也在网上火了一段韶光,那也只是看着爽爽而已。当代社会还用文言文的话,互换起来就十分困难,更何况是编程了。但是汉字的优点是什么?
汉字是形、音、意俱全的笔墨,它既是笔墨,又是图画,又包含很多故事。中国人只要看到汉字,就能明白个中意思。虽然很多汉字简化之后,失落去字义了,好在台湾和某岛国还有保留啊。
而如今很多人连五笔都不会打,还能记得汉字怎么写吗?最近还特殊盛行用首拼来代替汉字,比如“YYDS”之类的,还是词组的首拼。而有很多短视频的字幕都喜好用英笔墨母代替单个汉字,还说那不是英笔墨母是拼音。有差异吗?看着不以为费劲吗?那既然汉字里偶尔夹杂几个拉丁拼音都这么难读。那编程代码里全用英文,其难以理解的程度就可想而知了。
而我开拓中文编程时,当然也想全部利用汉字,不用一个英笔墨母。但是这样太过封闭了,英文编程体系这么弘大,系统本身就都是英文的(我们看到的只是汉化了界面上的一些笔墨)。是不可能不用英文的。毕竟编程软件不是用来写小说诗词的,就算全用汉字也不一定能看懂。就比如我看到易措辞的那些表格和箭头关系,也是一脸问号。跟我是相同情形的人也不在少数。如果你是至心支持中文编程发展的话,那么首先你得明白你为什么要学习编程,学习编程的意义是什么?
七、学习编程的意义
如果我问你为什么要学编程,你说学编程可以赢利呀,等你学会了编程,就有人费钱找你写软件。那我还是奉劝你一句,干什么都能赢利,为什么非要学编程?你还是干点别的吧。
那你说“我喜好编程呀,学会编程我就比别人多一项本领。别人就会用崇拜的眼力看着我。”那你还是反问一下自己,为什么喜好编程,为的便是让别人崇拜你吗?
当然更多的人都是有个明确目标的,便是为了编程而学编程。比方说有一个很好的想法,须要用编程去实现。或者说手动去完成某项工件特殊累,想用编程自动化实现等等。
这种“为了编程而学编程”的人占绝大多数,但是这并不是学习编程的意义。我之前特殊强调说,我开拓编程软件目的,并不是纯挚的让中国人更随意马虎学会编程这门技能,而是让你节制一门技能。当然对付还没有节制编程技能的你来说,你是不会明白这里面有什么差异的。但是我现在还是有责任让你明白,什么是学习编程的意义。
这里说的编程,是指在打算机领域利用编程软件编写代码并天生可实行文件。这句话很拗口也不专业,我又不是专业人士,凑和着看吧。由于在有些领域,编程也便是调一些参数,改一些数字。你大概会说,改一些数字就能叫编程,这也太大略了吧。那好,发射火箭时“点火韶光”也是个数字,你会调吗?虽然说这只是个玩笑,但是“电脑编程”从实质上来说,也是在“调”数字啊,你代码不管怎么写,终极也是天生了一堆你自己都看不懂的“数字”。
如果说电脑编程也便是在“调数字”,你是不是瞬间以为没那么高大上了。虽然说你在荧幕上看到别人用数字0和1,创造出无比神奇的东西,你也会万分倾慕。但是编程真要你这么写,你还会学吗?我之以是说这一段话,是让你思考一下,编程终极目的,也只是天生了一堆“数字”,那它的意义究竟是什么?
大概你会问我,“你是设计编程措辞的,你设计编程措辞的意义是什么?”。环球上千种编程软件,有免费的也有收费的,总体来说是免费的居多。如果说微软等公司推出的编程软件,是为他们的系统做做事。那别的公司也没有自己的操作系统,做那些免费编程软件是为了什么?当然这不是我所关心的领域,他们的目的是什么我不清楚。我做编程软件的目的也是为未来开拓操作系统用的。
显然这个牛皮吹的实在是大了些。肯定一堆质疑的声音:你什么背景,什么学历,什么资格。就敢大言不惭的说要研发操作系统,你知道啥是系统吗?
啥是“操作系统”,我知道啊,这是四个汉字啊,我不但会念,还会写这四个字。你便是说破了天,这也是四个汉字。
行了,不贫了。我在这兜扯半天,实在便是让你明白一个道理:学习编程并不是我把所有知识都传授给你,授之以鱼,不如授之以渔。前面我也说过,编程可以说是一种文化。学习编程可以熏陶情操、启迪心智、净化思想、升华境界,实乃泡妞装逼必备之技能也。(我去,又在这胡说八道了,能不能好好说话)
由于这是一个“不一般”的话题,自然要逐步道来。我这里所谓的“意义”,大概是指除了知足和实现你的真实目的之外,能给你带来什么。你在编写程序的时候,无论碰着多么严重的BUG,都不是直接去摔电脑、砸桌子。无论面对多么变态的老板、刁钻的客户,你也没有挥刀拔枪,拳脚相向对吧。无论面对多大的难题,你都会从容面对。那“熏陶情操”有木有?“启迪心智”有木有?“净化思想”有木有?
编程既然说是一种文化,那么学习编程也是一种促进文化发展的“互换形式”。这种互换不仅是人与人,人与自然,也包括人与机器、人与虚拟天下的互换。很多“大人物”都说过,宇宙天下是真实存在的概率极低极低。编程作为一种独特的思维互换办法,也是打开新天下大门的一把钥匙。学习编程,不但是为了实现开拓程序。而是你的思维办法变了,看待事物的态度也会改变。用更加伟大的格局去看待现实天下和虚拟天下,探索更多更大的未知天下,乃至与另一种文明进行互换和学习……
没错,我常常便是这么说话,早已习气了别人说我太能“装”。别人更多是说我不把“钱”看在眼里,从不考虑“利益”二字。这可能跟我的代价不雅观有关。从小开始读书的时候,书上没有讲过赢利有什么用,更没有讲过该如何赢利。反倒是能看到“钱乃身外之物,生不带来,去世不带走”,“金钱如粪土”,“全身的铜臭味”诸如此类的话。也没有哪个学者、专家、威信或者法律条文说过,人活着就一定要赢利。
那我现在问你赢利的意义是什么?为了生存!
生存的意义是什么?为了养家糊口,为了家庭幸福,其意义又是什么?如果你连自己所作所为、所想所愿的意义都没搞清楚,那你是为什么而赢利?为什么而事情?
有的人贫穷,有的人富有。有的人活的短暂,有的人活的长久。有些人活的洒脱清闲,有些人活的累成了狗。终又有几人明白生活的意义?家财万贯、纸醉金迷又如何,百年之后最多留下一把灰……
人生的意义在于,你能为当前的文明留下什么。一个发明创造也好,诗词歌赋也罢,论文小说公理公式也行,都是人类文明的财富。然而这世上的统统都是财富,唯独金钱不是。有钱只会让你空空如也。
有些名人曾经说过:履历是自我发展最大的障碍。只有不断的学习,不断的冲破常规,寻衅自我,才是走向成功的精确路径。学习不是让你去世记硬背,生搬硬套。学习编程也是一样,机器是去世的,代码是活的。程序是去世的,利用才是活的。编程只是一种方法,而不是一种技巧。“电脑”也只是一台机器而已,它没有聪慧,也没有灵魂。如果没有人类去利用电脑,它连存在的意义都没有。虽然它“看”起来比人类还要聪明,还有近年来被炒的火热的“人工智能”,让你误以为电脑是有思维的,有灵魂的,有聪慧的机器。那电脑到底是什么样的机器呢?
八、什么是打算机
为什么叫“打算机”,由于它是打算数字的机器啊。估计很多人看到这句话,都要笑掉大牙了。但是从实质上来说,这有错吗?
我前面也零散的讲过,CPU便是由三个基本逻辑门电路组成的一个处理运算的集成电路,也叫芯片。“运算”的事理也不繁芜,便是一大堆电子开关,可以掌握哪些电路接入总线,哪些电路断开总线,再去哪些电路取数据,或者把哪些电路的数据电位,“传送”表现到到哪些电路上。可能我说的话很不严谨,但是大体上便是这么个道理。打算机和打算器以及算盘,实质上是相同的。
那么不同点在哪里呢?打算能力和速率?存储容量和传输效率?的确不好定义是哪个指标是最为主要的。但是有一点是可以确定的:如果打算机里不安装操作系统和软件的话,你根本不会去比较,由于你就没法用啊。
打算机从实质上也是进行数学运算的,软件编程从实质上也是修正编辑数字的。难道我们国家数学弗成吗?硬件软件都不会自己做?
说到硬件吧,我们早就会做,只能说高端芯片,我们还有很大的差距。个中最为关键的是设计芯片的“软件”——EDA,我们做不了。
你可能会有疑问,不便是一个软件吗?海内这么多高等人才,怎么会做不出一个软件?电脑高手就不能破解它吗?
在很多人看来,自主研发芯片最难的是国产光刻机,设计芯片反而相对大略,这实在是一个缺点的认知。由于EDA工具在芯片生产的过程中至关主要,是芯片领域皇冠上的明珠,以是它又被誉为“芯片之母”。顾名思义,没有EDA工具,芯片就无法设计出来,自然也谈不上生产了。
目前EDA工具环球占绝对主流地位的,都是来自美国公司的软件,个中业界一哥是美国公司新思科技,它的EDA软件也被很多芯片设计公司所采取。新思、益华、明导国际三家公司的EDA软件霸占了环球95%的市场,很遗憾的是这三家都是美国公司,也便是说环球大多数设计出来的商用民用芯片,实际上都逃不开美国的科技。
那为什么不用其他国家科技公司的EDA软件呢?很大略,美国EDA软件好用呗!
既然是用来设计芯片的,那么EDA软件越前辈,就代表着芯片设计越随意马虎,好的EDA工具不但可以让芯片设计的周期缩短,同时也能大大节约芯片设计的本钱。现在一颗前辈工艺的芯片,比如CPU或者GPU,设计常日要花24个月的周期,本钱超过2亿美元。这还是用目前最前辈的EDA工具设计的,如果用一些掉队的EDA工具,设计的周期和本钱都要大幅提升,同时芯片性能也无法达到预期,这对付现在的芯片公司而言无疑是得不偿失落的。
说这么多,意思便是如果EDA软件水平上不去,纵然我们拥有了自己的光刻机,但要生产出高端繁芜的芯片,还是得靠外洋的EDA工具设计,这样卡脖子的问题依然无法彻底办理,特殊是采取前辈工艺的芯片,海内EDA软件险些无法胜任!
当然我国现在还在努力实现28nm光刻机自主研发,谈EDA软件彷佛早了点。
现在你能知道软件的主要性了吧,EDA可不是一样平常的软件。常日我们见到的软件都是基于操作系统下的常规运用,像高精尖领域的那些软件我们一个也做不出来。便是由于编程软件能供应的也只有这些“功能”
程序员也只能写那些能够找到的或者你能学到的那些“代码”。那些牵扯到核心机密的“功能”,是不会有资料对外公开的。而现在我们编程都还是用国外供应的编程软件,这些软件会乐意让你设计出比他们自己还要厉害的“软件”吗?师傅都不愿意至心教你,徒弟怎么可能超越师傅?
那你此时肯定想问我,前面我吹嘘那么多,“说什么别人编程软件都不是自己的核心,只有你才是完备自主实现的核心编程。那你咋不做EDA呢?合着你吹了半天,还是连一个软件都不会写”。
这话很多人都会说,又不是说我一个人。说就说呗,无论你刺痛的是谁,他“发奋图强”开拓出来比国外还牛的EDA软件,都是值得全国公民高兴庆祝的事情。
末了总结几句吧,很多人以为在打算机方面我们被卡脖子,是硬件被卡,实在是软件。硬件攻关对付中国来说并不算难事,最难的还是软件。目前海内设计软件全部依赖国外的供应的编程工具,功能就这么多。或者说人家就公开这么多资料,你也只能照着人家的教程或者参考别人开拓的示例去写。那我开拓的编程软件算什么呢?我只能说还在模拟的道路上困难前行。之前我们也照抄都不会,只能依赖于别人。实在模拟没什么可丢人的,总比一贯用别人的好,由于人家并不肯意你用。那些自以为国外编程会永久免费的程序员,只是看不见人家的神色而已。还有那些一贯用盗版破解软件的人,还理直气壮的说“谁让你技能这么烂,被别人破解了,又不是我破解的。”,而破解别人的人还“自满”地说看我多牛,为多少人做“贡献”了。还有那些黑别人网站,盗人家数据的人,还厚颜无耻的说“我能入侵某国安全局,给他们网站插国旗,我是祖国的英雄。”我只想弱弱的问一下,你还能干点别的不?还有那些整天说“不要重复造轮子”,“站在巨人的肩膀上”,反过来说可以不。“你不会造轮子对不对”,“你也只能踩着别人,被摔下来你还能站起来不”。