文号
t79073
阅读
8782
回复
11
收藏
9
从微软成功收购Xamarin再论编程入门
2016/02/28
IP:四川
微软收购开源.NET框架提供商Xamarin,是2016编程界开年的头等大事,随着这个巨大变化的发生,我们该如何选择编程入门的方向呢?

随着微软收购Xamarin,自然会变成微软官方的,整合入微软官方的.NET框架体系
.NET会变成可用性较高的跨平台编程框架,跨Windows、Mac、Linux、Android、iOS五大平台
原来Xamarin之所以不温不火,主要原因和免费版功能不完整,收费版价格又太贵,有密切的关系
一旦微软收购,按照微软的性格和经济实力,有很大的可能性,会将它提供给社区免费使用
而C#作为.NET框架中的旗舰编程语言,会怎样?不用脑子也能想出来,火了呗!

目前来说,我的建议是这样的:

如果大家正在学习C或C++或Java,并且要准备算法竞赛的话,建议继续坚持这个方向
但是如果是为了学习应用开发的话,我建议大家学完C/C++之后转到C#,因为它可能在不久的将来就火了

窗口编程的话,我建议从WPF(Windows演示基础)入门,为什么呢?
1.WPF是DirectUI(控件直绘式用户界面),并且使用DirectX渲染(注意这两个Direct并不是一回事),是未来窗口界面的发展方向
2.WPF与像素无关,如果你用高分屏的话,Windows窗体设计器的bug会很闹心的,使用WPF完全没有这个问题
3.WPF包含现代化的窗口布局引擎、数据驱动引擎、动画引擎等,使得程序开发工作轻松不少
4.WPF使用视觉树而不是子窗口来实现控件,可以在控件中、内容中、文档中、甚至是3D视图中显示控件,实现复杂界面成为可能
5.WPF和以后的Silverlight、Win8/8.1应用(WinRT)、Win10应用(UWP)是一脉相承的,学会WPF很容易入门这些
6.Windows窗体比WPF要简单的多,学会WPF以后也很容易降级学习Windows窗体(所以完全不用担心后路)
7.相比之后的WinRT/UWP,WPF可以生成独立exe,程序更容易发布
8.相比之后的WinRT/UWP,XAML设计器也并不会卡顿得让人难受,界面看起来也比较中规中矩
9.WPF支持3D编程,可作为3D编程的入门框架
WPF还有诸多优点,在这里我就不一一列举了,总之,现在是学习WPF的大好时机,学习了绝对不会吃亏的

至于WPF不能跨平台这个问题,其实根本就不是问题。WPF虽然只可以在Windows平台使用,但通过WPF学习到的窗口编程思想,同样可以使用在WinForms、Silverlight、UWP、Mac、Android、iOS编程中,学习WPF的努力并不会付之东流。
[ 修改于10年9个月前 - 2016/02/28 23:26:47 ]
10年9个月前IP:陕西
810744
1楼
Qt支持的平台不是更多?
引用
评论
acmilan作者
10年9个月前IP:四川
810747
2楼
引用 金星凌日:
Qt支持的平台不是更多?
xamarin并不是qt那样的完全跨平台(平台无关),只是语言和基础框架跨平台而已,xamarin调用的是封装好的原生api。。。主要卖点在于没有语言学习成本,可开发原生应用,将c#影响力扩大到五大平台
引用
评论
10年9个月前IP:北京
810756
3楼
引用 金星凌日:
Qt支持的平台不是更多?
qt那个真是坑炸了那个内核.dll16M大也就是随便做点东西都得带着..
引用
评论
10年9个月前IP:广东
810785
4楼
引用 1176764177:
qt那个真是坑炸了那个内核.dll16M大也就是随便做点东西都得带着..
有缩小的dll
引用
评论
10年9个月前IP:广东
810954
5楼
其实我觉得用java不错,那个java applet也能做出很多好的程序,当然软件这一行各有各的爱好和选择了
引用
评论
10年9个月前IP:上海
811035
6楼
我最喜欢用QT,干净整洁的感觉有木有。。
引用
评论
10年9个月前IP:广东
813571
7楼
其实微软的解决方案,一直以来给人的印象都是航空母舰(不管是造还是跑都拖家带口)。
对于以软件开发为生的人而言,选择微软是一个非常不坏的选择,因为微软就是一个以软件开发为生的公司,他们造的东西虽然体积很大,但都是以为程序员服务为核心的。
从语言本身特性来看,C#的抽象能力是优于Java的,拓展到全平台之后,在软件工程方面的优势很大。
如果仅仅是从个人爱好项目的角度出发,不太可能看出任何区别(甚至会觉得C#和C++没什么区别)。所以上面几位qt同学,你们啊,naive
引用
评论
10年9个月前IP:江苏
813572
8楼
引用 novakon:
其实微软的解决方案,一直以来给人的印象都是航空母舰(不管是造还是跑都拖家带口)。
对于以软件开发为生的人而言,选择微软是一个非常不坏的选择,因为微软就是一个以软件开发为生的公司,他们造的东西虽然体积很大,但都是以为程序员服务为核心的。
从语...
个人爱好来说差别很大呀,C++难多了
引用
评论
10年9个月前IP:河北
813575
9楼
Mono 在 Linux 上搞了这么多年的跨平台,也没见火起来过,并不相信这次微软收购了一个框架就能火了。

多年来与微软有关的争论表面上看似是信仰之争,其背后的真正逻辑实则是风险之争。微软在新技术上有很多挖坑不填的不良记录,从 COM+ 到 Silverlight 都给广大码农留下了深刻的印象。
引用
评论
acmilan作者
10年9个月前修改于 10年9个月前IP:四川
813607
10楼
引用 我说要有光:
Mono 在 Linux 上搞了这么多年的跨平台,也没见火起来过,并不相信这次微软收购了一个框架就能火了。

多年来与微软有关的争论表面上看似是信仰之争,其背后的真正逻辑实则是风险之争。微软在新技术上有很多挖坑不填的不良记录,从 COM+ ...
实际上Java也没见在Linux上多火,比较火的是Perl、Python、Ruby这些脚本语言,Java的主要用途是写网站。。。

实际上Linux上的Mono一直不瘟不火的原因是没有必要,因为适配Linux上的Mono需要学习Mono的各种限制,但是单单为Windows开发软件已经很赚钱了,没必要为Linux上的Mono再适配。。。

但是现在情况不同了,Android和iOS已经分走了大部分移动市场,Mono实际上在移动开发上应用比较广泛了,比如Unity3D就是基于Mono的跨平台游戏开发框架,差的就是Xamarin这一环,也就是跨平台UI开发,Xamarin的一个槽点就是收费过高。。。

(更正→_→我在二楼板凳的描述不完全正确,最新的Xamarin.Forms方案已经是完全跨平台,调用原生API的是以前的Xamarin.Android和Xamarin.iOS方案)

Xamarin被微软收购的真正意义在于,Xamarin和Mono受到了微软官方的支持,可以加入更多以前加不进去的功能,同时Xamarin也可以免费提供,这对C#以后的跨平台发展会有利。。。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的