IT–收起高高在上姿态
虽然IT行业已不再是一个新兴行业,但其在很多外行人眼中仍然是神秘且高大上的存在。他们认为IT就是很高深的一门技术,其门槛是普通人望尘莫及的。然而,这里我要告诉你的是,现在是2020年了,若放在10多年前,你对IT畏之若虎小编绝不劝你。但,IT行业发展到如今,其入门门槛高已经大大降低。可以毫不夸张的说,如今IT行业就像农业,大部分IT从业者只不过就像以农民一样,照着说明书种菜施肥就行。因为前路已经有一大批袁隆平爷爷那样的伟大前人铺垫好了。所以如今才有码农一说。
IT–大大降低的入行门槛
为什么前文会说如今的IT门槛较十余年前已经大大降低了呢?在没有入行IT之前,小编也和大多数人一样觉得IT是一项十分高大上、十分难的技术。但是当我进入这一行之后才发现,大部分IT人的技术根本就谈不上高大上,而且大部分人做的事情都没有什么创造性。
这里有一份来自codeforge统计数据–其中有一项关于2015年国内员学历统计中,有近3层程序员只有高中学历,大专以下学历占了40%以上。这在十几二十年前是不可想象的。像雷军那一代的程序员,哪一个不是正规科班出身?但是时代就是这样不断变换,作为普通人我们只能紧随时代脉搏。
那么?为什么会出现上述情况呢?且听小编从编程语言的发展来分析。
1. 机器语言
第一代计算机语言称为机器语言。计算机只识别0和1,这里的0和1并不是人类熟知的罗马数字0和1,而是表示高低电平的两种状态,0表示低电平,1表示高电平;最原始的计算机编程就是依靠0和1来编写的,但是这已经是很古老的手段了,如果让我用0和1去编写一条程序,那么我是万万做不到的。因为这不仅仅需要编程知识,还需要十分深刻的计算机、电路、CPU等知识。此时想入门IT,已经不能叫迈进门槛了,而叫天堑。于是就有了更好理解,对开发人员更友好的汇编语言出现。
2. 汇编语言
汇编语言通过用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。让一个个人类很好理解的英文单词来替代由0和1组成操作指令。通过将汇编语言和特定的机器语言指令集是一一对应的,从而摆脱晦涩的0和1。例如:用“ADD”代表数字逻辑上的加减。
如:add 1, 2;
add,就是一个英文单词–“加”的意思。此条汇编代码即执行 1 和 2 相加。如果直接用机器语言编写的话,这几乎是无法实现的。因为用机器语言太难记忆了,也没人能看得懂。所以后来就设计出了第二种语言,即将 0/1 代码翻译为英文单词,这些英文单词直接对应着一串 0/1 指令。这个就是汇编语言。但是即使汇编已经极大的降低了编程难度,但是其还是摆脱不了计算机,需要考虑各种指令、内存等等。这样对于没有计算机基础的人来说,入门仍是十分困难的。于是,在汇编基础上又发展出所谓的高级语言。
3. 高级语言
高级语言的发展分为两个阶段,以 1980 年为分界线,前一阶段属于结构化语言或者称为面向过程的语言,后一阶段属于面向对象的语言。至于什么叫面向过程,什么叫面向对象?这些你们暂时不需要知道过程的代表就是大名鼎鼎的C语言,而面向对象的代表就是随着移动互联网兴起的Java、Python等。高级编程语言已经能够使得入门开发者只需要考虑业务本身的编程实现,而不需要过多考虑计算机的原理。高级语言已经十分接近人类语言,就算从来没接触过编程的人可能对一些代码也能看懂,例如下面这一段代码,关看英文和运算符就能大概知道这段代码的意思:
static void Main(string[] args)
{
Console.WriteLine("请输入游戏积分(大于0的整数)");
int points = int.Parse(Console.ReadLine());
//如果输入的积分小于0则将其设置为0
if (points < 0)
{
points = 0;
}
if (points <= 100)
{
Console.WriteLine("您的游戏等级为初级");
}
else if (points <= 300)
{
Console.WriteLine("您的游戏等级为中级");
}
else if (points <= 500)
{
Console.WriteLine("您的游戏等级为高级");
}
else
{
Console.WriteLine("您的游戏等级为特级");
}
}
特别是如今占据主流的面向对象编程,其模块化编程极大的提升编程效率。各种成熟的框架,使得很多新入门程序员只需极短的时间就可以上手开发业务(很多培训机构号称培训3个月即可上岗)。
例如:想开发一个桌面应用程序,如果用古老的C语言开发的话,需要调用各种windows的API,而且还不见得处理的好。而C#的.NET框架让你只需要简单的拖拽就能轻松实现。
又例如,看起来十分神秘的人脸识别。真正让程序员来展开业务可能只需要十几行代码就能实现。因为,真正核心的功能已经有人实现好并且模块化了,而大部分程序员只需要拿来塞进自己的业务代码中即可。例如,下面这一小段代码就能实现框出图片中出现的人脸。看起来是不是十分简单?这是因为大部分的工作都在CV2中被别人实现好了。
import cv2
img = cv2.imread('image1.jpg',1)
face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindo
----代码来自bilibili:同济子豪兄
如今,编程就好比造车,十几年前造一个车可能得自己从轮子开始造起,但是现如今大部分的编程工作只是将别人造好的零配件拿来组装,程序员需要做的就是去熟悉每一个配件的作用和装配规则。需在此申明的是,这里说的只是IT界大部分情况,特别是刚入行3年以内,基本都是如此。但是像阿里研发飞天平台、华为鸿蒙系统的大神们他们的工作就是在为未来造轮子。
总结
简而言之,编程发展到今天,已经完全实现了让开发人员脱离计算机,不用去管计算机如何运行,内存如何分配,指令如何执行等等。如此,开发人员的重点更多的在业务逻辑本身上,并且由于模块化和框架的存在,很多时候编程只是在学习别人的定好的规则,按照别人的规则去编程。例如,下图展示了高级语言如何将底层封装,使得程序员不再需要去关心底层:想要在屏幕显示“vip会员”这个信息,程序员只需要考虑puts(“vip会员”)这一层,至于如何实现向屏幕输出和如何让计算机执行你的命令,这些都不用程序员考虑,编程语言和IDE本身会处理。
如此,才造成如今IT界的入门门槛大大降低。所以,无需再觉得IT技术于自己高不可攀,心动即行动即可。由于门槛的降低,如今,编程完全可以自学。来跟我一起不花钱自学编程吧!!!!
本节内容至此结束,下一节将和大家聊一聊“学历低能转IT吗?年纪大能转IT吗?”这两个话题。欢迎大家关注小编,谢谢!!!!