Oh, and there was that one time I accidentally let Unity install Visual Studio instead of VS Code. What a terrible IDE. By modern standards it’s so slow and heavyweight.
It's like someone who used Linux for a few weeks complaining, the entire community would pile on and send you to RTFM :-)
Task Scheduler has a CLI. It's even usable from PowerShell. There are tons of remoting options, etc, etc.
All mentioned things are easy once you know where you came to and know how to behave properly.
Someone with a ton of POSIX experience, gained through blood, sweat and tears over years and years, moves over to the "easy" Windows world.
Then they complain about not being able to do the exact same things on day 1, with 0 effort.
They'd be laughed at for ages the other way round, and justifiably so.
Microsoft got a bit complacent during the decade before, and allowed single user considerations to influence the design (the registry, the small business-oriented administration tools, the complete lack of usable shell, terminal and editor), and they still pay the price of backwards compatibility with this despite most of it being fixed long ago.
All languages and tools from the past two decades such as Python, Ruby, Node, Rust, Go, and so on and first class citizens on Linux. They all work with the file system, the shell, and the package management system because that's what people use. I'm sure there will be post-Linux era too, but that's not where we are now and when it comes it will not look the 90s again.
It's about intellectual dishonesty, regularly complaining about Windows things from a very shallow perspective that would not be tolerated of POSIX. An "argument from ignorance", if you will.
Every OS has things where it shines compared to others and those where it could be better. Why cant I deploy all linux like Guix?
More then that, you need to give it time, explore the culture, find out native tools and see how cross platform tools are used. You cant judge anything without spending enough productive an play time with it.
Everything is equally approachable on the Windows. Powershell is light years ahead compared to any Linux shell. Chocolatey is maybe most up to date package manager around, on par with Arch.
One thing where I would use Linux over Windows any time is IoT simply due to size and price. Windows nano version is still pain compared to mini Linux distros.
ls -Recurse glob | ? { (gc $_ -Raw) -match pattern } | Out-File result.log
Not tested, typed on phone before bad half a sleep.Package managers is also a good example. Everything is third party and nothing is default. They must be configured to work with your instance of git and python and whatnot. And who knows if the tools expect a case sensitive file system, or wants to open a socket in a mode that doesn't work, or use a certificate store that isn't the system default, or some script that expects a network interface that just isn't there.
You are free to hold your own opinion of course. But if you work with Node or Python or other things that cloud apps are built from, most people will stick to whatever everyone else uses. That's just the reason it is like it is. It's the same dynamic that kept Microsoft close to a monopoly in the office era.
It's great that people use other platforms too in order to keep portability of our tools high, but as for the cloud era, the market is unlikely to change much from here. We'll be stuck with the web for a while, and it runs on Linux.
And you can tell me to RTFM all you like, but the manual is leaves something to be desired.
Google “run on system start linux api” and the first result is about systemd. Create a config file, put it in the right place, and done.
Replace linux with windows and I don’t see an answer on the first page of results.
If you learn on Windows first, or if you’re a masochist, then I’m sure it’s possible to tolerate or even enjoy Windows development. But I have never seen a convincing argument that it’s better or even on par with Linux development.
Fundamentally worse is extremely hard to prove and subjective. It's different, that's for sure.
> For instance, the file handle issue is clearly annoying when developing. You may be used to it, but I don’t see an argument on how Windows’ handling of files is better or even equal.
That's one of the things that's arguably worse in the modern era, I'm quite sure it comes from CP/M (1974) so it's a super ancient decision, one that would break a lot of things if they change it. It's one of "go left or right, but you can't go back, and you'll only find out in 20 years if you've made the right choice".
> Or take Poweshell. The *nix approach of composable shell primitives is better for developers. Software development is the composition of primitives after all.
That's ironic, since Powershell is super composable. If anything, it's even more composable since it sends structured data, not just raw streams of bytes. There's a reason a ton of alternative shells want to evolve POSIX shells to add structured data, they're all inspired by Powershell. See for example https://www.nushell.sh/ You don't even have to believe me, try to find blog posts from many devs of next generation POSIX shells and several of them mention Powershell explicitly as inspiration.
> Google “run on system start linux api” and the first result is about systemd. Create a config file, put it in the right place, and done.
Unless you want to use Gentoo or Devuan or FreeBSD or... And amusingly, systemd is inspired by MacOS and Windows service management (parts of them) plus it actually tries to create the unified userland that's inspired by... Windows :-)
> And you can tell me to RTFM all you like, but the manual is leaves something to be desired.
Windows docs are super disparate, but Linux ones are the same. Strictly man-ing stuff won't get you super far. You'll need to do the same forum and StackOverflow and whatever digging for years and years to get anywhere. You've already done it, you've just forgotten doing it.
> If you learn on Windows first, or if you’re a masochist, then I’m sure it’s possible to tolerate or even enjoy Windows development. But I have never seen a convincing argument that it’s better or even on par with Linux development.
If we're professionals, we use what's available and we learn stuff from it.
I wouldn't say Windows is better, but it's definitely a lot better than strictly POSIX users complain about it, and it can be made super usable and more POSIX oriented. I've done it with Cygwin circa 2008 and I've been happily using the same setup since then.
For example in terms of desktop/laptop support, on average, Windows still fares better than Linux.
Especially section about proffesionals.
I use both Windows and Linux and both are awesome. Powershell is legendary. I cant stand OS X tho...
Even if not… I recently installed Visual Studio 2015 in a VM to build an old project and it was perfectly fine.
Can it show smiley emoji in string literals? No, but it does a lot more for me as a programmer than a text editor!
Speaking of progress, I adore this improvement in modern languages. C#, Swift, Rust and nodejs all have officially defined project configuration alongside the source code. I expect to be able to “cargo run” any of my rust programs in 50 years from now just as easily as I can today.
This is the primary reason I've abandoned C++ programming in general, and I'm never going back.
From what I can see, the alternative C++ toolchains from other vendors (and open source) aren't fundamentally better. They might paper over one or two issues, but rarely solve the core problem in a permanent way.
These days I do only C# and Rust for the same reason you mentioned -- sane project, dependency, and build management.
This problem is sometimes temporarily "fixed" by some approach, but the problem is fundamentally with C++ itself, making many basic things night impossible to solve. Eventually the new "simple" toolchain is adapted to support every possible scenario, and then madness creeps back in and we're back to square one.
For example, I recently had to compile Chromium from scratch. It has a custom build system (of course), that is more complex by itself than all of the code that I have written in my entire life put together. It was written to "simplify" its builds. That's... crazy.
I vividly remember the day I snapped and gave up C++. I was trying to compile previously working code and it was complaining that "__malloc" was undefined. This was a linker error with no further information. It didn't identify the source of the problem, and provided no clue on how to fix it.
After hours of effort I simply gave up, switched over to C#, and never looked back.
PS: A part of the reason C/C++ developers don't "get" why IDEs are so popular is precisely because C and C++ are so hard to write IDEs for! A single header file can mean different things in the same project depending on where and how it is included. Simply providing tab-complete and inline help is a monumental task. So most C++ IDEs are bare bones compared to Java or C#. They do basically nothing for the developer except the basics.
PPS: The Rust team are all ex-C++ programmers and made the same mistakes in their language design, making IDEs very challenging to write for Rust. Don't agree? Remind me, how many IDEs are available that can do something as trivial as "extract method" in Rust?
Intellij can. I use it all the time. I’m not sure about rust-analyzer with vs code.
Op is probably talking about Microsoft compilers and build tools.
There is no one "Microsoft-approved" way of building GUI applications for Windows (or anything else for that matter), and you're asking for cross platform stuff :-))
The grandparent's comment was pointing out that if you take the default VS setup, which is usually MSBuild, it's quite self contained. As long as you have the corresponding VS redist, you can pretty much pick up an old VS project (one created with VS) and build it. I'm taking even about stuff from 20 years ago.
Cross platform projects use cross platform stuff, which are obviously not developed by Microsoft, so caveat emptor.
By your logic because VS integrates with npm, the issues setting up npm projects are their problem :-p