何为编程 - What is Programming/Coding 翻译

原文链接:What is Programming/Coding? - Programming for Beginners

何为编程

计算机编程,或者简称编程,是制作软件的过程。但到底什么软件?它是怎么做出来的?

什么是软件

软件是一系列(一套)电脑需要执行的指令。

就像食谱:

  1. 把鸡蛋打到碗里
  2. 搅拌碗里的鸡蛋
  3. 把锅放到中火上
  4. 锅里放点油
  5. 把刚刚的鸡蛋倒进锅里
  6. 等等

计算机不是操作食材,而是操作数据。软件里的指令更像这样:

  1. 读取一些数据
  2. 读取另一些数据
  3. 把这两份原始数据变成结果数据
  4. 把结果数据送给显示器去显示
  5. 把结果数据送到互联网上
  6. 等等

这些指令我们通常叫它们:源代码。源代码就是人们写的一套计算机能懂的指令。

源代码长什么样

代码不是用例如英语这样的自然语言写的。

这是一个用名叫Ruby的语言写的程序。

require 'open-uri'
require 'json'
FRONT_PAGE_URL = 'https://reddit.com/r/all.json'
front_page = JSON.load(open(FRONT_PAGE_URL).read)
top_post = front_page['data']['children'][0]['data']
puts 'The top post on reddit is:'
puts top_post['title']
puts top_post['url']

这个程序的功能是显示reddit这个网站的热门帖子。运行结果是这样:

The top post on reddit is:
One of my favourite things about working in the ski fields
http://i.imgur.com/hWwlWgI.jpg

同一个程序,用一个叫Python的语言来写:

import urllib, json
FRONT_PAGE_URL = "https://reddit.com/r/all.json"
front_page = json.loads(urllib.urlopen(FRONT_PAGE_URL).read())
top_post = front_page['data']['children'][0]['data']
print "The top post on reddit is:"
print top_post['title']
print top_post['url']

同一个程序,用一个叫Clojure的语言来写:

(require '[clojure.data.json :as json])
(def front-page-url "https://reddit.com/r/all.json")
(let [top-post (-> front-page-url
                   (slurp)
                   (json/read-str)
                   (get-in ["data" "children" 0 "data"]))]
  (println "The top post on reddit is:")
  (println (get top-post "title"))
  (println (get top-post "url")))

可以看出来,编程语言和自然语言很不相同。自然语言容易有歧义,可以有很多层意思,例如讽刺、影射等等。如果是和人类交流,那没问题,但计算机可不懂。

计算机一切就按照字面意思来。如果你问计算机:一个数是奇数或者偶数?他会回答“是”。我没有开玩笑,例如把这个问题用Ruby语言写成代码:

puts (5.odd? or 5.even?)

运行一下,结果会是“true”(是),这个结果从技术上来说是正确的。5的确要么是奇数要么是偶数,但我问的不是这个意思。

不仅仅是

写代码只是制作软件的其中一步。

Large pieces of software – like Windows, OS X, and big-budgets games – are made up of millions and millions of lines of code. When you have that much code, you need to plan out how the code will be written, and how different parts of the code will work together. This kind of planning is called design or architecture. On large projects, a lot of time is spent designing and architecting before code is written.

Another large part of making software is testing. Just because the code has been written doesn’t mean it is correct. The code might crash sometimes, or give the wrong results, or freeze, or any number of other problems. To try and avoid these problems, professional software developers have various different ways to test their code.

Then there is debugging, which is the process investigating, diagnosing and fixing problems in source code. This is a skill in itself.

总结

编程是写一些计算机可以执行的指令。这些指令叫做源代码,是用一些不同于人类语言的特殊语言来写的。编程还包括源代码的规划、测试、调试debug。


翻译这篇文章的缘起:过年的时候,一位蛮有学问、了解传统文化、易经、书法特棒、非常“老一辈知识分子”,但对现在的网络世界一窍不通的长辈,好奇地问我什么是编程,之所以会有这个问题,是说认识一个小伙子,没上好学校,毕业去报培训班学了一年多编程,然后去工作拿一万多工资,好像很不错的样子,以前没看出来小伙子这么聪明,所以过年遇到我就问我什么是编程,我发现我解释不了,虽然这位长辈很厉害,但感觉是两个世界的人,语言体系完全不同,我实在无法通俗地解释,看到这篇文章,觉得很简明扼要,决定翻一下,以后遇到不懂何为编程的人就可以这样解释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值