I used Microsoft's Visual Studio on and off since its inception back in 1997. Visual Studio 2013 is the latest incarnation that includes a host of new features like Code Lens (Fig. 1). I won't try to give a full review of since this is a massive platform that spans dozens of programming languages, even more tools and interacts with Microsoft's plethora of programming platforms from Windows 8.1 to HTML5. Let's just say it is impressive, massive and very useful.
- Windows Embedded 8.1 Arrives
- IDF 2013 And Windows 8 Revisited
- Visual Studio-based IDE Target AVR Microcontrollers
- Visual Studio Adds PGI Optimizing Compiler
- Episode 3: Robots are taking over! Featuring Bill Wong.
Visual Studio is also under the hood of Atmel's AVR Studio (see Visual Studio-based IDE Target AVR Microcontrollers). This targets Atmel's AVR microcontrollers and is designed for embedded applications. Atmel essentially hides Visual Studio from the use so it is more of an Atmel IDE that Visual Studio developers will be familiar with. Microsoft's Visual Studio 2013 does target embedded developers though including those using Windows Embedded 8.1 (see Windows Embedded 8.1 Arrives).
Microsoft provides a short summary of the new Visual Studio 2013 features and this provides links to more details. What I provide here is a few of these that I had a chance to try out.
The IDE is where everything happens and the editor is as advanced as you will find anywhere. Basics like code completion and color coding are refined and very useful. Floating tab wells and docks are standard and well known to Visual Studio users.
That said, I'll dive into a few new features that I think pushes Visual Studio ahead of the competition. I mentioned Code Lens earlier. This is one feature you need to try out to appreciate. It changes the IDE presentation of code from the text file contents to add highlights above specific lines like the first line of a class or function definition. This small font, highlight text indicates the number of references to the item as well as who last worked with it, unit test results and how many changes have been made.
Sliding the cursor over these provides popups with more details like the list of references. These are linked so moving to the referencing code is just a click away.
The system is also integrated with Microsoft's instant messaging (IM) Lync application (Fig. 2). Slide the cursor over the name of the person who last made changes to see how to contact them using Lync. Contact includes IM, voice or video calls.
These kinds of features are found in other IDEs but what impressed me was was the integration with unit testing. The popup shows what tests have completed successfully and allows individual or all tests to be run easily.
The features run in real time so the status information is changed as you or others work on the system. This is very useful in team environments which is another area I looked at.
Visual Studio 2013 is integrated with Visual Studio Online, formally known as Team Foundation Service. It is a web-based project support system that includes bug tracking. It works with other IDEs like Eclipse and Xcode. This is important since these days components of an overall application environment may run on a host of devices from iPads and iPhones to embedded sensors. Visual Studio can address many of these but not all. Plus programmers and existing projects affect the tools being used. A more federated environment allows these cross platform jobs to work more smoothly.
I also mentioned the numerous programming languages that Visual Studio supports. Of course, C, C++ and C# are at the top of the lists but there are plenty more. Python and IronPython seem to have garnered the interest of roboticists. There is a lot of Python code in the Robot Operating System (ROS) that I have covered (see Episode 3: Robots are taking over! Featuring Bill Wong).
Another language that Visual Studio supports is F#. This release of F# is the third major incarnation. It is a functional programming language based on ML. I am more familiar with Haskell (see Embedded Functional Programming Using Haskell) but it is right up there with ML. F# is a bit of a mixed bag from a functional standpoint because it is designed to integrate with .NET. I won't get into the details but mixing functional and conventional C-style imperative programming is interesting at best. The plus side it that the power of functional programming can utilize the features and depth of Windows.
But back to the core.
The debugger has a number of new features like the ability to show the method chain for asynchronous call stacks. This is handy fo asynchronous debugging of Windows Store Apps.
The Edit and Continue features allow source code changes to be made when at a breakpoint with the changes immediately reflected in the program being debugged. There are limitations but often you just need to change an equation or constant.
I found Visual Studio to be a bit overwhelming since I wanted to check out a number of languages and features. It is why it took me so long to get around to writing about what I found.
Visual Studio is massive and it demands hefty hardware to be quick and agile. Multiple displays are useful but this tends to be true for any powerful IDE. Most developers will focus on a few of the aspects like C++ and .NET so the size and feature set can be more manageable.
You can try out subsets like Visual Studio Express 2013 for Windows. There are 90-day trial versions of the full platforms that I tried including Visual Studio Professional 2013.