为什么编程语言只是在处理数据却能解决那么多实际问题?

冯仲平


仁者见仁,智者见智。说下我的理解。


先类比几个让人惊讶、又理所当然的现象

  • 咏春只有摊、膀、伏三板斧,却可以一个打十个!
  • 数学只有加法和乘法,却可以发现运动定律,更可以计算卫星轨道!
  • 英文字符只有26个,人类却可以写出那么厚的书,不就是26个字符的排列组合么?
  • 汉字永字八法,“点、横、竖、撇、捺、挑、折、勾”, 从千年前的司马迁,还是那么有滋有味!
  • 电路只是处理与或非三种逻辑,却能组合成彪悍的CPU!

即使简单的组合,也可以千变万化

事情应该力求简单,不过不能过于简单。

编程本质上只有分枝判断(if/else)、循环执行(For/while)、递归调用。不信,去看所有的代码,不论何种语言,不论何种功能,都是这三者的反复组合。正是这三种的组合,却可以:

  • 支撑起数亿人访问电商网站
  • 构建出人工智能的神经网络
  • 解决数据上个千奇百怪的各种场景问题。

想想不是很神奇么?

但是,这三种基础逻辑组合起来,千变万化。正是这千变万化,让编程可以解决那么多实际中遇到的问题。

编程,本质上是数学。

自古至今,人类研究来研究去,无非就两个科目。一个是哲学,一个是数学。从幼儿园到大学到研究生入学,都离不开数学。很多新的学科,尤其是理工类,都是基于数学。

为什么数学可以解决这么多问题?

我觉得这是一个哲学问题。你的去问哲学家。或者将夜中的荡秋千的十一师兄。


最近儿子经常问为什么。比如为什么水是透明的?我回答说因为水就是透明的。有点无赖,唉。


平凡科技


作为一名IT行业的从业者,我来回答一下这个问题。

首先,编程语言看似仅仅是在处理数据问题,但是随着大量的资源逐渐数据化,编程语言的资源整合和处理能力也会越来越强大,这一点将随着大数据的不断发展而有越来越明显的体现。

编程语言一端要对接各种操作系统和资源平台,另一端则对接具体的开发场景,操作系统和资源平台通过接口的方式来开放自身的各种功能,而程序员则可以通过编程语言来完成对于这些资源的整合和利用,以完成具体的业务逻辑处理,通常情况下,计算和存储是编程语言主要的任务。

编程语言能够解决什么样的问题,或者说编程语言自身的功能边界,在很大程度上取决于编程语言所处的资源平台,不同的资源平台往往能够解决不同类型的问题。随着产业互联网的发展,整个开发领域将逐渐进入到平台化开发时代,其中云计算平台、大数据平台、物联网平台和人工智能平台将不断提升自身的资源整合能力,程序员基于这些开发平台也能够不断拓展自身的开发能力边界。

编程语言本身也与具体的开发场景有密切的关系,比如嵌入式开发往往会采用C语言,Web开发会采用PHP、Java、Python等,而大数据开发可以采用Python、Scala等,所以程序员往往需要根据不同的开发场景来选择使用不同的编程语言。对于初学者来说,如果没有明确的开发方向,可以选择学习一门全场景编程语言,比如Java、Python和C#这三门编程语言就是不错的选择。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!


IT人刘俊明


为什么编程语言只是在处理数据却能解决那么多实际问题?

问出这个问题可能是将编程语言指挥电脑处理的数据和平常接触的狭隘数据定义混淆了,电脑处理的数据不仅是指我们平时说的数据,还有数据间的逻辑关系。如果在数据这个地方钻牛角尖,还会出现一个较真的问题“明明电脑只能识别0和1两个数据,他是怎么处理3的?”。0和1能表示比较大的数字,是引入了进制这一概念,二进制数当前位置大于一时,向上一位进一来表示更大的数字,这是二进制数内部的逻辑关系。进制这一概念解决了表示更大数字的问题。假如仅仅只有这的话,电脑也只能处理纯数字,连最简单的加减都做不到,为了解决这一问题,电脑引入了逻辑门这一概念,通过数据与逻辑的结合实现加减的处理(想详细了解电脑加法运算的可以看下我这个回答http://t.cn/AikU4Bdj)以及更加复杂的现实逻辑问题的处理。比如“王五吃饭”这个事情。我们把它拆解为“王五”“吃”“饭”以及一个逻辑真值“True”(数字1)代表肯定动作(用计算机交换码中规定的数字组合来分别代表“王五”“吃”“饭”)。假如没有吃饭,将吃的逻辑值通过非门电路,吃的逻辑值就变为假“False”(数字0)。电脑就是这样把现实中的事情和电脑中的数据联系在一起,并处理他们的逻辑变化,更复杂的问题就是更多的数据以及逻辑关系的组合。编程语言就是直到电脑完成这一过程的工具。


科级鸡


编程的目的是什么,就是为了解决实际问题。

语言只是一个实现工具,工具本身是不会动的,那就要靠人去设计一套动作,让它动起来,达到帮助人去解决问题的目的。

数据是什么,就是日常的各种现象的数字化表象。人可以去分析它们,但是数据量一旦上去,只靠人就不行了(20个指头数不过来了)人就需要机器去帮忙,而这种重复性高强度的数据整理工作恰好是机器的长处。

有了机器的帮忙,人就可以通过通过(数据)现象去看(规律)本质了。但是该怎么分析该怎么处理数据,这完全要看人的设计能力了。

至于编程语言,无论是C、PHP、Java、python,那都是工具,就像改锥、榔头、锯子一样,区别就是什么环境下最适合用什么。例如锯树当然锯子最好用,但你也能用榔头慢慢砸,更可以用改锥一下下捅。至于为什么别人捅三下就能解决问题,而你要去捅一百下,那是你捅的不是地方(不熟练/不会用/没经验)。

简单的数据处理过程,例如网上购物,通过选品牌、类型、价格范围就能确定合适的商品范围,这就解决了找不到想要商品的实际问题。而程序只是按我们的条件帮我们做了过滤而已,但是否满足了需求,那还要人去判断,然后根据结果再设定条件去筛选,直到有或没有。

至于数据处理,也不是简单的过滤,也要先分析数据之间的关系,剔除无关的数据,补全缺失的部分,制定处理规则,然后才是编程。循环几次才获得满意的结果,而不能简单的只看最后一次。


IT的老司机


《离散数学》这门课会告诉你答案。

《数字逻辑》这门课会告诉你具体做法。


系统一定要我起个名字


因为互联网时代就是信息的时代,是万物互联的时代。那么物品之间通过什么建立联系的呢?答案就是数据,那么身为编程语言就重要的功能就是赋予数据一定的逻辑,那么这些逻辑的组合就变了功能,比如语音识别,机器翻译,自动驾驶等。之所题主有此疑问,我认为是对编程语言的理解还不够全面,应该多去了解一些其它的编程语言,你就会发现,语言不过是描述一段逻辑的形式,区别在于语法,其中的逻辑是不变的。


大数据和人工智能UPUP


通过编程完成对芯片的控制,通过芯片驱动各种电子元件,做出各种电子产品,这也是单片机的应用!!


单片机设计制作


因为那些问题都可以被数据描述。


James036


数据是信息,计算机实际上在交换信息,和从复杂信息中找到有价值的信息,这些信息帮助人现实世界做出决策,价值由此产生。


爱吃火锅的小青年


因为很多实际问题本质上就在处理数据


分享到:


相關文章: