工业革命前数千年人口经济

by Tautvilas Mečinskas

由TautvilasMečinskas

我们已经进行了数千年的编程 (We have been programming for thousands of years)

Computer programs are all around us. We interact with them every day. It looks as if software is becoming more and more important to our society. But why do we find programs so necessary to us? Why and when did we start programming? What is the essence of programming? These questions might sound trivial, but I feel that today we still don’t have a good definition of what programming is. Maybe this post can help to change that.

计算机程序无处不在。 我们每天与他们互动。 看来软件对我们的社会越来越重要。 但是为什么我们觉得对我们来说如此必要的程序呢? 为什么以及何时开始编程? 编程的本质是什么? 这些问题听起来很琐碎,但是我觉得今天我们仍然对编程是什么没有很好的定义。 也许这篇文章可以帮助改变这一点。

It is pretty hard to define programming because it is so diverse. One can program games, mobile apps, websites, compilers, simulations and much more. In this case it might be helpful to start by breaking down some misconceptions and clarifying what programming is not.

定义编程非常困难,因为它是如此多样。 一个人可以编写游戏,移动应用程序,网站,编译器,模拟程序等等。 在这种情况下,从打破一些误解并弄清什么不是编程开始可能会有所帮助。

Programming is not science. Science is the art of examining the world and discovering repeatable patterns in it. The scientific method is about making a hypothesis, and then performing experiments to prove or reject it. We don’t use such a method in programming — thus it is not science. Programming is not about discovery, but creativity.

编程不是科学。 科学是检查世界并发现其中可重复模式的艺术。 科学方法是关于提出一个假设,然后进行实验以证明或拒绝它。 我们在编程中不使用这种方法-因此这不是科学。 编程与发现无关,而与创造力有关。

Programming is not math. Yes, there is an aspect of math to programming. Some parts of programs can be expressed as mathematical functions. Writing a Fibonacci number generator is fun, but completely useless without a real-world application. Math in programming is means to an end, not a core part of the process.

编程不是数学。 是的,编程涉及数学方面。 程序的某些部分可以表示为数学函数。 编写斐波那契数字生成器很有趣,但是如果没有真实的应用程序,则完全没有用。 编程中的数学是达到目的的手段,而不是过程的核心部分。

Programming is not about electronic computers. Computers are very useful, but not necessary. Programs can be understood and interpreted by human beings as well. Therefore, computers are just tools we use in programming.

编程与电子计算机无关。 计算机非常有用,但不是必需的。 程序也可以被人类理解和解释。 因此,计算机只是我们在编程中使用的工具。

So what is programming about? What is at the core of every program — big or small?

那么编程是什么呢? 每个程序的核心是什么(大小)?

Abstractions.

抽象。

What is abstraction? It is a reduced image of the world. When abstracting, we are converting reality into symbols which can be transmitted as information. The word abstraction originates from two Latin words, which are abs, meaning away from and trahere, meaning to draw. The Latin translation suggests that abstracting implies separating one from the whole.

什么是抽象? 这是世界的缩影。 在抽象时,我们将现实转换为可以作为信息传输的符号。 抽象一词源于两个拉丁词abs,意思是远离穿越,意思是画 拉丁文翻译建议抽象意味着将一个从整体中分离出来。

Is the process of abstraction unique to programming? Not really. It is something that humans have been doing for quite some time now. And our most basic tools of abstraction are the map and the clock.

抽象过程是编程独有的吗? 并不是的。 这是人类已经做了一段时间了。 我们最基本的抽象工具是地图和时钟。

Archaeologists have discovered stone maps that humans made more than 14,000 years ago. This shows that map-making is fundamental to humans. It is a process of transforming territory into symbols by abstracting it. A map is a way to abstract space. It is a tool that helps us to make sense of surrounding territory so that navigating it will be easier.

考古学家发现了人类在14,000多年前制作的石刻地图。 这表明地图制作对人类至关重要。 这是通过抽象将领土转换为符号的过程。 地图是一种抽象空间的方法。 它是一种工具,可以帮助我们了解周围的领土,以便于导航。

A clock, on the other hand, is a way to abstract time. We find the continuous nature of time confusing, so we abstract it. Humans split time into discrete intervals: years, months, days, hours, minutes, seconds. While a map helps us navigate space, a clock helps us navigate time. The predecessor of the clock — the calendar — emerged more than 10,000 years ago.

另一方面,时钟是一种抽象时间的方式。 我们发现时间的连续性令人困惑,因此我们将其抽象化。 人类将时间分为离散的时间间隔:年,月,日,小时,分钟,秒。 虽然地图可以帮助我们导航空间,但时钟可以帮助我们导航时间。 时钟的前身-日历-出现于一万多年前 。

What about computers then? They are also tools that deal with abstractions. There are 3 fundamental parts to every computer:

那计算机呢? 它们也是处理抽象的工具。 每台计算机都有3个基本部分:

  1. Internal clock — a computer’s way to abstract time内部时钟-计算机提取时间的方式
  2. Memory — a computer’s way to abstract space内存-计算机提取空间的方式
  3. Processing unit —a computer’s way to perform logical operations处理单元-计算机执行逻辑操作的方式

These facilities give computers a way to understand space abstractions and their interactions in abstracted time. This means that programs are abstractions of spacetime, and programming is the art of creating spacetime abstractions. These abstractions help us to navigate reality, and that is why they are so important to us.

这些功能为计算机提供了一种在抽象时间内理解空间抽象及其相互作用的方式。 这意味着程序是时空的抽象,而编程是创建时空的抽象的艺术。 这些抽象帮助我们导航现实,这就是为什么它们对我们如此重要。

And there is one abstraction method that is very similar to programming, but is even older than maps, clocks and calendars: language.

有一种抽象方法与编程非常相似,但是比地图,时钟和日历还要古老:语言。

If you look closer at our natural language, you will see that it has all the features necessary to abstract spacetime.

如果您仔细观察一下我们的自然语言,您会发现它具有抽象时空的所有必要功能。

Let’s look at an example sentence:

让我们看一个例句:

Go to the garden and pick up some flowers this evening.

今天晚上去花园摘些花。

The garden and flowers refer to abstracted space. This evening is a way to abstract time. And adds logic to the sentence. Go to and pick up are subroutines.

花园鲜花是指抽象的空间。 今天晚上是抽象时间的一种方式。 为句子添加逻辑。 转到获取是子例程。

We can easily transform the sentence above into JavaScript:

我们可以轻松地将上面的句子转换成JavaScript:

whenEvening.then(()=>you.goTo(garden)).then(()=>you.pickUp(flower))

This sentence can be understood by a computer that has definitions of evening, you, flowers, and the necessary subroutines defined.

可以通过计算机来理解该句子,该计算机定义了nightyouflowers和已定义的必要子例程。

The problem with natural language is that it has very broad applications. Language can be used not only to communicate information, but also to express feelings and emotions. The best examples of pure natural language programs are laws, board game rules, and instruction manuals.

自然语言的问题在于它具有非常广泛的应用。 语言不仅可以用于交流信息,还可以表达情感。 纯自然语言程序的最佳示例是法律,棋盘游戏规则和说明手册。

Programming languages, on the other hand, are strict and can only create abstractions. Computers are designed to interpret these abstractions in a very specific and deterministic way.

另一方面,编程语言是严格的,只能创建抽象。 计算机被设计为以非常特定和确定性的方式解释这些抽象。

In order to write computer programs one has to learn how to encode natural language to symbols that computer can understand. This usually requires intricate knowledge of computer architecture and the syntax of the chosen computer language. Thus if you want a computer to understand your reality abstractions, you have to learn how to code.

为了编写计算机程序,必须学习如何将自然语言编码为计算机可以理解的符号。 这通常需要复杂的计算机体系结构知识和所选计算机语言的语法。 因此,如果您想让计算机理解您的现实抽象,则必须学习如何编码。

Computers are tools that can execute rules defined in programs with superhuman speed and precision. They empower us with the ability to construct complex, multilayered abstractions, and transform our programs into truly dynamic and interactive maps of reality.

计算机是可以以超人的速度和精度执行程序中定义的规则的工具。 它们使我们能够构建复杂的多层抽象,并将我们的程序转换为真正的动态和交互式的现实图。

In many ways, programming is something that all of us already know how to do. The process of reality abstraction is fundamental to human beings. Computer programming is just the most effective way of doing this.

在许多方面,编程是我们所有人都已经知道如何做的事情。 现实抽象的过程是人类的基础。 计算机编程只是实现此目的的最有效方法。

翻译自: https://www.freecodecamp.org/news/what-is-programming-22a72ef4fd02/

工业革命前数千年人口经济

工业革命前数千年人口经济_我们已经进行了数千年的编程相关推荐

  1. 数仓dw怎么建_网易严选如何打造数仓规范和评价体系

    数据为王的时代,数据量从最初的几十 G,慢慢沉淀到几十 T,甚至几十 PB 的量.数据工程师,也从最初的 ETL 工程师慢慢成长为数据全栈工程师:采集.同步.模型.离线.实时.规范.平台.工具.产品. ...

  2. 爱数mysql恢复真慢_恍然大悟,原来爱数AnyShare Family 7是这样解决海量小文件备份难题的...

    这段时间,我花了很多时间研究海量小文件的备份,发现各种方案都有很大的局限性(详见海量小文件备份世界难题,居然有人说解决了?我不信不信了). 我以为这是一个世界级的难题,但看了爱数7月6日的AnySha ...

  3. 广数工业机器人五点法_广数工业机器人制造项目二期建设即将完成,年产逾千台 - 市场新闻 - 产业资讯 -新战略机器人产业研究院 -新战略机器人网-工业、服务、AGV机器人产业资讯传播者...

    9月10日,上游新闻记者从重庆广数机器人有限公司了解到,作为市级重点项目,广数工业机器人制造项目二期项目生产厂房件于2018年底前建设完毕,明年初将陆续投产,广数机器人具有高速度高运动精度的特性,其性 ...

  4. 数智化转型进入“精装时代”,容联云助力千行百业加速上云用数赋智

    随着产业数字化向前推进,企业引入数字技术的需求和热情十分充足,但要把技术下沉到市场中,还存在一个关键的矛盾:交付能力. 千行百业,尤其是传统实体经济从业者,对数智化所需要的5G.IOT.AI.大数据. ...

  5. Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序

    2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序 题目 题目描述 运行示例 涉及的1.11代码(非本题代码) 破题 代码块 题 ...

  6. 双千兆和双频千兆哪个好_关于千兆路由器的那些事儿!赶紧收藏

    无线Wi-Fi已成为现代人生活.工作的标配,随着百兆乃至千兆的光纤网络普及,传统路由器已跟不上时代的速度了.不少用户的眼光已投向速度更快的千兆路由器,那么大家真的了解什么是千兆路由器吗?千兆路由器有哪 ...

  7. (原码反码补码的计算)在一个8位的二进制的机器中,补码表示的整数范围是从_(1)_(小)到_(2)_(大)。这两个数在机器中的补码表示为_(3)_(小)到_(4)_(大)。数0的补码为_(5)_。

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 题目 分析过 ...

  8. 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653

    [题目链接] ybt 1005:地球人口承载力估计 OpenJudge NOI 小学奥数 7653:地球人口承载力估计 [题目考点] 保留x位小数输出浮点型数字a的写法: cout<<fi ...

  9. 采用python语言实现猜数游戏_用python实现猜数游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...

最新文章

  1. 【AS3代码】访问/修改XML子元素和属性
  2. 配置nginx对php的支持
  3. Hibernate配置文件,省的到处找了
  4. 搞清虚析构函数的使用场合
  5. XP 安装Oralce 10g 数据库
  6. Java-For循环
  7. CentOS上快速安装Oracle服务器脚本
  8. Python中setdefault,deepcopy,copy函数(一分钟读懂)
  9. 一体化方案解决大数据处理的两个难题
  10. 【通信】基于matlab量子密钥分发密钥率仿真【含Matlab源码 1662期】
  11. ionic app 开发学习
  12. 一个留学生眼中的匹兹堡(图)
  13. 100位量子计算机算力,量子算力争霸再迎赛点:谷歌称瞄准新纪录!
  14. 如何删除PDF水印?PDF删除水印怎么操作
  15. multisim中轻触开关在哪_轻触开关和自锁开关的主要区别在哪里?
  16. Pandas——掌握DataFrame的常用操作
  17. python完成梅花易数排盘程序
  18. E - Selling Souvenirs(动态规划 + 贪心 + 思维(缩小时间复杂度和空间复杂度))
  19. 微信小程序入门5--查询湖畔云GPS定位信息
  20. win 10 使用本地代理自动配置pac

热门文章

  1. mysql ltree_mysq基础知识总结l
  2. 微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...
  3. python的matplotlib背景线_python中matplotlib的颜色及线条 控制
  4. swift 浮点型字符串的运算
  5. 离群点检测算法-基础概念
  6. SQLServer之ISO游标使用
  7. RN Exception: Before building your project, you need to accept the license agreements and comp le...
  8. Python3基础笔记---面向对象
  9. Ubuntu安装Anaconda
  10. 中国科协(深圳)海外人才离岸创新创业基地源创力中心开业,主打国际创业服务...