美文网首页
C语言:这是一个由你自己定义的世界

C语言:这是一个由你自己定义的世界

作者: Enomothem | 来源:发表于2020-01-05 17:34 被阅读0次

    题目:C语言:这是一个由你自己定义的世界

    时间:2020/1/5

    (一)前言

    好久没有写作了,记得以前挺喜欢写作的,后来除了练练字,也很少因为写作而动笔了,可能是缺少了些什么,高中毕业后,不知为什么,总是感觉不到以前那种激情了,那份干劲和兴趣都随着环境的改变,遇到的事情和随着时间的变化早以回不到以前了,但这并不意味着什么,只是人需要面对从一个环境到另一个环境的变化,这就是成长罢了。

    但成长,如果迷失了方向,忘记了以前所希望的东西,忘记了曾经为之努力而奋斗的东西,不是忘记了,而是曾经的目标是不是太高了?或是太无意义了,早已不稀罕了,不是的,人虽然会随着时间的改变而不得不去做其它的事情,以前设立的目标只是目前无法付出精力去做,那么就把它放在了心上,等自己慢慢成长,积累经验,厚积薄发,待时机成熟,自己又具备相应实力,那便早已是可控的,只是想和不想的问题,因为人嘛,总是得不到满足,之所以不忘初心,因为曾经没有过,因为曾经苦难,因为曾经被欺负,所以现在的幸福应该珍惜,不应该太世俗了,就在今天,美国对伊朗发动了战争,敢问我们是在和平年代?错了,联合国并非你想想中的那么强大,只有我们祖国强大,才不会被欺负,因为我们在一个强大的中国,中国自古以来就是礼仪之邦,珍爱和平,更重要的是我们铭记历史,作为中国人,每一个中国人都为此而自豪,去年,也就是上个月底,有幸参加了一个联合国项目署的活动,有退休的中国官员说到,联合国是一个很官僚化的地方,一个项目落地需要很久的时间。如果没有自己的追求和方向,很容易迷失其中。

    C语言从学习至今已半载,其实真正开始学习是去年十月份,基本的知识也已经学完了,现在只不过需要一直循环,重复的去看基础知识,这是学如何东西的根本方法,基础决定着对整体框架的支撑。不仅仅从C中学到了很多程序思想,还悟出不少道理,其实我们人应该学习这种思想,从程序的视角看世界是怎样的。

    C之所以强大,无论从发明之初编写UNIX系统到现在编写其它语言,都是无可替代,有人开玩笑说只有两种语言,一种是C语言,另一种是用C编写的语言,虽然这是C粉说的,但事实上确实很多语言是由C写的,我这个人吧,不管是什么方面,没有太喜欢的东西,也没有什么太讨厌的东西,可以说比较包容吧,但是会很喜欢某一件东西,并深入的了解它,因为它不一样,因为它不可替代罢了,其实每一样东西都是有它不可替代的特性,只不过是因人而异,各有所好罢了,C语言就是我觉得很特别的那一个,不仅仅是一门语言工具,更重要的是它内在的灵魂。这需要你去感受,感受它的灵魂。

    C语言《C Primer plus 》一书中,让我映像最深刻的就是“C允许。。。”,C尽可能的允许编译者做任何想做的事情,虽然可能会带来危险,因为C相信你,相信你不会那么做,不会出错,当然出错的话,后果自负啦~C不背锅。
    C允许你使用指针。指针是灵魂。
    C允许你控制内存。内存是指针的直接对象。
    C允许你将数据放在你喜欢的地方,寄存器上?随便你。
    C允许你控制位。也就是数据的最小单位,换成控制人的话,你可以控制或自定义身体上每一个细胞。
    C允许你出错误,比如栈溢出,堆溢出等等,都不会报错,因为你的错误后果自己承担。
    C允许你使用自己的风格的代码。之所以这样,C变得随心所欲,你可以看看国际C语言乱码大赛。
    C允许你同时使用不同的数据类型。C会帮你自动转换的,据说Pascal运行这样的程序会死掉(偷笑)。
    C允许你用变量表示数组的维度,即变长数组的概念。
    C直接读取文件,其它语言先要测试是否有文件结尾,所以打开空文件将不会停止,这需要你自己想办法。
    。。。


    乱码大赛
    乱码大赛

    如果你想当一名hacker,我建议你先了解了解C语言,所以你会看到红客联盟的第四条,必须熟悉掌握C语言。
    除非你想当别人口中的脚本小子,无话可说啦。再说一句,这是贬义词。
    记住,技术>技能>技巧,你希望是那个呢?
    这就好比一个是写出工具按心情看是否附上一个使用说明书。
    一个是完全熟练使用这个工具并且经常看说明书怎么用,能不熟练嘛。
    最后一个不用说了,就会那么几个牛逼的操作,但也够用了,能达到自己的目的。

    好了,人各有志吧,也不是说谁,说了句实话。但从另一个角度看,也没什么,人为了生活嘛,学点东西能活下来就行,有追求的学深入一点,就此满足的,能用着就行,道理就是这样。开始今天的正题,C世界。

    (二)C世界

    C语言也算是语言界的老大哥了,这么久来还是那么的帅气,从未被超越。
    有人学了很久都没有学明白,就连学了十年的人都说C是学不完的。
    我认为C之所以强大,是因为它的思想,简单,强大,可移植,和底层亲近但又可写出对付面向对象的语言,写出脚本语言,其实我想说,脚本语言就是C语言写出来的一个工具,这不禁让我想起,C语言之初。
    是这样的,C之前是B语言,B语言是谁写的呢,那B语言算是非常古老了,无非就是用汇编写的或是其它早期语言写的,我就想知道,编译器是怎么来的,很简单,汇编,但是汇编效率太低了,这样吧,先用汇编写一个简单的编译器,再用这个编译器编译C语言,好,C语言这个高级语言有了之后,那真的是太好了,用C语言写一个更强大的编译器吧,那么这个更强大的编译器有可以编译出更强大的C语言了,C语言就这样不断的编译自己,开了挂一样升级,变成了一个如今拥有庞大的库的高级语言,所以既不失与底层的接触,又具备高级程序的编写。

    唉,虽然可以说C可以做你想做的任何事情,写程序控制机器,开发一个操作系统,开发各种工具,开发语言,再到写网页,socket编程,越来越费劲,就像现在用汇编输出一个hello world需要一百行代码一样费劲,这并不是C不行了,而是C是面向过程的语言,你需要考虑所有的细节,就像你承办一个活动,从这个活动的名字开始,写策划,安排场地,想到所有可能发生的事情,所以需要几个备用方案,准备物品,需要哪些物品,需要多少物品,物品该怎么分配,接待人员,准备茶水,茶水的摆放,需要多少茶水,开场致词...直到活动结束的收尾工作,把垃圾回收。
    这些东西,没有人会帮助你,都需要你一个一个完成,每一个细节你都需要考虑,谁来了,谁没来,没来怎么办,有没有什么特殊的情况,等等。这就是面向过程。从一无所有,到定义每个物品,每个嘉宾,再到物品的摆放,嘉宾的出场顺序,再到结束需要做些什么。如果生活中一个人去承办一个这样的活动,没有人帮助你,确实,你不累才怪。

    C并不是不行了,而是C有自己需要做的事情,至于写网页,用html/js对付着就行了,写数据库,用数据库语言就完了,写后端,用php,asp就完了,处理自动化的工具,用python或是ruby等脚本语言就行了,如果还有什么需要的,用C写一个语言或是用C写的语言去写一个工具应付着就完事了,并不需要C亲力亲为,C有更需要它的地方,比如底层的开发,操作系统,或是人工智能,算法,都需要C。写软件什么的,交给专门造好轮子只需要你拼积木一样的语言就行了,比如Java就不错,C++也还行,C++牛逼在于既是面向过程,又是面向对象,也就是说C++即是生产积木的地方,同时有时组装积木的地方,这得益于C语言的影响,传承了C的好东西,又增加了一些适合人类思维的东西,这就是C++(也有叫C with class)C的类??,这不是我翻译的。。直译而已。当然你还可以用微软爸爸的C++++,什么鬼,也就是C#,我们也看不懂这是啥玩意,就读成了C井,叫C sharp,无所谓啦,叫法而已,不必计较,就像Linux一样,读出了千奇百怪的读法,连单词都有美式的,英式的,还有中式的,你就不能包容这个??能懂就行。是的,微软的C#是纯面向对象语言,也就是你不用考虑什么细节了,你说,你需要什么,给你什么(充了钱的感觉),用C#的感觉,比如现在承办一个活动,写策划,就交个那个什么什么公司好了,酒水就用那个什么什么公司的了,到时候来人送过来,再安排几个人帮我摆上,然后请个主持人,花钱就完事了,你说就行,然后我干什么呢,坐着看表演就行了,看什么不满意的,换!

    好了,其实我真的很想进入正题,多唠叨了几句,那我们开始正题好了。

    为什么说C是一个由自己定义的世界,不知你有没有玩过《我的世界》里面有各种各样的方块,你可以在里面随心所欲,创造,或是毁灭。但是在C的世界里,你会看到是空白的,因为这个世界的任何东西都是由你定义,没有你的指令,不会多出什么,也不会少了什么,你就是这个世界的上帝。

    空白的世界可还行,太无聊了,就像深渊一样,没有颜色,没有物体,既然这样,我们开始动手吧,我们定义一个房子,有家多好,至少在这个空白的世界里有人一个归宿,回家时有了方向,在空白的世界里也有了一个标志。

    好,我们定义了一个房子,名字就叫家吧,因为这个房子是不会变的,所以是常量,常量就放在预处理上吧,#define一下,然后再怎么样呢,想想,对了,在房子前面放棵树吧,什么树呢,参天大树吧,取个名字小树,不对,我的树为什么静静的,树叶都不动呢??原来这个世界连时间都没有,给个时间吧,#include<time.h>,好,有时间了,但是还是没有动啊,当然,我们需要风,定义一个风吧,就东南风吧,3级,但是还是树叶仍然没用,呵呵,这是假的风吧,给风一点威力吧,然后定义触碰物体施加面积单位3牛顿的力吧,可以,再看看,果不其然,还是不动,原来是树叶还没有定义呢,定义树叶当被风作用时,向作用力方向移动面积单位力的距离,如果超过最大承受范围,则树叶掉落(这是伪代码,不需要考虑细节,是思路),否则在移动后因树枝的弹力,根据弹力公式来回移动后回到原位。风也不能总吹,搞一个随机函数过来用用,这样就可以随机触发了。

    好的,看看效果,一栋房子,然后门前有棵树,树上的叶子都掉了下来,风的威力设置的有点大。。然后呢,还需要什么,那还用思考??有房,当然还需要有车,呵呵,自己的世界,想要什么就要什么,那就来一辆好的,皮卡车吧,先花点时间把车的各种运动机理和效果写好,然后把这个点为中心的范围描绘一个车的外形,其实这辆车就是一个坐标(计算机看来)然后这个车就写好了,你是想直的开,还是斜着开,随心所欲,你还可以横着开,不行,把不和乎逻辑的东西全禁止,然后就可以开了,在门前铺一条两端无限长的马路把,然后在马路上行驶。

    具体的细节其实很多很多,如果不用人话描述,可能需要表述出来的内容很多很多,会是这样的:0101001100010100010101001110011111101001010000101010111100111010101010010110101001010110101000111010101010111101001010110010101001010101010100101010110010111100101010101001010101.

    还是说人话吧,语言之美,无论是机器的语言或是我们的中文,还是国际通用的英语,都是为了表达出自己心中所想的,也就是一个思想,当然还可以作为内容或是数据的存储,文字可以写在书上保存下来,数据可以存储在硬盘里保存下来,这些内容都是我们的思想,而归于本质,我们的思想是存在于我们大脑里的(说好听点存在于我们心中)。

    当然,这个世界需要你去创造,你也可以看看比如的世界,这需要你用机器思维去思考。

    加油吧。今日所思,C语言的世界,文章也写完了,继续学习无止境。

    相关文章

      网友评论

          本文标题:C语言:这是一个由你自己定义的世界

          本文链接:https://www.haomeiwen.com/subject/yaaqactx.html