编程的本质探索Nature of Coding

简介:

   很多朋友对“成为编程高手”都很有兴趣,但对我的那篇文章提出很多批评,多是指出该文对这个话题说得不够深入。事实上在一篇短文中把这么大的问题说清楚是很难的事,所以从本篇开始,我们从几个方面入手,详细讨论一下这个问题,今天我们讨论一下编程的本质。

   在探讨编程之前,我们先看看我们生活的这个世界,这个世界五彩缤纷,丰富多彩,但都是由元素周期表中的108个元素构成,而这108个元素又主要由电子、质子和中子组成,其中中子不带电荷,可以忽略。一个电子带一个负电荷,一个之子带一个正电荷。如果把电子用0表示,质子用1表示,有没有发现我们这个世界其实就是由0、1构成的,是不是跟我们coding一样。质子、电子按照一定规律编码,形成了我们这个世界存在的108个元素,这是第一层编码。原子与原子之间需要通过“键”建立关联,形成分子。“键”是由两个电子组成的电子对构成,一个电子属于A原子,一个电子属于B原子,A、B原子通过这个“键”紧密的联系在一起。如果一个原子有一个孤立的电子游离在原子外层,这个电子就有机会与别的原子的电子形成“键”,我们可以形象把这个孤立的电子比喻为一只手,有一个孤立的电子就有一只手,有两个孤立的电子就有两只手,以此类推。对于原子来说,最多只有四只手。比如氯原子有一只手,氧原子有两只手、氮原子有三只手,炭原子有四只手。形成键的规则可以说是原子编码的规则。

   这里提出一个问题:这个世界有108个元素,什么元素是最重要的?

   我们把这个世界上的物质分为无机物和有机物,无机物是有限的,而有机物是无限的,正因为有有机物,我们这个世界才会如此多彩。有机物是什么?我们以前学过,有机物就是碳水化合物。我们知道无机物的分子都很小,而有机物的分子都很大,这个很大的分子的骨架是由炭原子构成的。这个世界有108个元素,为什么是炭?氧不可以吗?氮不可以吗?硅不可以吗?这里分析一下炭的特点,炭(C)有四只手,可以用两只手、三只手或四只手来构建分子的骨架,用一只手或两只手去链接其他元素的原子,形成分子的枝叶,由于骨架不同、枝叶不同就会形成功能不同的有机分子。这种变化是无穷的。有一只手的氯元素只能两两配对,形成的是一个点。有两只手的氧元素可以连接成一条线,比如双氧水H-O-O-H。有三只手的氮元素则能形成面。只有有四只手的炭元素才能形成立体的结构,线和面都很脆弱,容易断和折,而立体的结构就很稳定。这种稳定有多强,我们只要看看由炭元素构成钻石有多坚硬。有四只手的不止有炭,还有硅,但硅的原子核已经太大了,“键”不再那么强劲,所以也无法形成大分子。可以说炭是这个世界编码的核心元素。我们现在可以理一理自然界的编码过程,首先通过质子和电子编码出108个元素,这108个元素通过价键编码出各种化合物,而炭元素由其特殊性开始缓慢地编码出各种简单有机物,再到复杂有机物,再到细胞、再到各种动植物。这个过程经历了45亿年。

   我们现在回到软件编程,软件是由表示0、1的二进制开始,0、1只能表示两个状态,很简单,但两个二进制数就可以表示四种状态,三个可以有8种状态,依此类推。这些状态还没有意义,所以需要进行第一步编码,赋予其含义。我们都知道,最初使用8位进行编码,后来发展到16位、32位、64位编码,现在是使用64位编码,用这64位二进制数来定义最基本的东西,比如数字、字母、汉字等。有了基本的编码定义就可以定义规则了,用这些规则来构建我们现在复杂的程序。我们熟悉的编程语言C#、Java都是是来定义这些规则的。

   这些编程语言首先都会定义一些基本类型,比如整型、浮点数、双精度、字符串、日期等。这些基本类型是编程的基础。基于基本类型可以构建复杂的类型:比如对象、集合等。对象是由基本类型和对象、集合构成的。集合是由多个对象或集合或基本类型构成。

   这些编程语言还会定义编程的规则,这些规则也不复杂,比如流程的定义,比如线性、循环、分支等流程。通过这些规则就可以编写完成各种任务的程序了。

   对象是一个很重要的概念。对象的变化是无限的。正因为有这无限的变化,才能方便的构建出如此多样复杂的软件。但对象不是必须的,因为早前很多编程语言是没有对象这个概念的,也同样完成很多任务。

   编程的基础要求很低,编程的规则也很简单,很容易上手,但要想编出好的代码却不容易,这是因为变化太多,这些变化中有一些可以沉淀下来,形成所谓的编程模式,但更多的还只是存留在每个程序员脑中的经验。

   编程的本质是用简单编码编写成复杂的程序,编写的过程中的变化是无穷尽的,这形成的复杂程序要能满足用户的需求。

   简单来说,就是用简单编码、规则来构建复杂程序。从简单到复杂其中有巨大的鸿沟,这种鸿沟很难从书本上得到,往往需要经过多年的积累才能在其中行走自如。


     本文转自陈革 51CTO博客,原文链接:http://blog.51cto.com/chenge/1238936,如需转载请自行联系原作者




相关文章
|
17天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
8天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
11天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
1035 35
|
11天前
|
机器学习/深度学习 人工智能 搜索推荐
万字长文深度解析最新Deep Research技术:前沿架构、核心技术与未来展望
近期发生了什么自 2025 年 2 月 OpenAI 正式发布Deep Research以来,深度研究/深度搜索(Deep Research / Deep Search)正在成为信息检索与知识工作的全新范式:系统以多步推理驱动大规模联网检索、跨源证据。
799 55
|
8天前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
690 11
下一篇
开通oss服务