是什么让C#成为最值得学习的编程语言
随着 Web、iOS、Android、智能设备的流行,新的编程语言纷纷涌现并表现不俗,如 Ruby,Python,Scala,Go,Node.js,Swift 等。反观已经发展了近20年的 C# 语言(或者这里应该更准确的说是 .Net Framework),因为天生的平台局限,导致很多的 C# 程序员为了生计和前途纷纷转行投入的新语言的怀抱。
就在此时,微软的 .Net Core 横空出世
- 跨平台:可以在 Windows、MacOS 和 Linux 上运行。
- 兼容性: .NET Core 通过 .NET 标准库与 .NET Framework、Xamarin 和 Mono 兼容。
- 开源:运行时、库、编译器、语言和工具都是 GitHub 的开放源代码。
- 统一:通过标准库来保证代码复用。
- 强大的生态环境
根据以上 .Net Core 所具备的优势,无疑是给以 C#(包括VB.NET)作为首选编程语言的工程师的一剂强心针。
以下将从6个方面阐述为什么 C# 成为最值得学习的编程语言,甚至可以说 C# 是给初学编程最值得推荐的语言。
学习门槛低
如果你曾经做过 C、Java 或者是 JavaScript 的编程,那么你会感觉对 C# 的语法感到非常熟悉,C# 的语法非常的容易阅读和理解。根据最新发布的 TIOBE 统计,有数以百万计的开发人员可以轻松地从 Java 或 C语言编程切换到 C# 语言编程。
即使你完全没有任何的编程经验,大量的书籍和在线文档也不是新兴语言可以比拟的,另外还有很多在线资源可以帮助你学习 C#,如:
- Microsoft虚拟学院 - 免费视频和评估。
- Microsoft入门C# - 免费交互式教程。
具备现代语言的所有特点
.NET Core 有一些顶级功能:
- 强类型。
- 强大的基类库。
- 异步编程 - 易于使用的异步/等待模式。
- 垃圾收集,自动内存管理。
- LINQ - 语言集成查询。
- 泛型 - List<T>, Dictionary<T, T>。
- 包管理。
- 跨多个平台和框架共享二进制文件的能力。
- 使用的框架来创建 MVC Web 应用程序和 RESTful API。
多功能性:Web,移动,服务器,桌面应用
关于 C# 和 .NET 的最出众的一点就是它的多功能性。Xamarin 可以编写桌面应用程序,Web 应用程序,后台服务,甚至移动应用程序。除了 C#,我真正需要知道的只是少量的 JavaScript 来将一些 UI 代码集中在一起。ASP.NET Core 模板甚至使用 Bootstrap 布局和 npm 来存入客户端库。
多功能性是一个很大的优势,这样你所学的语言就可以用于各种各样的场景中,你的技能适用性就更强。如果你想组合所做的东西,就可以从开发 web 应用程序跳转到开发移动应用程序。对于只能在服务器端工作的大多数其它编程语言,这是一个很大的区别。
同时,也请不要忘记 Microsoft Azure 的支持。Microsoft Azure 让启动和运行变得如此简单,只需点击几下即可将应用部署到云端。Microsoft Azure 还支持 Docker 容器,可以轻松地将应用程序部署到 AWS 或其它托管提供商。
最好的开发工具(没有之一)
Visual Studio 一直被视为适用于开发人员的最佳 IDE,微软已经发布了最新的 VS 2017 用来支持 .Net Core,在一个环境中支持代码编写、调试、分析、git 集成、单元测试等功能。Visual Studio 现在提供了功能齐全的免费社区版本。
当然,也可以使用自己喜欢的文本编辑器,作为编写 .NET Core 代码的基本文本文件。你也可以在任何操作系统上将 Visual Studio 编码工具当做一个良好的基本代码编辑器。即使对于那些永远不会放弃 vim 或 emacs 的人来说,依旧可以做 C# 开发。你还可以为 Visual Studio 安装一个插件,来添加所有喜欢的快捷键。
整个 .NET 生态系统也充满了令人惊奇的开发者工具。例如,我无法想象没有 Jetbrains 中的 Resharper 的生活。.NET 生态系统存在数十种极好的的工具,既包括开源的,也包含商业产品的。
标准化类库
.NET 带有了一套非常好的基类库。与 Node.js 不同,.NET 内置了简单的字符串函数,如 LeftPad()。各种各样的基础类减少了对外部包的需求。Microsoft 也乐于像 JSON.NET 这样的社区项目一样,成为大多数项目中广泛使用的关键库。
Microsoft 为 .NET 提供了一套非常好的模式和实践。例如,有内置的标准数据访问(实体框架)和模型 - 视图 - 控制器(MVC)框架。大多数开发人员都在使用这些标准框架,这使开发人员可以轻松地在团队之间迁移,并快速了解项目的工作原理。正式由于这一点,你的知识和技能才变得更加具有适用性。
.NET Core 是开源的
.NET 发生的最大变化之一,就是其开源了代码。几乎所有的代码现在都在GitHub上,供任何人查看,分享和贡献。这是一个巨大的变化,大多数人从未想过会发生。
作为开发人员,你需要不时的了解你的代码正在做什么。例如,过去需要通过调用数据库连接的 Dispose( ) 来确认是否关闭了连接。现在你可以访问源代码,来快速验证这些类型的问题。
即使你没能对源代码做出贡献,你也可以从巨大的社区中受益。问题和改进可以快速讨论,编码和发布,以便你定期使用。那些需要花费数年等待发布重大改进或小错误修复的时代已经过去了。
总结:微软 .Net Core 的推出,无疑给具备庞大基数的 .Net 平台开发者们,提供了绝佳的机会,可以预见,在未来的几年内,使用 C# 语言基于 .Net Core 平台开发势必成为流行。
原文链接:https://dzone.com/articles/why-net-core-made-c-your-next-programming-language
是什么让C#成为最值得学习的编程语言的更多相关文章
- 转:为什么说Python是最值得学习的编程语言
老猿作为一个老程序员,研究生毕业后就没有这么用心的学过一门新的语言,而今年4月开始学Python以来,疯狂的迷上了它,有时很想写一篇为什么要学Python的文章,可一直懒没动笔,今天看到博友" ...
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- go语言值得学习的开源项目推荐
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...
- 很值得学习的java 画图板源码
很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...
- 值得学习的C/C++开源框架(转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- 精选 TOP45 值得学习的Python项目
精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...
- 目的可疑,但方法非常值得学习的书——leo鉴书56
书中提到写作手法绝对值得学习,为此能够打四颗星. 作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...
- 一些值得学习的Unity教程 (很实用的包括源码)
***********************项目源码******************************** 1. 降临 2. 沉睡缤纷乐 3. 千炮捕鱼 4. Photon官方FSP示例 ...
- 精选9个值得学习的 HTML5 效果
此文转自:http://www.cnblogs.com/lhb25/p/9-html5-effects.html,仅供本人学习参考,版权归原作者所有! 精选9个值得学习的 HTML5 效果[附源码] ...
随机推荐
- 游戏UI框架设计(四) : 模态窗体管理
游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗 ...
- Svm相关
Svm相关: 1) SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题. ...
- One Card Poker
qsc oj 题目 提交 比赛 小组 排名 帮助 Mactavish 题目 我的提交 One Card Poker 发布时间: 2017年2月14日 14:02 最后更新: 2017年2月14日 ...
- 1634: [Usaco2007 Jan]Protecting the Flowers 护花
1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 493 So ...
- 剑指offer_数组中的逆序对
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P. 并将P对1000000007取模的结果输出. 即输出P%100 ...
- java Pattern和Matcher详解
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String ...
- Java 集合的理解(持续更新......)
一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...
- jenkins gradle 编译遇到tomcat异常
使用gradle在jenkins 上构建的时候遇到 进行构建的时候报"Could not load Logmanager org.apache.juli.ClassLoaderLogMana ...
- 配置adb环境变量
作为Android开发人员,会经常使用adb命令来进行push.pull.install.看数据库等.记录一下adb配置流程,以备后用. 在没有配置adb之前,我们打开Windows命令处理程序(cm ...
- python 接口自动化测试--框架定型(六)
脚本执行步骤: 1.还原测试数据库: 2.读取接口用例CSV文件到数据库: 3.执行数据库中标记执行的用例: 4.对比预期结果,将测试结果写入数据库结果表中. 数据管理: 事先备份测试数据库,并搭建自 ...