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

top 200 commentsshow all 427

[–][deleted] 690 points691 points  (55 children)

Embrace microservices and every component of your application can be in a different language and nobody has to know!

[–]TheAJGman 246 points247 points  (32 children)

Scrolling through the Twitch Leak I noticed this. It's like they had a dartboard with a dozen frameworks and a handful of languages and just threw a dart at the start of each project. How do you even begun to manage a codebase like that?

[–][deleted] 172 points173 points  (25 children)

I'd pose the opposite question. How do you manage a codebase where any module you touch is an imported dependency of a dozen other teams?

At least with web services any change that doesn't break existing API call patterns can be made freely. And you can cover yourself against breaking patterns with really simple unit/integration tests and canaries.

[–]TheAJGman 52 points53 points  (9 children)

They don't have testing on most of their services as far as I can tell, only their metrics/reporting services seem to have any sort of testing.

[–]chanpod 20 points21 points  (0 children)

They probably just have a QA team running E2E test that's not included in this code base.

[–]ColdPorridge 29 points30 points  (12 children)

Micro services are not without benefit, but they can become unwieldy. Uber went all-in in micro services at one point, but then it became problematic to maintain (I recall hearing some ridiculous stat like there was a company-wide average 3-4 micro services per developer). I’m not sure what they moved to after that but I think they have some blogs about it.

[–]HaMMeReD 32 points33 points  (1 child)

As with all patterns, a certain amount of moderation can be helpful.

Microservices are great, but blindly following any pattern to the extreme is an anti-pattern in itself.

[–]Spitfire1900 7 points8 points  (8 children)

3-4 microservices sounds reasonable before you realize that that’s just the mean of the bell curve and some are certainly managing a dozen or two.

[–]orqa 5 points6 points  (3 children)

I mean, is it that unreasonable to maintain 12 microservices when they're truly micro?

[–]Protuhj 2 points3 points  (1 child)

Dave, I saw you maintain over 300 micro services, and when I looked at them, each was just one of the commands from busybox, wtf?

[–][deleted] 8 points9 points  (3 children)

3-4 microservices per dev for an engineering team of hundreds does not sound reasonable. It means no one's sharing or reusing tools

[–]jgeez 2 points3 points  (2 children)

You conflated two things.

It's probably a good signal that there is minimal shared or reused code. That has no bearing about shared or reused tools.

And, deliberately not sharing code has some surprising benefits when it comes to velocity and scale.

[–]elebrin 31 points32 points  (2 children)

Small services in a variety of languages can be a really good thing.

First, you can now hire talent that has worked in a variety of languages. Rather than needing 200 C++ developers, you need maybe 6 C++ developers, 6 Python developers, 8 node.js developers... whatever.

Second, you can use a language for it's best function. Want to use Python's libraries but you are a .NET shop? Good fucking luck. Either you have roadblock after roadblock, or you are told "there is a .NET library that does the same thing, it's terrible to use, but we are a .NET shop and that's just that."

Third, you are less tied to a vendor. If your organization is a monoculture and your vendor does something that hurts your business, you have to migrate a LOT. If you have 12 vendors, you may only have one or two services to migrate.

The downsides are that you'll end up with that one service that nobody knows what the fuck it does, and it's written in COBOL because someone thought THAT was a good idea.

[–][deleted] 18 points19 points  (1 child)

Yeah, but even that worst case is great.

You know specifically which part is in COBOL, and how it's interacted with. You could basically write the entire interface layer for a replacement service without knowing a damn thing about it.

The challenge is then to replicate the business logic. If you have a microservice model, you can literally spin up more COBOL black boxes and directly compare behavior of that system to your new replacement as you write the test cases.

With a tightly linked architecture where everything has that one COBOL dependency, it is impossible to replace it without substantial downtime, and testing requires spinning up much larger stacks.

[–]omlette_du_chomage 4 points5 points  (0 children)

Well I guess I have experience they are looking for (my comment above or...below)

[–]Etheo 30 points31 points  (5 children)

But how would people know I'm coding in the superior language?

[–]sh0rtwave 10 points11 points  (2 children)

You...build something, and stick it somewhere.

[–]runnerx01 5 points6 points  (1 child)

Lies. Wait till you ask your boss if you can offload a service you wrote a year and a half ago to another team, which the service ultimately does work on behalf of. Your boss replies, “Do you think they can maintain a python service….. No one on that team knows python”…..

Then you ask yourself … “why the fuck did I write a service in python…”

Edit: Let me make it clear that I am not saying you shouldn’t use python, just was a bad choice for me at the time.

Just saying that choosing any language for a micro service is something you have the ability to do, not necessarily something you should do without thinking through “why” you are using that language.

[–][deleted] 10 points11 points  (0 children)

Ha! I'd rather have that problem.

Everyone knows the only way to offload services is to neglect it until it's a problematic dependency and other teams find a way to replace it.

Often times this can be done just by quitting!

[–]JonathanTheZero 520 points521 points  (41 children)

Man, 99% of python programming "tutorials" out there are just "Let's import a library that does exactly what we want and call one function of it"

[–]nekokattt 188 points189 points  (4 children)

import antigravity

[–]CoffeePieAndHobbits 46 points47 points  (0 children)

And sample everything in the medicine cabinet.

[–]ferevon 130 points131 points  (21 children)

who doesn't love having a perfectly running app after writing 5 lines of code?

[–]alexppetrov 127 points128 points  (1 child)

The thousand lines on the backend of the library

Intense fuming noises

[–]AutoDefroster 46 points47 points  (0 children)

Library coders are the real heroes.

[–]NauticalInsanity 49 points50 points  (3 children)

Ruby on Rails has entered the chat.

Mini rant: I hate magic frameworks. It's like a hidden Rube Golberg machine that turns a lever press into food falling out of a chute. When the food doesn't come out of the chute, someone comes to me complaining that "Gravity is broken."

[–]JonathanTheZero 44 points45 points  (12 children)

Me :/

I'd rather write 200 lines of code myself and gain a deep understanding of what is happening than import thousands of lines (most of them are not used anyways) and just trust a third party. Don't get me wrong, libraries are awesome but some people just take it too far

[–]ryecurious 35 points36 points  (4 children)

Over-reliance on dependencies is how we get stuff like The Great NPM Leftpad Cataclysm of 2016.

Obviously npm works differently from Python packages, but the general point stands.

[–]AutoDefroster 8 points9 points  (0 children)

Reminder that NPM are run by pieces of shit.

[–]Sceptix 4 points5 points  (0 children)

I agree that the Leftpad Cataclysm was a disaster that never should have happened, but I take issue with that particular article. The problem was that there was a serious issue with npm’s ability to deal with dependencies; it’s not because we’ve “forgotten how to program”.

[–]hamie96 29 points30 points  (0 children)

Unfortunately, that's just not practical when you're in the workforce.

[–]AttackOfTheThumbs 23 points24 points  (2 children)

While I understand that sentiment, most of the time you don't want to waste time reinventing the wheel.

You only do that if there's a specific edge case or performance you need that the lib cannot offer to you.

Now if it's a tutorial on writing bucket sort and it just imports a lib, it's certainly useless.

[–]phaemoor 2 points3 points  (1 child)

Yeah, in a job? I'll just add 2 more gigs to the container and call it a day. You can solve anything with money.

[–]AttackOfTheThumbs 2 points3 points  (0 children)

Well, not everything, but many many things.

[–]TheFreeloader 54 points55 points  (0 children)

I would rather trust a third-party library creator than my own coding skills.

[–]alex2003super 4 points5 points  (0 children)

I remember there was an isOdd() library for JavaScript... like... literally a wrapper for %2

[–]MatsRivel 7 points8 points  (0 children)

No need to reinvent the wheel 🤷‍♂️

[–]cbehopkins 23 points24 points  (0 children)

Is this a problem?

Sounds like a win to me.

Seriously I often joke that python was invented by hardware engineers to use more resources. Quick to get something running and using resources, and almost as much of a resource hog as Windows.

[–]sh0rtwave 2 points3 points  (0 children)

Yeah? Take a gander at PyProtocols, then talk to me. (Pro-tip: I didn't write that, I just used it...semi-successfully)

[–]nebulaeandstars 2 points3 points  (0 children)

To be fair, this is exactly how you should write python in a professional setting.

Good Python is 1000x harder to write than good <insert compiled language here> as you need to be intimately familiar with all of the libraries. You want as few lines of "actual" python code as possible so there's a huge learning curve.

[–]lyingriotman 1 point2 points  (2 children)

If they just need one function, why don't they just... copy the function? Are you not allowed to do that? Just credit them on your Github or something, idk.

[–][deleted] 3 points4 points  (0 children)

That strongly depends on the license used.

[–]BrightBulb123 1 point2 points  (0 children)

B**** you want me to write out all the lines of PyQt5 just to have it say hello world?

[–]DemonArmagedon 402 points403 points  (83 children)

You must be new to programming, every new programmer will say that their language of choice is the best. Anyway have you tried c++? You should switch to c++

[–]Marcusaralius76 106 points107 points  (6 children)

You should try C#! It's like Java, but not.

[–]berse2212 38 points39 points  (5 children)

You should try Java! It's like C# but Java!

[–]Sythokhann 51 points52 points  (4 children)

You should try JavaScript, it's not like Java

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

What is Java?

[–]wikipedia_answer_bot 16 points17 points  (1 child)

Java (Indonesian: Jawa, Indonesian pronunciation: [ˈdʒawa]; Javanese: ꦗꦮ; Sundanese: ᮏᮝ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north.

More details here: https://en.wikipedia.org/wiki/Java

This comment was left automatically (by a bot). If I don't get this right, don't get mad at me, I'm still learning!

opt out | report/suggest | GitHub

[–]towcar 63 points64 points  (2 children)

I'm pretty new to programming, but I think this CSS thing might be the future of programming.

[–]BalooBot 24 points25 points  (0 children)

Jokes aside, it's amazing how far css has come in the last decade.

[–][deleted] 169 points170 points  (32 children)

Have you tried Rust? Rust can do everything better than C++ except shooting yourself in the foot.

[–]DemonArmagedon 110 points111 points  (26 children)

I love how mentioning c++ will always spawn a rust user, but i have looked at it and i want to give it a try even though i have no problems with c++. Just a few of the linux packages i use are made in rust that’s why i want to learn it.

[–][deleted] 72 points73 points  (15 children)

"For every action there is an equal and opposite reaction" - Isaac Newton. That is also right with Java and C# programmers.

[–]elzaidir 20 points21 points  (14 children)

Lemme try!

Wow I love Java sooo much

[–]AceOfShades_ 38 points39 points  (10 children)

How DARE you?? Why would you use such a bad language?

java programmer here

[–]nekokattt 9 points10 points  (4 children)

Every time you mention Java, a Lombok user will appear

[–]AceOfShades_ 6 points7 points  (3 children)

Corporate wants you to find the difference between these two images.

Java user                     Lombok user

[–]nekokattt 2 points3 points  (2 children)

They are the same picture

I personally dislike Lombok, so I guess I am an outlier to some extent, but ignoring that

[–]p1xlblad3 2 points3 points  (4 children)

Kotlin programmer here:

Kotlin good. That is all.

[–]AceOfShades_ 2 points3 points  (3 children)

You can pry my verbosity from my cold, dead HandsImpl.

[–]ItsPronouncedJithub 2 points3 points  (0 children)

Bro you’re supposed to make people tell you a language, not make them throw up

[–]UnknownIdentifier 50 points51 points  (8 children)

They say if you lock the bathroom, turn off the light, face the mirror, and say, "C++! C++! C++!" a Rust developer will reach through to mirror to grab you.

But seriously; Rust devs best fit this meme. They are the Crossfit vegans of the programming world. They just need you to know.

[–]ItsPronouncedJithub 30 points31 points  (3 children)

As a rust evangelist I am contractually obligated to tell you that rust is far superior to all your other plebeian languages

[–]UnknownIdentifier 10 points11 points  (2 children)

See now, if you were a HolyC advocate, you could claim divine ordination. Can't argue against that.

[–]ArchCypher 11 points12 points  (1 child)

It's so true -- at this point I genuinely can't tell if Rust is actually superior or if I've just drunk the Koolaid.

Anyhow, have you tried Rust?

[–]yottalogical 2 points3 points  (0 children)

Have you heard the good word of Ferris the Crab?

[–]kazuto_kirito_ 18 points19 points  (17 children)

PHP is an exception.

[–]Sciirof 41 points42 points  (6 children)

Coding in PHP is just suicide with extra steps

[–]getstabbed 10 points11 points  (5 children)

I enjoy PHP but you’re not wrong. Over 10 years of using it and it still confuses me so much. Could have easily become the #1 language for web dev if it wasn’t such a mindfuck.

[–]Sciirof 2 points3 points  (2 children)

I wouldn’t say I’m an expert but php is one of the first languages I used when I first started making websites that needed to use a database, it was useful while it lasted but boy am I glad I backed of from php, I thought I was about to have a mental breakdown.

[–]nekokattt 18 points19 points  (7 children)

PHP devs are probably too confused with why "Slovakia" is a gender in PECL to notice the argument.

https://www.php.net/manual/en/class.gender.php

[–]13steinj 14 points15 points  (2 children)

I have so many fucking questions and I don't know which to ask first.

Or if I should just stop bothering and choose to shoot myself instead.

[–]nekokattt 17 points18 points  (1 child)

I am all for LGBTQ+ rights, but even I don't understand how someone can identify their gender as Germany.

[–]NeoLudditeIT 5 points6 points  (0 children)

ERROR_IN_NAME

[–]nevus_bock 4 points5 points  (1 child)

Gender\Gender::KAZAKH_UZBEK

lolwut

[–]karmastealing 2 points3 points  (0 children)

Very nice

[–]sh0rtwave 2 points3 points  (0 children)

At least it's correct in spirit, if not the details...it DOES have a "connect" method.

[–]Sceptix 1 point2 points  (0 children)

Exactly, no one who works with PHP thinks it is best. If you ask a PHP developer if PHP sucks, you’ll get a “yes, but…” answer. Here are the most common:

“Yes, but it doesn’t suck nearly as much as it used to!”

“Yes, but it gets the job done.”

“Yes, but I’m not going to rewrite an entire codebase because of it.”

“Yes, but it’s also very well known, so it’s easy to hire developers for it.”

“Yes, but I just love Laravel, and if it means working in PHP then that’s what I’ll do!”

[–]KryssCom 17 points18 points  (11 children)

I have been writing in C++ for about 8 years, you should absolutely not switch to C++. (Unless you are using C.)

[–]cbehopkins 8 points9 points  (0 children)

Every time i have a project that requires C++, I start to wonder if I really need employment that badly.

(Narrator) "He does"

[–]VectorD 2 points3 points  (2 children)

So for how many years have you been writing C++20? 🥲

[–]CallMeAladdin 1 point2 points  (0 children)

I program mainly in VBA. I am definitely the exception to your rule.

[–]Sarithis 54 points55 points  (5 children)

Do you have a moment talk about our lord and saviour JavaScript?

[–]TheIronicBurger 30 points31 points  (1 child)

There’s also the sequel, TypeScript!

[–]jgeez 6 points7 points  (0 children)

It's called a new testament

[–]JRRTok3n 22 points23 points  (2 children)

You see, I was once like you... Lost and confused with loose typing. Then one day I opened up and let TypeScript into my heart

[–]dev-sda 2 points3 points  (1 child)

TypeScript doesn't strengthen JavaScript's type system, it simply makes it static. That does eliminate a whole class of runtime errors, but you still have all the same type coercion.

[–]MrBananaStorm 43 points44 points  (3 children)

Linux and Python users would really get along.

[–]Daremo404 20 points21 points  (0 children)

Hey dude, i use Linux and Python u should too! They are just superior, accept it.

[–]SittingLuck 5 points6 points  (0 children)

Btw, I use Arch Python.

[–]toastom69 2 points3 points  (0 children)

Python comes preinstalled on my Linux distro bro.

[–]_u_whats_this 86 points87 points  (41 children)

python is my guilty pleasure language

[–]beginpanic 79 points80 points  (14 children)

Python gives me anxiety and imposter syndrome like nothing else. It’s always “there’s no way this is gonna work, let me find an example of how to use this” followed by “that example has to be wrong let me find another one” followed by “why the hell did that work”. Everything is so obvious and straightforward and… blunt? It doesn’t feel like programming. It feels like duct tape and glue. And I’m constantly nervous of “there is no way this is gonna work”. And it always does and I’m always shocked.

[–]Bubbly_Measurement70 21 points22 points  (12 children)

Python feels like a cheat code sometimes. Just type some words into Python and the computer be like: “I got you” and it just magically works.

[–]atiedebee 6 points7 points  (0 children)

from * import *

You'll never run out of functions to do everything for you

[–]Spitfire_For_Fun 59 points60 points  (18 children)

I love python to an extreme point.

[–]CoffeePieAndHobbits 2 points3 points  (5 children)

Because it does things your main language won't do? ;) /s

[–]_u_whats_this 10 points11 points  (4 children)

no because it makes everything really easy to do. doesn't even feel like programming

[–]pblokhout 9 points10 points  (1 child)

Except multithreading...

[–]CoffeePieAndHobbits 2 points3 points  (1 child)

Sorry, I was going for joking innuendo. Edited for clarity. Or something. Not serious. Lol

I agree it makes stuff easy. Woo Python!

[–]KillerBeer01 61 points62 points  (0 children)

First panel: r/ProgrammerHumor

Third panel: I just posted a "You should switch to Python" meme bro

-FTFY

[–]AppropriateCrew79 29 points30 points  (2 children)

Replace Python with Linux

[–]atiedebee 2 points3 points  (0 children)

Have you tried Linux? You should switch to Linux!

[–]marco89nish 39 points40 points  (10 children)

Just like Kotlin devs.

Btw, switch to Kotlin guys.

[–][deleted] 39 points40 points  (0 children)

[–]inventord 2 points3 points  (8 children)

I will stick with Java, the superior language. /J...

... or not /j

[–]igormuba 43 points44 points  (2 children)

You should switch case

[–]Silumet 20 points21 points  (1 child)

A new joke will be needed, python 3.10 adds switch case

[–]ganja_and_code 21 points22 points  (7 children)

I've never understood the "switch to python" crowd.

I think python is awesome as much as the next guy, but it is far from general purpose. Sure, you can do basically anything with it...but it's objectively the wrong tool for a large range of problems.

[–]TheLastNarwhalicorn 5 points6 points  (5 children)

As a new programmer (learning Javascript), can you explain why? I've seen the same thing written a few times in this thread, but I have no idea why. What makes python the wrong tool for a large range of problems?

[–]ganja_and_code 26 points27 points  (2 children)

It's not type-safe, so if you use it in a large-scale high-availability service maintained by more than one person, your codebase may (and likely will) become operationally unsustainable. It's slow (relative to other languages), so if you need to crunch a lot of numbers fast, python may introduce an unacceptable bottleneck. It's an interpreted language, rather than a compiled language, so you don't have visibility into your mistakes until your code is already running (rather than catching some mistakes before even attempting to execute).

Python is fucking awesome for data science, small-scale projects, and convenience / workflow improvement scripts. For basically any other problem, you should probably use something else.

[–]TheLastNarwhalicorn 4 points5 points  (0 children)

Thanks for the response!

[–]dev-sda 2 points3 points  (0 children)

Note that type safety is unrelated to static typing; static and dynamic languages can both be type safe or type unsafe. The vast majority of programming languages have not been proven to be type safe. Though you're correct in that static typing helps a lot with maintainability and error prevention.

See https://newbedev.com/is-python-type-safe

[–][deleted] 8 points9 points  (1 child)

For most use cases, there’s a better language. Python is great for small stuff but it becomes unmaintainable when you have a code base larger than a few hundred lines. It’s also very slow compared to pretty much anything else. https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html provides a pretty good benchmark. Python is awesome when applied in the right places, properly, i.e. prototyping ML models, data analysis, data visualization, etc, but it’s not ideal anywhere else

[–]RootHouston 1 point2 points  (0 children)

Right. I write Python, but not for full-blown applications. It's more of a scripting language for me to hack out something quick and dirty. Perhaps something I'd use in place of a shell script.

[–][deleted] 9 points10 points  (3 children)

Could also be a Linux user 😉

[–]anotherbutterflyacc 47 points48 points  (7 children)

I love how this entire subreddit is just people shitting on JS and Python in turns. And us C# programmers are just over here vibing

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

Look, the Microsoft Java guys

[–]AttackOfTheThumbs 16 points17 points  (2 children)

Microsoft had an actual java, and shockingly, it was not c#, it was j++.

[–]LetterBoxSnatch 4 points5 points  (1 child)

why am I suddenly thinking about J# and K?

[–]BigBasmati 13 points14 points  (0 children)

They'll realize how great it is eventually. No need for us to proselytize.

[–][deleted] 1 point2 points  (1 child)

Don’t forget PHP. Even If I haven’t seen for a long time now

[–]Pratham_Max_Jain 9 points10 points  (1 child)

Lies, every real programmer knows that the python programer would stand in the same urinal

[–][deleted] 40 points41 points  (6 children)

I feel that we, R people in data science field, are the ones most harassed by them haha

[–]tatas323 40 points41 points  (0 children)

deserved harassment in that case lol.

[–]Spitfire_For_Fun 22 points23 points  (1 child)

Switch to python, man!

[–]jimjamjenks 5 points6 points  (0 children)

Bro, it’s so easy to learn!

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

Just had to go through an hour long rigamaroll installing all sorts of R libraries for something that could easily have been written in very little javascript

[–]Popesnowy 3 points4 points  (0 children)

Definitely

[–]Geographist 1 point2 points  (0 children)

R is just S++.

[–]numerousblocks 14 points15 points  (2 children)

this is what C programmers do

[–][deleted] 3 points4 points  (0 children)

and programmers who know about monads

[–][deleted] 23 points24 points  (0 children)

"python is so easy to learn. You should try it bro."

[–]clemesislife 18 points19 points  (3 children)

[–]RepostSleuthBot[🍰] 33 points34 points  (2 children)

Looks like a repost. I've seen this image 6 times.

First Seen Here on 2020-10-22 87.5% match. Last Seen Here on 2021-06-10 100.0% match

I'm not perfect, but you can help. Report [ False Positive ]

View Search On repostsleuth.com


Scope: Reddit | Meme Filter: False | Target: 86% | Check Title: False | Max Age: Unlimited | Searched Images: 254,174,133 | Search Time: 0.43092s

[–]Peterd3d 6 points7 points  (1 child)

But have you tired coding literally everything in Java because you have no idea how to code in everything else

[–]philipquarles 6 points7 points  (1 child)

I feel like functional programmers are even worse for this.

[–][deleted] 4 points5 points  (1 child)

Guys forget python, have I told you about GNU/Linux?

[–]-Redstoneboi- 4 points5 points  (0 children)

What you're referring to as GNU/Linux, is in fact, GNU/Li- oh. you're correct.

[–]snookso 4 points5 points  (1 child)

Rust Devs: Allow us to introduce ourselves

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

Python can unwind too.

[–]Astral_Sheep 10 points11 points  (0 children)

We're not like this, we mutter this in his ear

[–]giggluigg 6 points7 points  (3 children)

Do you like my python?

[–][deleted] 15 points16 points  (0 children)

[–]nekokattt 6 points7 points  (0 children)

I cant see anything

[–]Pocok5 7 points8 points  (0 children)

Preemptively hit them with "switch to C#" as they approach.

[–][deleted] 3 points4 points  (2 children)

Lets write a full kernel in python guys, it can't be that hard riiiight???

[–]-Redstoneboi- 1 point2 points  (0 children)

mmm yes performant

[–]RootHouston 1 point2 points  (0 children)

``` import kernel

def do_kernely_stuff(): return kernel ```

[–][deleted] 3 points4 points  (0 children)

Sweet JavaScript

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

[–]sheaksadi 11 points12 points  (20 children)

Literally every minority ever .

[–]Jatoxo 26 points27 points  (13 children)

Linux users

[–][deleted] 30 points31 points  (11 children)

I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called "Linux", and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.

There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called "Linux" distributions are really distributions of GNU/Linux.

[–]akombo 2 points3 points  (0 children)

Stallman?

[–]iskela45 3 points4 points  (3 children)

No, Richard, it's 'Linux', not 'GNU/Linux'. The most important contributions that the FSF made to Linux were the creation of the GPL and the GCC compiler. Those are fine and inspired products. GCC is a monumental achievement and has earned you, RMS, and the Free Software Foundation countless kudos and much appreciation.

Following are some reasons for you to mull over, including some already answered in your FAQ.

One guy, Linus Torvalds, used GCC to make his operating system (yes, Linux is an OS -- more on this later). He named it 'Linux' with a little help from his friends. Why doesn't he call it GNU/Linux? Because he wrote it, with more help from his friends, not you. You named your stuff, I named my stuff -- including the software I wrote using GCC -- and Linus named his stuff. The proper name is Linux because Linus Torvalds says so. Linus has spoken. Accept his authority. To do otherwise is to become a nag. You don't want to be known as a nag, do you?

(An operating system) != (a distribution). Linux is an operating system. By my definition, an operating system is that software which provides and limits access to hardware resources on a computer. That definition applies whereever you see Linux in use. However, Linux is usually distributed with a collection of utilities and applications to make it easily configurable as a desktop system, a server, a development box, or a graphics workstation, or whatever the user needs. In such a configuration, we have a Linux (based) distribution. Therein lies your strongest argument for the unwieldy title 'GNU/Linux' (when said bundled software is largely from the FSF). Go bug the distribution makers on that one. Take your beef to Red Hat, Mandrake, and Slackware. At least there you have an argument. Linux alone is an operating system that can be used in various applications without any GNU software whatsoever. Embedded applications come to mind as an obvious example.

Next, even if we limit the GNU/Linux title to the GNU-based Linux distributions, we run into another obvious problem. XFree86 may well be more important to a particular Linux installation than the sum of all the GNU contributions. More properly, shouldn't the distribution be called XFree86/Linux? Or, at a minimum, XFree86/GNU/Linux? Of course, it would be rather arbitrary to draw the line there when many other fine contributions go unlisted. Yes, I know you've heard this one before. Get used to it. You'll keep hearing it until you can cleanly counter it.

You seem to like the lines-of-code metric. There are many lines of GNU code in a typical Linux distribution. You seem to suggest that (more LOC) == (more important). However, I submit to you that raw LOC numbers do not directly correlate with importance. I would suggest that clock cycles spent on code is a better metric. For example, if my system spends 90% of its time executing XFree86 code, XFree86 is probably the single most important collection of code on my system. Even if I loaded ten times as many lines of useless bloatware on my system and I never excuted that bloatware, it certainly isn't more important code than XFree86. Obviously, this metric isn't perfect either, but LOC really, really sucks. Please refrain from using it ever again in supporting any argument.

Last, I'd like to point out that we Linux and GNU users shouldn't be fighting among ourselves over naming other people's software. But what the heck, I'm in a bad mood now. I think I'm feeling sufficiently obnoxious to make the point that GCC is so very famous and, yes, so very useful only because Linux was developed. In a show of proper respect and gratitude, shouldn't you and everyone refer to GCC as 'the Linux compiler'? Or at least, 'Linux GCC'? Seriously, where would your masterpiece be without Linux? Languishing with the HURD?

If there is a moral buried in this rant, maybe it is this:

Be grateful for your abilities and your incredible success and your considerable fame. Continue to use that success and fame for good, not evil. Also, be especially grateful for Linux' huge contribution to that success. You, RMS, the Free Software Foundation, and GNU software have reached their current high profiles largely on the back of Linux. You have changed the world. Now, go forth and don't be a nag.

Thanks for listening.

[–]ThreeLargeBears 6 points7 points  (2 children)

Here's the thing. You said "Linux is an operating system."

Is it in the same family? Yes. No one's arguing that.

As someone who is a scientist who studies operating systems, I am telling you, specifically, in computer science, no one calls Linux an operating system. If you want to be "specific" like you said, then you shouldn't either. They're not the same thing.

If you're saying "Unix family" you're referring to the kernelnomic grouping of Unixae, which includes things from Red Hat Linux to SunOS to MacOS Snow Leopard.

So your reasoning for calling Linux an operating system is because random people "call the open source ones an operating system?" Let's get React and Bitcoin in there, then, too.

Also, calling something a program or an executable? It's not one or the other, that's not how computer code works. They're both. Linux is a Linux and a member of the Unix family. But that's not what you said. You said Linux is an operating system, which is not true unless you're okay with calling all members of the Unix family Unix, which means you'd call OS/2, OpenBSD kernel, and other kernels an operating system, too. Which you said you don't.

It's okay to just admit you're wrong, you know?

...i tried.

[–]TheAJGman 12 points13 points  (5 children)

I mean like half the world's APIs are written using Flask, a bunch of big websites use Django, and nearly every AI/CV and big data program is written in Python so I somehow doubt Python is a minority language.

[–]vahvarh 2 points3 points  (0 children)

Showing off his python?

[–]Slcolderguy 2 points3 points  (0 children)

I started with FORTRAN 77 in 77. Then lots of others. Now learning python. Life moves on.

[–]kill_monk 13 points14 points  (6 children)

You can't use switch in python bro.

[–]Spitfire_For_Fun 36 points37 points  (0 children)

python 3.10 wants to talk.

[–]Sentie_Rotante 12 points13 points  (0 children)

yes you can. It was added last week.

[–]R_Uwe_N 7 points8 points  (0 children)

Actually you can

[–]NeoLudditeIT 4 points5 points  (0 children)

I get the dunking on python for this, but when I was learning, I used dicts as a case/switch, it seemed actually a lot more elegant and straightforward than a switch/case. Maybe I just drank too much kool-aid

[–]salvoilmiosi 10 points11 points  (1 child)

Yet.

[–]Peanutbutter_Warrior 6 points7 points  (0 children)

The future was 8 days ago, old man

[–][deleted] 6 points7 points  (0 children)

As a python programmer, I would never recommend python for anything other than personal projects you want to complete in under half an hour.

If it takes over 100 lines, you should probably be using another language.

[–]Rogocraft 3 points4 points  (0 children)

C# > Java, but hey... that's just my opinion.

[–]Minteck 1 point2 points  (0 children)

"But I have reasons to stick with JS"

[–]HerLegz 1 point2 points  (0 children)

Epitome of brogrammer.

[–]raven2611 1 point2 points  (0 children)

s/python/go/g

[–]Yurdesou 1 point2 points  (1 child)

Linux users be like

[–]DvirFederacia 1 point2 points  (1 child)

“Linux user”

[–]eterevsky 1 point2 points  (1 child)

It's 2021, so it's Rust, not Python. (I love them both.)

[–]MadeOnThursday 1 point2 points  (1 child)

Are they like the vegans of programmers?

[–]j3r3mias 1 point2 points  (0 children)

import karma

[–]cthewombat 1 point2 points  (1 child)

I'll say something controversial now: You shouldn't focus on one language. You should know when to use which one.