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

特别是在国内

在职位搜索网站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#的使用体验不那么美好。

目前来看,在大数据时代来临之际,随着Python开源社区的发展,JAVA开发社区的开源也愈加壮大,但是C#却依然是闭源的,在当今服务至上、体验至上的时代,闭源的思维没有及时转变,就被时代所淘汰了。

硅谷主要IT公司语言与框架技术栈最新排行榜:前十名里面没有C#的位置

没有公司使用,就不会有人学习,没有人学习就不会有人招聘,这是一个鸡生蛋、蛋生鸡的问题。

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

原文地址:https://www.cnblogs.com/nndt075/p/11766443.html

时间: 2024-10-10 23:21:04

为什么使用C#开发软件的公司和程序员都很少?的相关文章

初中没毕业的男子能到大公司当程序员,还能自己谈薪资,这是为何

说起程序员,很多人脑海中的第一印象就是格子衬衫.直男等词汇,但是同时大家都知道这也是一个高薪行业,基本上做的好的人年薪都是六位数,但是实际上,这个行业也并没有大家想象中的那么好,很多程序员都自称码农,因为每天的事情一直都做不完,晚上加班通宵也是常态,而且自己总是一个可有可无的状态,随时可以被替换掉,就算你的学历比别人高,但你可能并不如人家 最近网上有一个帖子是一个程序员说自己跟一个初中没毕业的朋友吃饭,那个朋友告诉他自己要去国内的一个大公司,目前已经通过了5轮面试,目前已经进入了谈薪资的阶段.看

牛逼轰轰的豆瓣公司的程序员!佩服!!

一直都喜欢用豆瓣FM来听音乐,因为感觉关联性确实很不错.最近自动升级了版本,发现不仅界面十分丑字颜色淡得看不清楚,而且连播放都成问题了. 8月12日上线的新版本,到了今天8月16日,那个严重bug居然还是没有修复,感觉豆瓣公司的程序员真的是太牛逼了!!! 豆瓣都快成一个国企铁饭碗了,一个这样的app都居然这么严重的bug,而且都一个礼拜了还没有修复,服了!!by default7#zbphp.com Bug现象: iOS设备如果关闭屏幕(锁定屏幕),那么歌曲播放几秒之后自动停播! AppStor

如何成分分cai源码开发为一个成功的程序员

作为现代数百万的程序员中分分cai源码开发 QQ2952777280[话仙源码论坛] hxforum.com 的一员,本人和很多底层的码农一样,在无数的代码和bug中辗转反侧,无数个夜晚都会不自觉的梦到自己因为某个bug的问题而惊醒.很多时候,我们都会想象,未来,在这个名族大步跨向复兴的道路上,我们究竟能够扮演着什么样的角色呢. ? ? ? ?"每天重复写着各种各样的复杂头疼的业务逻辑代码,几年下来感觉水平不增反减,这样的日子还要持续多久!",很多做企业系统的程序员都会存在着这样的想法

微酷WeiKuCMS现赠送高速开发系统软件。公司、程序猿的福音呀!

我国电子商务面临的问题.淘宝退出百度无疑是一个遗憾. 当在网上购物时.用户面临的一个非常大的问题就是怎样在众多的站点找到自己想要的物品.并以最低的价格买到.自从淘宝退出百度.建立自己的搜索引擎后.广大消费者再也不能再百度里面直接搜索有关淘宝的商品了,这无疑是一个遗憾. 如今又出 现了微商城,还没有被太多人所熟知,可是微信营销已经以非常快的速度在吞噬这整个市场,微商城.商家入驻,微门店.微餐饮.微酒店,微教育.微物业,微医疗,微信墙,微花店.微美容,微生活等非常多功能,微酷WeiKuCMS站点是多

年薪百万的程序员都是站在巨人的肩膀上开发

要想成为一名软件开发者需要学习各种专业知识.技术与框架.比如算法.数据结构.编程语言.流行框架等.但是要想成为更加出色的软件开发者,你要学习的就不仅仅是专业上的知识了. 标题过于浮夸,希望大家谅解,但本篇是满满的干货.今天我想分享一点关于软件开发者如何改进职业技能从而变得更擅长于自身工作的技巧.这里要谈的主题是通用性的,并没有针对任何特定的技术栈.其实这里要谈的大部分甚至都不是针对 IT 的.这些都是如何形成个人特质,跟同事.客户改进协作,以及拓展作为软件开发者职业生涯的一般性建议. 端到端理解

谷歌公司发布程序员养成指南

关于如何使用本学习指南的 4 点建议: 请考虑自己的实际情况进行学习. 如果你还想学习<指南>之外的其他课程,尽管上吧! 本指南仅供参考,即使学完这上面的所有课程,也不能保证你一定能进入谷歌工作. 本指南不定期更新.你可以在 Google + 上关注 Google for Students +Page,随时获取更多资讯. 科班式建议 计算机科学简介 说明:计算机科学简介是介绍编码相关的基础内容. 在线资源:Udacity – intro to CS course.Coursera – Comp

100套最适合自学的实战开发教程视频(程序员都在学)

BAT大咖助力 全面升级Android面试 BAT大牛亲授 基于ElasticSearch的搜房网实战 从天气项目看Spring Cloud微服务治理 Java企业级电商项目架构演进之路  Tomcat集群与Redis分布式 Java深入微服务原理改造房产销售平台 SSM到Spring Boot-从零开发校园商铺平台 Java Spring Boot企业微信点餐系统 Java秒杀系统方案优化-高性能高并发实战 Spring Boot技术栈博客企业前后端 Java SSM快速开发仿慕课网在线教育平

在程序员的眼里,用户是这样使用他们开发的软件的【转】

我曾经说过,程序员不是一般的人,是具有某种超能里的人.但问题是,程序员往往意识不到自己的这种特异功能,在他们的眼里,会认为自己很普通,跟常人一样,所以,程序员能做到的事情,其他人——比如他们的客户/软件用户——也应该很容易做到.但事实上,由于大部分人——绝大部分人(包括软件开发公司的客户/购买软件的用户)——都是电脑小白(对电脑知识/计算机知识/软件知识知之甚少的人).一个对于程序员来说很显而易见的软件操作,换成让用户来操作,就会出现各种各样奇怪的事情.这让程序员非常痛苦. 记得有一次,一个客户

资深程序员冒死揭开软件潜规则:无法维护的代码

原始博文发布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对