关于.Net开源并跨平台的思考
开源的意义:
关于开源,我个人觉得有两个提高(勿喷)。
一方面开源提高了生产力,另一方面开源也是信任的一种体现。为什么这么说呢,在当下的互联网时代,开源是一种核心价值观。人与人沟通交流合作之下,降低成本并且提高生产力的必然产物。就目前流行的众筹之类的概念都是与之大同小异。试想一下,全球各地都有开发者、贡献者,这个力量与单独的个人与小团队的力量是不可同日而语的。而另一方面,信任。你可能会奇怪这跟信任能扯上什么关系?试想一个SDK你可以完全看到其实现过程,随时都可以检查其源代码,你有什么理由不去完全信任他?(你硬要说你看不懂那我无话可说0.0)
.Net跨平台
对开发者的意义
如果你对开源有一个深刻的认识,那么仅仅开源两个字就足以给你充足的理由去尝试一个非常不错新东西。但是对于其他一部分开发者来说,.Net核心源代码的开源对他们并没有什么实质意义,因为他们没有能力没有时间也没有兴趣去阅读或修改源代码,毕竟有的时候当兴趣成为了工作之后看待方式就不一样了,非常不幸,我就是其中一人233333。那么对于我们这类人,跨平台又有什么实质性的意义呢?Java有一个机制:一次编译,到处运行。什么意思呢,写一次代码,可以在任意平台上运行,这难道不是每一个开发者梦寐以求的东西吗?这难道不是Java流行的根本原因?各种语言之间的区别并不大,学习一门新的语言其成本也低到可以忽略不计,当然前提你是一名经验的开发者,这对于你来说简直易如反掌。但是对于一个生态环境的代价却是巨大的,每一门语言都有自己的类库,都有自己相对成熟的框架,恰恰就是这些东西拉开了各语言之间的差距与学习成本,相信这些也正是在日新月异的互联网环境下我们都难以承担的代价。
对于微软自身的意义
.Net的开源被不少人认为是微软最后的让步和尝试,而事实上这样的明攻暗守却并不是第一次了,最后无论是微软还是用户都已经从这个先例中获益良多。这里就不在敷述,各位有兴趣请自行搜索SUN公司。在当今互联网时代,传统的单纯靠授权收取费用来盈利已经不再是一个理想的方式了,吃肉喝汤才是正确的思路。苹果IOS的巨大成功就是一个吃肉喝汤的典范。那么如何才能正确的实施吃肉喝汤的战略?构建生态圈。构建生态圈的第一步就是拥抱开发者,正是庞大的开发者基数奠定了这个重要的基石。试想我们开发的application不用大规模的去修改核心代码就能够在Windows、linux、Android、iOS、Mac OS上运行,一门语言既能做当下流行的B/S网站开发又能做传统C/S桌面APP的开发,而且还能兼并移动开发,那么我们又有什么理由不想去投入这门语言的怀抱里呢?微软收购Xamrin与Mono已经展示他的野心,Xamrin在没被收购前价格高的吓人(偷偷告诉你比ios开发者还贵),而收购之后则是免费的,可以预见会有不如开发者加入这个阵营。
说到这里,不得不说微软在近一段织的一个大网“Azure”。天下武功,唯快不破。这里的快,并不是说性能上的优势,而是开发速度。我记得有句话是这么说的“人生苦短,我用python”,python以其开发速度与迭代速度在这个时间就是金钱的时代得到了无数开发者的认同。那么这跟azure又有什么关系呢?因为使用Azure你可以达到同样的效率,哪怕是使用C#(我不是说C#效率低,大神别喷)。Azure的集成度与使用的简易度已经完善到了令人发指的程度,在当今这个云时代还没见有更好的,这里只说界面不谈内容。Aws作为云的开山鼻祖在价格与基础、基础设置以及技术经验上都有巨大的优势,作为IaaS无愧为业界老大,但是在更高级的PaaS层面Azure确实是遥遥领先的。身为一个穷屌丝,我的网站都是部署在阿里云上,而且是学生认证那种23333,而Aws也是一次搭建***神器时发现的一年免费试用才接触到的。目前由于工作需要,有机会接触到Azure的大多数内容,其易用程度令人叹为观止。说句心里话,我真是害怕用多了我自己都成傻子了。站在巨人肩上,重新造轮子这种事在我们短暂的人生中还是少做的好。
看到这里微软的战略大局已经差不多清晰起来了:
开源.Net-拥抱开发者-Azure-完整生态圈-吃肉喝汤
而如果我们单一的看其中的任意一环都是毫无意义的,因为任意一环都可以被替代,但如果我们真正的踏入其中并开始使用这些服务时,那就完全是另一个世界了。
小结
作为宇宙最强IDE(没有之一)Visual Studio的使用者,清清楚楚的了解这种快感。能走到这一天也实属幸运,有生之年系列23333。在这里,我们也终于有机会像大部分Java程序员那样有钱了哈哈哈。前些日子了解到,Visual Studio已经发布了Mac版本,真是喜大普奔。这个世界从来都不是一成不变的,能够在linux上运行我的C#项目,这对我来说已经是一种幸运。
关于.Net开源并跨平台的思考的更多相关文章
- 微软“.Net社区虚拟大会”dotnetConf2015:关键词:.NET 创新、开源、跨平台
去年 11 月的时候,微软开源了 .NET CoreFX,然后是今年 2 月份的 .NET CoreCLR.自那时以来,已经有大约 3500 人在 GitHub 上进行了提交,而且贡献者的人数还在持续 ...
- 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器
微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览 ...
- Google FlatBuffers——开源、跨平台的新一代序列化工具
前段时间刚试用了一个序列化工具cereal,请看cereal:C++实现的开源序列化库,打算再总结下我对google proto buf序列化库的使用呢, 结果还没动手,大Google又出了一个新的. ...
- Cocos2d-x开源、跨平台的游戏引擎
from://http://blog.linguofeng.com/pages/language/c/Cocos2dx.html Cocos2d-x 开源.跨平台的游戏引擎 一.下载 http://c ...
- 开源免费跨平台opengl opencv webgl gtk blender, opengl贴图程序
三维图形的这是opengl的强项,大型3D游戏都会把它作为首选.图像处理,是opencv的锁定的目标,大多都是C的api,也有少部分是C++的,工业图像表现,图像识别,都会考虑opencv的.webg ...
- 开源一个跨平台运行的服务插件 - TaskCore.MainForm
本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.Main ...
- 【腾讯bugly干货分享】解耦---Hybrid H5跨平台性思考
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1275& ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...
- RPG JS:免费开源的跨平台RPG游戏引擎
RPG JS是一个2D RPG游戏制作引擎,目前版本基于Ease|JS游戏引擎,基于Canvas Engine的新版本即将发布. RPG JS是免费且开源的. RPG JS有着完善的文档支持. RPG ...
随机推荐
- 初步认识CNN
1.机器学习 (1)监督学习:有数据和标签 (2)非监督学习:只有数据,没有标签 (3)半监督学习:监督学习+非监督学习 (4)强化学习:从经验中总结提升 (5)遗传算法:适者生存,不适者淘汰 2.神 ...
- Daily Scrum 11.7
明后两天周六日,按照TFS的日常安排应该是休息,所以让他们自由完成已经分配的任务. 姓名 今日任务 黄新越 提取爬取网页的关键字并输出到接口 刘垚鹏 程序总架构的修改与多线程的学习 王骜 多线程学习 ...
- Task 7 买书最低价格问题
任务: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数 折扣 2 5% 3 ...
- 《UML大战需求分析》-读后感一
UML英文全拼是unified modeling language 就是统一建模语言. UML就是一种软件开发中帮助我们设计的标准,虽然说是建模语言但是它是图形,图形能更清楚的表达我们对软件的想法.U ...
- ubuntu16.04+cuda8.0+caffe
=========== 如果出现nvidia-smi failed to communicate with nvidia driver,循环登录情况,则: sudo apt-get remove -- ...
- 24_IO_第24天(转换流、缓冲流)_讲义
今日内容介绍 1.转换流 2.缓冲流 01转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...
- 【第十周】四则运算GUI
下载地址:http://pan.baidu.com/s/1hsc9HRm 这次比上次多了一个记录的功能,是用QT里面的qplaintextedit记录显示出做过的题目. 我是直接看的文档,发现窗体,搜 ...
- python基础(六)python操作excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- QTime的本质上是一个int,QDateTime本质上是一个qint64
研究这个问题的起因发现使用<=比较时间的不准确,所以怀疑是一个浮点数(Delphi里的time就是一个浮点数).结果却发现是一个int class Q_CORE_EXPORT QTime { e ...
- C#中重写(override)和覆盖(new)的区别
重写 用关键字 virtual 修饰的方法,叫虚方法.可以在子类中用override 声明同名的方法,这叫“重写”.相应的没有用virtual修饰的方法,我们叫它实方法.重写会改变父类方法的功能.看下 ...