软件和硬件的区分及关系,你了解多少?(一)

我是一名程序员,我知道程序员是做什么的,但是我身边的很多家人和朋友都不知道。

他们往往认为程序员是对计算机非常了解的人,包括计算机硬件和软件问题,包括计算机安装系统。

其实可能不仅仅是我的亲戚朋友,绝大多数不是程序员的人,可能不知道程序员是做什么的,也不知道什么是程序或软件。程序员具体是做什么的?这可能是很多想进入软件行业的人都想知道的问题。然后我会根据我目前的理解给出我的意见。如有误解,欢迎指正。

软件和硬件的区别和关系

首先,现在电脑和手机同时使用非常普遍。大家都知道手机和电脑上有很多软件,比如微信、QQ、支付宝,它们都是软件,甚至是手机打电话、发短信、手机和电脑的基本功能。基本的操作系统等等,也都是软件。

那么对应这些软件,我们可以直接接触到的设备,比如电脑、手机、平板等,都是硬件,而软件最终还是要靠硬件。

软件的部分分类

上面有很多软件的例子,但是正如硬件有多种类型一样,软件也不同,软件的类别也很多。

比如微信、QQ、支付宝、打电话、发短信等属于应用软件,android、windows等系统属于操作系统软件。

应用软件一般具有直接为用户服务的特定功能,而操作系统可以直接管理硬件资源,应用软件一般依赖于操作系统。

虽然这些都是软件,但区别可能相当于飞机和火车。会开飞机的未必会开火车,会造火车的未必会造飞机。

软件与程序之间的区别

那么在大致了解了软件和硬件的区别之后,对软件有了一个大致的概念,就可以进一步了解软件和程序的区别了。

一般来说,软件是由程序组成的,软件一般是一个具有特定功能并且可以使用的包,而一个程序可能只是一小段代码。

如果说汽车是一个软件,那么它上面的车轮、方向盘、离合器都是不同的程序,各种零件最终组装成汽车,就像各种程序片段最终形成一个软件一样。

程序和代码

如上所述,程序可能是一小段代码。在生活中,你可能还会听到有人说程序员是码农,他们敲代码。那么什么是代码?

从某种意义上说,代码和程序可以理解为同一个意思。通俗地说,代码是用编程语言编写的逐行字符串。

什么是字符串,简单理解就是几个字符的组合,什么是字符,常见的英文字母和数字都可以称为字符。

如果不考虑中文编程语言,可以理解为代码是由英文字母和数字以及各种符号按照特定规则组成的字符串。

由于这种字符串遵循某种特定的格式,它最终可以被电脑、手机等电子设备识别并做一些事情。

什么是编程语言

所以如上所述,代码是按照特定规则编写的字符串。由于这些特定的规则,这些字符串最终可以转换成电信号,而电信号直接与电子设备的硬件打交道。

从某种意义上说,电信号只是有电和没电的区别,所以一开始要直接转码的字符串是由0和1组成的,一个代表是,另一个代表不是,专业说法是对的或假,真或假,由这种格式组成的代码称为机器语言。

一个简单的 0 和 1 组成的字符串,对人类肯定是不友好的,根本无法理解,所以需要特定的比较规则进行比较和翻译。

为了对人类更加友好,在0和1组成的机器语言的基础上,开发了一种新的带有一些英文单词规则的编程语言,叫做汇编语言,那些英文单词就叫做助记符。

与机器语言相比,汇编语言肯定是因为加入了助记词而更容易理解和记忆,但因为助记词有限,其实没那么容易。一种对人类更友好的编程语言也被开发出来,称为高级编程语言。现阶段语言的思想是面向过程的,代表路线是C语言。

什么是面向过程的?我的理解是,重点是这一步要做什么,下一步要做什么。

然后随着软件技术的发展,其他高级编程语言也得到了进一步发展,如C++、JAVA、C#、IOS等。JAVA等语言的思想是面向对象的,而重点是这个东西可以做什么和拥有什么。什么,而不是专注于过程。

与面向过程相比,面向对象的思想对重用和重用更加友好,但是做一件事必须有顺序,所以里面还是有面向过程的东西,并不代表对象-导向不关心过程。.

什么是程序员

那么有了上面的知识库,就可以说说什么是程序员了。

从上面的描述应该知道,软件是由按照编程语言编写的程序组成的,用来操作电子设备的,所以写这种程序的人一定是程序员。

但是,如果说程序员敲代码,也不完全正确,因为程序员至少分为开发、测试、运维、DBA。开发主要是写代码,而测试、运维、DBA不一定是写代码,其实都是程序员。

程序员的分类有哪些

其实上面说了,开发、测试、运维、DBA都是程序员。这是一个比较大的类别,但不是唯一的一个。如果用来对程序员进行简单初步的了解,我觉得应该够用了。

开发主要是实现软件的功能,主要是打码。

测试主要是针对专业的测试和验证,但不仅限于功能,还需要性能测试。在许多情况下,可能还需要编写类似脚本的代码来支持自动化测试。

运维主要负责软件运行环境的搭建和部署以及对一些软件使用问题的支持,可能还需要编写脚本或者其他代码来支持自动化部署。

DBA主要处理数据库相关的事情,经常需要优化操作数据库的SQL。SQL 本身也是一种代码。

除了以上这些,在纯开发方面,其实还可以有更多的细分。比如主要负责可见页面的页面叫做UI,但是很多时候并没有专门的UI,而是前端一起负责页面。前端程序员其实是直接操作可见页面功能的程序员。

与前端相对应的是后端开发程序员,它实现了一些看不见的功能逻辑。有的直接对应前端功能页面,有的纯后端程序。

上面简单的分类其实是从软件分层的角度,所以其实可以从编程语言的角度来分类,比如java程序员、c++程序员、c#程序员等等。这些分类其实都是以这种编程语言来命名的主要的,但在实践中它可能不是唯一的。

拿java后端程序员来说软件编程是干什么的,通常是一些前端javascript语言和linux shell语言。

如何成为一名程序员

可能有一些不是程序员的朋友想成为程序员,因为公认程序员一般收入都比较高。

那么如何成为一名程序员呢?

首先,我认为你需要先确定自己的方向。你想做软件开发、软件测试、软件运维还是DBA?或者做所有这些并成为一个全栈程序员?

众所周知,人的精力是有限的,艺术行业也有专攻。虽然有很多人是全栈程序员,什么都做,但我个人认为,如果你想直接从零基础变成全栈,其实是非常困难的。,所以个人觉得还是先找个熟悉的比较好。

话说回来,你如何成为一名程序员?

首先,如果你还在学习,可以选择计算机专业。对于很多计算机专业来说,学校都会有程序员相关的专业和课程。

其次,如果你选择了非计算机专业或者已经走出社会,也可以自学或者参加培训机构的培训,或者有关系的可以直接找熟人教你。

计算机专业就不提了,你应该不需要看这篇文章。

先说说自学吧。这对大多数人来说是非常困难的。从自信开始,在挫折中放弃是很容易的。虽然我觉得很多编程语言都很容易上手,但是自学还是很困难的。

说起培训,这是很多野程序员的选择。俗话说,如果艺术界有专攻,人吃这碗饭,吃这饭是有原因的。相比自学,参加培训肯定更容易上手,只是不同的培训机构层次不同,不同的培训机构理念也不同。能否找到好的培训机构需要注意。

另外,培训机构一般说得很快,最好先试一试后再说。

最后说一下熟人的教学。应该选择的人更少。虽然看似省钱,但也未必正因如此压抑,而且因为不是专业的教学软件编程是干什么的,最后也很难学好。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论