铠金锐写程序究竟是在干什么

白癜风能治好吧 http://m.39.net/pf/a_4793212.html

什么是程序?

程序是规则,是行事的先后次序。

比如地球自转一周24小时,公转一周天,每时每刻地球都需要按照这个规则出现在具体的空间点,这就是规则。

这条规则是造物主制定的。一个能良好运行的规则,最难之处在细节,比如究竟如何自转,多小角度,如何公转,碰到特定的情况会发生什么,所有的问题都需要规则制定者考虑通透,而我们从小到大的教育并没有刻意教育我们把问题考虑的如此透彻,这就是很多人在初次接触程序的时候感到难最主要的原因。

程序员书写程序就像造物主制定规则,不过我们操控的不是星系,而是计算机。

什么是计算机?

计算机是一种会且只会做计算的机器。

你可能会疑惑明明能用来聊天的计算机,怎么会是只会做计算的机器呢?有这个疑惑是因为大多数人每天面对显示器,却不理解显示器,如果我们把显示器想象成一个颜料版,会更容易想通这个问题。

颜料版本来是黑色的,通电后电流负责在颜料版极其细的粒度上打上颜料,而什么时候在什么位置打上哪种颜色的颜料,却不是显示器决定的事情,决定者是显卡。

显卡中存放的都是计算结果,这些计算结果如何用10进制来看的话,就是满满的几百几千页纸的阿拉伯数字,这些数字我们人类看不懂,显卡却可以在极快的时间里根据预定的规则把这些天文数字读懂,他知道该指挥电流在显示器的什么地点打出什么颜色的颜料。这些天文数字以很快的频率更换,显卡也不停的指挥画板改变形状。

从人类的角度看到的结果就是我们在打字,我们在聊天,对方在回馈。

所以如果你已经轻松的理解了这个过程,就就会很容易明白为什么我说计算机是一种会且只会做计算的机器。

你的计算机负责根据规则做计算,计算结果会被运输到显卡,显卡根据规则指挥显示器呈现形状,我们把上述语句中的规则换成程序。

就变成了你的计算机负责根据程序做计算。

什么是计算?

这是一个非常深奥的问题,我无法直接给出一个简单的答案,爱因斯坦说过,让问题简单,而不是更简单。如果无限制简单下去,就可能丢失事物的本质,或者说过分追求简单其实就是懒惰了。

所以这个问题我不简答回到,我们来慢慢分析,先来回想一下,我们所了解的计算。

这要从幼儿园说起了,老师问3+5等于几?

我们拿出左手数3个手指头,拿出右手数5个手指头,最后我们重新把所有伸出的手指头数了一遍,得到8。

在这个过程中,我们已经涉及了不包含逻辑运算的所有运算,因为减法就是加负数,乘法就是多次加法,除法也是多次加法(加负数)。

大家仔细思考我们的计算过程,我们运用了视觉上可见的“符号”(手指)和一个“运算规则”(所有伸出来的手指头都数一遍)得到了最终的“结果”(运算结果)。

我们可以这样理解计算,“符号”和“运算规则”共同作用得到“结果”。

长久以来,人类做计算是为了得到结果,年前美索不达米亚平原上,我们计算土地的多少,河流的规律,帮我们进行正确的谷物种植,年前大航海时代,我们计算星轨,帮我们进行精确的船只导航,精确计算能还原造物主的设计思路,很多时候我们不禁怀疑造物主是个程序员,不然为什么通过计算能精确还原他的思路呢?

同样的,计算机做计算也是为了得到结果,早期的计算机就是辅助人类做一些复杂的数学运算,后来渐渐的,人们发现只要制定一个规则,能够把运算结果显示在像画板一样的屏幕上,那计算机能做的事情就太多太多了,计算机并不懂它绘制出的图形的意义,但是我们的大脑太了解这些了,也太容易理解图形的意义了,所以大量的计算过程(程序)涌现出来,字处理,图形处理,文件管理。

随着计算机的飞速发展,以上提到的程序大多数都被集成到了我们日常使用的计算机中,你去买一台个人计算机,通常商家会告诉你这台计算机已经预装了操作系统,操作系统是一个程序的集合体,这些程序已经很好的解决了许许多多的通用计算问题,但是仍然不够,通过描述一个个新的计算过程,程序员们能创造出更多的“应用”来服务人类。

什么是计算机应用?

以你熟悉的qq为例,你可能会通过浏览器这个程序,下载qq安装程序,安装完毕后,你的电脑桌面上会多出来一个企鹅图标,双击打开,填写账号密码,会看到好友列表,这一系列你熟悉的操作构成一个应用,能帮助你完成和好友的沟通,但是计算机并不会真正理解这个过程,计算机只是再精确的根据腾讯的程序员们制定的规则,不停的做运算(包含算术运算和逻辑运算),把运算结果交给显卡,显卡再指挥显示器将图形绘制到我们的电脑屏幕。是我们的大脑赋予了这些图形(数字)意义。

所以我们完全可以定义计算机应用是一系列对人类有意义的计算结果,能辅助人类完成自己的工作。由实体过渡到虚拟化,处理邮件,召开会议,买卖物品,外卖订餐,这都是一系列计算结果的呈现。

单单指挥计算机做运算就可以完成这么多魔法一样的事务,这就是信息时代和往日时光最大的不同之处,在这样的时代背景下,每个人都有机会和能力借助魔法一跃到另一个阶级,我们已经看到了太多这样的传奇故事,比尔盖茨,扎克伯格,他们都是既具备人类商业眼光又能指挥计算机做出合适的运算的魔法大师。

如何创造计算机应用?

那么你要如何才能制作一个解决具体需求的计算机应用呢?你需要掌握一门能够和计算机进行交流的语言,计算机是速度大师,它最擅长非常快速的做计算,你的cpu2.5GHZ表示它能在一个时钟周期里进行2.5亿次运算,一个经过长久训练的艺术家想画出一幅图形需要很久的时间,而计算机在同等的时间里可以根据预先设定好的规则画出你想象不到数量的图形。在速度这是个天赋过人的家伙,但是在智能方面却是个死板的笨蛋,你必须告诉他怎么做计算,他才能开始。

我们需要一门程序语言来和计算机进行沟通。

什么是程序语言?

程序语言是一种人类可写可读,计算机可读的符号,我们再次看到了”符号“这个词,之前”什么是计算“中我们定义了”符号“+”计算规则”=“结果”;计算需要符号,程序语言就是这样一种符号,人类能懂,也必须懂,计算机也能懂,类似于法国人和阿拉伯人用英语交流。

程序语言种类繁多,但是一门语言如果是为计算机这种特点极强的东西设计的,那无论你设计多少种,语言中最基本的单词就总是那么几个,因为计算机非常单一,只会做计算,所以一门语言只要把计算的基本要素全部描述清楚,就算搭起了基本的架子,各种程序语言的基础部分都非常简单,你会在接下来的章节里清楚的认识到这一点,但是用这些简单的符号去创造复杂的应用却从来都不是一件简单的事情,你需要非凡的勇气和智慧,还要辅助大量的练习。

区别程序语言的要点在Function(功能),人类完全可以使用一种符号体系来和计算机交流,事实上在计算机诞生的早期,能够和他交流的语言确实只有一种(机器语言),这种语言低效繁琐,说一句话要很多很多单词,语法效率低下,所以大家设法写了一些翻译程序,能够把一些机构更清晰的符号体系转换到机器语言这种低级体系,就这样,很多语言被创建了,有的人希望做科学计算,他们在自己设计的语言中加入了大量的和科学计算相关的功能(Function),有的人希望做人工智能,在设计的过程中自然就加入了大量人工智能相关的功能(Function),有的语言被设计出来书写操作系统,在设计过程中自然加入了大量的操作系统相关的功能,比如C语言。

就这样,许许多多的程序语言或者说能和计算交流的符号体系被设计出来,有的湮灭在了历史长河中,有的一直沿用至今,这样的符号写就的规则现如今充斥在世界的周围,最远的甚至跟随旅行者一号走出了太阳系,在孤独的夜空中闪耀着人类的光辉。

如果你想创造计算机应用,你应该选择一门能够和机器进行沟通的语言,透过这门语言你可以掌握计算的本质,你可以了解应用的开发技巧,深入钻研你选定的这种语言,能让你拥有一种神奇的能力,当你看到类似的符号系统的时候,你很快就能理解它,换句话说,真正掌握一门程序语言,任何新的程序语言你能在很短的时间内理解运用(不会超过3小时)。

如何选择语言?

区别程序语言的要点在功能(功能),所以如果你立志开发Web应用却选用了C语言,那就是南辕北辙,事半功倍,因为C语言并没有默认提供Web开发所需的功能,任何一门程序语言都有很多的人在不同的贡献功能,但是他们没有贡献关于Web开发的功能。

如果你已经读到了这里,并且是一位web开发工程师,那你早在很久前就已经明白了,不像其他领域的开发我们可以有多种语言的选择,在Web开发中,我们的宿主程序浏览器只认一门程序语言,那就是javascript,所以接下来我们将要以这门语言为例来告诉你如何写程序。

javascript诞生于年,距今已经20年了,20年里他经历过几次变更,现在已经逐渐趋于成熟,js也是目前世界范围内使用最广泛的语言没有之一,所以想学会写程序,javascript是一个非常理想的选择。

js相对其他程序语言还有一个巨大的优势,就是他操作的是html,这是一门及其容易掌握又功能非常强大的排版标记语言(非程序语言),因为html的存在,初学者在学习js的早期就可以很快的制作出其他语言需要很多技巧才能制作的漂亮界面,也就是说,这是一门正反馈非常快的语言,马上学习,很快见效。

如何学习程序语言?

这是一个沉重的话题,我自己当初在入门时候的时候,在门外徘徊了超出预期的久,让我先来回顾一下自己学习程序语言的过程。

我首先买了本书想学习C语言,在我还没把打印的各种语法全部记住之前,我就已经放弃了,运行环境都没有尝试去搭建,之后硬着头皮搭建运行环境,一点点看书,把变量命名的各种注意事项看完都已经很久了。多年后,我再回头想想,其实初学者真的没必要知道回字的四种写法,学习程序语言,应该是这样一个过程

概念-理解-实践-理解-实践-重复多次-彻底理解

这里没有任何捷径,10年前我对变量的看法和现在截然不同,但是当时我已经认为自己知道了变量的全部(其实只是记住了符号的书写法则)。

在开始学习js,开始学习写程序之前,我需要告诉大家,写程序没有任何捷径,只有不停的写才能让我们会写,我们需要持续不断的有效练习,注意是有效联系,在编码的领域里,有一句话流传甚广,一个问题,你只有先解决他才能彻底的解决他,这看上去是个悖论,实际上资深开发者对这句话有很深的理解,如果我们不用最简陋和直接的方法把面临的问题先解决一遍,那么一个完美的方案是无从获取的,为什么会有那么多同类型的开源项目,大家再一遍遍的解决同一个问题,一次次解决的更好,就是这样迭代的。

我会给你一些建议,牢记这些建议能让你的学习事半功倍:

1.先假设问题已经解决,然后再去找所需的。

2.程序如果出错,你必须尝试做点什么他才会变好,不要一次次的刷新页面用祈祷式编码法。

3.写,不停的写,不停的用你掌握的模式解决问题,新模式自然会来找你,不然就算告诉你一种更好的方法,你写完也就忘了,更好的代码是在亲手扔了很多代码之后得来的,不是直接看会的。

4.代码只能自己写会,看书,看视频却不实践的话,那只是在安慰自己,证明给自己看我努力了。

5.解决一个实际存在的问题,为了这个目标不停的动用搜索引擎

6.一个人静静的看书效率非常低,必须一边看一边做。




转载请注明:http://www.180woai.com/afhgx/3039.html


冀ICP备2021022604号-10

当前时间: