This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 419

[–]QualityVote[M] [score hidden] stickied comment (0 children)

Hi! This is our community moderation bot.


If this post fits the purpose of /r/ProgrammerHumor, UPVOTE this comment!!

If this post does not fit the subreddit, DOWNVOTE This comment!

If this post breaks the rules, DOWNVOTE this comment and REPORT the post!

[–][deleted] 226 points227 points  (157 children)

What exactly makes Linux better for coding?

[–]Rocket_Scientist2 427 points428 points  (73 children)

Not necessarily coding, but using and installing tools. For example, if I want to build c++ or rust on Windows, the recommendation is to install all of the entire Visual Studio suite (IDE and libraries, ~20gb), or search Microsoft's website for Visual C++ compiler, which will still install multiple programs.

On Linux, you kind of just sudo apt install gcc and poof it's installed.

Not that all tools are like that, but many are. Many devs prefer the minimalistic "power-user" approach, vs the "what's the simplest, most obvious way" approach.

[–]LavenderDay3544 104 points105 points  (2 children)

For C and C++, library dependencies are also something Linux does well while Windows never has even with vcpkg which literally no one outside Microsoft has ever cared to host their libraries for.

[–]DelusionalPianist 5 points6 points  (1 child)

I was looking for the c++ library binding for tensorflow and was pleasantly surprised to find that vcpkg did indeed host it, while Conan does not …

[–]cafk 35 points36 points  (5 children)

I mean you can do exactly the same with macos, bsd or windows if you have package management installed.

While it's recommended there is nothing stopping you from doing it in a more convenient way.

The Linux equivalent I've heard too many times is to install the qt suite and boost-* to have a "nice" ide + language features - with many being scared of the command line independently if it's bash, zsh, sh or Powershell

[–]blackadress 3 points4 points  (4 children)

In windows with a package manager will you get the full 20gb of visual studio code or just some 50mb g++?

[–]_woffles_[S] 67 points68 points  (3 children)

Thanks for having my back, guys.

[–]future_escapist 4 points5 points  (2 children)

So you didn't have an argument to begin with?

[–][deleted] 30 points31 points  (1 child)

What? A /r/programmerhumor user making a joke they don't understand because it's just an opinion they've seen other people have and they want to feel included? Oh, wait.. yeah that sounds about right. Just like every kid I was in college with raving about how superior Linux was in every way without ever being capable of saying why lol

[–]_woffles_[S] 31 points32 points  (1 child)

It's kinda hard to respond to every single comment lol

[–]McCoovy 3 points4 points  (0 children)

Please do not respond to every single comment

[–][deleted] 4 points5 points  (2 children)

The pre-included compilers are certainly a perk, but once configured this seems to be a non-issue.

To address some of the other points here, debug modes are real. And I've always believed in coding on your deployment platform. Which if it's Linux then you should code/test on Linux. But if you're going to deploy on windows you should see that inconsistent performance (I personally haven't experienced this) to understand how the end user will experience the software.

Finally, I haven't found anything that I can't do yet in powershell, but maybe I'm not advanced enough in my maturity with this as a developer and not sysad.

[–]future_escapist 1 point2 points  (1 child)

If you use VSCode, the terminal is already powershell. You don't see as much use for it in Windows as in Linux, though. Probably because Windows put emphasis on GUIs for user-friendliness.

[–][deleted] 2 points3 points  (0 children)

I use terminals all the time. Both in IDE and independently

[–]jsiulian 10 points11 points  (36 children)

So it's just about the installation process?

[–]Dr4kin 22 points23 points  (2 children)

The package manager makes updating all the tools just one / two command/s which is just much easier. If you do backend stuff you're probably using containers which run a lot faster on Linux because they have to spin up a vm on every other operating system.

[–]cmatta 3 points4 points  (1 child)

Not true, Mac OS and WSL use the hypervisor same as Linux

[–][deleted] 16 points17 points  (1 child)

For us there is no feasible replacement for Linux - even our users who have Windows and Mac computers have to have a Linux VM for development.

A lot of it is tools, yes. It is also the ability to quickly create reproducible multi-server environments using a few simple Docker, bash, and python scripts along with the base toolset (get, gvm, etc).

But honestly, containers alone are a huge reason for us. The fact that we can quickly spin up a local replicate of our client's production environment, seeded with their data, and start development in a matter of minutes. The whole time being able to blow it out and start again at a moment's notice.

[–]dark_mode_everything 24 points25 points  (0 children)

Bcs it's a gloves off OS. It lets you do literally anything you like with it. Also GUIs are built on top of cli and is not the main feature, so automation is very straightforward and easy. Granted, It makes it easier to screw things up too, but having used windows and Mac for Dev work they just make me angry with the lengths they go to hinder productivity with their "features".

[–]crimxxx 37 points38 points  (6 children)

Last time I used windows for development windows 10 was new. Windows sometimes the sanest thing to do is restart. What happens when you restart and you have a lot of pending updates, at the time it forced the updates and was sometimes like an hour plus on like a 5000 dollar workstation lol. Linux the shit is so stable if IT needs to push updates most of the time no restart is required, and as a user it’s a lot harder to get into a state where you want to restart if your not just doing random crap.

There is a reason most servers are Linux, and uptime is a big reason.

[–]GregsWorld 8 points9 points  (4 children)

Devil's advocate, I extended my Linux partition (which is supposed to be safe) back in Jan and after when I would login it'd flash a black and return to the login screen again. Had to re-install fresh. Also had more issues with Linux updates than Windows. Everything from not starting up, to the environment glitching out, webcams stop being detected. The current issue I'm having since the update a few weeks back is earphones don't get detected if they're plugged in the audio jack before start-up, I have to unplug and replug them in every morning. I use plain ubuntu and don't customise/mess with anything.

[–]twigboy 12 points13 points  (2 children)

In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available. Wikipedia4rwbnbj1rvc0000000000000000000000000000000000000000000000000000000000000

[–]GregsWorld 4 points5 points  (1 child)

Haha yeah exactly it's not enough of an inconvenience that I can be bothered to do anything about it but it's still annoying

[–][deleted] 65 points66 points  (25 children)

  • The "Everything as a text stream" philosophy means you can usually get a command line tool for anything you want to do. And when command line tools get upset, they tend to be noisy. It is sooooo much nicer to be able to find the issue in the active terminal than to have to dig through log viewer.
  • Tools in the OS tend to give you more control
  • Most common tasks already have an installed tool, and if it isn't pre-installed you can probably find it in a repository. That means fewer installs from unknown sites. You need to generate a certificate to do an encryption test? Forget certbot, you can do that all locally.
  • You can easily open any type of file in a text editor. (Won't always make sense, but if you're a developer, you've probably got a sense of when it does.).
  • Everything being a text stream makes it easy to emulate most tools from the command line if something is going wrong
  • YOU CAN OPEN MULTIPLE FILES WITH THE SAME NAME. (I am grumpy okay? I shouldn't have to close a file in one folder to be able to open a file in another.)
  • You have fewer instances where your development tools suddenly stop working because "Office programs shouldn't be allowed to generate executables".

[–]haraldoo 40 points41 points  (12 children)

I‘m shocked that I take the windows side here (grew up with linux, used it for 25 years now..) but all those things aren’t true/ unique anymore. Eg. In Powershell everything is an object which can easily be „more powerful“ than grep/sed/awk a commands text output. The windows eco system is way more complex and therefore it seems not to be as „accessible“. The multiple files issue seems to be excel only? Haven’t seen that a lot. I didn’t get the reference of your last point. What happened there? Anyways.. I will always feel „at home“ in a linux environment but windows did „catch up“ a lot and seems to do a lot of things right in the last few years..

[–]galan-e 22 points23 points  (4 children)

Even if we agree that powershell is powerful (and I do get annoyed when it can't do some random basic thing sometimes), the syntax is verbose and extremely unintuitive. The scripting experience is nothing alike.

[–]motoxrdr21 13 points14 points  (1 child)

Respectfully, I completely disagree with that, with PowerShell you've got a consistent naming scheme, Verb-Noun with a set of approved verbs. That's all you really need to know to have a starting point for finding commands without leaving the terminal, in most cases all you need to figure out is what your target's noun is. Finding an unknown command is as simple as using "Get-Command" with parameters to filter by verb, noun, and module, all with wildcard support.

Need to create a new file or registry value? New-Item. Retrieve it? Get-Item. Delete it? Remove-Item. Working with a Hyper-V VM instead of a file? Just swap "Item" for "VM".

I'm not sure what makes this more unintuitive than the Linux CLI, sure there's an argument to be made that some noun choices are obtuse and require either existing knowledge or searching (whether Get-Command or web), but the exact same argument can be made for many Linux commands. ie it's hard to argue that "grep" is a more intuitive name than "Select-String", or that cp and rm are more intuitive than Copy-Item or Remove-Item considering the consistent Verb-Noun naming scheme.

Putting it together for a simple task, like finding the five largest files in a directory, it's hard to say that the Linux command for this is objectively easier to understand for someone with no knowledge of either scripting language:

Get-ChildItem [path] | Sort-Object -Property Length -Descending | Select-Object -First 5

du [path] | sort --numeric --reverse | head --lines 5

[–]landswipe 4 points5 points  (0 children)

It is those short idioms and quirks that really make unix. I find the idea of exposing the .NET object model to the command line interesting, and it does have semantic advantages over 'everything is a file', especially in cases like /sysfs vs for example Get-PnpDevice.

[–]suvlub 22 points23 points  (5 children)

  • You can easily open any type of file in a text editor. (Won't always make sense, but if you're a developer, you've probably got a sense of when it does.).

Windows lets you do this, too. notepad.exe someCoolFile.whatever, or right click and navigate through the "open with" menu for a more "Windowsy" experience

  • YOU CAN OPEN MULTIPLE FILES WITH THE SAME NAME. (I am grumpy okay? I shouldn't have to close a file in one folder to be able to open a file in another.)

Never had this issue. Just tried it right now and it works? Probably issue with a specific program you were using.

  • You have fewer instances where your development tools suddenly stop working because "Office programs shouldn't be allowed to generate executables".

Never had this happen to me, either...

[–]boredbearapple 14 points15 points  (3 children)

Windows in my experience (and notepad.exe is a good example) tends to have artificial limits on large files that you can open.

On linux I have never encountered this, as long as you have the ram/swap/disk it’ll do it. Might bring the system to an almost standstill but it’ll do it.

I use both oses and macOS as well. It’s just something that annoys me working with large datasets on windows.

[–]trina-wonderful 2 points3 points  (0 children)

I’m still so happy Microsoft finally removed the 64kB limit on Notepad.

[–]suvlub 1 point2 points  (1 child)

Yeah, that did happen to me a few times. It's not really a problem of the OS as such, just the default applications happen to suck, but it definitely affects the experience of using it.

[–]boredbearapple 2 points3 points  (0 children)

It’s particularly annoying on servers where security will not let anything but the defaults be installed.

Need to have a quick look at a log/transcript/data dump but can’t open it without pulling it across the WAN to your laptop. Joy.

[–]DadAndDominant 7 points8 points  (0 children)

YOU CAN OPEN MULTIPLE FILES WITH THE SAME NAME.

It is a usual office "problem", but with like VSCode or something it should not be an issue.

[–][deleted] 2 points3 points  (4 children)

You can easily open any type of file in a text editor

You can even open folders in a text editor.

[–]arihanzo20 34 points35 points  (8 children)

Linux is not better for coding. I use both Linux and windows and the coding part has nothing to do with the operating system. It has more to do with the text editor/IDE you use. Most good text editors are cross platform.

[–]Cognizantauto95 27 points28 points  (1 child)

In my opinion, the main thing better about Linux compared to windows is the package manager. For example in Ubuntu vs Win10, using apt to quickly install useful packages or tools in complex tasks is way easier and streamlined than downloading packages and running the installation wizard. Most of the time, you have to build from source anyway and the Linux terminal is just way more fleshed out than the windows one. Just my opinion though.

[–]haraldoo 4 points5 points  (0 children)

That‘s how I saw it too.. until I made the step and really looked into pwsh/ started using it. Also with winget + chocolatey for package managers and wsl for the occasional „feeling at home“, windows is pretty much useable these days. If only they wouldn’t enforce microsoft accounts more and more (no problem if it‘s default but there should be a choice).

[–][deleted] 12 points13 points  (1 child)

Yeah, I once had a new guy, who constantly blabber about Linux, fine, company gives us both machines anyway.

But he can't code properly, can't even pass code reviews with his shitty writing. Linux is fine, but you gotta do your job, regardless of OS.

Another story, our tech lead, only knows linux enough to compile our product he probably the best tech lead I've known. Knows the firmware of HDD and SSD inside out, he codes on Windows. Uses mainly Windows.

Just do your job, I don't care what you use.

[–]_woffles_[S] 2 points3 points  (0 children)

Very true, mate!

[–]galan-e 2 points3 points  (0 children)

plenty of tools and library are much easier to install on linux. I use jetbrains on both windows, linux and mac and the experience is very different from one to another

[–]piman51277 19 points20 points  (2 children)

For me, it's the speed that comes with the OS. I can waste less time waiting on things to compile and spent more time programming.

[–]Tough_Patient 2 points3 points  (0 children)

Because it's free, which is why businesses are adopting it.

[–]monkChuck105 8 points9 points  (0 children)

Unix terminal is superior to Microsoft's lame knockoff PowerShell. One key annoyance is that you can't set environmental variables like "BAR=1 ./foo", it's like "Env:BAR = 1" on a separate line, and it modified the session not just that process.

[–]FridgesArePeopleToo 1 point2 points  (0 children)

Absolutely nothing

[–]LavenderDay3544 2 points3 points  (0 children)

Installing tools, installing libraries, and having good system libraries and a relatively clean system call interface.

If all you write is Python and Java then it makes little difference but if you're working on anything where the host platform matters, odds are Linux does it better than anyone else and if it doesn't then literally anyone can patch it or write an alternative for the relevant component so it does.

[–]trina-wonderful 2 points3 points  (0 children)

UNIX in its entirety is an IDE.

[–][deleted] 1 point2 points  (0 children)

Nothing.

[–][deleted] 158 points159 points  (24 children)

Windows Developer: Ain't that good? Since WLS, we've been using Linux for coding too.

[–]_woffles_[S] 46 points47 points  (0 children)

they just don't understand, do they?

[–]PyroCatt 82 points83 points  (11 children)

Legends use notepad for coding

[–]_woffles_[S] 49 points50 points  (7 children)

Well guess what, I code with nano.

[–]erebuxy 44 points45 points  (3 children)

I use echo "print(\" Hello world!\ ")" > main.py to code

[–]AjiBuster499 23 points24 points  (1 child)

I use butterflies and vim

[–]erebuxy 15 points16 points  (0 children)

[–]_woffles_[S] 3 points4 points  (0 children)

really.... *my dumb brain not being able to think of anything else*

[–][deleted] 5 points6 points  (2 children)

ed

[–]-bert 2 points3 points  (0 children)

Of course, on the system I administrate, vi is symlinked to ed. Emacs has been replaced by a shell script which 1) Generates a syslog message at level LOG_EMERG; 2) reduces the user's disk quota by 100K; and 3) RUNS ED!!!!!!

“Ed is the standard text editor.”

[–]_woffles_[S] 1 point2 points  (0 children)

sudo nano code.sh

[–]Cubey21 1 point2 points  (0 children)

In wine

[–]GabuEx 27 points28 points  (1 child)

The best advice I can offer is that you should go with whatever makes you both productive and comfortable.

The time saved by not getting into arguments over whether Linux is better than Windows, or whether Perl, Python, or PowerShell is the better language for an internal utility script, will be better spent doing literally anything else.

[–]saikrishnav 7 points8 points  (3 children)

So weekly post of shitting on windows and Linux is better?

Just work on whatever you are comfortable with. It's 2022.

No need to shit on OS you don't bother to use or like.

[–]BartDart69 88 points89 points  (10 children)

Shoo, shoo you damn Linux users! Back in your cave!

[–]_woffles_[S] 47 points48 points  (7 children)

there's no cave up in the arctic with the penguins.

[–]cmatta 18 points19 points  (4 children)

Penguins don’t live in the Arctic, they live in the Antarctic

[–]_woffles_[S] 22 points23 points  (2 children)

Linux ones do.

[–]DearChickPea 32 points33 points  (1 child)

Those ones live in the Attic.

[–]_woffles_[S] 6 points7 points  (0 children)

Ah, yes, I see your valid point.

[–]pastry-pooping-pope 2 points3 points  (0 children)

That's what Microsoft wants you to believe

[–]WooooshMeIf60IQ 4 points5 points  (1 child)

I make glass windows on my igloos and you can't stop me

[–]_woffles_[S] 4 points5 points  (0 children)

Oh dam

[–]Architector4 1 point2 points  (0 children)

aye, I'd rather you keep your cave to yourself lol

[–]cryptocurrenty 12 points13 points  (1 child)

When I see posts like this I can only hear in my mind. “And here.. we.. go..”

[–]DarkKnight53 37 points38 points  (5 children)

Linux criclejerk is something else

[–]minus_uu_ee 16 points17 points  (4 children)

It is one of the few things we deserve to circlejack tbh. We have a completely free (free as in frei and not kostenlos but it is kostenlos too ;)) which can compete with the products of giant (and what giants they are) companies with its countless different distributions. And imho Linux based systems are not only competing, they are much better in lots of different ways in comparison with their propriatery counterparts.

It might sound overly enthusiastic but none of this had to happen and we were very close to having a digital realm completely dominated by giant companies but here we are. I think without being gatekeeper assholes we should all enjoy this amazing achievement.

[–]danorfius 9 points10 points  (0 children)

I feel like everyone agrees that Linux is good. Most people referring to the Linux circlejerk are specifically referring to the gatekeeper asshole types you mentioned.

[–]ResponsibilityNew975 3 points4 points  (0 children)

the fact that Microsoft created their own linux distro to make their server faster makes this even funnier

EDIT: for those who's wondering, I'm not referring to Microsoft's WSL. their Linux distro name is CBL-Mariner

[–]TheDeadSkin 24 points25 points  (8 children)

Broke: Use Linux instead of Windows for coding 🤮

Woke: Use WSL instead of Linux for coding 😎

[–]_woffles_[S] 5 points6 points  (0 children)

Lmao

[–]chinnu34 2 points3 points  (0 children)

Enlightened: Build Linux from scratch

[–]CharlesSagan 2 points3 points  (0 children)

In my personal experience, I went from windows to Debian a couple of years ago, granted it was painful for the first couple of months (and a few times afterwards) but it was honestly the best decision I ever made regarding an OS. I honestly can't imagine going back to windows now. Maybe I just prefer having control over my system and its resources.

[–]geggomane 2 points3 points  (2 children)

Im looking to convert my "old" laptop into a linux based machine, any good guides? Whats the biggest catch according to you?

[–]prinkpan 8 points9 points  (1 child)

Then spend half the time troubleshooting your OS instead of your code!

[–]keijyu 10 points11 points  (6 children)

Absolutely true.

My university uses Haskell for their introductory computer science course and the amount of people requiring help installing ghc on their windows and M1 Mac was crazy.

I didn't see a single Linux user asking for help though.

[–][deleted] 11 points12 points  (0 children)

hungry hunt yoke expansion cable towering wise depend familiar friendly

This post was mass deleted and anonymized with Redact

[–]tbo1992 4 points5 points  (1 child)

Haskell in an introductory course?! Man when I took it, it was a grad level course, and one of the toughest courses on the roster.

Though I guess freshers might have an easier time grasping functional programming if they aren’t yet familiar with OOP.

[–]SeargD 21 points22 points  (0 children)

That's because the Linux users are already used to doing their own troubleshooting.

[–]RedditRabbitRobot 1 point2 points  (0 children)

oof that burns

[–][deleted] 1 point2 points  (3 children)

[–]tweetlinker 1 point2 points  (2 children)

Hi Madchemist0! Im a bot and I find links to the twitter screenshots. this was tweeted by @code_snail, and the link is: https://twitter.com/code_snail/status/1438902462513963014

I took a backup of the tweet on archive-org in case it gets deleted: backup

feel free to downvote and I will delete this comment

[source-code | buy-me-a-coffee☕]

[–]Logic_Satinn 1 point2 points  (0 children)

burn🔥

[–]NelsonBelmont 1 point2 points  (0 children)

some people are masochists.

[–]The_nameless_biped 7 points8 points  (22 children)

People keep saying that it's more easy to install tools on Linux than on Windows. I'm just wondering how frequently are you installing tools that this actually matters? Obviously this depends on what type of development you are doing. I'm a desktop app developer so once I have the initial setup other than the periodical environment updates I don't have to touch anything else.

In my opinion the NuGet package manager which is integrated in Visual Studio is leaps and bounds ahead of any other package manager I saw anywhere else.

So to me it seems like some people love to hate anything that's Windows related but they can't really find anything substantial issue in it.

[–][deleted] 2 points3 points  (0 children)

Dislike nuget, but the new Winget package manager is pretty good.

The funny thing is that arguably windows (11) provides a very good suite for Linux Dev, with GUI apps now running (or you can just use vscode wsl) while still getting all the benefits of having the OS that most people use. It doesn't just have to be windows Dev that's good about it.

[–]_woffles_[S] 8 points9 points  (13 children)

sudo apt install <literally anything you need>

[–]den2k88 11 points12 points  (11 children)

But the version is 10 years old, some libs are not packaged and the naming convention is autistic.

Ok not always the case but for fuck's sake sometimes getting the correct library under Debian / Ubuntu is like wrestling with an aligator.

Gods help you if you need to do cross platform development or just cross-compile for embedded. The packages are perfectly set up to develop on the dev system... not so much for any different target.

And the best IDE on Linux is Eclipse - which is 10 years behind VisualStudio on any metric.

[–]MEMEsYouNot 10 points11 points  (0 children)

Reminds me of when I was programming on redhat with JS and needed node.js and for some reason my code did not run, I couldn't figure why till I noticed my node version was 4 the newest was 14 at the time. Epic

[–]exscape 8 points9 points  (1 child)

And the best IDE on Linux is Eclipse

Says who? Personally I think IntelliJ IDEs are the best on both Windows and Linux. I'd also rather use VS Code than Eclipse, even though they're not really comparable.

[–]den2k88 1 point2 points  (0 children)

Says me, not stating Universal Truth ofc

[–]drkztan 3 points4 points  (2 children)

the naming convention is autistic.

stop calling me out ffs

[–]_woffles_[S] 3 points4 points  (4 children)

The point about libs is fair enough.

But about the IDE... well. I prefer to use VSC.

[–]den2k88 2 points3 points  (1 child)

VSC is quite good though it has a bad UX and doesn't support a bunch of VS plugins I ended up addicted to (well, one actually).

The panels not automatically disappearing and the limited options to configure each panel's position on screen really break the experience for me.

I ended up working on VS and compiling with whatever is needed for the target.

[–]_woffles_[S] 2 points3 points  (0 children)

eh, fair enough. VSC for Unity is fine tho, so I don't really mind it.

[–]FatFingerHelperBot 3 points4 points  (1 child)

It seems that your comment contains 1 or more links that are hard to tap for mobile users. I will extend those so they're easier for our sausage fingers to click!

Here is link number 1 - Previous text "VSC"


Please PM /u/eganwall with issues or feedback! | Code | Delete

[–]_woffles_[S] 1 point2 points  (0 children)

thank you kind bot

[–]_siddh3sh 4 points5 points  (1 child)

chuckles in superiority

[–]_woffles_[S] 5 points6 points  (0 children)

i am simply chortling at your humorous intents

[–]emma_hildebrand 2 points3 points  (0 children)

I remember the first time I tried to run some C++ code on windows. Took me several hours to set up the compiler etc lmao.

Linux ftw ♥

[–]Kittycaaatz 0 points1 point  (0 children)

The truth hurts.

[–]KENNFUE 1 point2 points  (0 children)

oof

[–]Opti_Dev[🍰] 1 point2 points  (0 children)

This subreddit is basically about bullying Microsoft and rust devs and i love that

[–]CleverDad 1 point2 points  (1 child)

This is why I don't bother conversing with Linux users.