当前位置: 首页 > 编程日记 > 正文

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

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

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-flutter 安装步骤

flutter 安装步骤 1 下载SDK SDK 下载地址 2 解压压缩包 将sdk 文件夹丢进系统的应用程序(Application)的目录 3 配置环境变量 命令行 open ~/.bash_profile ,然后在bash 文件中写入下面配置 export PATH$PATH:/Applications/flutter/bi…

codevs1258 关路灯(☆区间dp)

1258 关路灯 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description多瑞卡得到了一份有趣而高薪的工作。每天早晨他必须关掉他所在村庄的街灯。所有的街灯都被设置在一条直路的同一侧。 多瑞卡每晚到早晨5点钟都在晚会上,然后他开始关灯。开…

BroadcastReceiver自学笔记

1. 使用步骤: 1.1 声明Intent Intent intent new Intent("name");------静态常用 IntentFilter filter new IntentFilter("name");--------动态常用 1.2 注册 1.3 接收:利用action或者Bundle 在OnReceive()中,接收信息…

小狗钱钱_小狗设计

小狗钱钱by Patryk Adaś通过PatrykAdaś 小狗设计 (Design for doggies) Education should be universal and free for everyone.教育应该是普及的,对所有人来说都是免费的。 When I first entered the field, designers were patient with me. They gave me fee…

层化(stratification)的方法

有时候我们会遇到调整后的模型反而不如调整前表现好的情况,这可能和数据的随机分割有关系。在这个不平衡的数据情况下,最好用层化(stratification)的方法,比如: from sklearn.cross_validation import Stra…

零基础入门jQuery视频教程

零基础入门jQuery最新版开发.NET富客户端应用(选择器、DOM操作、事件和动画、Ajax应用、插件、Mobile)课程分类:.NETJquery适合人群:初级课时数量:35课时用到技术:javascript,ajax,jquery,handler涉及项目:各知识点的项…

2-flutter 之HelloWorld

widget 在flutter 中,几乎所有的东西都是widget,本身是用户界面的基本构建快,将widget组成一个层次结构, 调用widget树。每一个窗口widget都嵌套在父窗口widget中,并且从其父窗口中继承属性。甚至应用程序对象本身也…

浏览器获取浏览历史_浏览器历史的未来

浏览器获取浏览历史by Patryk Adaś通过PatrykAdaś 浏览器历史的未来 (The Future of Browser History) I am really unsatisfied with the current state of Browser History. I think that this is the most underestimated feature of every modern web browser. Let’s t…

【水】JSOI完美的对称

完美的对称 题目描述 在峰会期间,必须使用许多保镖保卫北约组织的各国代表。代表们除了由他自己的随身保镖保护外,组委会还指派了一些其他的特工和阻击手保护他们。为了使他们的工作卓有成效,使被保卫的人的安全尽可能得到保障,保…

3-flutter 项目结构 资源 依赖

1 项目的名称 android 安卓相关工程文件 build 项目的构建输出目录 ios ios 相关的部分工程文件 lib 项目中的dart 源文件 src 包含其他的源文件main.dart 自动生成的项目入口文件 test 测试相关的文件 pubspec.ymal 项目依赖配置文件 3 归档图片资源和处理不同的分辨率…

python简史_命令行简史

python简史by Gitter通过吉特 命令行简史 (A Brief History of the Command Line) This post by Andy Trevorah, Engineer at Gitter, has been adapted from a talk that he originally gave at codebar, a non-profit initiative that facilitates the growth of a diverse …

4- flutter - Widget

Widget Flutter 中的view 就是widget 1 无状态和有状态的Widget StateslessWidgets 适用于用户界面不依赖于用户的信息的时候 StatesfulWidgets 有状态的,例如HTTP 网络请求或者用户交互之后收到数据动态表更新UI 这就是一个无状态的Widget Text("we like…

第一讲SQL命令的DDL和DML操作讲解

知识点: 一、sql命令DDL(结构化操作) 二、sql命令DML操作(增删改查) 1.sql命令DDL(结构化操作) 1.1表添加字段: alter table 表名 add 列定义 如: alter table Student add email varchar(128); 1.2 修改字段&#xff…

基于Tkinter利用python实现颜色空间转换程序

主要基于colorsys实现,例子是从hls转换到rgb,假设要换颜色空间非常easy仅仅须要改动一个函数 用到了Scale和Canvas组件 代码例如以下: from Tkinter import * import colorsys #操作后的响应函数 def update(* args):colorr,g,b colorsys.hl…

react 时刻表插件_React“啊哈”的时刻

react 时刻表插件As a teacher, one of my main goals is to maximize people’s “aha” moments.作为一名老师,我的主要目标之一是最大限度地利用人们的“哈哈”时刻。 An “aha” moment is a moment of sudden insight or clarity, where the subject starts t…

同样在JavaScript中

ES6有三个内置决定一些设施x和一些y是“相同的”。 它们是:平等或“双等于”(),严格平等或平等“三重”(),Object.is。 (注意,Object.is在ES6补充道。 等于两倍和三倍等于存在ES6之前,和他们的行为没有改变。) 概述 演示,下面是三个同样使用的比较: x y x y Object。是(x,…

5-flutter 布局和列表

布局和列表 类型作用特点Container只有一个子 Widget。默认充满,包含了padding、margin、color、宽高、decoration 等配置。Padding只有一个子 Widget。只用于设置Padding,常用于嵌套child,给child设置padding。Center只有一个子 Widget。只…

shell awk实战

一、文本处理 1、按行提取关键字频次(如取第5列) awk BEGIN{FS"|"} {a[$5]1;} END {for(i in a) print i ":" a[i];} OPT.ForumLogicNewServer_action_20161107.log | sort -nrk 2 -t : 2、日志用户每分钟访问量统计 这里我们统计日…

pix怎么抚养另一只猫_在工作和抚养两个孩子的同时,我如何在一年内获得第二学位并获得了5个开发人员认证...

pix怎么抚养另一只猫“The standard pace is for chumps. The system is designed so anyone can keep up. If you’re more driven than ‘just anyone’ — you can do so much more than anyone expects. And this applies to ALL of life — not just school.” — Derek S…

Wireshark网络抓包(三)——网络协议

一、ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址。 IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信; 在通过以太网发生IP数据包时,先封装第三层&a…

实现Java中的ArrayList

最近深受轮子哥影响,觉得造一些轮子应该会对自己的技术功底有一定的帮助,就决定先从简单的容器开始实现。废话不多说,就先实现一个Java中的ArrayList。 ArrayList是我们在Java中使用非常多的一个类,它是顺序表的数组实现&#xff…

6-flutter 状态管理

1 StatelessWidget 不需要状态改变的widget,它没有要管理的内部状态。 Text,CircleAvator 都是其子类 其传递的参数别final 修饰,不可变的 无状态的widget build 方法在以下三种情况下进行调用 当widget 插入到数中去当widget 父级更改配置的时候当…

大二上学数据结构和操作系统_毕业后的工作比上学要重要得多。 这是数据。...

大二上学数据结构和操作系统by Aline Lerner通过艾琳勒纳(Aline Lerner) 毕业后的工作比上学要重要得多。 这是数据。 (What you do after you graduate matters way more than where you went to school. Here’s the data.) The first blog post I published that got any r…

关于C#中编译器保证变量必须初始化规则猜想

现在两种情况: 第一种情况: using System; namespace Wrox {public class Program{static void Main(string[] args){int index; if(true){ index 100; } Console.WriteLine(index); Cons…

Bootstrap table表格

Bootstrap table 使用类 Class"table" 既可让table美化样式 table 相关的Class 隔行换色 : table-striped 鼠标悬停效果: table-hover 表格的边框 : table-bordered 垂直居中 : vertical-align 表头颜色:c…

flutter报错Could not connect to lockdownd, error code -

关于 flutter 报错信息解决方案 第一步: cmdshiftg 前往 /var/db 文件夹,找到lockdown文件夹,修改读写权限 第二步 : 打开命令行,依次执行 brew update brew uninstall --ignore-dependencies libimobiledevice brew uninstall…

k8s aws 部署_如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署

k8s aws 部署by Adam Watt通过亚当瓦特 如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署 (How to setup Continuous Deployment to AWS S3 using CircleCI in just 30 minutes) Continuous Deployment might seem complicated at first, but don’t be intimidated. In…

SharePoint 2010 单点登录

SharePoint2010单点登录 1.进入管理中心》应用程序管理 2.找到 Secure Store Service 应用程序代理 3.然后就是新建了 5.输入网站集管理员 6.这个时候SharePoint就知道你需要给OA这个系统做单点登录了。 7.下一步就是我们要把我们进OA系统的帐号密码告诉SharePoint&#xff0c…

Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54894451 本文出自【赵彦军的博客】 InputStream |__FilterInputStream|__BufferedInputStream 首先抛出一个…

7-flutter Navigator 和Route

Route 和 Navigator 用于页面之间的跳转 一 Navigator 的 push 和 pop 用于页面之间的跳转 创建MaterialApp时可以指定routes参数,该参数是一个映射路由名称和构造器的Map 跳转的时候 使用 push 跳回的时候使用 pop import package:flutter/cupertino.dart; im…