Installed it today in a VM...
... and encountered two obvious and careless bugs in the IDE within five minutes. I'll be waiting until the first update until I try again.
Microsoft has released Visual Studio 2017, marking 20 years of the software development tool's, er, development. Visual Studio 97 was released on March 19, 1997. It came in two editions, Professional and Enterprise, and included Visual Basic 5.0, Visual C++ 5.0, Visual J++ 1.1, Visual InterDev and Visual FoxPro. Microsoft has …
I think that may depend on your definition of "always". Visual Studio 6 was excellent and not at all clunky. Post 2013 it all started to go a bit wrong.
It's only hard to migrate from if you use the wizards, but that statement applies to almost any code generation tool. You are tied to msbuild, but it's not that bad compared to the alternatives (ever tried to use Maven?)
Assuming you're writing cross-platform C++, the best way to manage your project is to use CMake. Express your project using a CMakeLists.txt and generate an IDE-specific solution from that. The same CMakeLists.txt can generate a GNU make file or a bunch of other targets. Some IDEs such as CLion will work directly from CMake too.
Visual Studio Code is perfectly usable as a programming editor and its performance is absolutely fine for that role. It isn't an IDE but sometimes an IDE doesn't exist for what someone is doing or is unnecessary. It also runs cross platform which is useful.
I've used it to develop and debug on Linux which is an interesting departure for a Microsoft product.
I started in this coding malarkey with Turbo Pascal (2), kept going with Dephi (and, at about the same time, CodeWarrior). In 1999 I started using Visual Studio - and hated it. It was a grind to use, particularly since I was so used to better, more integrated, IDEs with a more complete feature set. I've kept up to date, through MSDN of course, and seen Microsoft's ugly duckling grow into a Swan. Not quite a beautiful Swan yet - there are still some rough edges - but it certainly isn't a chore to use, and it lives happily alongside Xcode in my workflow - just as my Mac lives happily alongside Windows and Linux.
Microsoft and Apple really do have to up their IDE game though - because my workflow, and that of many other developers, now includes IDEs from JetBrains - and JetBrains' IDEs are a joy to use.
I always (okay, mostly. Sometimes, anyway) keep my projects updated for the latest version. Updating a project (in pretty much any IDE that I’ve used so far) between consecutive versions is fairly straightforward, especially if you’re diligent about fixing compiler warnings before they turn into errors down the line. If the versions aren’t consecutive then updating is a pain in the arse (I recently resurrected a project in Xcode that I abandoned a few years back - I sometimes wonder if it’d have been easier just to start from scratch!).
Maintaining projects other than your own is always a problem. But updating to a new IDE and tool chain is just a matter of course and is rarely a challenge. I've moved millions of lines of code from Turbo C++ to Microsoft C++ 7.0 to Visual C++ 1.2 through Visual Studio 2017. Code may require modifications, but with proper build management, it is quite easy to write code to run on 30 platforms without a single #ifdef.
I've been programming for Linux and Mac using Visual C++ since 1998. I used to write my own build tools, then I used qmake from Qt. Never really liked cmake since it was always hackish.
I have to keep a copy of VS2008 around as last version of VS that supports old (v6.x) Windows mobile projects. Legacy apps still running on that platform (& rugged Win Mobile 6.x devices still being sold).
In good VS style, no easy upgarde from mobile 6.x to 7 and beyond.....
The replacement apps of functionality in the legacy win mobile code run on Android - that's what you get by not making an easy upgrade path! Legacy support needed just for windows mobile devices,
Never understood why MS make it such a pain to keep old stuff alive when plenty of users like to run stuff for ages when it just works fine for them.
I started similarly to you, except Turbo C instead of Pascal. Then Borland released the execrable Borland C++ builder, which I could find no love for even for want of trying. The sunlit uplands finally came with MS Visual C++ and (I shit you not VB). I could write the performance critical stuff in C++, expose the functionality as a .VBX then knock out a UI in VB - happy days ... But then MS started pooing on its own doorstep: IEV6 & ActiveX controls, abandoning proper documentation for random blogs, competing (incompatible) data access libraries: ado, redo, oledb, odbc, championing then abandoning major frameworks i.e. Silverlight. I do hobby development in the electronic hacker environment: arduino & eMbed, etc and really miss the convenience that Visual Studio brings to coding. Yes, they've had a bad decade, but it looks like Microsoft has finally turned a corner.
I joined this madness a little earlier and the Turbo Pascal was probably the first proper IDE on the PC. First VS was such junk, hell it was junk until around 2010, but these new versions are quite usable. Still not JetBrains but comparing it to XCode is an insult. Apple had bad software from the get go and while Microsoft has upped their game, fan boys have no idea what kind of trash they are stuck with. Hardware on the other hand...
And that's some crappy forms based simplest-bits-of-all-platforms failure. It's like microsoft are doing a corporate ostrich - even though the news this week is Android is teetering on overtaking global OS share for windows itself.
Boy, they must love what Nokia are doing now.
"Boy, they must love what Nokia are doing now."
Probably as much as Google must love that when you take mobile out of the equation (ie: look at productivity as opposed to calling, texting, posting pictures of your dinner on instagram and playing the latest clone of whatever's F2P game is popular right now), Android does not even register as a desktop OS, and Chrome OS has less than one percent market share...
"It may be because of the debuggers and other system level stuff installed. It's not just a code editor."
Why does a debugger and "system level stuff" require a reboot? Has it updated the kernel in some way? No? Then a reboot should NOT be required. Well, not in a proper OS anyway.
While I can perhaps understand that an IDE has to install components at quite a low level, and given Windows these require a reboot, what is not acceptable is that it is impossible to uninstall Visual Studio and undo the "damage" that it does to the configuration of a system - i.e. masses of additional controls, libraries and registry entries that are no longer relevant.
For example, .NET modifies the executables loader. "System level stuff" is not only "kernel stuff" - but also system code which is in user space, and could be already in memory. By design, Windows doesn't allow to replace files which are already mapped to memory, because it doesn't allow two different versions of the same system library to be loaded by two different processes (it may create IPC troubles... and Windows does far more IPC than Linux, as it is far more integrated among the different pieces).
Restart Manager can be used to automatically stop and restart processes that are using a given file, but some system processes - even in user space - cannot be stopped and keep the system running.
It looks you have a lot to learn about system programming, especially under Windows.
"because it doesn't allow two different versions of the same system library to be loaded by two different processes (it may create IPC troubles... and Windows does far more IPC than Linux, as it is far more integrated among the different pieces)."
I suspect that has far more to do with it being hard rather than a deliberate design choice. There's a reason unix shells have the LD_LIBRARY_PATH enviroment variable. Ditto replacing drivers without requiring a reboot and proper process forking.
"It looks you have a lot to learn about system programming, especially under Windows."
I've been doing unix system programming for 20 years. Perhaps I'm just used to non compromised OS's that were designed properly rather than flung together piecemeal.
Just had almost 20 years for the latter. Classy.
There are features of C++98 that were never implemented by any mainstream compilers.
One of these -- Java style exception specifications -- was realized not to be as useful as useful as people had hoped and was deprecated before anyone implemented it. It has effectively been replaced by the 'noexcept' specification identifying functions that are guaranteed not to throw any exception.
Another -- the 'export' specification -- was found to be quite difficult to implement and was widely believed not to offer useful benefits (though experience with an experimental compiler that did implement it eventually showed that some benefits were real). It has since been deprecated in favour of the notion of separately-compilable modules, a specification for which is under development (I'm not sure whether it's included in C++17).
All in all, the 1998 standard for C++ was not the language's finest hour, and lessons have been learned.
"All in all, the 1998 standard for C++ was not the language's finest hour, and lessons have been learned."
Sadly the lesson as to when to leave well alone hasn't. C++ is a dogs dinner. Now they're just adding syntactic sugar such as lambda functions, user liberals and language threads (pthreads arn't hard and if threads, why not process control too? In fact throw in half of Posix!) which mean yet more syntax to learn for interviews and debug when fixing someone elses code.
Thanks for the detailed answer. What I meant, though is stuff like for(int i=0; i<9; ++i) not being possible (you had to declare i before the loop, barf!). And obscure extensions to the language itself.
I realize these complaints are about the language, not the IDE.
The Visual Studio editor is enhanced in this release. New features include:
Structure visualizer: hover the mouse on a closing brace and a tooltip shows the line of code above the opening brace (a neat feature).
Well, call me unimpressed, even VI has has this feature, move onto a brace and it highlights the opposite, hit % and it goes to the opposite brace. Same goes for notepad++ and pretty much every other editor I've ever used.
So, that's some cutting edge innovation from Microsloth, who always seem to be late to any party.
Sounds like you are describing related functionality, not the same functionality. Let me point out the key words there;
* "the line of code above the opening brace"
But you're complaining that VS has new features because they are similar to other text editors? On that basis, we may as well stop development of all text editors right now. Regardless of how useful new features might be, nothing that anyone could now add is going to be totally unique.
I think Visual Studio is a very solid environment which can even be fun to use. I started using it back in 2012 when I finally decided that ASP appealed more to me than Java EE, especially because I wouldn't be fully tied to IIS (right now my ASP.NET powered websites run fully on Apache + mod_mono). I was using a (paid) version of Expression Web & Expression Design (I still use those) and decided that the move to Visual Studio was the most logical step to take.
VS takes getting used to. If you're using it for Web development (which is quite likely considering that Microsoft discontinued Expression Web and fully pushes Visual Studio) then you may have to adapt a bit because at first it might all feel a bit "static" (for example: code above, preview below, no customization possible). But once you looked past that you'll find a very inviting and most of all professional, well documented, environment. It's not perfect, it has its flaws, but Microsoft Help is quite useful. I also always welcomed the option to keep offline copies of the documentation, so that I wouldn't be tied into always having to use Internet.
But there is a 'BUT', as hinted at.
For starters I could never understand the logic of insisting to follow the GUI layout for their consumer platform. It always struck me as arrogant. VS 2012 was aimed at Win8 but I kept away from that horror story best as possible. I'm using it on Windows 7. Ergo: I have a rather alien looking development environment in comparison to the style of Windows 7. That's just weird.
And it also shows you just how chaotic Microsoft operates. See the menu in the article screenshots? My menu consists of EASY TO READ MENU OPTIONS (VS 2012). Most people immediately labeled that as fail, Microsoft insisted there were advantages and here we are now. It's confirmed: #fail.
My point? If you're a home developer and/or Microsoft enthusiast then do yourself a favor and stick with the VS community versions. At the very least try those first before even considering to apply for a license of your own. Using professional or above has some advantages, definitely, but if there are serious caveats which make VS usage awkward for you then don't expect Microsoft to try and help you out. I'm not kidding. Back in 2012 hundreds if not thousands of developers cried about about the obnoxious and plain out distracting interface and Microsoft did what they did best: ignored the whole thing.
Of course in the next version did they address some problems and presented those as listening to their customers. However, while also presenting you a bill for yet another license, because a company like Microsoft knows nothing about upgrade (or loyalty!) discounts (for example: new VS license could cost you E 800,-, but as a returning customer you'd pay E 200,- or E 300,- instead for an upgrade).
This will probably be less of a concern if your company provides these or if you got an MSDN subscription. But as an enthusiast you might want to keep this in mind: Microsoft wants your money first, and your happiness second. They haven't reached that point yet where companies realize that these go one on one.
Now, don't get me wrong... I'm critical, sure, but not negative. Visual Studio is an exciting development and Microsoft honestly does their best to get us the best tools to help get us going to get things done. No arguments there. They're also not so childish by trying to tie us fully into their own environments (think cloud, Azure, etc.) but will easily allow you to set up your own environments as well. As mentioned above I use VS together with an Apache server using Mono, PostgreSQL all powered by FreeBSD and I can deploy my web projects easily from within Visual Studio with the click of a button. That is professional.
But... I'd personally still recommend using the community versions instead of getting yourself a license. You'll most likely get less headaches and won't have to worry about possible issues which Microsoft then doesn't fix.
Every version of Visual Studio asks during installation if you want MS SQL Server Compact installed.
What happens if you choose No? Nothing, the bastarding thing installs all that stuff anyway. And it's not just one package but about 10 of them, packages for T-SQL, packages for .NET framework etc. It takes about 30 minutes to remove them all again manually from add/remove programs.
No surprise there. Its fine for simple noddy logic for teaching kids or maybe webdevs, but any reasonably complex logic or expression handling becomes absurdly difficult to express in a visual format.
Good luck finding a succinct visual way of expressing eg:
reg = (reg >> 1) ^ ((uint16_t)-(reg & 0x0001) & 0xB400);
No, thats just visual design which has been around since the 80s at least. Visual programming is actually drawing the code as a kind of diagram or flowchart using visual widgets. MIT tried it with the kids language Scratch recently but for anything beyond simple logic or expressions its simply hopeless. Its the difference between writing a novel or drawing a comic with very simple speech bubbles.
For large, complex projects you'll spend more time managing makefiles and find the right file to open in VIM - and there are file you may need to manage which aren't simple text files, and require specific editors. While the integration with debuggers and profilers could be far less polished and powerful.
There's a reason why Autotools and CMake exist - and IDEs are a true productivity tool and time savers when your need can't be addressed by simpler tools.
Biting the hand that feeds IT © 1998–2019