分享一些有趣的历史,无意褒贬和争论。
Python诞生于1989年,C#诞生于2000年。论年纪,两者差了11年。但为什么一个80后,直到今天才排到了00后的前面?早干什么去了?一门近30年都没火的语言,为什么最近几年突然就给火了?如果非要回答的话,我会说是“因为没有新的增长点”。
动态语言绝大部分都是老古董,其中最“年轻”的是javascript,ruby和lua,它们是仅有的三个90后。绝大多数动态语言,都诞生于计算机发展的早期阶段。
那个时期的电脑,还没有图形界面。最主流的操作系统,是微软帮IBM个人电脑开发的MS-DOS,整个操作系统才700kb,在当时已经算巨无霸了。程序一般只有几kb,甚至几byte。通常几百行代码的程序,就能算一个“软件”,几千行代码就算是“巨型项目”了。
而从windows诞生之后,图形界面化的时代真正到来了,那些几千行代码写成的“巨型项目”,直接变成了“小工具”。其实至此,现代IT行业才算真正诞生,计算机行业才从电工行业中完全独立出来,“会编程的电工”才变成了程序员。静态语言诞生,解决了两个根本问题,一是让程序可以写的更大,使“软件”的门槛,从几百行代码,猛增到十万行级别,“大项目”飙升至百万行级别。二是可以让程序跑的更快。3d游戏等依赖高性能的应用迅速发展壮大。
此后动态语言因为无法克服难以编写大型程序,以及运行速度慢这两个问题,被视为过时的技术,逐渐从主流变得边缘化。
几乎所有的程序员都在学习桌面程序开发,C++一度如日中天,而学习网站技术的程序员,被视为“不务正业”。而当时普遍认为,动态语言会在2000年彻底灭绝。
再后来,网络时代到来了,各种应用被搬到了浏览器上,桌面开发开始转冷,那群“不务正业”的人成了抢手货,“务正业”的人却突然没了方向。
这时候一度被windows吊打的Linux,又重生了。。之前快被扔进垃圾堆的“破烂儿”,摇身一变,却成了装逼神器。
随着网络普及度越来越高,人们发现每次更新网站上的内容,都要关闭服务器,严重影响网站的流量增长。而静态语言因为需要编译,每次更新必须关闭网站。于是javascript虽然是动态语言,却也照样火了。“学编程==做网站”成了既成事实,PHP,Python,Ruby等本该灭绝的动态语言,又跑出来蹭互联网的热度,集体复活了。尽管依然不适合大程序,但兑付着做些乡镇企业的官网,博客,个人主页,总是绰绰有余的。
再后来智能手机普及,又把java和OC捧火了。什么软件都要有个手机版,才显得有逼格。可是由于智能手机增长过快,短短几年之后又没了增长点,IOS开发短短几年就由热转冷,今天在就业市场已经基本绝迹。安卓开发还有一些岗位,但也已经淡出主流了。
各大厂商绞尽脑汁,赶紧搞出了VR,AR进来救场。结果消费者却不买账。。。观望的人不少,但创造的经济效益却非常有限,于是这个概念很快就冷掉了。一大堆VR引擎蓄势待发,几年之后就只剩Unity3d这么个独苗了。。。眼见形势不对,混合现实,区块链,大数据组队前来。结果混合现实的设备太贵,消费者不买单,大数据又无法平民化,也就没了炒点。
区块链总算稍微炒出点热度,忽悠出一支“够浪”地鼠军团歌功颂德,但不久之后却发现整个it圈,除了一群传教士每天在编故事,“够浪”们每天在听故事,高喊口号拯救世界之外,居然没人能说清区块链到底有啥用?后来也不知是谁手贱发帖问了一句“区块链是不是庞氏骗局?”竟然出现了皇帝新衣一般的童话式剧情。“够浪”大军除了发动人海战术,用几个假大空的术语反复洗版之外,居然连一条有力的反驳都讲不出来,眼看就要编不下去了。。。
这可急坏了it巨头们。就在这时,已经被游戏开发行业玩了几十年的“人工智能”,突然摇身一变,返老还童,火了!
“人工智能”这几十年来,从深度优先遍历,广度优先遍历,发展到A*算法,再到FSM有限状态机,又进化到行为树。。每隔两年就出一套新算法。一直也不火。
做过的益智游戏数不胜数,搞过的NPC逻辑成千上万。象棋、围棋、五子棋、斗地主、三国杀、对对碰、连连看,各种算法轮番上阵,带火的游戏一波又一波,可人工智能本身就是火不起来。
90年代初期,IBM搞了套算法炒作一波,用深蓝计算机下国际象棋,把各路国际象棋大师杀的人仰马翻。概念确实炒起来了。不久之后,深蓝就在电影里成功统治了世界,可惜被一个内裤穿在外面的人打败了。后来,又在《终结者》、《机械战警》里统治了世界。当然,最后还是被男主角打败了。
虽然概念炒的这么大,也不可谓不火,可人工智能还是得不到认可。因为无论怎么看,它都只是个去掉了图形界面、加大游戏难度的象棋小游戏。
前几年英国一家公司也搞了套新算法,起名深度学习。炒作了一波,当然还是没火,要看公司就要倒闭,谷歌出手收购之后,搞了个围棋比赛。本觉得没啥炒头。几十年前就被IBM炒糊了的残羹剩饭,依然是“小游戏统治世界”的老段子。
可万万没想到,才赢了一个世界冠军,竟然就给火了!立刻就变成了“改变世界”的“新概念”。
Python也跟着鸡犬升天,顶到了风口浪尖。概念炒的火翻天,一大堆数学圈子的人,嘴上挂着各种算法,跨行到IT圈来蹭热度,反倒把传统程序员挤到一边去了。
但无论概念怎么炒,能火还是不能火,项目终究还是要向大型化发展吧?增删改查还是要有人搞吧?
等到概念炒出来了,行业趋于成熟了,自然又会有更新的概念出来,到时候又会火一波新语言,不是从来都是如此嘛?
再火的概念,最终还是会冷掉,“更火”的概念,也会不停的冒出来。但只要程序朝着大型化发展的这个终极目标不变,笑到最后的依然是C#,JAVA这类静态语言。
而Python也并不是第一门“复活”的动态语言,Basic语言也在90年代复活过,当时的一群粉丝也曾宣称要“改变世界”,受当时的氛围影响,Basic还一度编入了职业中专的计算机教科书,短短几年之后,热潮退去,Basic也就从教科书里移除了。
Perl语言在2000年左右也火过,它可以被视为Python的前任,原本是Unix时代的老古董,却在几十年后突然就火了,火起来的过程,也跟后来的Python一模一样,同样是以语法简洁当做亮点,同样预装在Linux系统上,同样吸引了数学圈的人跨行到IT圈,被称为“未来会取代VB和JAVA的梦幻语言”,在各种排行榜上,一直都排在C#前面。结果后来概念炒不下去了,逐渐转冷,才轮到Python出来接班替代了它。如今关于Perl的话题数少之又少,但在排行榜名单之中的排名却始终居高不下。今天依然还在前20之内,但这门在市场上已经完全见不到,Githib上也没什么存在感的语言,若非刻意操作,排名怎么可能这么高?
2010年左右轮到Ruby火了,有个广为流传的帖子,标题是《所有程序员都应该学习Ruby》,成为了Ruby粉丝的圣经,流传于各大论坛,后来Python炒概念时,还故意蹭了一下Ruby的热度,修改了那篇圣经,改成了《所有程序员都应该学习Ruby或Python》。
但这种动态语言的“复活”现象,是靠粉丝推动,并不是行业需求去推动的
看一下编程语言的发展史就知道了,动态语言从1995年之后,就进入完全停产状态。为啥是1995年?1995年发生了啥大事件?windows95诞生,计算机进入图形化时代。
1995年以后诞生,可以适用于传统开发的编程语言中,无一例外,全是静态语言。JAVA(1995年),C#(2000年),GO(2009年),Dart(2011年),kotlin(2013年),Typescript(2013年),行业的态度,岂不是一直很清楚嘛?