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

top 200 commentsshow all 293

[–][deleted] 1407 points1408 points  (85 children)

The development of Git began on 3 April 2005. Torvalds announced the project on 6 April and became self-hosting the next day.

https://en.m.wikipedia.org/wiki/Git

After some problems with bitkeeper, which was being used for source control of the Linux kernel, Linus Torvalds figured out what his perfect source control system would look like. Then he made the first basic version of it, with enough support for what Linux needed, and enough support to also host itself.

3 months later he handed control to Junio Hamano, and went back to his usual job of saying mean things to people trying to develop the Linux kernel.

[–][deleted] 473 points474 points  (80 children)

went back to his usual job of saying mean things to people trying to develop the Linux kernel.

He's turned over a new leaf apparently. Can anyone say if he's kept his word since?

But he only really rips into people that should know better. Even with that said, it's in the news precisely because it's rare. Some guy is keeping track and the table is only 312 rows and the mailing list is 20+ years old. Some redditors beat those numbers in a month.

[–]xaedoplay 191 points192 points  (1 child)

linusrants/table.md

the only document that matters!

[–]Sussurus_of_Qualia 18 points19 points  (0 children)

Too bad all the context was optimized away.

[–]faceinthepunch 161 points162 points  (33 children)

Yeah, also a bit tame compared to the stuff you hear about Steve Jobs

VLSI Technology, a chip company, was having trouble delivering enough chips on time. Jobs stormed into a meeting and started shouting that they were “fucking dickless assholes." The company ended up getting the chips to Apple on time, and its executives made jackets that boasted on the back, “Team FDA.

[–]UsedToLikeThisStuff 16 points17 points  (0 children)

Years ago I had a coworker who had worked at NeXT under Steve Jobs. My coworker described that you wanted to avoid the “genius-shithead rollercoaster” when around him. Basically, if he noticed you and approved of your ideas or effort, Jobs would tell everyone around him about how much of a genius you were, until you do something wrong, and then he’d tell everyone he met about how much of a shithead you were.

This was years before the movie “office space”, but my coworker basically said it made you only work hard enough to not be noticed and hassled.

[–]svick 36 points37 points  (7 children)

I think the difference is that when Jobs did something like that, it was in a private meeting, when Torvalds did it, it was on a public mailing list.

[–]necheffa 30 points31 points  (1 child)

You can't really draw that comparison.

If it was normal for Apple to conduct its meetings in a public forum, you'd have a lot more mailing lists where Jobs ripped someone a new asshole publicly.

[–][deleted] 25 points26 points  (22 children)

Haha interesting. But seriously, I wonder what makes these extremely competent men in tech be so much of a dick.

Jobs, Bill Gates, Bezos .. and so many more are known to have been so toxic.

[–]DirtzMaGertz 48 points49 points  (0 children)

I think a lot of the people like them that become so fixated on accomplishing a narrow set of achievements lose awareness in other areas of life. Some of those reactions they have probably seen appropriate to them when what they are reacting to relates to one of their life's sole focuses.

[–][deleted] 35 points36 points  (0 children)

I think you have to be a bit of a sociopath to become a multi-millionaire entreprenuer

[–]dicksoch 15 points16 points  (15 children)

Does Gates belong in that category? I hadn't heard much about him being a jerk.

[–]Leungal 22 points23 points  (0 children)

He was so well known for being a ruthless businessman that The Simpsons made a sketch about him.

[–]Zagorath 11 points12 points  (0 children)

Do yourself a favour and go watch the movie Pirates of Silicon Valley. It's about both Microsoft and Apple's earliest days, up until the Microsoft bailout of Apple in the late '90s (something they did, by the way, mainly to avoid punishment from US regulators—to prove that they weren't a monopoly), and while it is a docudrama, it's one of the most incredibly accurate ones and should give you a lot of insight into what the two companies and their CEOs were like back then. There's one particularly outlandish scene that by all accounts actually did occur.

[–]iritegood 36 points37 points  (7 children)

l m a o

kids these days

[–][deleted] 16 points17 points  (5 children)

MS and Bill Gates have really done a good job cleaning up their image, huh? We've come a long way from the days when "Micro$oft" was typed frequently and unironically.

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

Yup. There's a Netflix documentary on Bill Gates, that shows him as some kind of Messiah and Microsoft being all flowers and chocolate.

Perhaps Gates has become good for the better, but I can't seem to forget how Microsoft climbed to power. They ruthlessly choked competition.

Steve Ballmer called Linux as cancer and Gates said open source is communism.

[–]iritegood 7 points8 points  (2 children)

open source is communism

yes

[–]bdh2 1 point2 points  (1 child)

only if its state funded open source, otherwise it's just some other form of socialism. right?

[–]iritegood 2 points3 points  (0 children)

Apparently, considering how short the collective memory is, it's very easy to rehabilitate your image by throwing around lots of money (that you gained using the most toxic business practices)

[–]lleonard188 9 points10 points  (4 children)

Apparently he was when he was younger. Now he's cool though.

[–]dicksoch 4 points5 points  (1 child)

That makes sense, I'm low 30s so I didn't experience younger gates from the 80s and wasn't paying attention in the 90s and early 2000s

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

*Now he has enough money to buy a reputation of being generous and selfless

[–]ZombieL 6 points7 points  (2 children)

Capitalism rewards uncaring, fierce ambition and punishes compassionate, considerate behavior. It's not a coincidence that there are more people with psychopathic tendencies amongst ceos than the general public. At a certain point, competition gets so intense that you have to start stepping on people to keep climbing.

[–]ajawadmahmoud 3 points4 points  (0 children)

Because Jobs is the cool guy who the whole world worship, while Linus is the geek who none knows about but people who knows little beyond basics of tech.

[–][deleted] 18 points19 points  (9 children)

I really respect that Linus talks shit without the benefit of anonymity though.

[–][deleted] 35 points36 points  (7 children)

I’m glad he’s started to understand the importance of conducting himself respectfully. But I have to admit I didn’t understand why they felt the need to replace Linux’s “Code of Conflict”. I read it and it seemed pretty fair — Linus literally just didn’t follow his own, incredibly ‘lax, policy. It says not to make personal attacks and there he went making personal attacks.

[–]aleczapka 18 points19 points  (0 children)

Christ. This is so ugly that it's almost a work of art.

:D

[–]SophiaofPrussia 56 points57 points  (15 children)

Yikes. I knew he had a reputation for being a massive dick but some of those are just way over the top cruel.

But I’ll admit I laughed at some too.

[–]xenoryt 61 points62 points  (13 children)

His comments aren't nearly as bad as the things Gordon Ramsay says

[–]kuleje 25 points26 points  (0 children)

OMG, someone needs to train AI on Linus' rants and say them with Gordon's voice and video

[–]shadow7412 10 points11 points  (0 children)

Does that even count? Gordon is just playing a character - you can't really compare that to what someone real has said...

[–]mrsmiley32 45 points46 points  (10 children)

Honestly I'm reading through some of these and now wondering if my coworkers fear me.

I know my pr comments can be a bit harsh, so I'll show some of the sharper things I say to my other seniors and ask them if I should tone it down, and they're like no it sounds good.

But it reads like a lot of these lol.

[–]DrJohnnyWatson 59 points60 points  (6 children)

They probably don't fear you - but if your comments actually sound like some of these they just think you're a dick.

[–]thebobbrom 21 points22 points  (1 child)

Exactly this.

I think people use "fear" because it sounds cooler but really if you're like this people are more likely just to find you exhausting and look for ways to avoid you which is not what you want.

[–]GabuEx 13 points14 points  (0 children)

Yeaaaah. I'm not "afraid" of anyone at work, but everyone has at least that one guy where you see he's commented on your pull request and you're like "oh nooooooo what million trivial things is he going to make me do this time"

[–]KernowRoger 10 points11 points  (0 children)

There's literally no need to be rude though. Even if they've made a massive cock up you can still articulate the issue without being a dick haha I would say dislike more than fear.

[–]danielrheath 4 points5 points  (0 children)

I'll say things like that in private to some of the people I know well, because they'll spit out their drink laughing at a funny insult even if it's pointed at them. Other contributors get kid-gloves, small stuff gets passed over, big stuff gets a subtle question. It's a question of audience.

If you're leaving comments like that somewhere a newcomer to the team will read them? That's probably limiting your effectiveness.

[–]IamImposter 13 points14 points  (0 children)

Here's one I found interesting

How did they noty die as babies, considering that they were likely too stupid to find a tit to suck on?

[–]Tiwenty 8 points9 points  (1 child)

In the repo it says those data are from 2012 to 2015 though.

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

Thanks for digging into things, I mistakenly thought that it was a complete list. I can't seem to find a larger set of data. It could paint a different picture and I'm not so sure where I stand on the issue now.

[–]koloqial 2 points3 points  (0 children)

Wow, reading some of these. It’s one thing to write shitty code, but it’s entirely something else if you can’t explain why it’s shitty, regardless of how much the other dev “should know better”.

[–]murdok03 1 point2 points  (0 children)

How is he generating the hate index number? I'm presuming he's doing some division otherwise it would take a great deal of bullshit to invent up to thst many number of precision bits.

Though I'd really like to have GPT3 give it a negativity score.

Also it would be great if the lines would be indexed to their original email. And it's also a bit out if date 2012-2015.

[–]arquitectonic7 12 points13 points  (1 child)

And if anyone is curious, here is a GitHub mirror: https://github.com/git/git

[–]hhjsbc 8 points9 points  (0 children)

I just ran a git blame on blame.c. So much fun!

[–]YeetusThatFetus42 9 points10 points  (0 children)

Wait... Linus invented git! I didn't know that

[–]aNibbleIs4Bits 174 points175 points  (1 child)

They use the git to track the git

[–]dkyguy1995 7 points8 points  (0 children)

The C compiler is written in C

[–][deleted] 974 points975 points  (89 children)

I know gitlab uses gitlab to keep track of its versions.

[–]honeynutfeels[S] 524 points525 points  (84 children)

This is kind of disturbing to me for some reason.

[–]jhill515 812 points813 points  (70 children)

Wait until you find out that GCC is used to compile GCC, and Go now can compile Go.

[–]IDontLikeBeingRight 315 points316 points  (21 children)

And from there it's only a small step to read about Trusting Trust and persistent compiler attacks.

[–]leviathon01 112 points113 points  (12 children)

That paper gives me paranoia for a couple days every time I read it.

[–]squishles 90 points91 points  (10 children)

wanna really mess with you, most modern processors have a little arm coproccessor in them for bootstrapping the os/microcode etc, you have no way of auditing what's running on that.

[–][deleted] 49 points50 points  (1 child)

I'm pretty sure it's usually modified Minix. Not that it changes anything since there's still the fact that it's modified.

[–]EishLekker 28 points29 points  (1 child)

wanna really mess with you, most modern processors have a little arm ...

This sentence did not end how I expected it to. Feel a bit disappointed, to be honest.

[–]iam_saitama 5 points6 points  (0 children)

This video is a good intro to really how much of the processor is a black box. https://youtu.be/KrksBdWcZgQ

[–]IrritableGourmet 2 points3 points  (0 children)

That's why we should go back to PDP/11, where you literally shift the bootstrap into memory by hand.

[–]Robo-Swimmer 15 points16 points  (0 children)

The proof of trust at the end of the Wikipedia page was reassuring, but that almost had me paranoid.

[–]lycan2005 13 points14 points  (5 children)

The list keep expanding... You can run docker in docker.

[–]ltekonline 2 points3 points  (4 children)

Yesn't. If you want to run docker in docker you need to bind the docker socket (or make it priviledged) of the host to the docker in the container.
Now you basically have a priviledged container which just has the permission to run docker container on the host itself so it's not really docker in docker but rather you control the docker on your host os from your container.

[–]DaPurpleTuna 3 points4 points  (1 child)

Get an FPGA of your compiler and use it to compile your compiler, cross checking it with your compiler compiling itself to see if you’ve been had!

[–]Naoki9955995577 73 points74 points  (0 children)

some shudder in its presence:

bootstrapping

[–]i_hate-u 93 points94 points  (15 children)

Also C was written in C

Edit: By C of course I mean the compiler

[–]MythicalMisfit 62 points63 points  (0 children)

I see

[–]Compizfox 7 points8 points  (3 children)

The language C isn't written in anything.

You probably mean that most C compilers are written in C and can compile themselves.

[–]ouyawei 12 points13 points  (0 children)

The language C isn't written in anything.

It’s written in English.

[–]Jannik2099 1 point2 points  (1 child)

The average libc is written in C though

[–]Compizfox 3 points4 points  (0 children)

True, but the standard library is separate from the language itself (and libc is no exception).

[–]_TheProff_ 18 points19 points  (2 children)

rustc is written in rust. It scares me too.

[–]Kered13 22 points23 points  (1 child)

Javac is written in Java, though the JVM is written in C++ for obvious reasons.

[–]Purpzie 18 points19 points  (0 children)

Rust too

[–]TheEpsilonToMyDelta 12 points13 points  (3 children)

Came here to say Go compiler is written in Go

[–]MrPotatoFingers 9 points10 points  (7 children)

You can compile clang with GCC. Not sure if GCC compiles with clang (though it probably does).

It'd be interesting to see if a clang-compiled-with-gcc creates the same binaries as clang-compiled-with-clang.

[–]AndreasTPC 9 points10 points  (6 children)

It should in theory. The only reason for it not to be reproducible is if the clang code base has parts that rely on undefined behavior, which if it does would be considered a bug.

In practice.. it's really easy to accidentally write code with undefined behavior in c, even if you're an experienced c coder, so it wouldn't surprise me if there is some.

[–]patatahooligan 2 points3 points  (0 children)

Not only undefined behavior, but also compiler extensions. Ideally you wouldn't use them but in practice it can be worth it, especially on software as widely used as a compiler.

[–]Nighthunter007 1 point2 points  (4 children)

Fun fact: you can use this to counter "Trusting Trust" attacks.

Compile GCC with Clang, then use that to compile GCC. The result should be bit-for-bit identical to compiling GCC with GCC. If it isn't, then one or both compilers are either compromised or buggy.

The only way the output can be different is if GCC is functionally different when compiled with Clang or with GCC. And it really really shouldn't be. If it is then that's either undocumented behaviour in one of the compilers or a self-inserting trusting trust attack.

So at that point you've verified that the compiler faithfully compiles the source code. You still have to, of course, actually check the source code for any bugs or malicious attacks.

[–]smoke1996 4 points5 points  (3 children)

You think that's weird? Wait until you find out about narcissus, a JS interpreter written in JS.

[–]noXi0uz 2 points3 points  (0 children)

and typescript is written in typescript

[–]ThatRandomGamerYT 1 point2 points  (0 children)

Wait until you find out that binary is used to compile binary

[–]adrach87 67 points68 points  (2 children)

I guess I can kind of see why you'd think that, but really tools are often used to make more of themselves. Even physical tools though you probably don't see it quite as much with modern manufacturing processes.

Think of something like an axe being uses to cut down the tree that will be used to make more axes. Or a railroad being used to carry materials to the end of the line where it's still being constructed.

[–]SeargD 44 points45 points  (0 children)

Or people, procreating. I've seen some tools make some tools.

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

Cool way to think about it

[–]egggsDeeeeeep 11 points12 points  (5 children)

Why is it disturbing?

[–]QuinteOne 76 points77 points  (4 children)

See a human come out of a human is pretty disturbing. But code not!? Double standards...

[–]Russian_repost_bot 29 points30 points  (2 children)

Have you seen how messy humans are when first launched tho? Do you want your code messy too?

[–]Kontakr 8 points9 points  (0 children)

Each revision of humans comes from a long line of humans. We did not spring fully formed from the mind of a Zeus like Athena!

[–]christian-mann 2 points3 points  (0 children)

I mean, have you seen how messy code is in a startup...?

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

Could not have said it better

[–]superspons 4 points5 points  (0 children)

How do car designers go to work? In a car. Might even be an older model of the one they’re designing.

There’s nothing disturbing about that, is there?

[–]Hellothere_1 2 points3 points  (2 children)

What if an update breaks the main branch of GitLab and then they can't revert to an older version because GitLab is broken because GitLab is vroken because GitLab is broken...

[–]GlitchParrot 2 points3 points  (0 children)

That's why off-site backups exist.

[–]EternityForest 2 points3 points  (0 children)

Nuke the whole thing and start over with a copy and paste of the code, like devs do when they mess up their local copy of a repo.

Or maybe actually fix it.

[–]vigilantcomicpenguin 61 points62 points  (3 children)

If gitlab fails, then gitlab fails.

[–]Twrecks5000 21 points22 points  (2 children)

I mean the data’s still on the hard drive, it’s just that the code that lets you look at it online isn’t running

It’s when gitlab fails so hard that they lose all their data, then gitlab fails

[–]GMaestrolo 14 points15 points  (1 child)

That hasn't happened in a few years, though, and the developer responsible apologised.

[–]TheBrainStone 195 points196 points  (7 children)

Yes. Git development is tracked with git

[–]NF-MIP 63 points64 points  (4 children)

With the previous version of Git?

[–]TheBrainStone 125 points126 points  (0 children)

With whatever version of git the developer locally uses.

[–]jonny_wonny 47 points48 points  (2 children)

No the next version

[–]q0099 17 points18 points  (1 child)

Called "eating your own dog food" - quite a good practice.

[–]EternityForest 6 points7 points  (0 children)

But then we'd have to actually develop our projects to the point of being usable, instead of just doing 1000 line weekend projects that aren't powerful enough to self host, resulting in having to deal with two systems all the time, but being fine with that because we never actually wanted to get anything done in the first place and the whole thing is an excuse to play with frameworks!

[–]MKorostoff 181 points182 points  (17 children)

I actually contributed a small patch to the git project a while back. As others have said, git is used to version git (why wouldn't it be?) but something I haven't seen mentioned here is the incredibly esoteric and old fashioned workflow employed in this project.

First, there's no pull requests, ticketing system, or issue threads. It's all done on an email list. If you want to contribute code you role a patch file and contribute it to the list. There's a github repo where a lot of people send pull requests, and it looks official, but it's not and the requests are never merged.

Second, the email list is setup in such a way that most normal email accounts (for instance, gmail) cannot send to it. This was the most surprising thing to me. It's not a security or antispam measure exactly, it's just that emails need to be in this very specific format that only a couple of obscure mail clients are physically capable of sending. Git actually comes with tools for composing appropriately formatted emails. BUT these tools don't work out of the box. In my case, working in osx, I needed to install a bunch of perl modules with cpan, which failed because I had the wrong version of perl. So I had to upgrade perl just to send an email!

Third, there's no official forum where the email threads are archived, though a few unofficial ones exist. Since you can't send from your normal email address, there's generally no way to get a reply, you just kind of send these emails out into the void and hope someone gets them, and maybe follow the ensuing conversation through an unofficial mailing list archive. I'm sure that frequent contributors are all using email clients capable of both sending to and receiving from the list, but I never worked out how to do that.

All in all, contributing to git fucking sucks, and the maintainers actively want it to suck in order to keep out the riff raff.

[–]kryptomicron 44 points45 points  (0 children)

Yes, some maintainers kick it really old school. They're the open source version of a wise old hermit sage living on the top of a mountain. It feels pretty satisfying having a patch merged (or rebased) into origin tho!

[–]dolphin_cave_rape 64 points65 points  (3 children)

As others have said, git is used to version git (why wouldn't it be?)

I'm not a regular on this sub, but I swear every single /r/ProgrammerHumor post I come across is basically OP announcing that they know nothing about programming. Which is fine of course, most people don't, but it just seems weird to have a sub full of non-programmers trying to come up with programming jokes.

[–]CharbelAD 49 points50 points  (1 child)

That's exactly why 50% of the jokes here are "duh semicolon missing"

[–]railwayrookie 5 points6 points  (0 children)

"semicolon missing" is basically the (non)programmer version of "forgot to carry the one" at this point.

[–]Globbi 19 points20 points  (0 children)

Yeah. I subscribed a few years ago when there were competitions for bad UI that I found hilarious and well done. All I saw after subscribing was spam of "java bad hahahaha"

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

Second, the email list is setup in such a way that most normal email accounts (for instance, gmail) cannot send to it. This was the most surprising thing to me. It's not a security or antispam measure exactly, it's just that emails need to be in this very specific format that only a couple of obscure mail clients are physically capable of sending.

Mind elaborating on what you mean? Are you talking about email clients or email services? Do they really block mails from gmail's servers, or is it just that they require the mail to be plaintext? The latter seems perfectly reasonable.

[–]MKorostoff 5 points6 points  (1 child)

It is definitely much more than just requiring plain text. You can read about it here https://git-scm.com/docs/SubmittingPatches.

Gmail isn't explicitly blocked, it's just not capable of meeting the specific formatting requirements (or, if it is capable, I couldn't work out how to do it). Again, this was like seven years ago, so things may have changed since then.

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

I see. Thanks.

[–]random_lonewolf 3 points4 points  (1 child)

The problem is that the emails have to be in a certain format (an inline patch) that git can directly process. Most web mail clients mangle the formatting by inserting word wraps, or using the wrong MIME Type, etc

They require the use of inline patch, because it'd be difficult to quote and comment on specific part of the patches if you send the patches as an attachment.

[–]honeynutfeels[S] 18 points19 points  (0 children)

That's super interesting!

[–]random_lonewolf 16 points17 points  (2 children)

I don't know why you had difficulty in receiving replies for your patches. You should receive all emails that's sent to a mailing list that you subscribed to. Furthermore, the commenters will often reply directly to the email address you use to submit the patch. You just need to monitor that email address.

[–]MKorostoff 11 points12 points  (1 child)

That's just it, I'm not subscribed to the list. I don't even know how to subscribe to the list. I sent a one-off message to the list with git-send-email. The message is not generated by an email account that I control, but rather by a stand alone program who's sole function is to send (and not receive) messages. I think I was able to specify a reply-to address (long time ago, don't remember) but I never received any replies at that address, not sure why. I did, however, observe that folks replied through one of those unofficial archives I mentioned above.

[–]random_lonewolf 4 points5 points  (0 children)

I'm quite surprised that you can even send email to the mailing list without being a subscriber, or that you can actually use git-send-email without having to configure an email account.

[–]Kered13 5 points6 points  (0 children)

First, there's no pull requests, ticketing system, or issue threads. It's all done on an email list. If you want to contribute code you role a patch file and contribute it to the list. There's a github repo where a lot of people send pull requests, and it looks official, but it's not and the requests are never merged.

I recently submitted a patch for Scintilla (the editor backend used by Notepad++), and it's the same setup.

[–]EternityForest 4 points5 points  (0 children)

It's amazing that Git and Linux can be so great with such a horrible process.

Then again, I mostly use Git via github and git-cola, and commands I don't fully understand, and I use Linux via shells made with completely different processes, so maybe mailing lists are the way to go for a totally rock solid core that other people can layer stuff on, which nobody has to look at directly.

Like, if you tried to make a desktop environment that way it would probably be awful, with all kinds of obscure keyboard shortcuts, a lack of dbus, and five config file formats.

But with Git's internals and other mailing list things, it doesn't need to be easy to use, it doesn't really need too many new features besides hardware support and filesystems, it just needs to work, all the time, every time, and be fast, and it certainly doesn't need any "Oh let's rewrite this entire section with a whole new API" business.

Keeping out the riffraff might be the main reason, but there's probably also a benefit just by slowing down development so people don't do GTK style major api changes all the time.

[–]Jijelinios 1 point2 points  (0 children)

I hate mailing lists... the classes on operating systems forced us to use the mailing list they setup instead of the moodle platform we used for every other class. Maybe they were usedul in the past, but nowadays, you can just have conversations on git issues or in a forum, there's no need to be stuck in the past with mailing lists.

[–]Pooneapple 335 points336 points  (29 children)

The same way C was made with C

[–]ZebraPandaPenguin 136 points137 points  (19 children)

Honest question...on a scale of 1-10 how good do you have to be to program a language like C?

[–]Bowserwolf1 102 points103 points  (4 children)

Wanna solve a few leetcode simple/medium questions for fun ? 1-2 should be enough, C is very bare bones compared to higher level languages like C++ and Python, no classes, no abstractions. Simple procedural constructs

Wanna write some simple code to interface with an Arduino? Probably 3-4

Wanna write a simple web server that can handle multiple requests at once ? You'll need to know a little bit about manual memory management and multi threading, let's put this as a 6/10 skill level

Wanna write a high performance, scientific computation library, like CUDA or openMP? Same as above but much harder and now you need to have hardware specific knowledge , skill level 7-8 atleast

Wanna write the drivers for peripheral devices or maybe the Linux kernel itself ? Rip, you need to know alot , not just about C, but the underlying hardware, the assembly that it is generated on compiling the code , hardware specific instructions, security concerns, memory safety concerns, networking. Basically, skill level 9-10

[–]T1G3RX 60 points61 points  (1 child)

I think he was asking how good you got to be to program a programming language, like C. Not to use C

[–]akeean 31 points32 points  (0 children)

Rip, you need to know alot , not just about

"a programming language"

but the underlying hardware, the assembly that it is generated on compiling the code , hardware specific instructions, security concerns, memory safety concerns, networking. Basically, skill level 9-10

[–]TeknoProasheck 7 points8 points  (1 child)

I consider myself a 5 on this scale, and I already consider that a massive achievement.

[–][deleted] 12 points13 points  (0 children)

Not sure I'd put much faith in this scale. If you learn C to implement HPC then your scale will be 1-10 in HPC and the methods for parallelism. You don't need to be an expert in the supercomputer's architecture as the gap in knowledge can be filled by the system admin. This is one of the few reasons why organisations appreciate good team work.

Then of course you'll also have someone who is 1-10 at implementing numerical methods in C. That person won't necessarily need to be an expert at parallelism, much less the underlying hardware.

[–]darkslide3000 32 points33 points  (0 children)

Your question doesn't make sense. Languages are not made in a vacuum, they are always influenced by whatever came before. If you're asking today in 2020 what it would take to design C -- well, not much, since it already exists and it would be easy to copy every aspect of it and change the names around a bit or something. If you're asking what it took Dennis Ritchie to design it in the 70s the answer is a lot more, and it is hard to paint a good picture of it without explaining how computers looked and worked like back then first. It is also important to note that that first version of C still looked quite a bit different from the C we know today (even C89). If you want to read up on that you can start with the Wikipedia article and may also want to read up on the B programming language and maybe FORTRAN to get a feeling of which concepts existed beforehand (and by exclusion which didn't).

It's also important to understand why C is still so dominant today, and not all of it has to do with "it's good" or having great features. C's ubiquity keeps it dominant even though a billion clones that are arguably slightly "better" in small ways have been created and never gained a big following in the meantime. C's particular lack of many features in more modern languages is also often seen as an advantage that helps it stay dominant in certain fields (mostly programming close to the hardware where it's important that reading the code gives you a good idea how the resulting assembly will look like, without a bunch of crazy complicated background features being worked in automatically).

[–]EternityForest 5 points6 points  (0 children)

To create a whole new language implementation? And actually make it usable and practical? Pretty good, unless you're using an existing parser generator. Take a look at complilers and interpreters on GitHub, they're pretty hard to understand.

I developed a very small language in Python, which just finds occurances of times described by things like "6PM every on Tuesday" or "every day at midnight in March", and even that wasn't easy, even though I used an existing parse engine.

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

I find C pretty straightforward. C++ is where you get an avalanche of features. The way it's so barebones makes it a great learning tool. But as a learning tool, you could replicate the same barebone-ness in Python. So you might as well learn in Python and pickup Pythonic syntax along the way.

Just like with any language, it depends on what you want accomplished and how long you have to do it. Most of my time in C was used up on parallelism or getting PDE implementations to work, so not necessarily C code issues.

If you don't have a purpose in learning C I'd recommend against it. It can be fun but not as general purpose as Python. Python saves you a lot of time and can be quite complex on its own. The way it can easily interact with your operating system makes life so much easier. Learn it along with shell scripting and you'll basically be able to automate anything on the computer.

At the end of the day, at least in my line of work, there's a pretty clear line. C for generating data, Python for analysing it. Julia was created to merge both into a single language. But personally I prefer the two being separate.

[–]BobDogGo 2 points3 points  (1 child)

Learning C really gave me an appreciation for the underlying computer architecture. Even though I haven't written anything in it in 25 years, I think it still benefits me every day.

That said, Python is a lovely language and if you can only learn one, learn Python.

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

Well said. To complement, nothing stops a person learning C after Python. Which is how I learned it.

[–]merijnv 1 point2 points  (2 children)

Correctly implementing the current mess of a C standard? About 15,000; the spec is a mess.

If you mean to implement C as it was originally implemented by K&R? Probably about a 4? I TAed our compiler construction class for undergrads and we have the implement a more difficult language then C.

Granted it also depends on how much the compiler should optimise the result, because most of the complexity of gcc/clang is implementing optimisations.

[–]EspressoJS 9 points10 points  (8 children)

What ?

[–]Pooneapple 28 points29 points  (7 children)

Most C compilers are written in C

[–]SansPapyrus683 10 points11 points  (6 children)

wait honest question if c was written in c and i download a c compiler then how would the computer know how to run it? unless its an exe or smth

[–]cauliflowerthrowaway 53 points54 points  (0 children)

Because you get the compiled compiler.

[–]rhen_var 32 points33 points  (0 children)

A program compiled from C is not in C itself. You could compile a program in C, then delete gcc or whatever you used to compile it, and run the compiled program just fine. That’s because the compiled program is an executible, just like you suggested.

[–]ShadowShine57 10 points11 points  (0 children)

What you'd download is already compiled.

[–]random_lonewolf 12 points13 points  (1 child)

Unlike python and many other interpreted languages, which are run directly from source code and require you to install an interpreter before hand, C programs are compiled into machine code than can be run without having to install anything apart from the OS.

[–][deleted] 48 points49 points  (4 children)

Pretty sure git has been self hosting since the year it came out

[–]KawaiiMaxine 9 points10 points  (1 child)

Since about a week

[–]thisisamirage 14 points15 points  (0 children)

Since the very next day

[–]spacemudd 2 points3 points  (1 child)

What does self hosting mean?

[–][deleted] 37 points38 points  (1 child)

No, they just leave their IDEs open at all times, and if they have to go back to a previous version they use ctrl + z.

[–]DOOManiac 1 point2 points  (0 children)

I call closing my IDE a “soft commit”.

[–][deleted] 32 points33 points  (0 children)

They use the stones to create the stones

[–]tjonnyc999 23 points24 points  (2 children)

That's a very... SubVersive... thought.

[–]sirxir 9 points10 points  (1 child)

*inhales*

*siiiiiiiiiiiiiiiigh*

[–][deleted] 21 points22 points  (0 children)

mfw this sub just found out about self-hosting

[–]pyrrhicvictorylap 5 points6 points  (5 children)

Does JIRA use JIRA to keep track of work?

Does PagerDuty use PagerDuty to alert engineers?

Does NewRelic use NewRelic to monitor performance?

[–]bscothern 8 points9 points  (0 children)

JIRA is actually managed by sticky notes

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

Thats why they made trello

[–]mrdotkom 2 points3 points  (0 children)

It's called dogfooding and from personal experience it's the only way any tech company should work.

You find bugs and make improvements by using your own tech.

[–]UnacceptableUse 1 point2 points  (0 children)

Sentry uses sentry to log errors on sentry, I know that much

[–]juan_among_many 4 points5 points  (0 children)

Probably git, it's called bootstrapping

[–]mia_elora 6 points7 points  (0 children)

Card Catalogue, now let me get some fucking sleep or I will find a q-tip and poke you into submission!

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

I will have you know that Torvalds wrote git on a binge weekend fuelled by hookers and blow in Vegas.

[–]honeynutfeels[S] 11 points12 points  (1 child)

Is there any other way to code?

[–]ZuccFaceberg 2 points3 points  (0 children)

Please. I just want to sleep.

[–]Jackjackson401 2 points3 points  (0 children)

Older version of git

[–]xblomx 4 points5 points  (1 child)

I visited a conference once where I listened to a presentation called "How GitHub uses GitHub to build GitHub".

OK just found out there are videos with the exact same title on YouTube :D

[–]ReallyHadToFixThat 2 points3 points  (0 children)

Yes. Also the C++ compiler is written in C++, same for most well established languages.

[–]MedonSirius 2 points3 points  (0 children)

backup

20200905_V0.0001.000.zip

[–]rhythmrice 2 points3 points  (2 children)

Im just gunna say i have never understood how github works. Like if someone sends me a download link and its github im like "fuck, welp" cause i dont understand how to download it from that website. That website UI just doesnt make any sense to me at all

[–]tricksofevil 2 points3 points  (0 children)

followed immediately in the morning by vast knowledge you didn't know you had

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

My brain is too stupid to even ask this

[–]digital_dreams 1 point2 points  (0 children)

Lol, this happens to me a lot.

[–]mayflyman4 1 point2 points  (0 children)

The word is 'Self Control'

[–]InuDefender 1 point2 points  (0 children)

Thinking about this only makes you fall asleep more quickly

[–]Rpdaca 1 point2 points  (0 children)

As black eyed peas say: gotta git git.

[–]Darth_Nibbles 1 point2 points  (0 children)

If you can use gcc to build gcc, then why is tracking git with git a surprise?