原始人都能听懂的编程课(2)——从小王养鸭子看互联网项目如何运行

上一节我们说到原始人小王因为要做爸爸了,无师自通的学会了二进制。这节课我们继续小王的故事。

小王的养鸭子计划

话说小王有了宝宝以后,家庭开支急剧上升,于是决定搞一点副业。他看旁边有一个池塘,决定在那边养一点鸭子。小鸭子长得不错,但是好景不长,很快小王又要去站岗了。
站岗的地方离小王住的地方有一条河,不能经常回来,既不能每天照顾鸭子,又不能每天了解鸭子的状况,应该怎么办呢?
于是,小王找到了小李。小李同学,请你每天帮我照看鸭子同时告诉我鸭子的情况怎么样?
照顾鸭子没啥问题,报告鸭子的情况?中间隔得太远,喊话听不见,该怎么告诉你啊。
于是聪明的小王又想了一个新主意。
河边有一块大石板。你每天到石板上给我画出来吧。
为了双方都能看懂,我们先规定几个符号规则:
向上的箭头代表鸭子数量多了,向下的箭头代表鸭子数量少了,画一个正方形代表鸭子的数量没有变。然后画几只小鸭子表示有几只鸭子,画几个圆表示有几个鸭蛋。
就像下面这样:
在这里插入图片描述
比如有一天,小王看到大石板上画了一个向上箭头,然后旁边画了10个鸭子,5个圆,小王就知道,这就是鸭子数量多了,有10只,并且有5个鸭蛋。
但是如果小王还想继续了解10只鸭子有多少大鸭子多少小鸭子怎么办呢?
聪明的小王有办法。
小王说,大石头前面不是有一块空地吗,我从河这边扔东西过去。如果我扔的是一块骨头,就是我想知道大鸭子的数量,如果我扔过去的是一块贝壳,就是我想知道小鸭子的数量。
于是有一天小王扔了一块贝壳过去,小李迅速的数了一下小鸭子的数量,画了三个鸭子在石板上。小王就知道,这是有三只小鸭子。
好了,小王和小李的故事先讲到这里。

一个互联网项目的基本原理

为什么我们要大费周章地讲这样一个故事呢,是因为小王和小李的故事,就是一个互联网项目的工作原理。
我们看小王的故事的实质是什么。
小王有一些需求,希望了解一些数据(小鸭子)的情况。但是自己没有办法直接了解。于是小王找到另外一个人来完成统计和分析数据的事情,同时通过某一种界面(大石板),让自己能够看到。
可惜小王的时代科技不发达,否则聪明的小王可能要制作一个网站了。
我们套用互联网开发的概念进去就很容易理解了。
小鸭子养在池塘里,所以,池塘是放数据的地方,就是数据库。(有些小白可能要问数据库是什么东西?就是一个专门存数据的软件,你可以姑且先把它理解为类似excel的东西。其实不太一样,我们在以后介绍数据库的章节里会详细说。)
为了知道池塘里有多少鸭子,我们需要有一个人去数一下。但是我们有电脑程序,所以互联网时代的我们不需要真的有人去数,我们用程序来访问数据库,获得数据库里的数据。
然后小李数到数据以后,需要跑到大石头那里,需要按照事先约定的规则,把数量画到石头上。是的,我们的程序访问导数据以后,也需要按照一定的编程规则显示给用户。而显示给用户的介质是什么呢?小王的故事里是大石头,我们用的是浏览器,(就是你电脑里的IE、360、谷歌浏览器等等,你用它上网的那个软件)
所以,一个互联网项目的工作原理是什么呢?
就是有一个数据库软件存放数据。有专门的程序去去读数据然后分析计算,最后把它显示在浏览器端。用户就能够看到了。
当用户有更个性化的要求时,用户还可以通过浏览器向程序提交进一步的要求(小王扔了一块骨头到大石头那里,小李按需去数大鸭子的数量),然后由程序按照要求去数据库中查询数据,然后重新返回给用户。
在这里插入图片描述
所以,我们把小王的图替换一下,就是下面的样子。
在这里插入图片描述
数据库运行在服务器上,来存储相关的数据,后端和前端程序负责按照用户的需求去查询相关的数据,并处理相应的逻辑,最后在前端呈现出来。用户可以通过前端(浏览器、app、微信小程序等)看到这些数据,并提交新的需求。
什么是数据库,什么是编程语言,什么是IDE
接下来,我们看不同的环节会用到哪些不同的程序或者软件。
先看数据端
数据端主要是用来存储数据的。目前数据库是主要的方式,除了数据库之外也可能有其他的方式,比如数据文档等等。常见的数据库有mysql、sqlserver、oracle等等,他们的作用基本一样,你就暂且理解为他们是有不同公司或者机构开发的就可以了。
后端/服务端
主要是来读取数据,计算数据。
前端/客户端
主要是来呈现数据给用户。
读取数据、计算数据、呈现数据的事情,每一个项目都不一样。比如一个在线教育的项目,可能是读取课程资源,播放课程资源,同时记录用户的学习情况。一个内容发布的系统,则可能是读取新闻、呈现新闻,同时记录用户的评论。
是的,不同的项目需要不同的小李。
就是这各种各样不同的项目,呈现了各种各样不同的需求,这些才是我们程序员大施拳脚的地方。
所以我们可以简单的理解为,程序员的动作就是通过编程来完成数据读取、数据存储、数据计算和数据呈现,通过程序去完成小李的工作。
而协助我们编程的东西,一个是工具,一个是语言。
工具就是我们用来码代码的软件。未编译之前的程序都是文本文件,因此理论上来说,我们用记事本就能够完成程序的编写。
但毕竟用记事本效率太低,所以目前大部分程序员还是喜欢用各种各样的专门软件来编写程序。
这些软件针对变成做了很多有特点的功能,比如不同的代码显示不同的颜色,让代码可读性更高;比如代码提示(就是你打一两个字母,后面就自动帮你带出来,有点类似百度搜索的提示功能);比如编译环境的集成,可以很方便的完成代码的编译。这些软件我们通常称之为IDE(Integrated Development Environment)。
而语言呢,就是我们上文所说的高级语言,也就是我们编程实际写的那些东西。每一种编程语言都有固定的语法,但底层机制都是类似的。
常见的变成语言估计你都听过,比如java、比如php,比如C#,比如python,这些都属于后端的语言,而前端的语言则包括html、JS、苹果的编程语言,安卓的编程语言等等。
我们学习编程,很大程度上是在学习编程语言,但我更希望大家能从底层机制去学习。

总结一下,下期再见

好了,最后我们总结一下,要完成一个互联网项目,首先我们需要一个数据库,来存储取数据。
然后我们需要使用编程语言,来写一个程序,完成数据读取、数据存储、数据计算、数据呈现的事情。
我们需要选择一定的前端的媒介(浏览器、app、微信小程序)把这些数据呈现给用户,让用户使用。
这就是一个互联网应用的本质。
是不是很简单?是的,原始人小王都能设计的东西,你也可以的。
当然,随着互联网的发展,一个复杂的项目可能不仅仅是这样简单,会涉及更多的分层和分工。
我们下一节课将更深入下去,介绍前后端是如何分工的,到时候你就会知道计算机编程课各种种类繁多的名目到底是在学习什么了。
除此之外,你可能还会了解一些更炫酷的概念,比如接口、分层、MVC等等。
欢迎关注我们的公众号——全栈工程师养成 哦。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值