5 ms·
But those same features make it very bewildering and difficult for newcomers. Four different compiler behaviors to read about in any area not defined by the sta
by dikaiosune 11y ago
But those same features make it very bewildering and difficult for newcomers. Four different compiler behaviors to read about in any area not defined by the standard, tooling that can require a long and complex setup from an expert, and 30 years of differing opinions about good development practices crufting up learning resources.
- fsloth 11y ago"But those same features make it very bewildering and difficult for newcomers" Yes, that is very true. "tooling that can require a long and complex setup from an expert" If one is on windows, one can 1. install visual studio community edition and 2. click "new project". Sure, it's nowhere close to npm or Rusts's crates or go's dependency management but that's bit hyperbolic way to express it. I can waste hours trying to get Rusts' dependencies working if I'm using something bleeding edge.
- dikaiosune 11y agoNot having used C++ on Windows, I have to take that at face value. But getting autotools or cmake set up as a new C++ developer...not super fun. Also, spending lots of time setting up bleeding edge features is different than trying to get a single working build with a couple of fairly standard dependencies.
- pjmlp 11y agoHaving started with C++ IDEs on MS-DOS, OS/2 and Windows, UNIX development was never appealing to me. I have spent a big part of my time trying to find that IDE developer experience back. Nowadays Qt and KDevelop do a good job, but it wasn't always like that, specially in the mid-90's when we were already enjoying C++ Builder and Delphi on Windows.
- fsloth 11y ago"But getting autotools or cmake set up as a new C++ developer...not super fun." Yes, this is the main reason I prefer visual studio :). I know my way around unixes but since I don't use them for my daily work I forget most of the things I would need to remember to be productive.
- Aeolos 11y agoUntil you need to build a cross-platform cmake-based project on windows. Which means modifying the system path using the lovely "environment variables" panel straight from the Win95 era, downloading and compiling dependencies (half of which fail to compile on MSVC due to lacking standards-compliance), dll hell and all the other MS cruft. Contrast to apt-get install foo-dev or brew install foo on Linux and MacOS respectively.
- fsloth 11y ago"Contrast to apt-get install foo-dev or brew install foo on Linux and MacOS respectively." Having a project that builds painlessly on third party developer machines requires effort from the project and is not guaranteed automatically by the chosen platform. Apt-get also can fail if the dependency chain does not match exactly the configuration required by the project one wants to build. The best way to build software on windows is different, perhaps even less elegant, but claiming that Linux/OS X builds are automatically correct does not match my experience. Projects which have an incentive to provide a windows build usually can be built out of the box pretty painlessly, even with CMake. From my experience, the best indicator of a pain free build on a platform is the number of users the project has on the said platform, not the platform.
- pjmlp 11y agoNot much different than using most commercial UNIXes or embedded OSes actually.
- GFK_of_xmaspast 11y agoI'll agree that the path setup is regrettable, but I don't remember any other serious build annoyances with cmake-on-windows.
- danieldk 11y agoIf one is on windows, one can 1. install visual studio community edition and 2. click "new project". Outside Windows, it's not so simple though. Most IDEs struggle with heavily templated code. For instance, I tried CLion for a while, but it completely runs into the ground when you use e.g. Armadillo (no completion, correct code is highlighted as incorrect).
- IshKebab 11y agoQt Creator is about the only cross-platform C++ IDE I've used that has decent code completion.