百科问答小站 logo
百科问答小站 font logo



为什么使用C#开发软件的公司和程序员都很少? 第1页

  

user avatar   mu-ke-wang-14 网友的相关建议: 
      

在职位搜索网站indeed,职位关键字与数量的对应关系如下(搜索时实时数据):


Java - 49624
Python - 16802
JavaScript - 25452
C ++ - 36569
C# - 14267


很显然,C#相关的职位数量是明显落后的,这是为什么呢?


C#由编程界的神级人物Anders Hejlsberg主持设计,在很多方面都比JAVA要好,毫无疑问,它是一门非常好的计算机语言。但是,一门程序语言的发展不是靠某一家公司或某几家公司就能撑起来,而是要靠主推公司的战略发展及生态的促进,C#则却恰好在这两点不占优势。




首先来说C#在语言的发展过程中所错失的良机。


第一,C#跨平台政策的失误


C#最初只能在Windows平台上运行,从PC互联网时代向移动互联网时代转换过程中,C#并没有像JAVA一样做出适应性的转型,以至于C#无法运行在安卓机器上。


Windows平台简单易用,对于技术人员不多的非IT类中小企业,的确是有吸引力的。但是对于硅谷的IT企业来说,技术并不是问题,他们拥有大量的专业服务器管理人员,所以硅谷的IT企业更倾向于使用免费的Linux系统,比如CentOS或者Ubuntu。


牵一发而动全身


免费的Linux提供了相当完善的服务器运行环境及一整套工具链,比如Apache web服务器,Mysql/postgresSQL数据库,Memcache、Redis缓存服务器等。虽然在管理的直观性上,Linux似乎比Windows的窗口化图形化界面要落伍一点,但是性能上不相上下,甚至更加出众。所以尽管配置更加繁琐,更多的公司还是选择了Linux系统作为服务器操作环境。而C#在Linux下面基本没有用武之地,这就大大限制了C#这门语言的流行程度。


虽然后来C#迂回推出了Xamarin,还免费开源了,但是已经错失了最好的移动开发时机,就像是微软自己的WP手机操作系统没有抗衡过苹果和安卓一样,在移动开发领域C#也同样错失了移动互联网的时代。


第二,C#仿JAVA而生,大数据及人工智能方面却没能超越JAVA


C#的最大的竞争对手——JAVA,实际上算得上是C#的爸爸。JAVA诞生于1995年,它的一次编写、到处运行的概念,掀起了一场革命。而C#诞生于2000年,是微软.Net计划的一部分,是微软为了替代JAVA而研发的。



换句话说,C#是可以被替代的。C#与JAVA在语法和架构上非常接近。C#能做的,JAVA也能做。并且JAVA本身就是为跨平台设计的,比C#更具有灵活性,在Linux下面有很好的支持。在库支持方面,JAVA也要比C#好的多。在Windows上面可能会有一些不错的C#库,但是几乎无法在Linux/.Net core下面工作。


而从传统开发到大数据及人工智能开发的转换过程中,自Hadoop出现以来,大数据的开发语言好像天然就是JAVA一般,虽然Hadoop同时提供多种语言的接口,但是由于底层JVM的框架运行,使得JAVA语言在大数据时代远超C#,而人工智能的发展及对数据处理的需求,又使得Python赶超C#,成为数据处理的神器,以至于时常要拥抱变化的程序员更多的投入JAVA和Python的怀抱。



虽然微软为了适应大数据时代的到来,提供了很多工具库供C#编程人员更好的与Hadoop平台协同工作,但不可否认JAVA的正统性和便利性使得C#的地位在大数据时代被日益边缘化。


其次我们要说,C#的封闭性也是让它失了人心的重要原因。


第一,由于C#运行环境的封闭性,导致了C#语言被限制在Windows平台。


在微软总裁纳德拉之前,微软对Linux及开源软件界采取了敌对的态度,比尔盖茨曾痛斥开源软件为病毒,自然也拒绝为Linux系统提供软件支持。同时,微软将C#与Windows系统、IIS服务器、MSSQL这些工具软件深度捆绑。如果你想用C#,则必须购买微软的系统、数据库等全家桶,这些费用和羁绊让硅谷的IT感到非常不爽,无形当中形成了一股反微软的潮流。


windows服务器授权费用解析


等微软意识到自己在硅谷的新兴公司中已经被边缘化,开始想与Linux等开源软件和系统合作,使C#在Linux上运行时,硅谷却早已形成了自己的开源工作软件生产氛围:完善的技术栈,社区及学习环境,换句话说硅谷基本不需要C#了。所以说,在运行环境上的封闭性导致了C#的没落。



第二,由于开发环境的封闭性,导致了C#语言开发成本高昂。


C#开发不仅依赖Windows系统,而且严重依赖Visual Studio开发平台,另外,由于选用了C#,数据库开发不可避免的要涉及到SQL Server数据库,最为致命的是,这些都是收费的,而且微软的产品都挺贵,IDE要收费,数据库之类的要收费,对公司而言这是一笔不小的开支,因此很多大公司会因为成本问题选择放弃C#。如果采用Linux+Eclipse+JAVA的开发环境,完全可以用免费的方式解决,这是C#面临严重的开发环境封闭性问题。


来看一下硅谷一般IT公司代表的技术栈:


Uber的技术栈
Facebook的技术栈里同样也没有C#的影子


综上,C#是一门优秀的语言,由于发展初期错失良机而没有形成趋势、产业链及好的学习氛围,但是随着微软对开源社区的改变及合作态度,采用C#的公司数量也开始逐渐增多,特别是U3D的热潮,也许会进一步推动C#的普及。相信随着时间的推移,C#或许能在硅谷的IT公司中拥有一席之地。


推荐阅读:

慕课网:Python 程序如何高效地调试?

慕课网:普通程序员如何正确学习人工智能方向的知识?




  

相关话题

  为什么知乎上大多都是Facebook 去 uber 而不是 uber 去 Facebook 的工程师? 
  既然 WPF 和 WinForm 只能在 Windows 运行,为什么要移植到 .NET Core ? 
  晚上脑子里也想着bug,睡不好怎么办? 
  程序员应该如何优雅地关闭电脑? 
  写代码一遍就成功是怎么一种体验? 
  鸿蒙系统动了谁的奶酪? 
  有哪些道理是你当了程序员后才知道的? 
  求BAT代码或C语言代码如何自动复制剪切板文本并分行保存一个txt? 
  c#中为什么async方法里必须还要有await? 
  为什么C语言用int *a 来声明指针变量,而不是int &a声明? 

前一个讨论
如何区别菊石、角石和鹦鹉螺?
下一个讨论
如何看待5月29日美国白宫声明?美将对从中国进口的500亿美元产品加收25%关税?





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利