python的岗位多吗-为什么python的校招岗位这么少,校招python好找工作么?

Python是动态语言,本来就不适合企业级项目,从语言定位来说,就不是用来做项目的,而是作为静态语言的辅助。所以单靠Python是很难找到工作的,即便找到了,也都是运维自动化或测试方向为主。这些工作根本不是程序员。尤其是运维,其实主要工作就是维护服务器,配置Nginx,根本不用学编程。

不只是Python,其实所有动态语言都不适合搞开发,没错所有的动态语言都如此。

也许你会产生怀疑,PHP和Javascript不也是动态语言嘛?为什么岗位那么多?

中国的PHP岗位多,是历史原因导致的。因为PHP传入中国时,正逢ASP没落,空出了大量市场,又正巧赶上“建站热”。小微企业对网站要求又不高,随便有个网站摆在那就行了。

只要租过云服务器就会知道。无论阿里云、腾讯云还是华为云。那些最低配置的虚拟主机,全都默认安装好了PHP,零配置直接部署。可VPS以上配置的机型,却一律不装PHP,不言自明。

而Javascript,是因为前端的代码量本来就非常非常小,所以很多前端初学者,往往迷恋于js的语法,处处追求使用“源生js”。而从Node.js发布之后,需要牵扯后端逻辑,代码量突然增大。js的动态劣根性立刻就出来了,“源生”js通常直接就给跪了。所以才产生了使用Typesceipt这种静态语言编写代码,再编译成js的工作方式,目的也是为了避开js的动态语言劣根性。那个ECMA组织,捣鼓js这么多年,一直也没真正解决js的问题,Typesceipt一出来,所有问题立刻就解决了。说到底还不就是把js给“静态化”了?

编程语言去动态化,是一个长期趋势。动态语言里面最“年轻”的Ruby和lua,于1993年诞生,也已经是25年前的老技术了。而Python则更老,1989年。1989年诞生了什么大型程序?任天堂FC(小霸王)游戏机上的3A游戏大作《忍者龙剑传》。这些语言诞生的年代,主流的操作系统是ms-dos、Amiga、Unix这三种,其中任何一个操作系统的容量都不超过700KB,一个程序往往只有几kb甚至几Byte,主流的储存方式,还是软驱,最大容量只有1.44MB。这些语言在设计之初,就从没考虑过,一个程序的规模,会达到几MB,甚至几GB。

而windows95的出现,推动了信息革命。计算机图形化、程序员职业化、计算机从电工学中独立出来,成为了单独学科,IT行业正式诞生。此后程序变得越来越大,动态语言不适合编写大型逻辑的缺陷立刻显露出来了。java,C++,C#相继诞生,几乎把动态语言赶尽杀绝。此后动态语言在相当长的时间里,都属于非主流。导致后来不知前因后果的初学者,初次见到动态语言时,反而误以为动态语言是“新型语言”。

为什么动态语言不适合公司项目?有两个原因。一是项目写不大,二是维护成本高。

我举个例子,假如你要写一个游戏类的项目。如果用静态语言,其中一段代码大概是这个样子(类似java和C#的伪代码,伪代码而已,不要在意细节):

主角 a=李逍遥;

武器 b=无尘剑;

技能 c=御剑术;

音乐 d=最炫民族风;

int Test(主角 a,武器 b,技能 c,音乐d){

xxxxxxxxxxx

编写的时候貌似很啰嗦,但每一个元素都一目了然,无论过了多久,你再次看到这些代码的时候,一定立刻就知道每个变量是干什么用的,函数的返回值是什么,每一个形参的类型是什么。

而如果是用Python的话,却是这个样子:

a=林月如

b=牛皮鞭

c=乾坤一掷

d=自由飞翔

def Test(a,b,c,d):

>>>> xxxxxxxxxxx

代码量很少,当然是简单省事。如果此后你又编写了几万行代码之后,需要调用这个Test函数,你还知道每个形参代表什么嘛?这个函数有没有返回值?返回值是个啥?

如果写着写着,你突然一时脑残,写了一句d=赵灵儿,会怎么样?静态语言的ide会立刻报错,告诉你d是音乐类型,不能赋值为赵灵儿。

而Python的ide却不会报错,因为d可以是任何值,凭什么不能是赵灵儿?于是你不会收到任何报错,继续往下写代码。几个月之后,你的项目“完成”了。一运行发现游戏音乐播放不了,而赵灵儿却消失了。到底哪儿错了?ide显示没有错误,一行一行的自己找吧。过了很久很久,你终于找到了错误原因,删除这行代码很容易。但发现删除这行代码之后,之前一直不报错的ide却突然报出了成千上万的错误。因为后面几个月编写的所有代码,都是建立在“d=赵灵儿”这个前提下写成的。你说崩溃不崩溃?

于是把错误一个一个排除,你几个月编写的代码,也就所剩无几了。

另外动态语言的灵活性过高,导致可维护性非常差。一个项目搁置一段时间之后,往往自己都看不懂自己的代码。

比如x=xx( ) ,这个x到底是创建了一个自定义对象?还是接收了一个函数的返回值?

再比如

def test(*list):

>>>>for i in list:

>>>>>>>>return i.Hello( )

这个函数,显然是要传入一些对象,并调用里面的Hello方法,但要传入几个对象?这些对象都是啥?你在编写代码的时候或许想的很清楚,但过一段时间,再看到自己写的代码时,你还知道自己当时是怎么想得嘛?你自己心里也是虚虚的吧?

所以想吃程序这晚饭,先学一门拿手的静态语言,等到了炉火纯青,可以偷懒的时候,再用动态语言来做辅助吧。

纯靠Python搞开发?没有几个企业敢担这种风险的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值