Question on Preferred OS for Dev Work

11/14/2016 17:35 HoneySmurfs#1
Hello everyone,

I'm pretty inexperienced with programming, so why is it that so many people prefer using Linux or mac OS over Windows for development work?
11/14/2016 18:12 th0rex#2
I can't talk for everyone but my main reasons for using linux are that there is a package manager and that it generally has newer stuff first. Take for example the implementation of the upcoming c++17 standard. On Linux I have clang and gcc which both support most of the standard since atleast a year (probably way longer than that). On Windows I have VS which doesn't support that and getting gcc/clang to work is pretty time consuming (compared to linux). Then there's also things such as a way superior shell and better security (if u don't fuck up).
11/14/2016 21:11 alpines#3
Quote:
Originally Posted by C0untLizzi View Post
On Windows I have VS which doesn't support that and getting gcc/clang to work is pretty time consuming (compared to linux). Then there's also things such as a way superior shell and better security (if u don't fuck up).
You know that MinGW and MSys exist for Windows right? MinGW provides the newest gcc and MSys the Linux Bash.
11/14/2016 21:51 warfley#4
It depends first of all on the kind of development you are doing. If you develop software for Windows (as most people on this board who develop bots for games) you should use windows (for obvious reasons). If you develop software that should run on a linux server, you should better use a linux or a Unix system (like MacOS or BSD). If the target system doesn't matter (e.g. cross development with frameworks like Java) you can decide for yourself. If you are very experienced with windows, keep developing on Windows.

I personaly prefer *nix systems (Linux and Unix) on a various amount of resons:
1. Better file system. Whoever thought having characters as drive names and backslashes instead of slashes was arguably mental.
2. Package manager. You can easy install and update Software with only one tool, especially good for libraries. There is nothing like the windows "DLL-Hell"
3. Great shell and binutils. I know you can install them also on Windows, but he installation of MinGW and MSys is just a pain in the ass compared to the preinstalled versions on *.nix and the package manager to install other utils. Also there are a lot more binutils available.
4. SSH (+X11 Forwarding). Simply control your PC from another PC without the need of Remote Desktop. (Yeah this works also on windows, but is easyer to use and install on Linux).
5. (Not on MacOS) No need for a graphical userinterface, if you just want to run a VM to test something you dont need to load a DM.
6. Cross compiling on windows for *nix systems is a pain in the ass.
7. With wine you can use Windows software on *nix but there is no option the other way around.

I also enjoy programming for *nix systems alot more, but thats another story and (unfortunately) in most cases you can't decide for which system you want to develop.

All in all, Windows may be the easier system for the end user, but *nix systems are way better designed for developing.
11/14/2016 22:17 florian0#5
The packetmanager is the key feature that disqualifies windows as a development OS almost entirely.

The other key feature is the bash. No GUI required. This point might be outdated due to Powershell. On Linux, i can do EVERYTHING from the console. On Windows, the CMD is like build around the GUI. On Linux, the GUI is an *extension* to the console to simplify things.
I use the console on a daily base. For editing files, for git, for running tests and backups. The Windows CMD sucks. It sucks. Powershell never got my attraction, maybe its good, i don't know.

gcc, make, cmake, etc. easily installable. One simple command. Most libs, also one command.
No path or include struggle. On Windows, some tools come via cygwin or mingw. So why would i use Linux/Unix-Tools on Windows?


Personal Points based on my experience with Windows:
What really takes the cake is services like Webservers or Database Servers. On Windows you have to deal with starting and stopping services, considering and configuring random autostart and weird paths for config, logfiles and data.

Linux is structured. One location for config, one location for logs, one location for data. You still have to deal with starting and stopping the relevant services, but in my *feeling* the whole system reacts a lot better to services.

Overall, (my) Linux is a way more responsive and integrated development base than i ever got my Windows in 10 years.
11/16/2016 16:15 Shadow992#6
Almost all things have already been said. However I just wanted to mention something "special".

If your goal is to create some really specific and scientific programs (like Computer Vision, Cloud Computing, ...). You really should stick with Linux every scientific library is compileable on Linux but only a few can be compile without any problems on windows (e.g. I tried to compile OpenCV a couple of weeks ago on Windows and it took me 1 week to get something I can work with). However on Linux it took me exactly 1h and all I had to do was to type "cmake && make && make install" into bash. Try this on Windows...
And even more specific libraries (like DeepLearning-Framework "Caffe") just dont work, no matter what you do (even if Microsoft added "Windows Support"-Branch it still failed for me).

So if you want to do some scientific things (maybe not now but in future) you should get familar with Linux, because Linux is THE OS for scientists.
11/16/2016 18:45 Dr. Coxxy#7
most things already said, however this "windows disqualified", etc. is just bullshit.
it depends totally on your own preferences and your workflow.
you can develop almost everything on windows, linux, mac (only very few exceptions with some tools only working on a certain os, however most of the time its only a single buildstep which you can then simply outsource to the other OS with a vm, or similar).
however one thing you may considerate (as already stated in this thread) is your target platform, as its often much more convenient to just compile and run on the same platform.
However often there are tools which autodeploy to your target platform in a vm/on a server with a short delay - so you can totally split your dev-os from your target-os with in most times only small overhead.
So the only thing left is your workflow and the tools you use for developing in the language you use (which most likely run under any os - windows, linux and mac).
11/24/2016 19:10 Ende!#8
Quote:
Originally Posted by warfley View Post
7. With wine you can use Windows software on *nix but there is no option the other way around.
[Only registered and activated users can see links. Click Here To Register...]

https://en.wikipedia.org/wiki/Window...stem_for_Linux
11/29/2016 00:35 Sycrog#9
+ using VMs

I used both for work, Linux and Windows and I prefer Windows. For development I'd use Vagrant.
11/29/2016 10:28 0xFADED#10
Something that really drives me nuts when using Windows is their case-insensitive filesystem.
It's the no. 1 origin of "works on my machine" errors when deploying to Linux Servers or Macs with case-sensitive HFS+.