4 ms·
Well, you can spend 5 months writing your software in C++, and a month fixing your bugs and doing a bit of optimization. Or you can spend 3 months writing C# or
by pedasmith 9y ago
Well, you can spend 5 months writing your software in C++, and a month fixing your bugs and doing a bit of optimization. Or you can spend 3 months writing C# or other modern language and have another 3 months to optimize, all the while enjoying substantially faster compile times and super easy refactoring.
- bayindirh 9y agoThis is not an apples to apples comparison. I've given examples from runtime, not from development time. OTOH, refactoring in C++ is not hard, at least from my experience. With some knowledge of the language, everyone can write reasonably bug-free C++ (or any other language) application in one go. Compilation in C++ is a different story. C# is not native. It's converted to CLI (was that the name, I don't use Win32 for ~15 years), then JIT compiles it to machine code, and optimizes over and over in every execution. Yes, C# is reasonably fast, but it's not native, cross platform (mono doesn't count), and designed to be a systems programming language. People tend to think C++ is overly verbose, no. Win32 programming model forces simple operations to be long and time consuming for a programmer to implement. Opening a file, serial port, or anything is a single line, because of the (while not everyone likes it) "everything is a file" philosophy, which makes UNIX and C++ much easier, verbose, and accessible.
- pjmlp 9y agoC# is surely native as well. It can be compiled to native code just like C++ via NGEN, .NET Native, CoreRT, IL2CPP, Bartok, Mono AOT. Or if you prefer, C++ is not native. It's converted to LLVM bitcode, OS/400 TIMI, WASM,.... Lets not mix languages with implementations.
- bayindirh 9y ago> It can be compiled to native code... In that sense, you are absolutely right. However, for simplicity I only thought about the out of the box experience, or by the de-facto implementation of the said languages, since it’s the most popular usage scenario as well.
- pjmlp 9y agoWell, since Windows 8 .NET store apps don't support JIT, they only run AOT compiled to native. And NGEN is a standard component of the .NET SDK since the beta days. So AOT compilation has been part of the default tooling since ever.
- bayindirh 9y agoWell, I’m not very knowledgeable about Windows world, as I said before, I’m not using Windows for 15 years or so. So, my bad, sorry.
- pjmlp 9y agoIf you, or others want to know a bit more about it, NGEN https://docs.microsoft.com/en-us/dotnet/framework/tools/ngen-exe-native-image-generator https://docs.microsoft.com/en-us/dotnet/framework/tools/ngen... AOT Compilation for Windows 8.x store apps, based on Singularity's Bartok compiler https://channel9.msdn.com/Events/Build/2012/3-005 https://channel9.msdn.com/Events/Build/2012/3-005 https://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-and-Peter-Sollich-Inside-Compiler-in-the-Cloud-and-MDIL https://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-an... AOT Compilation for Windows 10 store apps, using Visual C++ backend https://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native https://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native https://docs.microsoft.com/en-us/dotnet/framework/net-native/ https://docs.microsoft.com/en-us/dotnet/framework/net-native...
- bayindirh 9y agoThanks a lot. I will read them as soon as possible.
- gpderetta 9y agoI guess native needs to be qualified. I would say that Native means it speaks the ABI of and fits into a specific platform. I would say that the C family languages are traditionally native of most operating systems [1] as they are polyglot and can directly speak whatever C ABI dialect is used there; they also work with the native platform tools. C# is really native of the .Net platform and although it can be AoT compiled it either can't talk directly with Win32 or the interfacing is not seamless. Also it has its own set of tools. Android and iOS are interesting because although they are clearly unix derivatives, the unix interface is not the primary interface; so arguably C and C++ are not really native there while Java and ObjectiveC/Swift respectively are. [1] Or to be fair, of unix and any operating system that can be made to look like unix (Windows).
- pedasmith 9y agoWhy would you only include some of the overall time? All of our companies get clients based on our overall ability to help clients be more productive. Looking at just one part f the pipeline isn't likely to produce the best results for our customers.