`
tubaluer
  • 浏览: 1500069 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

Visual Studio 11开发指南(4)Visual Studio 11编程语言发展

 
阅读更多

JavaScript 和交互性

在Visual Studio 11中,JavaScript成为构造Windows和Web应用程序的第一类语言,都被Visual Studio中最好的工具所支持。除了全面的语言支持ECMAScript 5,显著改善智能显示(包括在大的JavaScript文件上更好的性能和得到很大改善的精确度),编辑器支持例如“跳转到定义”的操作,而且完全支持对Visual Studio中其他支持语言的调试,Visual Studio现在也提供新的集成调试窗口,与HTML/JavaScript应用程序调试交互。

新的DOM Explorer窗口通过HTML Document Object Model (DOM)深入探索和操作元素,样式以及更多。

clip_image002

而且新的JavaScript控制台窗口提供对JavaScript的读-估计-打印循环(REPL),直接集成到Visual Studio中。这给运行的应用程序提供了实时运行的窗口,支持任何JavaScript表达式的评估。这结果也支持可视化,如下列屏幕截图所示:

clip_image004

当计算表达式应用到当前应用程序的上下文时,你甚至可以定义新的功能,然后从控制台窗口直接使用这些功能:

clip_image006

C#,Visual Basic,和异步

通过C#和Visual Basic直接探索异步编程的集成。在Visual Studio 11开发者预览中,这已经成为了C# 5 和Visual Basic 11的一部分。

众所周知,异步编程是如何实现用户界面和可伸缩应用程序的响应,但这样的技术也很难实施。这些系统在每个操作只包含一次异步调用时仍然相对简单,但随着我们的世界发展为对一切都是以异步方式开放的,这样的操作变得很稀少。相反,在复杂的回调代码定位到最微不足道的模式之后,开发人员被迫写回调代码,像一个在调用时被排在另一个之后。几年来,当异步编程时,现代语言给我们的主要是不可用的控制流结构。现在,有了这些新的C# 和Visual Basic的异步语言功能,开发人员可以将他们当同步一样写异步代码,如所有使用这些语言提供的种种控制流结构,包括对循环的支持,条件,短接,和更多。

有了这些功能,我们可以为该设施提供Visual Studio的调试功能。例如,当调试时我们“跳过”(F10)一个声明,包括一次等待:

clip_image008

它会表现的像你期待的那样,移动到逻辑控制流中随后的行,哪怕该代码像一个重写的继续回调异步调度中的一部分。

clip_image010

C++ 和平行

Visual Studio对C++的支持。这不仅包括对C++11标准库,改进IDE支持(如引用突出显示和语义着色),和生成全部-本地Windows Metro样式应用程序的全部支持,也包括对平行提供丰富的新语言和库。

对Visual Studio 11中的Visual C++来说是新的,通过在他们的项目中利用大规模并行加速器(主要是GPUs),它使C++开发人员可以轻松编写代码。在常规的C++代码中,开发人员可以使用parallel_for_each方法调用lambda,该lambda被批注为“restrict(direct3d)”,这将导致编译器为lambda生成目标为DirectX加速器的代码。在下面的例子中,parallel_for_each方法被用来循环访问所有输出矩阵的指数,以计算两个输入矩阵的乘积。

   1: void MatrixMultiply(
<!--CRLF-->
   2: std::vector<float>& vC, 
<!--CRLF-->
   3: const 
<!--CRLF-->
   4: std::vector<float>& vA, 
<!--CRLF-->
   5: const std::vector<float>& vB, 
<!--CRLF-->
   6: int M, int N, int W)
<!--CRLF-->
   7: {
<!--CRLF-->
   8: array_view<const float,2> a(M, W, 
<!--CRLF-->
   9: vA);
<!--CRLF-->
  10: array_view<const float,2> b(W, N, 
<!--CRLF-->
  11: vB);
<!--CRLF-->
  12: array_view<writeonly<float>,2> c(M, N, vC);
<!--CRLF-->
  13: parallel_for_each(c.grid, [=](index<2> idx) restrict(direct3d) 
<!--CRLF-->
  14:  
<!--CRLF-->
  15: {
<!--CRLF-->
  16: int row = idx[0]; int col = idx[1];
<!--CRLF-->
  17: float sum = 0.0f;
<!--CRLF-->
  18: for(int i = 
<!--CRLF-->
  19: 0; i < W; i++)
<!--CRLF-->
  20: sum += a(row, i) * b(i, col);
<!--CRLF-->
  21: c[idx] = 
<!--CRLF-->
  22: sum;
<!--CRLF-->
  23: });
<!--CRLF-->
  24: }
<!--CRLF-->

不仅C++ AMP代码部分直接集成进源文件并用标准C++语法表示,Visual Studio也提供对这些内核的完整调试,支持基本的功能如断点和分步执行,而且提供对调试窗口如查看, 本地和并行栈,与新的GPU线程和并行查看窗口的完全支持。

C++ AMP不是Visual Studio 11中唯一针对并行现象的为本地代码而作的努力。当它决定可做的操作时,C++编译器现在也自动完成循环。例如,对下面的代码来说,编译器会尝试利用SSE指令在cpu上运行多个迭代的for循环作为单操作的一部分,这将大大加快计算速度:

   1: float a[1000], b[1000], 
<!--CRLF-->
   2: c[1000];
<!--CRLF-->
   3:
<!--CRLF-->
   4: for(int i=0; i<1000; i++)
<!--CRLF-->
   5: c[i] = a[i] + b[i];
<!--CRLF-->

C++编译器现在不仅自动向量化,还具有自动并行化的功能。而且包括Visual C++的并行库已经被极大扩展,包括更多的并行数据结构,并行算法,和一个更新的类似于在.NET Framework中被Task Parallel Library (TPL)使用的任务栏模式。

F# 和数据访问

并非所有语言都需要同样支持每个域和每个用例:如果他们这样做,会有多种语言需要更少的支持,。最终往往语言的发展迎合特定的域和特定的样式,而且我特别高兴我们对某一语言的投入成为了该规则的极好示例:即F#。通过Visual Studio 2010中的F# 2.0,我们提供了一种着重于加速计算复杂问题的解决方案。通过Visual Studio 11中的F# 3.0,我们继续保持着重于特别问题域的趋势,通过直接集成支持解决数据复杂问题。

F#是一种静态类型的语言,如同C#和Visual Basic,而且这种静态类型有很多优势。它通过支持像准确的智能提示的功能来提高开发经验。由于更多优化可用在编译时,它可以产生更好的性能。通过消除一些常见类型的错误,它也可以减少开发和测试成本。

然而,也有时候静态类型导致比动态类型需要更多代码。有一个极好的例子,世界上有非常丰富的信息,这在我们日常的软件生活中正在经历的越来越多。所有这些数据通常以非强类型方式进入我们的程序,在它公开到其他程序之前,首先需要分析和处理为强类型的对象。相比开发人员手动编程导入例程,这个问题已经被设计时代码生成处理为历史问题(例如,设计时工具导入一个Web服务描述然后生成必要的代理代码)。不幸的是,这种方法有问题,它与不断演变本质的数据源之间的交互性很差,如web上的数据。这会导致非常臃肿的客户端代码(为代表整个架构和元数据而生成的类型,不管客户端程序是否使用它们)。而且它没有顺利与脚本环境集成,如Visual Studio中的F#互动窗口。

通过F# 3.0中新的类型提供者机制,对F#程序和组件来说这种数据访问变的繁琐。同样,因为F#面向.NET Framework,用C# 或Visual Basic(或其他托管语言)写的应用程序可以通过F#组件利用这种新功能。使用F#编译器的可扩展机制,受影响的类型提供商可以给需要的库提供数据访问,在设计时和编译时用支持智能提示而且可扩展的方式可使类型和方法计算空间收益,。F# 3.0的库包括Odata,WSDL,和SQL (通过LINQ to SQL 和LINQ to Entities)的类型提供者,但是客户类型提供者也可能被写进目标任意数据源,如SharePoint列表和WMI提供者。

作为示例,请考虑一种想法去搜索Netflix目录与一部分人分享我的“S.”名字对象。Netflix公开一个Odata,这样就能被Odata类型提供商使用。

   1: open Microsoft.FSharp.Data.TypeProviders
<!--CRLF-->
   2: [<Generate>]
<!--CRLF-->
   3: type 
<!--CRLF-->
   4: netflixCatalog = ODataService<"http://odata.netflix.com/Catalog/">
<!--CRLF-->
   5: let 
<!--CRLF-->
   6: netflix = netflixCatalog.GetDataContext()
<!--CRLF-->
   7: query {
<!--CRLF-->
   8: for person in netflix.People do
<!--CRLF-->
   9: where (person.Name.StartsWith 
<!--CRLF-->
  10: "S. ")
<!--CRLF-->
  11: sortBy person.Name
<!--CRLF-->
  12: take 5
<!--CRLF-->
  13: } |> Seq.iter(fun result -> 
<!--CRLF-->
  14: printfn "%s" result.Name)
<!--CRLF-->

我们不仅能够轻易导入相关元数据和快速查询,也可以通过经验查看智能显示:

clip_image012

而且这样的代码不仅能在F#应用程序中写,也可以直接在F# 交互窗口中写:

clip_image014

分享到:
评论

相关推荐

    Visual Studio 2008 开发指南

    Visual Studio 2008开发指南,英文版资料,目前还没有中文版哦!不过值得观看哦!(分成了两部压缩卷哦!此卷为第二部分哦!)

    visual studio.net 开发环境使用指南

    Visual Studio .NET是微软推出的针对.NET Framework开发的应用程序的IDE,它支持多种编程语言,如C#、VB.NET、C++等。其特点包括: 1. **集成开发环境**:Visual Studio提供了一个统一的工作空间,用户可以在这里...

    VisualStudio2022编程软件的使用详解参考.pdf

    Visual Studio 2022 是一个功能强大且灵活的编程软件,它提供了一个集成的开发环境,允许开发者创建高效、可靠且易于维护的应用程序。本文将详细介绍 Visual Studio 2022 的使用详解参考,包括其主要特点、开发环境...

    Visual Studio 2013中英文语言包

    Visual Studio 2013是微软推出的一款强大的集成开发环境(IDE),支持多种编程语言,如C#、VB.NET、C++、JavaScript等。这款IDE以其丰富的功能、高效的代码编辑和调试工具以及对Windows应用程序开发的强大支持而广受...

    Visual Studio经典C++入门教程

    VisualStudio 其实是微软开发的一套工具集,它由各种各样的工具组成,这就好像 Office 2007是由 Word 2007、Excel 2007、Access 2007 等等组成的一个道理。其中 Visual C++就是 VisualStudio 的一个重要的组成部分。...

    解决vs2012 “无法启动已配置的visual studio开发web服务器”的解决办法

    解决VS2012中“无法启动已配置的Visual Studio开发Web服务器”的解决办法 在Visual Studio 2012中,开发者可能会遇到“无法启动已配置的Visual Studio开发Web服务器”的错误,这是一个常见的问题。这个错误可能是...

    Visual Studio.NET功能展现指南简单中文版

    Visual Studio .NET是微软公司推出的一款集成开发环境(IDE),它集成了多种编程语言、调试工具、版本控制以及项目管理功能,是Windows平台上开发软件的重要工具。 这份指南以简体中文的形式呈现,降低了语言障碍,...

    电子-VisualStudio2017开发STM32.pdf

    综上所述,本教程以详细的步骤和丰富的图片说明,为学习STM32单片机开发的人员提供了一套完整的VisualStudio开发环境搭建指南。通过本教程的学习,读者将能够掌握从软件的下载与安装到项目的搭建、编程和调试的全...

    visual studio 2013 中文语言包

    Visual Studio 2013是微软推出的一款强大的集成开发环境(IDE),专为软件开发者提供全方位的编程支持。此版本的Visual Studio包含了多种语言的开发工具,如C#、VB.NET、C++、JavaScript等,并且支持Windows、Web、...

    Visual Studio开发Android环境配置

    Visual Studio 是一个功能强大且功能齐备的集成开发环境(IDE),它支持多种编程语言,包括 C#、VB.NET、F# 等。 近些年来,随着移动设备的快速发展,Android 和 iOS 等移动操作系统的应用程序开发需求也在急剧增加...

    Visual Studio .NET开发环境使用指南

    Visual Studio .NET是微软公司推出的面向对象的、组件化的、集成的开发平台,支持多种编程语言,如C#、Visual Basic .NET、C++、F#等。它集成了项目管理、代码编辑、调试、版本控制、测试等多种功能,为开发者提供了...

    [Visual Studio] Visual Studio 2013 高级编程 (英文版)

    [Wrox] Visual Studio 2013 高级编程 (英文版) [Wrox] Professional Visual Studio 2013 (E-Book) ☆ 图书概要:☆ Comprehensive guide to Visual Studio 2013 Visual Studio is your essential tool for ...

    基于 visual studio开发的在线聊天室

    Visual Studio是微软推出的多语言编程IDE,支持C#、VB.NET、C++、Python等多种语言。它集成了代码编辑器、调试器、版本控制工具等,为开发人员提供了从项目创建到部署的一站式解决方案。 2. **Web应用程序开发** ...

    visualstudio2022使用教程.docx

    Visual Studio 2022 是微软最新发布的集成开发环境(Integrated Development Environment, IDE),它支持多种编程语言和技术栈,如.NET、C++、Python、JavaScript 等。这款强大的工具旨在帮助开发者高效地构建各类...

    Visual Studio 2010 完全卸载工具

    微软官方提供的Visual Studio 2010彻底卸载工具,本人已亲测。用它可以轻松彻底地删除Visual Studio 2010以及它诸多的依赖项,让你彻底从机器上删除Visual Studio 2010。支持Visual Studio 2010 各种版本。 微软官方...

    Visual Studio 扩展开发文档 2019版.pdf

    Visual Studio是微软推出的一款集成开发环境(IDE),它是为满足开发者在不同领域(包括Windows桌面开发、移动应用开发、游戏开发、Web开发等)的需求而设计的。在Visual Studio中进行扩展开发,可以让我们根据个人...

    Windows编程visual studio 2008

    Visual Studio 2008是微软公司推出的一款开发工具集,支持多种编程语言,如C++、C#、VB.NET、JavaScript等,特别适用于Windows桌面应用的开发。该版本引入了.NET Framework 3.5,为开发人员提供了丰富的类库和新的...

    Visual Studio 2010 高级编程 pdf (第一部分/共两部分)

    一个必须具备的指南,涵盖所有的Visual Studio 2010新功能 Visual Studio中,您可以为Windows平台创建和管理规划项目,新的2010年版本经历了重大变化大修组成。写作者是一个老程序员和开发团队,这本书会让你更快...

    Gitee.VisualStudio.vsix Gitee vs插件(Gitee Extension for Visual Studio)

    1. **.NET技术栈**:作为Visual Studio的插件,Gitee.VisualStudio.vsix支持.NET框架,允许开发者使用C#、VB.NET或F#等.NET语言进行开发。它能够无缝集成到基于.NET的项目管理中,为.NET开发者提供Gitee的版本控制...

Global site tag (gtag.js) - Google Analytics