zoukankan      html  css  js  c++  java
  • 学生开发者对于微软技术的反馈

    1  C#的认识

    C#作为一个通用开发语言,基本上是每个学校必学的内容。但是C#基本上感觉越来越被挤占生存空间,学的人越来越少。随着java再次热门,以及国内大型企业,纷纷弃用C#,选用Java,因为Java多线程高并发与负载均衡的原因。我感觉主要原因是C#资料少,高手也少,进而大型公司不用C#,之后造成了恶性循环。

    1.1  C#的劣势

    JAVA的学习资料多。
    java本身先出来,而且一堆开源程序员为其做贡献,普及率高旧有的开源项目基本上全部都是java的。很多有代表性的书目都是以java为介绍语言,算法比赛也是以java为主。
    国内C#中文资料少。
    国内C#的书目比较少,尤其编译方面的书目,除了微软出的和那基本经典的,基本都是老师出的猴版垃圾书;可以检索的bug也少,基本上都是在国外。
    C#的学习之路给我感觉入手比较容易,但学下去,涉及编译等等,就只能依靠国外资料了,它的英语需求比java要求高。
    C#高手不够
    各大互联网公司弃用C#的原因是Java多线程高并发与负载均衡。但我想C#和java一直在激烈的竞争,C#应该也有相应的技术来解决问题。但在java在中国如此火爆的情况下,根本招募不到足够的C#高阶程序员来解决网站的问题。就以我们学校java校招时上百个java来应聘,招.net时候,就10多个去应聘,招到一个c#学的较好的大学生都不太容易了。
    Java的跨平台性
    学习java的同学往往在吐槽c#的同学这个部分。关于Xamarin,我前年学习了一些,去年5月再次学习一些,但当年安装困难,bug如山,官网有实例也有bug。最后从unity3d感觉比xamarin好用的多,美观又发布调试都方便。之后就不用Xamarin了。
    我感觉以后可以多宣传一下这个unity3d来跨平台。当时我发布unity3d到ubuntu上感觉极度震撼。

    1.2  C#的优势

    C#也有自己的优势,首先它比java后出来,本身就会吸取一些java不足。我感觉C#是自动化程度很高的虎式坦克,而java是t34坦克。虎式坦克臃肿但人机工程很好,自动化程度高,但一单出了bug就完蛋了(在此吐槽vs2015一些bug,最后只能绕过去,好在换了vs2017。T34简便轻量,可以方便魔改,也许装完插件会很厉害。
    个人认为C#对于java的优势就是unity3d和azure服务器。
    中间语言
    中间语言的设计比java虚拟机更加高效,而且mono c#这个项目正把中间语言编译成其他平台的语言,来实现跨平台。
    Mono C#
    Mono C#开始于2011,旨在C#开源和跨平台。Unity3d游戏开发使用mono c#来进行开发游戏和跨平台。使得C#的跨平台性对C#编程者提高很多。
    C#的工具家族
    C#的编程ide带来的写代码的方便性,自动更正自动补全给编程带来了方便。Visual Studio和Azure,Visual Studio Team Services,Nuget应该构成一个完整的编程体系。唯一的遗憾时Visual Studio Team Services速度比较慢。
    C#的快速性
    C#的窗体家族在编程速度上非常迅速,在编写window中小型程序时速度非常快,比如游戏启动器,mod修改器等。
    Linq和实体框架集等一些特性也使得编程简便和速度。
    C#的快速开发也很适合构建功能的原型,为硬件服务。
    Windows IOT
    Windows IOT以node.js和C#作为编程语言,但遗憾的是好像没有什么机器人框架,现在机器人教育应用很火。而linux上的ros机器人系统学习成本非常昂贵,时间也很长,基础要求也很高。

    1.3  C#的感悟

    随着我对C#的学习,我感觉C#的分离越来越严重,感觉企业级开发和基础开发感觉分离感越来越严重了。平时自己写着玩是一套方法,参与团队开发又是一套。旧的写法是一套,linq和lamd表达式,委托,接口又是一套,感觉很是混乱。
    感觉是不是用linq和lamd表达式等后期特性,结合python的一些简洁特性推出C#的下一代语言,或者对C#二次封装,进行快捷开发。原本C#过多的参考了java和c++的特性。现在完全可以抛弃他们。

    2  C#之路总结

    我对于我的C#学习之路做了一些规划,分了一些级别。
    第一级别,windows平台和网页平台的窗体开发,还有Azure,unity3d,xamarin,bot.framework的简易使用。
    第二级别,js,jQuery,ajax,asp.pager三层结构的开发。
    第三级别,mvc +LINQ +ef开发,并学一些C#编译的书目。
    第四级别,C#多线程高并发与负载均衡,以及C#编译的书目。
    第五级别,mono C#那种大型开源项目的参与者,贡献者

    3  Visual Studio

    Visual Studio2017比以前好很多,可以下载安卓sdk,以及安装卸载变得方便。
    Visual Studio有很多魔法的自动化工具,尤其15以后(15bug很多),但是很多C#程序员不知道,也不想使用,自然学生们也很难了解到。Visual Studio和Azure,Visual Studio Team Services,Nuget应该构成一个完整的编程体系。但在学校教学中使用着古老的2010版本,教着拖拉窗体。
    由于Visual Studio过于庞大,感觉应该有个window Visual Studio版系统,来更好的管理开发工具,维护开发环境和空间。

    Visual Studio2017有两个bug。

    一个是vs自带的sql2016的264M大小数据库,它默认是英文字符集,中文乱码,每次新建数据库前都要改一下字符集。而且导出所有脚本和数据这个常用功能没有。

    参考https://www.cnblogs.com/susuzhao/articles/3747968.html

    另一个是unity3d的安装,它不是最新版,而且仅仅是一个简易版,这个很正常不是bug。但如果你用它安装unity3d,发现不是最新版,卸载了它,安装了最新版。下次你用Visual Studio Installer它会试图把你的新版unity3d卸载了,然后重置成旧版本。所以这个地方最好只点Visual Studio Tool for unity工具。


    4  monoC#

    在Xamarin中,我好久没用了,也不知现在它如何了,主要是c盘装不下了。

    在unity3d中,很多C#的窗体系列类,第三方提供的类因为涉及使用了window api等原因无法跨平台发布。

    我很希望窗体系列可以跨平台,或者unity3d里有一个可以搭建管理系统的高效的框架来快速开发这样可以少写好多代码。

    Untiy3d中使用post无法访问到微软必应服务,安全证书出错。可以访问百度的,国外传说这是个许多年的问题了,因为mono项目。可以使用unity封装的WWW类和UnityWebRequest类代替传统的C# POST方法。

    Bug链接https://blog.csdn.net/fengmao31/article/details/79611900

    5  Azure服务器

    Azure服务器界面比其他服务器美观,易学习,流量也很多,很好用。

    但是它和luis和其他的程序无法被安卓访问,但神奇的又可以被unity3d发布的移动端程序访问到。

    如果想被安卓访问,必须新建MobileApp Service。但我担心用这个来转发音频流会不会延迟严重。像luis这些服务感觉应该直接让安卓访问到比较好。

    安卓访问部署在App Service上的web api和luis程序是根本返回空的。我发布的是get的api服务,它返回的值和post方式请求get的返回值一样(luis也是)。

    azure django 在azure上基本失败,flask正常。(只有c#是亲儿子估计)

    6 总结

    我个人不是很喜欢编写代码量很多的程序,所以很喜欢自动化程度较高的C#,也希望它越来越好,我也越来越方便。我喜欢用C#来编写简易的windows和网页程序来方便生活。或者使用untiy3d来编写有服务硬件和娱乐自己。

    我逐渐趋于使用python。当我再学习半年C#在快速建站的魔法后,应该转型到python搞opencv和chatbot。Python简洁,开源项目较多。我会使用C#来开发应用辅助我的生活和学习。



  • 相关阅读:
    软工实践
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta冲刺(7/7)
    Beta冲刺(5/7)
    Beta 冲刺(6/7)
    Beta冲刺 (4/7)
    Beta冲刺 (3/7)
    Beta冲刺 (2/7)
    Beta 冲刺(1/7)
  • 原文地址:https://www.cnblogs.com/fengmao31/p/13880187.html
Copyright © 2011-2022 走看看