作为一名IT行业的从业者,我来一下这个问题。
首先,编程语言看似仅仅是在处理数据问题,但是随着大量的资源逐渐数据化,编程语言的资源整合和处理能力也会越来越强大,这一点将随着大数据的不断发展而有越来越明显的体现。
编程语言一端要对接各种操作系统和资源平台,另一端则对接具体的开发场景,操作系统和资源平台通过接口的方式来开放自身的各种功能,而程序员则可以通过编程语言来完成对于这些资源的整合和利用,以完成具体的业务逻辑处理,通常情况下,计算和存储是编程语言主要的任务。
编程语言能够解决什么样的问题,或者说编程语言自身的功能边界,在很大程度上取决于编程语言所处的资源平台,不同的资源平台往往能够解决不同类型的问题。随着产业互联网的发展,整个开发领域将逐渐进入到平台化开发时代,其中云计算平台、大数据平台、物联网平台和人工智能平台将不断提升自身的资源整合能力,程序员基于这些开发平台也能够不断拓展自身的开发能力边界。
编程语言本身也与具体的开发场景有密切的关系,比如嵌入式开发往往会采用C语言,Web开发会采用PHP、Java、Python等,而大数据开发可以采用Python、Scala等,所以程序员往往需要根据不同的开发场景来选择使用不同的编程语言。对于初学者来说,如果没有明确的开发方向,可以选择学习一门全场景编程语言,比如Java、Python和C#这三门编程语言就是不错的选择。
仁者见仁,智者见智。说下我的理解。
先类比几个让人惊讶、又理所当然的现象
- 咏春只有摊、膀、伏三板斧,却可以一个打十个!
- 数学只有加法和乘法,却可以发现运动定律,更可以计算卫星轨道!
- 英文字符只有26个,人类却可以写出那么厚的书,不就是26个字符的排列组合么?
- 汉字永字八法,“点、横、竖、撇、捺、挑、折、勾”, 从千年前的司马迁,还是那么有滋有味!
- 电路只是处理与或非三种逻辑,却能组合成彪悍的CPU!
即使简单的组合,也可以千变万化
事情应该力求简单,不过不能过于简单。
编程本质上只有分枝判断(if/else)、循环执行(For/while)、递归调用。不信,去看所有的代码,不论何种语言,不论何种功能,都是这三者的反复组合。正是这三种的组合,却可以:
- 支撑起数亿人访问电商网站
- 构建出人工智能的神经网络
- 解决数据上个千奇百怪的各种场景问题。
想想不是很神奇么?
但是,这三种基础逻辑组合起来,千变万化。正是这千变万化,让编程可以解决那么多实际中遇到的问题。
因为那些问题都可以被数据描述。
编程的目的是什么,就是为了解决实际问题。
语言只是一个实现工具,工具本身是不会动的,那就要靠人去设计一套动作,让它动起来,达到帮助人去解决问题的目的。
数据是什么,就是日常的各种现象的数字化表象。人可以去分析它们,但是数据量一旦上去,只靠人就不行了(20个指头数不过来了)人就需要机器去帮忙,而这种重复性高强度的数据整理工作恰好是机器的长处。
有了机器的帮忙,人就可以通过通过(数据)现象去看(规律)本质了。但是该怎么分析该怎么处理数据,这完全要看人的设计能力了。
至于编程语言,无论是C、PHP、Java、python,那都是工具,就像改锥、榔头、锯子一样,区别就是什么环境下最适合用什么。例如锯树当然锯子最好用,但你也能用榔头慢慢砸,更可以用改锥一下下捅。至于为什么别人捅三下就能解决问题,而你要去捅一百下,那是你捅的不是地方(不熟练/不会用/没经验)。
计算机也只是处理和储存数据啊,还二进制的,根本的原因在于,实际问题可以抽象成数据,再通过计算解决。
因为互联网时代就是信息的时代,是万物互联的时代。那么物品之间通过什么建立联系的呢?答案就是数据,那么身为编程语言就重要的功能就是赋予数据一定的逻辑,那么这些逻辑的组合就变了功能,比如语音识别,机器翻译,自动驾驶等。之所题主有此疑问,我认为是对编程语言的理解还不够全面,应该多去了解一些其它的编程语言,你就会发现,语言不过是描述一段逻辑的形式,区别在于语法,其中的逻辑是不变的。
因为很多实际问题本质上就在处理数据
数据是信息,计算机实际上在交换信息,和从复杂信息中找到有价值的信息,这些信息帮助人现实世界做出决策,价值由此产生。
《离散数学》这门课会告诉你答案。
《数字逻辑》这门课会告诉你具体做法。
通过编程完成对芯片的控制,通过芯片驱动各种电子元件,做出各种电子产品,这也是单片机的应用!!