编程”,英文为:programming,意指编写程序,设计程序。在如今大多语境下,编程从单纯的设计一系列程序转变为特指的: 对于计算机体系,进行运算流程的设计,而设计方式则是“编程”,就是大家所说的“写代码”,而“代码”则常常是程序的常规表现形式。


如此阐述介绍编程,对于没有接触过编程和编程语言的学习者而言是不友好的。我们先试着通过理解几个例子和了解计算机的发展再思考上面的关系。

计算机(computer)的最初始的作用就是“计算”(compute)。在战争中,军备设备和通信密码破译都需要对数据进行大量计算。1944年正在负责美国的氢弹研制工作的冯∙诺依曼也遇到了这个问题。氢弹的研制需要解决大量的计算问题,当时并没有好的计算机,而冯∙诺依曼自己则靠心算。

此时,美国陆军为了研制长程火炮,委托宾夕法尼亚大学电机工程的教授莫奇利和他的学生埃克特博士设计和研制人类第一台通用电子计算机,就是大名鼎鼎的——“ENIAC”。

而由于设计上的限制,ENIAC想要对于不同的计算需求做计算前,还需要修改电路,但对于如此一个庞然大物,修改电路可没有那么简单。好在冯∙诺依曼意识到这个问题的严重性,在1944年就向军方建议再造一台新的、通用的计算机,这样他就和莫奇利、埃克特一起提出一种全新的设计方案,称为艾迪瓦克(EDVAC,Electronic Discrete Variable Automatic Computer,离散变量自动电子计算机),而EDVAC其实才是世界上第一台程序控制的通用的电子计算机,并且是今天所有计算机的鼻祖。冯诺依曼也在因为其大顶层设计思路——冯诺依曼体系更加广为人知(莫奇利、埃克特同样伟大)。冯诺依曼体系也成为计算机相关专业课程必备知识。后续的计算机体系结构模型也不多,出名的有哈佛结构,后面再来说吧。

对于编程,其中最重要的就是和计算机“交流”。我们要让计算机帮我们运算,是ok的,但我们要事先告诉计算机它该专门运算,怎么去做。“交流”就是为了这个目的。举个栗子,而我作为一个四川人,只需要使用四川话即可,若是来了一个留学的美国小伙,我可以选择我还勉强能使用的英语。那么若是一个意大利小姐姐呢?我只会Ciao,而她的中文也不能独挡一面。那么这个时候我们常常选择一个“中间的”办法去解决问题。比如用一个我们都掌握的非母语语言——English。

编程语言的诞生与上面的例子。无论熟悉或不了解计算机的人大多都知道计算机和 “二进制” 有千丝万缕的联系,即计算机是‘0’,‘1’的世界。因为,计算机实质是使用高电平和低电平两个物理状态来表示数据的,那么内部的运算,数据的表达,控制的流程等等等所有的一切都是以二进制的形式表达的,这种质朴无华的表达方式所构成的一套系统,就像一门语言——机器语言。不过这门语言一定是晦涩难懂的,因为它由始至终都只有2个字母:0,1。想要表达设计2000个“单词”你会超过10位“字母”去表达。这意味着,你的任何数据位数会变得很大,大到你操作这个数就记不住上一个数是多少了。

一个简单的 50 + 45 变成了: ‭00110010‬ + ‭00101101‬,这还没有展示‘+’号的编码。一个5位的表达式变成得超过20位。

为了解决这个问题,大师们设计了 “汇编语言”,把一个一个的指令变成了助记符 ,比如,原来我设计的系统里10000000代表“加法”,而汇编中,ADD这个单词就表示了加法。 而运算数据也可以直接用10进制或16进制,其中的转换由计算机自动完成。这极大得简化了编程的工作量,增大了程序员的效率喔,值得一提的是世界上第一个程序员是女士喔。

由此之后再进行分化,新技术与新需求的碰撞使得设计出了更高级的编程语言:C,Python , PHP…不胜枚举。对于如此多的语言,选择时在于你的需求和领域是什么。是硬件还是软件,人工智能还是大数据分析,服务器端还是用户端…这样编程语言贴合需求而分化的高级语言也大大提高了编程的效率和速度。


IEEE Spectrum_2018年度顶级编程语言排行榜

编程就是告诉计算机,该怎么做,是在此刻加一下储存器区编号8951和编号8952数据,还是立刻跳过5个指令,直接从当前那一条指令开始,又或者要读写编辑一张1024*1024像素的图片,又或从网络中截取下一个的数据包。。。命令有大有小,但大的命令都是由小的命令堆叠起来的,共同构建起了一个或高效或bug横飞的程序代码罢了。

编程_从入门到遁入空门_第一篇_到底什么是编程?相关推荐

  1. python小海龟画粗细渐变的线_Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle)...

    Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle) turtle 是一个简单的绘图工具 提供一个小海龟, 可以把它理解为一个机器人, 只能听懂有限的命令, 且绘图窗口的原点 ...

  2. python起步输入-《Python编程:从入门到实践》第一章:起步

    Python编程:从入门到实践 这篇文章主要知识点是关于Python编程,从入门到实践,起步,Python编程:从入门到实践,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书 搭建编 ...

  3. python量化分析系列(第一篇)_量化分析师的 Python 日记 [第 1 天:谁来给我讲讲 Python?]...

    45 条回复 • 2016-05-25 11:10:23 +08:00 1 2015-04-08 21:42:42 +08:00 这里竟然有Quant 2 2015-04-08 22:49:51 +0 ...

  4. Linxu内核模块开发入门(金荣的第一篇个人技术博客)

    前言 第一次使用Markdown语法编辑的第一篇CSDN技术文章,内容为本人第一个内核模块的入门教程,如有不完善的地方,请大家多多批评指正,支持开放.自由.分享,谢谢大家. Linxu内核模块开发入门 ...

  5. 《C语言编程魔法书:基于C11标准》——第一篇 预备知识篇 第1章 C魔法概览1.1 例说编程语言...

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.1节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 预备 ...

  6. python语言的实验心得体会范文_实验报告心得体会范文3篇_心得体会

    实验报告心得体会范文 3 篇 _ 心得体会 篇一:实验报告心得体会范文 这次实习, 我对该公司的一些情况有了一个基本的了解, 根据在实习期间的所见, 我对 公司的今后发展提出了以下的建议: 1. 公司 ...

  7. 3-《电子入门趣谈》第一章_一切从单片机开始-1.2赋予单片机生命

    好消息:请在手机淘宝或闲鱼上搜索"电子入门趣谈",有惊喜哦 :) 我把全本电子入门趣谈的电子版(包括科技提升和理论升华部分,共计50余万字)放到上面开始兜售啦,如果您真的喜欢这本书 ...

  8. 9-《电子入门趣谈》第一章_一切从单片机开始-1.3.6串口通信

    好消息:请在手机淘宝或闲鱼上搜索"电子入门趣谈",有惊喜哦 :) 我把全本电子入门趣谈的电子版(包括科技提升和理论升华部分,共计50余万字)放到上面开始兜售啦,如果您真的喜欢这本书 ...

  9. Python笔记_第一篇_面向过程_第一部分_0.开场白

    *什么是Python? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido(吉多) van Rossum于1989年发明,第一个公开版本发行于1991年.在国外应用非常的广泛,国 ...

最新文章

  1. php自动打印小票_错题打印机哪个品牌质量好?【2020双12】错题打印机品牌排行...
  2. HBase java 开发
  3. 龙邱 MPU9250 模块接口 | 基于ESP32模块
  4. 《JavaScript高级程序设计》心得笔记-----第四篇章
  5. 基于Nginx的负载均衡
  6. ArcGIS中QueryTask,FindTask,IndentifyTask 之间的区别
  7. spring 学习总结
  8. C++线程同步之事件(生产者与消费者问题)
  9. vivado中如何读取十进制小数_二进制十进制间小数怎么转换,原来是这样的
  10. 境外WiFi市场持续升温 2016年或迎普及元年
  11. 智能优化算法应用:基于麻雀搜索算法的水文地质参数优化 -附代码
  12. Atitit 软件知识点分类体系 分类 按照书籍的分类 学科分类 体系与基础部分 计算机体系结构 硬件接口技术(usb,agp,pci,div,hdmi) os操作系统 中间件 语言部分
  13. wps垂直居中快捷键_word如何设置垂直居中 wpsword设置垂直居中
  14. css数字怎么换行,css实现连续的英文或数字自动换行的方法
  15. mysql relay log_mysql binlog和relay log日志如何清除
  16. 计算机英语趣味知识竞赛,(经典)精华版 英语趣味知识竞赛.ppt
  17. C++扑克牌类的设计
  18. 《东周列国志》第二十一回 管夷吾智辨俞儿 齐桓公兵定孤竹
  19. 笔记本电脑怎么关闭触摸板
  20. 朋友圈如何秀一把!用Python一键生成炫酷九宫格图片!

热门文章

  1. RL论文阅读20 - MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)
  2. Spring04:自动装配
  3. 怎么看待大学生就业困难?
  4. linux 查看缓存命中率,命中率查詢
  5. Google账户设置
  6. Unity DOTS系统概览
  7. linux能修改用户的权限,linux怎样修改用户权限
  8. SUST OJ 1671: 数字拼图
  9. 《OpenGL超级宝典》环境搭建
  10. Java基础-类的封装,成员变量的访问及隐藏