主题:Visual C++用户体验调查
我下周会去西雅图参加微软最有价值专家年会,尽管我个人使用VC,但是我个人的经验限于一个行业,我的VC体验大概也和计算机配置比较低的中国程序员差很多。所以在微软项目组提建议的时候,我需要你们的意见。虽然我是VC方向的,但是一些和VC合作的项目组也会参与会议,所以针对Windows 8、游戏开发、云端本地程序开发等等方向的本地语言开发的,以及像http://www.89900.com/这样针对易用性、友好性的意见也欢迎。
下面是VC项目组的计划:
后台:
C++11支持。VC项目组在征求程序员的意见,看哪个语言特性需要先实现。
优化代码和编译器。STL的模板大小减少了一点,此外,VC的新编译器也会尝试尽量并行化循环,这样生成的程序在多核的计算机上一般会快些。
放弃XP开发支持。下一个版本的Visual C++将不支持编写面向Windows XP的程序。当然,如果你有旧版本的VC或者Windows SDK的话,仍旧可以像VC2010那样指定编译用工具集的版本。
人机交互方面
Windows 8 Metro UI程序开发支持,主要是C++/CX。WinRT项目能够使用哪些API、XAML设计器支持什么标签由Windows项目组决定,个人觉得用户界面用HTML5写比较好,移植到其他平台比较容易。
对游戏开发的支持,调试器将支持显示Direct3D程序的绘图历史,而且DirectX SDK也集成到了Windows SDK。
其他项目组的进展:
代码分析项目组将支持扩展到了Express版本,这样更多的程序员可以在开发的时候就得到关于可能导致程序崩溃和访问越界的代码的警告.
C++大规模并行计算库(AMP)项目组最近比较活跃。这个虽然是面向云程序的,但是结合Lamda表达式的话,比直接调用Windows的线程API要简单一些,而且能够利用GPU来进行运算,CPU频率卡在瓶颈已经很长一段时间了,目前计算机厂家提高性能的方式是添加核和GPU,但是这也要求软件能够利用这些额外资源。
关于Windows Phone开发支持的问题,目前我还没有非保密渠道的信息。
个人对一些在Visual Studio 2010 SP1里面VC的改进和你们希望下一代Visual C++都具有什么功能这两个帖子的旧回复的意见:
一些人希望VC集成boost、WTL之类的开源类库:这个和其他人要求精简VC的要求冲突。需要的人可以用nuget之类的第三方visual studio扩展来自动化C++项目依赖项的添加。这也需要人在网上放nuget包。我个人是把这些类库直接签入到源代码管理器的代码库,而不是到每个机器上再重新下载。
一些人希望精简VC:VC特有的文件其实没多少,Windows Forms和WPF支持也没多大,VS各种功能包也只有几十兆而已。要砍的话,可以去VS目录下看看哪些文件/目录很大而且功能是你不需要的。
关于对内存的占用,由于需要保持稳定性的问题,被CLR调用基于COM的Visual Studio组件没有被尽快释放,参考Marshal.ReleaseComObject Considered Dangerous。这个问题目前没什么好的解决办法,只能靠快捷键手动GC了。
VC编译器是Windows SDK的一个组件,如果只需要编译器的话,可以去下Windows SDK的web安装程序,之后安装时只选中VC编译器(不过你可能也需要安装其他组件(http://www.gw005.com),例如调试器、Windows SDK头文件和库文件)。
开发周期方面,Windows 8出来的时候,Visual Studio肯定要出一个支持开发WinRT项目的版本。这个版本里面C++11功能未必完全实现,不过VC项目组计划也更频繁地发布更新
不会有本地代码版的WPF,不过WinRT的架构和WPF比较接近。
静态编译MFC把BCG的类库也包含进来造成的文件大小过大的问题在新版VC里已经解决了,旧版里可以在项目中添加和MFC函数同名的函数来避免从MFC的库抓代码。
代码覆盖分析功能早就有了,不过仅限于高端版本的Visual Studio。
下面是VC项目组的计划:
后台:
C++11支持。VC项目组在征求程序员的意见,看哪个语言特性需要先实现。
优化代码和编译器。STL的模板大小减少了一点,此外,VC的新编译器也会尝试尽量并行化循环,这样生成的程序在多核的计算机上一般会快些。
放弃XP开发支持。下一个版本的Visual C++将不支持编写面向Windows XP的程序。当然,如果你有旧版本的VC或者Windows SDK的话,仍旧可以像VC2010那样指定编译用工具集的版本。
人机交互方面
Windows 8 Metro UI程序开发支持,主要是C++/CX。WinRT项目能够使用哪些API、XAML设计器支持什么标签由Windows项目组决定,个人觉得用户界面用HTML5写比较好,移植到其他平台比较容易。
对游戏开发的支持,调试器将支持显示Direct3D程序的绘图历史,而且DirectX SDK也集成到了Windows SDK。
其他项目组的进展:
代码分析项目组将支持扩展到了Express版本,这样更多的程序员可以在开发的时候就得到关于可能导致程序崩溃和访问越界的代码的警告.
C++大规模并行计算库(AMP)项目组最近比较活跃。这个虽然是面向云程序的,但是结合Lamda表达式的话,比直接调用Windows的线程API要简单一些,而且能够利用GPU来进行运算,CPU频率卡在瓶颈已经很长一段时间了,目前计算机厂家提高性能的方式是添加核和GPU,但是这也要求软件能够利用这些额外资源。
关于Windows Phone开发支持的问题,目前我还没有非保密渠道的信息。
个人对一些在Visual Studio 2010 SP1里面VC的改进和你们希望下一代Visual C++都具有什么功能这两个帖子的旧回复的意见:
一些人希望VC集成boost、WTL之类的开源类库:这个和其他人要求精简VC的要求冲突。需要的人可以用nuget之类的第三方visual studio扩展来自动化C++项目依赖项的添加。这也需要人在网上放nuget包。我个人是把这些类库直接签入到源代码管理器的代码库,而不是到每个机器上再重新下载。
一些人希望精简VC:VC特有的文件其实没多少,Windows Forms和WPF支持也没多大,VS各种功能包也只有几十兆而已。要砍的话,可以去VS目录下看看哪些文件/目录很大而且功能是你不需要的。
关于对内存的占用,由于需要保持稳定性的问题,被CLR调用基于COM的Visual Studio组件没有被尽快释放,参考Marshal.ReleaseComObject Considered Dangerous。这个问题目前没什么好的解决办法,只能靠快捷键手动GC了。
VC编译器是Windows SDK的一个组件,如果只需要编译器的话,可以去下Windows SDK的web安装程序,之后安装时只选中VC编译器(不过你可能也需要安装其他组件(http://www.gw005.com),例如调试器、Windows SDK头文件和库文件)。
开发周期方面,Windows 8出来的时候,Visual Studio肯定要出一个支持开发WinRT项目的版本。这个版本里面C++11功能未必完全实现,不过VC项目组计划也更频繁地发布更新
不会有本地代码版的WPF,不过WinRT的架构和WPF比较接近。
静态编译MFC把BCG的类库也包含进来造成的文件大小过大的问题在新版VC里已经解决了,旧版里可以在项目中添加和MFC函数同名的函数来避免从MFC的库抓代码。
代码覆盖分析功能早就有了,不过仅限于高端版本的Visual Studio。