随着 Web、iOS、Android、智能设备的流行,新的编程语言纷纷涌现并表现不俗,如 Ruby,Python,Scala,Go,Node.js,Swift 等。反观已经发展了近20年的 C# 语言(或者这里应该更准确的说是 .Net Framework),因为天生的平台局限,导致很多的 C# 程序员为了生计和前途纷纷转行投入的新语言的怀抱。

就在此时,微软的 .Net Core 横空出世

  1. 跨平台:可以在 Windows、MacOS 和 Linux 上运行。
  2. 兼容性: .NET Core 通过 .NET 标准库与 .NET Framework、Xamarin 和 Mono 兼容。
  3. 开源:运行时、库、编译器、语言和工具都是 GitHub 的开放源代码。
  4. 统一:通过标准库来保证代码复用。
  5. 强大的生态环境

根据以上 .Net Core 所具备的优势,无疑是给以 C#(包括VB.NET)作为首选编程语言的工程师的一剂强心针。

以下将从6个方面阐述为什么 C# 成为最值得学习的编程语言,甚至可以说 C# 是给初学编程最值得推荐的语言。

学习门槛低

如果你曾经做过 C、Java 或者是 JavaScript 的编程,那么你会感觉对 C# 的语法感到非常熟悉,C# 的语法非常的容易阅读和理解。根据最新发布的 TIOBE 统计,有数以百万计的开发人员可以轻松地从 Java 或 C语言编程切换到 C# 语言编程。

即使你完全没有任何的编程经验,大量的书籍和在线文档也不是新兴语言可以比拟的,另外还有很多在线资源可以帮助你学习 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#成为最值得学习的编程语言的更多相关文章

  1. 转:为什么说Python是最值得学习的编程语言

    老猿作为一个老程序员,研究生毕业后就没有这么用心的学过一门新的语言,而今年4月开始学Python以来,疯狂的迷上了它,有时很想写一篇为什么要学Python的文章,可一直懒没动笔,今天看到博友" ...

  2. 值得学习的C语言开源项目

    值得学习的C语言开源项目   - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...

  3. go语言值得学习的开源项目推荐

    谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...

  4. 很值得学习的java 画图板源码

    很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...

  5. 值得学习的C/C++开源框架(转)

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  6. 精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  7. 目的可疑,但方法非常值得学习的书——leo鉴书56

    书中提到写作手法绝对值得学习,为此能够打四颗星.   作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...

  8. 一些值得学习的Unity教程 (很实用的包括源码)

    ***********************项目源码******************************** 1. 降临 2. 沉睡缤纷乐 3. 千炮捕鱼 4. Photon官方FSP示例 ...

  9. 精选9个值得学习的 HTML5 效果

    此文转自:http://www.cnblogs.com/lhb25/p/9-html5-effects.html,仅供本人学习参考,版权归原作者所有! 精选9个值得学习的 HTML5 效果[附源码] ...

随机推荐

  1. C#语言基础——语句

    1·语句是指程序命令,都是按照顺序执行的.语句在程序中的执行顺序称为"控制流"或"执行流".根据程序对运行时所收到的输入的响应,在程序每次执行时控制流可能有所不 ...

  2. GPU渲染管线概述

    1.顶点着色器 顶点着色器是流水线的第一个阶段,它的输入来自于CPU.顶点着色器的处理单位是顶点,也就是说输入进来的每个顶点都会调用一次顶点着色器. 顶点着色器需要完成的工作主要有:坐标变换和逐顶点光 ...

  3. 关于Android App开发技术分类的一个小总结

     前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的技术进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [ ...

  4. Macaca 自动化框架 [Python 系列]

    介绍 Macaca是一套完整的自动化测试解决方案,基于node.js开发.由阿里巴巴公司开源: 地址:http://macacajs.github.io/macaca/ 特点: 同时支持PC端和移动端 ...

  5. tomcat升级,tomcat窗体改名,一台电脑安装多版本JDK

    1 tomcat改名:在bin目录下找到次文件(如图),按图上指示修改(比如我窗体是主数据) 修改后: 2 一台电脑安装多个版本的JDK 为什么我们要安装多个版本JDK?--我是因为tomcat修复漏 ...

  6. Centos 7 上安装使用 vscode

    #系统信息 Linux localhost.localdomain 3.10.0-327.el7.x86_64  x86_64 x86_64 x86_64 GNU/Linux 进入 vscode 下载 ...

  7. c#调用aapt查看apk文件信息功能实现

    第一篇随笔就此开始. 1. 起源 思路源自于项目开发过程中.需要确认apk文件版本以验证其功能差异以便于定位问题,于是度娘,得到APK信息查看器(APK-info)这个工具,其版本号为0.2.它能显示 ...

  8. HTML5微数据

    本篇文章是一个纯搬运贴,原博主是在是做的太详细了 原贴地址:http://www.zhangxinxu.com/wordpress/2011/12/html5扩展-微数据-丰富网页摘要/ 一.微数据是 ...

  9. rgba兼容性处理

    根据caniuse(http://caniuse.com/#search=rgba),rgba兼容性为IE9以及以上浏览器. 实例代码: <!doctype html> <html ...

  10. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...