Why C is so Influential - Computerphile

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 พ.ย. 2024

ความคิดเห็น • 1.6K

  • @stevenliu1377
    @stevenliu1377 7 ปีที่แล้ว +3454

    Well, you know what they say about the elegance of C:
    C combines the power and speed of assembly language with the readability and maintainability of assembly language.

    • @hursanalimirahmedov6428
      @hursanalimirahmedov6428 5 ปีที่แล้ว +14

      Сирии - е

    • @hariangr
      @hariangr 5 ปีที่แล้ว +37

      🤣

    • @JerkerDahlblom
      @JerkerDahlblom 4 ปีที่แล้ว +9

      Hahahaha

    • @martinusher1
      @martinusher1 4 ปีที่แล้ว +79

      With the possible exception of Forth (once dubbed "the world's first write-only language") all languages make readable programs if the programs are well structured. Like the man says, its horses for courses -- most of my work has been in 'C' but that's because of the nature of the work that I do. Most experienced programmers can work in a number of languages, they use the one most suitable for their work (or, more often, manadated by management).
      What distinguishes 'C' is that its used to write not just operating system components but many of the tools used by programmers, including the compilers and interpreters that implement other languages. 'C' is relatively unique in that it compiles its own compiler (which begs the question as to where the first compiler came from and, no, it wan't written in assembler).
      BTW -- I was only kidding about Forth. Its possible to write readable programs in Forth, just not very easy. (Incidentally, Forth is another language that's defined by itself)(you write Forth in Forth.....)

    • @jamesbra4410
      @jamesbra4410 4 ปีที่แล้ว +2

      Without all the spaghetti

  • @HelloMyNamesNino
    @HelloMyNamesNino 6 ปีที่แล้ว +7455

    C is important because otherwise we’d have to code with omputers.

    • @harrisonfackrell
      @harrisonfackrell 6 ปีที่แล้ว +545

      Don't you mean "ode"?

    • @Narc0YT
      @Narc0YT 6 ปีที่แล้ว +361

      Dont you mean: " is important beause otherwise we'd have to ode with omputers.\0"

    • @GoldenSpike300
      @GoldenSpike300 5 ปีที่แล้ว +88

      This comment and subcomments are underrated

    • @technowey
      @technowey 5 ปีที่แล้ว +17

      Nino - LOL! Your comment really made me laugh out loud.
      Thanks.

    • @worsethanjoerogan8061
      @worsethanjoerogan8061 5 ปีที่แล้ว +6

      @alberto sobieski I program in machine code only

  • @MrToothgrinder
    @MrToothgrinder 7 ปีที่แล้ว +6029

    Real men move the electrons..by hand.

    • @justanotherstarinthesky
      @justanotherstarinthesky 7 ปีที่แล้ว +730

      real men carve the 0 and 1 in stone and they execute the code in their head

    • @adkhansholeh
      @adkhansholeh 7 ปีที่แล้ว +106

      That's easy. I got those electrons moving by pushing a button.

    • @dannygjk
      @dannygjk 7 ปีที่แล้ว +38

      You're damn right they do.

    • @facusoi
      @facusoi 6 ปีที่แล้ว +59

      Real men use finite automatas

    • @FindecanorNotGmail
      @FindecanorNotGmail 6 ปีที่แล้ว +43

      I raise butterflies

  • @geoblk3000
    @geoblk3000 7 ปีที่แล้ว +1690

    This is a man who can really appreciate the computing power we have today.

    • @Blaze42069-z
      @Blaze42069-z 2 ปีที่แล้ว +5

      Ok boomer

    • @fullmetaltheorist
      @fullmetaltheorist 2 ปีที่แล้ว +11

      Avarage overcloking fan vs avarage computer enjoyer.

    • @Codefan321
      @Codefan321 ปีที่แล้ว +4

      @@fullmetaltheorist Average underclocking fan vs average freezer enjoyer

  • @salsamancer
    @salsamancer 5 ปีที่แล้ว +770

    I'm a programmer (not a computer scientist) and I use C and I even LIKE it. It's like a manual transmission. Sure you can get yourself into trouble, but you have control and wielding it responsibly is satisfying.

    • @AllUpOns
      @AllUpOns 5 ปีที่แล้ว +46

      This describes literally every programming language.

    • @Stowy
      @Stowy 4 ปีที่แล้ว +4

      wait what's the difference between a programmer and a computer scientist?

    • @isaaclo7562
      @isaaclo7562 4 ปีที่แล้ว +65

      @@Stowy the degree... "comp sci is more theoretical, programmers are more practical."

    • @TheStickofWar
      @TheStickofWar 3 ปีที่แล้ว +25

      @@Stowy one person did a computer science degree and the other didn't, basically. As for who is better at writing programs and making them efficient is down to the person and what they taught themselves. But in principle you should've learned the theory of how computers work and algorithms that power data structures and data manipulation to solve tasks efficiently at University doing computer science. I am a "Computer Scientist" but because I don't actively keep that knowledge up to scratch (even though I do have it), I do not flaunt the title and just call myself a software developer, because that is basically what I am nowadays.

    • @alokbaluni8760
      @alokbaluni8760 3 ปีที่แล้ว +1

      @@TheStickofWar I am going to complete my Bachelors in computer science. So after that I can call myself computer scientist? Even I would probably be a Junior software developer.

  • @EXHellfire
    @EXHellfire 6 ปีที่แล้ว +1826

    real men solder the transistors on the chips themselves and make dedicated computers for each software they need

    • @PhilippeLoctaux
      @PhilippeLoctaux 4 ปีที่แล้ว +35

      steve wozniak is a real man than!

    • @matrixcode5945
      @matrixcode5945 4 ปีที่แล้ว +201

      imagine not mining your own metal to develop transistors yourself for every program you make

    • @stutavagrippa8690
      @stutavagrippa8690 4 ปีที่แล้ว +78

      What??? Real men use atoms and put them together to create transistors

    • @jmw1500
      @jmw1500 4 ปีที่แล้ว +22

      Also called fpga's..

    • @hasan7275
      @hasan7275 4 ปีที่แล้ว +1

      yes that’s why i’m doing CoE

  • @JohnPMiller
    @JohnPMiller 7 ปีที่แล้ว +776

    I wrote many games & system utilities in 6502 (and later 8088) assembly language. I still think it's important to understand what's actually running on the CPU (or GPU or TPU). Assembly is no longer my "go-to" language (more like "don't-go-there" language), but it still has a purpose. The best thing about C is its staying power and it's closeness to the hardware. I'm an electrical engineer.

    • @derpmarine216
      @derpmarine216 5 ปีที่แล้ว +25

      get Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust Rust

    • @RS-ls7mm
      @RS-ls7mm 5 ปีที่แล้ว +43

      The early computers had assembly language more or less designed for humans to use. The latest processors have gibberish instructions that were optimized for compiling. Some instructions look normal but a lot are obviously designed by a deranged AI. At work all the embedded processors were C or C++, even recently. Just way too many tools and very optimized.

    • @bhaskarm632
      @bhaskarm632 5 ปีที่แล้ว +7

      Why don't you have label when you said go-to lol

    • @EebstertheGreat
      @EebstertheGreat 5 ปีที่แล้ว +23

      I appreciate the ability of a high level interpreter to give me feedback when the code doesn't compile. Debugging in assembly sounds like self punishment.

    • @tanmaypanadi1414
      @tanmaypanadi1414 5 ปีที่แล้ว +4

      @@EebstertheGreat I would have just given up before I started learning computer science

  • @furrane
    @furrane 7 ปีที่แล้ว +592

    To explain the different levels of programming languages I like to use the analogy of someone that needs to go from point A to point B :
    - If you're a regular guy and you just want to go visit a friend, you could call a taxi, you don't have to do anything, he'll bring you to your destination, that's what high level programming languages do.
    - If you want to go to work everyday, you might want to have your own car, you'll need to know how to operate it but now you have a lot more flexibility.
    - If you're doing a rally, you need to excel at driving the car and you'll need to tweak the engine and everything under the hood, you have total control but need to spend a lot of time setting everything up. This is low level programming languages.
    There's not one option better than the other, it just depends on the job you want to do =)

    • @huckthatdish
      @huckthatdish 6 ปีที่แล้ว +25

      Though as computing power gets cheaper, services can be scaled at will since we don't need to mess with physical servers, etc, high level languages are generally becoming efficient enough for even most enterprise applications.

    • @beneditomartins6421
      @beneditomartins6421 6 ปีที่แล้ว +2

      ㅜㅡ ㅝㅐㅛ

    • @fiftysecondsatfordys8990
      @fiftysecondsatfordys8990 6 ปีที่แล้ว +51

      and binary is building the car from complete scratch

    • @RusticKey
      @RusticKey 6 ปีที่แล้ว +15

      @@fiftysecondsatfordys8990 More like assembly/machine language

    • @LowestofheDead
      @LowestofheDead 5 ปีที่แล้ว +55

      REAL MEN WALK FOR MAXIMUM CONTROL

  • @saeedbaig4249
    @saeedbaig4249 7 ปีที่แล้ว +5023

    1970s: "Real men use Assembly!"
    2010s: "Real men use C!"
    At this rate we'll be saying "Real men use Python!" by 2050.

    • @ct6502-c7w
      @ct6502-c7w 7 ปีที่แล้ว +227

      Saeed Baig Python isn't a real programming language. It's just a scripting language.

    • @lotrbuilders5041
      @lotrbuilders5041 6 ปีที่แล้ว +748

      ct92404 scripting Languages are a subset of programming languages

    • @graphics_travelers
      @graphics_travelers 6 ปีที่แล้ว +530

      I pay other people to use pre-built programs for me.

    • @oussemabouaneni992
      @oussemabouaneni992 6 ปีที่แล้ว +103

      woosh

    • @oussemabouaneni992
      @oussemabouaneni992 6 ปีที่แล้ว +121

      I know what a high level language is! The guy is joking. He's saying that even python is too low level for him. He only uses pre-built programs.

  • @VAXHeadroom
    @VAXHeadroom 7 ปีที่แล้ว +767

    I program satellite flight control systems for a living. We use C with *lightly* C++ just enough to abstract higher-level behaviors, but there are still some ASM subroutines for when we need to insure the exact order of operations to interact with the hardware. Our software that flew the LCROSS mission used 5% of the 100Mhz RAD750 (PPC core) processor.

    • @boiledelephant
      @boiledelephant 7 ปีที่แล้ว +49

      Interesting. What were the advantages for you at the time of using C rather than going more basic? Would the systems have been too time-consuming to write at an assembler level? Was there still an efficiency trade-off in using C instead of doing that?

    • @VAXHeadroom
      @VAXHeadroom 7 ปีที่แล้ว +307

      C compiles to a very predictable behavior in the machine code. Repeatability/determinism is key to embedded systems in general. We need to avoid any dynamic memory allocation at run-time since our systems need to operate for years without rebooting. If we allocate memory, it's generally at boot time and then we hold it indefinitely, but generally it's all statically allocated if possible so we know exactly where it is in memory for dumping/debugging should we ever have to (remotely from space!).
      It would take 100x as long to write in assembly although it would run probably 5x as fast... Our system is about 120,000 lines of C but that includes data declarations and comments. We count them since we have to maintain them just like actual code.

    • @chrisspencer6502
      @chrisspencer6502 7 ปีที่แล้ว +31

      UnTiedMusicStudio I'm about 30 years late on learning a proggraming language, as I dip in and out of languages, I'm learning one size never fits all.

    • @code_explorations
      @code_explorations 7 ปีที่แล้ว +25

      UnTiedMusicStudio Interesting. Why do you think it would be 5x faster if you wrote it all in assembler?

    • @VAXHeadroom
      @VAXHeadroom 7 ปีที่แล้ว +263

      you can do tricks by hand a compiler would never know to do, like overlapping instructions in a pipeline and hand-timing when to use the results or using multiple registers for partial computations and saving the partial results to be used later. It takes knowing and optimizing the particular architecture whereas a compiler has to handle every architecture. For instance the SPARC has 24 registers, but I've only ever seen the compiler use 4 or 5 of them at once. If you stored up all the partial results and then wrote the results all at once, you can force all the RAM writes to happen in one cache write drastically decreasing the stall time waiting for the write to complete. But you have to know the cache architecture to really take advantage of that...

  • @onijclink
    @onijclink 7 ปีที่แล้ว +230

    "the right programming language for the right task" wise words

  • @xhjb4ever
    @xhjb4ever 3 ปีที่แล้ว +63

    We need to appreciate how c has been around for around 50 years and is still one of the most popular and best programming languages

  • @displayoff
    @displayoff 7 ปีที่แล้ว +484

    I love this professor, always a joy to watch.

    • @johnpossum556
      @johnpossum556 7 ปีที่แล้ว +9

      He seems well rounded, too. To know that the impact drills at the store are not the kind used in industry is usually overlooked by a fellow of his age.

    • @dndboy13
      @dndboy13 7 ปีที่แล้ว +7

      my initial impression 'tolkien doing his lecture '36 on Beowulf but computers'

    • @steezyboi96
      @steezyboi96 6 ปีที่แล้ว

      ZOMBIE RITUAL

  • @JorvikBerserkir
    @JorvikBerserkir 5 ปีที่แล้ว +143

    There's something wonderful about seeing an older generation talking about computing, even when they are still so passionate

  • @EvilSandwich
    @EvilSandwich 3 ปีที่แล้ว +45

    I admit as someone that learned how to program on assembly, I actually found high-level languages slightly intimidating at first. I didn't feel comfortable relinquishing the absolute control over the byte and cycle count that assembly gave me. Or knowing exactly what was happening on the data and address pins of the CPU. I neurotically couldn't stand the idea of a black box in my programming. If I couldn't type in a piece of code and see it on an oscilloscope as it was running step by step, I was always worried something was going to go on that I couldn't control.
    In the end, the convenience and speed of it all won me over. But I still find myself embedding in pure assembly code in my C programming for the sake of optimization from time to time.

    • @BreytnerNascimento
      @BreytnerNascimento ปีที่แล้ว

      Aren't you losing to LLVM optimizations by trying to optimize manually?

    • @MavikBow
      @MavikBow ปีที่แล้ว

      I had the same issue when going from C to Java! Like, I was constantly making more and more objects even for simple tasks but I could never manually free memory from them. It felt so inefficient to do.

  • @kps2642
    @kps2642 7 ปีที่แล้ว +70

    It was my first language, i am thank full i learned it, the second language i learned was c++, then java, now i have good understanding of how it all works , thanks to C

  • @himselfe
    @himselfe 7 ปีที่แล้ว +503

    There is the argument however that as hardware gets better, programmers get lazier and software gets slower. Bloat is a terrible thing, and many programmers could do with learning to program within constraints. I absolutely agree with the idea of using the right tool for the job, but that should not be an excuse for doing things badly.

    • @mattbleakley7217
      @mattbleakley7217 6 ปีที่แล้ว +51

      himselfe it's been happening for a while now. Many more programs todat are browser based. Scripting languages are more popular and will perhaps continue to be in the future. Accessible and easy to write, but rarely optimised for performance

    • @kawas8190
      @kawas8190 6 ปีที่แล้ว +23

      Python is constricting.

    • @LowestofheDead
      @LowestofheDead 5 ปีที่แล้ว +97

      Resources used to be expensive and time cheap, but now they're the other way around. Your boss would rather have it ready now than in a year's time with efficient use of memory and processing power.

    • @baronvonschnellenstein2811
      @baronvonschnellenstein2811 5 ปีที่แล้ว

      @@kawas8190 pmsl!

    • @JohnDavidDunlap
      @JohnDavidDunlap 5 ปีที่แล้ว +15

      @@LowestofheDead This is the name of the game in my line of work. If you say something will be a little slow all they hear is: "The Amazon bill will be slightly higher than I was expecting. *yawn*"

  • @GFmanaic
    @GFmanaic 7 ปีที่แล้ว +859

    Java :«We're gonna ban pointers»
    Makes everything a pointer

    • @satannstuff
      @satannstuff 7 ปีที่แล้ว +94

      "At the user level"

    • @TheMrKeksLp
      @TheMrKeksLp 5 ปีที่แล้ว +72

      They're references not pointers

    • @JohnDavidDunlap
      @JohnDavidDunlap 5 ปีที่แล้ว +44

      At least I don't get Segfaults anymore.

    • @yoowon-hye9270
      @yoowon-hye9270 5 ปีที่แล้ว +25

      Errrrrrnnnkk you're wrong. Java only allows reference variables. No pointers at all.

    • @Locuslokalokuza
      @Locuslokalokuza 5 ปีที่แล้ว +6

      No pointers in Java.

  • @jbuchan12
    @jbuchan12 7 ปีที่แล้ว +31

    When I was starting out, I decided I never wanted to become a programmer. I tried a few languages and was away to stop it all together. Then I fell in love with C.. Changed everything for me.. I'm a happy software developer now. It just made so much sense...

    • @azhagurajaallinall126
      @azhagurajaallinall126 2 ปีที่แล้ว

      Wow .. i started with c/c++ from my highschool subjects,done few basic exercises.. learned Java after highschool/before joining college,lost my will to llearn for few years.. tried to learn more but never deep mastering in exact one.. finished college,still jobless for many reasons and one is "not fully mastering just one" & i am right here at c/c++ Again..
      So the thing is,could you tell me how much learned & the way you fall in love with C and please tell us about your story with C *😃
      Thank you in adavance
      21.08.2022 5:55 pm ist (edited from *)

    • @yonderalt2662
      @yonderalt2662 2 ปีที่แล้ว +1

      Maybe you "get" procedural programming over OOP?

    • @jbuchan12
      @jbuchan12 2 ปีที่แล้ว

      @@yonderalt2662 Potentially yes, although i do write OOP most of the time now. I did find it difficult learning classes etc at the beginning. Really not sure.

    • @puppergump4117
      @puppergump4117 ปีที่แล้ว

      @@jbuchan12 I started with C and got sick of the constant supplying a struct pointer to a function and calling init functions all the time. Classes and vectors are what I think would only benefit C and not hurt it.

  • @johndoe1909
    @johndoe1909 4 ปีที่แล้ว +46

    I still use c on a daily basis. Particularly when dealing with hardware. C is simply put, fantastic! And it's so simple!

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว +2

      C is NOT simple FFS.

    • @rockytom5889
      @rockytom5889 2 ปีที่แล้ว +13

      @@carldrogo9492
      It is simple. No joke. It does what you tell it to do and it does that and that alone. If you want to complicate your and your CPU's life with a language that has abstraction upon abstraction upon abstraction, be my guest, but that kind of language is a lot harder to interface with hardware than c.

    • @frazebean5117
      @frazebean5117 ปีที่แล้ว

      ​@@carldrogo9492C is simple, but it's not easy. There's a difference

    • @happygofishing
      @happygofishing ปีที่แล้ว

      ​​@@carldrogo9492simple!=easy. c can be memorised in a day, try that with c++ or rust?

  • @JiveDadson
    @JiveDadson 5 ปีที่แล้ว +92

    Assembly language is for wimps!Back in the day, we used to say, "Real men program the paper tape in binary with their belt buckles."

    • @rodericklenz5030
      @rodericklenz5030 4 ปีที่แล้ว +13

      Except it was all women doing that...

    • @MattMcIrvin
      @MattMcIrvin 4 ปีที่แล้ว +2

      They tied onions to their belts, which was the style at the time.

  • @Petertronic
    @Petertronic 7 ปีที่แล้ว +102

    Prof. Brailsford is the David Attenborough of computing!

    • @TheyRiseBand
      @TheyRiseBand 5 ปีที่แล้ว +8

      Here we see the modern Brogrammer, in its native environment...

  • @wolverine9632
    @wolverine9632 7 ปีที่แล้ว +498

    "Real Men Program In Assembly" I need that t-shirt!

    • @hakusansaku8800
      @hakusansaku8800 7 ปีที่แล้ว +16

      Guess it should be pretty popular around Silicon Valley

    • @techadon3648
      @techadon3648 7 ปีที่แล้ว +1

      bro the the first thing i thought of when he said that... amazing

    • @hattrickster33
      @hattrickster33 7 ปีที่แล้ว +7

      And on the back....and then test in production! hehe

    • @redblack8766
      @redblack8766 6 ปีที่แล้ว

      I could almost swear I saw this joke as a meme or a t-shirt somewhere already.

    • @amihartz
      @amihartz 6 ปีที่แล้ว +6

      I code in assembly but I'm also not a man. 🤔

  • @JoeBonez
    @JoeBonez 5 ปีที่แล้ว +13

    In 1979, I worked with a language called SPL (systems programming language) on the Hewlett-Packard 3000 minicomputers. It was an Algol derived language with an “assemble()” construct to allow in-line assembly. It was tons of fun.

  • @whatsmyname9742
    @whatsmyname9742 5 ปีที่แล้ว +70

    the only output i get using C
    .
    .
    .
    .
    .
    .
    segmentation fault (core dumped)

    • @Alex-dn7jq
      @Alex-dn7jq 5 ปีที่แล้ว +1

      That's why you don't use things like ***var

    • @jamesbra4410
      @jamesbra4410 4 ปีที่แล้ว +1

      Error on some line that isn't where the error is at

    • @amuslim6649
      @amuslim6649 4 ปีที่แล้ว

      You need a debugger lol

    • @werren894
      @werren894 3 ปีที่แล้ว +2

      that C error is binary, the translation is : "just don't do program and go apply for burger king employee or something"

  • @esra_erimez
    @esra_erimez 7 ปีที่แล้ว +133

    C is the best abstraction of hardware.

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว

      Best comment on this video!🔥

  • @CalamityX
    @CalamityX 7 ปีที่แล้ว +764

    Of course C is influential, I thought that would be easy to...
    C

    • @manofculture8666
      @manofculture8666 7 ปีที่แล้ว +20

      My house belongs to you now.

    • @tsunghan_yu
      @tsunghan_yu 6 ปีที่แล้ว +25

      I C what you did there

    • @amorestperpe
      @amorestperpe 4 ปีที่แล้ว +7

      This is why you have no friends

    • @topdnbass
      @topdnbass 3 ปีที่แล้ว

      Cheeky like of the day

  • @jan_harald
    @jan_harald 7 ปีที่แล้ว +206

    REAL men use hammers for EVERYTHING

    • @kyrandm6045
      @kyrandm6045 5 ปีที่แล้ว +1

      @Teemo Teemo 😂😂😂

    • @ravenofcode8072
      @ravenofcode8072 5 ปีที่แล้ว

      Jeremy Clarkson?

    • @SidheKnight
      @SidheKnight 4 ปีที่แล้ว +3

      *tries to eat soup with a hammer*

    • @theblancmange1265
      @theblancmange1265 4 ปีที่แล้ว +1

      @@AnuragJk The handle...

    • @jan_harald
      @jan_harald 3 ปีที่แล้ว

      @xeepromx UNREAL men use **AXES** for everything...

  • @mikeklaene4359
    @mikeklaene4359 7 ปีที่แล้ว +8

    As an 'old' guy who learned programming in 1969 on a 32K IBM 360 using Assembler, 'C' is the perfect high level language.
    Like Assembler, 'C' is predicated on the idea that the programmer actually knows that which they are doing. So many languages, starting with COBOL assume that the coder is an idiot and needs to be protected from himself. In the bad old days one of the biggest issues was both the slowness of the processor and that memory was so darn expensive.
    The first desk top system on which I programmed was the Singer / ICL 1500. It had an 8 bit processor done in TTL, a 256 character CRT that was memory mapped and had a maximum of 16K of semiconductor RAM. This was in 1975 but in some ways it was faster than the first IBM PCs.

  • @MyAce8
    @MyAce8 7 ปีที่แล้ว +72

    I am personally of the opinion that pointers should be available even if they are discouraged

    • @borabora739
      @borabora739 5 ปีที่แล้ว

      Ace shinigami xxxxxxxxxxx

  • @jpphoton
    @jpphoton 7 ปีที่แล้ว +19

    It's so nice to watch these gems.

  • @256byteram
    @256byteram 7 ปีที่แล้ว +256

    "If you don't know what the 'C' programming language is, it is an outgrowth of an earlier language called 'B'. That's all you need to know about 'C'." -- Chris Date on how Oracle is written in C, 10th Australian Computer Conference, 1983.
    If anyone wants I can link to the video of that keynote address.

    • @wesleyneo
      @wesleyneo 7 ปีที่แล้ว +23

      Found it for you. th-cam.com/video/VnNbddUMZQI/w-d-xo.htmlm37s Thanks for the reference.

    • @256byteram
      @256byteram 7 ปีที่แล้ว +3

      Yea! They're all very interesting from a historical point of view. Just a shame the tapes are deteriorating.

    • @LJdaentertainer
      @LJdaentertainer 7 ปีที่แล้ว +35

      "If anyone wants I can link to the video of that keynote address."
      why not just go ahead and post the link if you have it, instead of waiting for someone to ask for it?

    • @AtanasovPetar
      @AtanasovPetar 7 ปีที่แล้ว +4

      LJ so? Every time I hear a guy think he knows better than everyone else, I know he is a dumbass.

    • @absalomdraconis
      @absalomdraconis 7 ปีที่แล้ว +5

      Guy Maor : OO can be used quite reasonably in embedded systems, especially the more powerful modern ones. The problem was always a mixture of bad compilers, and bad practices (implementing the common FILE as an object is obvious and reasonable; implementing it as a 5 layer deep inheritance chain with full templatization and vitualization is a straight-forward yet horrendous practice).
      The real reason Torvalds banned C++ from the Linux kernel was not that the language was in any sense bad (it's warts are phenomenal, but that wasn't his reason), it was only because that reduced the propensity towards some truely bad practices.

  • @jesse291
    @jesse291 3 ปีที่แล้ว +12

    As an acutal tip for C programming. By default there is no optimisation done by the compiler. When using gcc you can use flags like "-O1, -O2" and the most extreme "-Ofast" If you actually want your C code to run faster than other languages. Its a typical C thing, it doesnt do anything you don't specify, so you also have to specify it to be fast...

  • @Onychoprion27
    @Onychoprion27 7 ปีที่แล้ว +11

    I love C. It's still my go-to for recreational programming.

  • @griml0gic420
    @griml0gic420 7 ปีที่แล้ว +10

    I'm an EE major and I love C ❤️Probably because it's so utilitarian and close to the hardware

  • @xplinux22
    @xplinux22 7 ปีที่แล้ว +28

    I personally am a huge fan of C. As difficult and problematic it can be when writing userland software, it's pretty much untouchable when it comes to systems level programming.
    I wonder what the Professor and the others at Computerphile think about Rust. I'm loving its compatibility with C, and it's ownership model for catching pointer errors at compile time seems extremely fascinating.

    • @philippezevenberg1332
      @philippezevenberg1332 3 ปีที่แล้ว

      whats rust?

    • @DanielQRT
      @DanielQRT 2 ปีที่แล้ว +1

      @@philippezevenberg1332 a relatively new, low-level language with c like syntax

    • @rockytom5889
      @rockytom5889 2 ปีที่แล้ว +1

      @@DanielQRT
      I wouldn't call it low level though, as it does have the ability to do garbage collection on its own, so clearly it abstracts a few things.

    • @DanielQRT
      @DanielQRT 2 ปีที่แล้ว +1

      @@rockytom5889 it doesn't have any garbage collection, it frees unused memory through RAII
      Edit: i don't think i am qualified enough to talk about this so nvm

  • @RetroRogersLab
    @RetroRogersLab ปีที่แล้ว +4

    In the mid '80s I programmed embedded Z80 industrial control systems. I used the Cromemco Z80 Macro Assembler to create macro libraries that worked very well for 10 years until the product line was discontinued. There were several real time tasks that required interrupts and I even implemented a round robin task scheduler that used a 10msec timer for task switching. Task switching was accomplished by pushing all the registers on the stack and saving the SP. Next the SP is loaded with the next task's SP, the registers are popped off the stack and finally, returning from the ISR.

  • @beechass4451
    @beechass4451 4 ปีที่แล้ว +35

    I was trying to code with Python, unfortunately it BIT me

  • @nuiben7579
    @nuiben7579 7 ปีที่แล้ว +59

    I prefer Hammurabi's code

    • @BisherTello
      @BisherTello 3 ปีที่แล้ว +1

      Underrated comment

  • @depthhistory
    @depthhistory 4 ปีที่แล้ว +12

    My experience was that after coding in C for a few years, I started thinking in C. I mean, I would plan out the functions directly in C. I loved it!

  • @MyTube4Utoo
    @MyTube4Utoo 7 ปีที่แล้ว +34

    I *love* this channel! This video was great too. Thank You.

  • @robideals685
    @robideals685 2 ปีที่แล้ว +1

    We need tons of videos from this generation to preserve their knowledge. Once it’s gone it will be gone. 😢

  • @Max_Flashheart
    @Max_Flashheart 7 ปีที่แล้ว +13

    Assembler was great for some specific things. C onwards was great. I could use my C Programming Account to change the priority on my Cobol programming account on the mini mainframe. I was finished 30 minutes before the other students... This was in the Mid to late 80's.

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว

      What do you mean by Account?

    • @Max_Flashheart
      @Max_Flashheart 3 ปีที่แล้ว

      @@carldrogo9492 Account = User. The C Programming Course privileges allowed increasing task priority on the Cobol Course Compiling Tasks for a user that was the trick.

  • @DefaultFlame
    @DefaultFlame ปีที่แล้ว +1

    This man is amazing.
    Edit: I have extremely limited experience with programming, mostly limited to games like Shenzhen I/O, TIS-100, and some limited scripting in a few other games, as well as a fascination with youtube channels like The Coding Train and Ben Eater.
    My, mostly uninformed, opinion is that Assembly is charming in the way you interact so closely with the hardware, while C has the simplicity of a higher level language than Assembly while not limiting your ability to interact with the hardware as much as other high level languages. It gives you the power to do amazing things, as well as allowing you to completely screw yourself over.
    (I find things like the story of Melvin Kaye absolutely intriguing.)

  • @seasong7655
    @seasong7655 6 ปีที่แล้ว +169

    It's over C. I HAVE THE HIGH LEVEL!

    • @EliteTester
      @EliteTester 6 ปีที่แล้ว +33

      -You underestimate my implementation.
      -Don't try it C.

    • @Alex-dn7jq
      @Alex-dn7jq 5 ปีที่แล้ว +2

      Vala be like

    • @katczinsky
      @katczinsky 5 ปีที่แล้ว +2

      Underrated

    • @dorgeshuun
      @dorgeshuun 4 ปีที่แล้ว +1

      So Anakin segfaulted ?

  • @w6wdh
    @w6wdh 2 ปีที่แล้ว +1

    A trick we used to optimize C programs, targeted to real time control in an embedded processor, was to try various ways of writing the C code and inspecting the assembly code produced by the C compiler, then choosing the C code and C compiler settings that produced the best assembly code.

  • @matteofalduto766
    @matteofalduto766 3 ปีที่แล้ว +66

    C is a high level language.
    Python: am I a joke to you?

    • @HectorVivero
      @HectorVivero 3 ปีที่แล้ว +12

      Python is a mask for C.

    • @NeutralEffect
      @NeutralEffect 3 ปีที่แล้ว +13

      It is, by definition. It's not very high on the abstraction ladder compared to Python or Haskell, but it's there.
      If you had to divide all existing programing languages into two groups by characteristic of your choice, you would probably choose the most important one. And that's exactly what computer scientists did. It's hard to disagree that the jump in abstraction level (and portability) from assemblers to high-level languages makes other abstractions look almost insignificant.

    • @valdemariv394
      @valdemariv394 3 ปีที่แล้ว +1

      Yes

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว +4

      It is by definition a high level language.

  • @nabilelqatib1548
    @nabilelqatib1548 7 ปีที่แล้ว +4

    I could listen to this man for hours.

  • @Mrdresden
    @Mrdresden 7 ปีที่แล้ว +3

    In a way I can relate with the end of the video as today I pushed into production a project that has taken 3 months, that reverse engineered a piece of communication software for a medical device we use at the laboratory where I work. That old software was 20 years old, proprietary, and did not run on relatively modern Win operating systems (sadly no Linux support). Try as we might, we were unable to get any help from the manufacturer, since according to them they had lost the source code and documentation years ago.
    Now, we have a rewrite in Java that is (relatively) system agnostic and we host a copy of our self in case we need to change or upgrade it.

  • @jan_harald
    @jan_harald 7 ปีที่แล้ว +12

    I have the original 2nd edition of "Programming in C" by K&R
    it is SO awesome, I instantly grew huge appreciation to them...

  • @gast128
    @gast128 7 ปีที่แล้ว +4

    Interesting to know is that Unix was first written in assembly. Only later it was rewritten in C which was crucial for its portability and popularity later on. C is a small language with a few concepts but sufficient to do pretty much anything. It lacks though some handy abstractions so I would always suggest to use C++, in which you can achieve the same performance as C if used correctly.

  • @BritishBeachcomber
    @BritishBeachcomber 2 ปีที่แล้ว +1

    Languages I've used: Machine Code, Assembler, Macro Assembler, Fortran, COBOL, Algol, Elliott 803 Autocode, BASIC, Pascal, C, C++, Forth, Java, JavaScript, Python, and several more. The one I keep going back to is C++, the most versatile language ever invented.

  • @BogdanSerban
    @BogdanSerban 5 ปีที่แล้ว +4

    Great explanation! C is great for low level stuff such as microcontrollers, operating systems, drivers and so on. But the development of programming languages over time and the added complexity of computers meant adding layers of abstraction over C to make it easier to program more advanced applications.

    • @F.T.L
      @F.T.L 2 ปีที่แล้ว

      Nope, that advanced programs are mostly using C/C++ libraries beneath, they have just ported them in the language for non expert C/C++ programmers to use them. Like threading in java, or opencv - tensorflow in python.

  • @markyboo
    @markyboo 6 ปีที่แล้ว

    I could listen to this fellow talk about any topic-computer related or not-for hours.

  • @bangkokmaco
    @bangkokmaco 4 ปีที่แล้ว +9

    One huge reason is that The C Programming Language, aka K&R, was probably the best computer book ever written

    • @47Mortuus
      @47Mortuus 4 ปีที่แล้ว +1

      Yeah - with a typo in every third sentence in the second edition.
      "Let is write a program"
      " We we wrote"

  • @kennethflorek8532
    @kennethflorek8532 7 ปีที่แล้ว +2

    The simple reason for c catching on so well, besides what is emphasized in this video, is that it is ingeniously designed to translate one to one into typical assembly language, still taking care of a lot of the mind-numbing and time consuming detail, and yet can passably resemble (with comments) an abstract computer language. Everything necessary to tipoff the compiler to what the assembly language program is meant to be is there. (Of course the compiler could be made cleverer, and nowadays is, but it doesn't have to be.) C compilers were meant to compile to assembly language, which would then be run through an assembler. ("Real programmers" could look at the assembly listing and adjust the c accordingly.)
    For example, the famous ++ symbol in c which C++ uses in its name: Computers generally have an increment instruction. Putting ++ after a variable translates into a corresponding assembly language statement that does exactly that. The name given the variable will translate into some position in memory (or a register or the stack.) The declaration of a variable name translates into an allocation statement in assembly language, the data type translates into the size of the allocation.
    Computer machine instructions are not so different that any machine could not be accommodated by a c compiler. (And the first c compiler for a new style machine will probably be a cross-compiler running on an some other type machine.) After you have the c compiler, you don't have to rewrite your application programs that were written in c. You just run them through the appropriate c compiler/assembler.
    (At least that's the idea.)

  • @Olibelus
    @Olibelus 7 ปีที่แล้ว +33

    Inspiring hearing him talk... so experienced and wise.

  • @4F2E4A2E
    @4F2E4A2E 3 ปีที่แล้ว +1

    What a blessing have you sir on TH-cam. Thanks for the wisdom, I truly appreciate.

  • @usurpareltrono
    @usurpareltrono 7 ปีที่แล้ว +6

    I see Prof. Brailsford, I click :D Keep 'em coming Computerphile!

  • @abbbb5625
    @abbbb5625 2 ปีที่แล้ว +2

    I implemented a small framework in C#, took me a few days and all was working fine. Without any apparent reason, I was not feeling happy about it. So I decided to implement the same functionality in C++ using STL. Work was more important and once finished, I was not feelign happy about it.
    Then I decided to implement the same framework functionality in C. Work was more important but the numbe of function was greatly reduced, had even to implement drivers with ioctl, but every day I felt it was the correct solution: the programming was more precise checking everything and not relying on external functions, the execution was extremely fast allowing to take my time to write well-proven functions.
    Now using pointers in C and folloiwng only one simple rule, the one to allocates is the one that frees memory.
    In my whole career and 40 years of experience, I notice that weak programming and weak algorithmic is coming from language like Java, Python and even C++ all these high level languages.
    C allows you to take time and because it will be fast allows you to implement correct full-proof fucntionalities.

  • @f4614n
    @f4614n 7 ปีที่แล้ว +154

    You can't call yourself a programmer unless you master assembler
    ...well at least in the 50s.

    • @Kniffel101
      @Kniffel101 7 ปีที่แล้ว +11

      Well... If you want to write good and especially fast software you'd at least have to be able to read/understand Assembly for debugging, even to this day. ;)

    • @satannstuff
      @satannstuff 7 ปีที่แล้ว +6

      Or the TI-84+ for that matter. Gotta love monopoly induced stagnation.

    • @evalsoftserver
      @evalsoftserver 7 ปีที่แล้ว +18

      YOU CAN'T CALL YOURSELF A PROGRAMMER TILL YOU MASTER ANALOG AND DIGITAL ELECTRONICS ALONG WITH BOOLEAN LINEAR ALGEBRA AND SET AND FUNCTION THEORY

    • @Kniffel101
      @Kniffel101 7 ปีที่แล้ว +18

      TheMedia-Hacker
      You can't expect to be taken seriously if you write in all CAPS! 😉

    • @Ghorda9
      @Ghorda9 7 ปีที่แล้ว +21

      You can't call your self a programmer if java script is your only language.

  • @BobMonsen
    @BobMonsen 7 ปีที่แล้ว +2

    Talking about simulators, and how they let legacy software work on more modern computers brings to mind an anecdote. BBN built the first nodes of the arpanet on a honeywell 316 minicomputer. These were called IMPs, or Interface Message Processors. The software was pretty complex, and was written in the assembly language of that system. When the honeywell 316 was no longer being produced, this presented a problem to the engineers at BBN, who wanted to continue to use the software. So, they built their own minicomputer that had loadable 'microcode', which simulated the environment that could run the IMP software. This was a pretty cool idea, and the original internet, which evolved from the arpanet, was basically run on these systems.

  • @JoaoPedro-dx6pn
    @JoaoPedro-dx6pn 6 ปีที่แล้ว +5

    Today no one use C, everyone says to me "C is hard to learn, and enterprises dont use it." But i LOVE C since my first meeting with it.

  • @mwirkk
    @mwirkk 3 ปีที่แล้ว +1

    In my 60yrs I've found that the best solution for any given situation is usually the simplest one that will do the job. In all my professional technology career I've always championed using the simplest technology for any particular solution delivery.

  • @kfftfuftur
    @kfftfuftur 6 ปีที่แล้ว +3

    Just because we are now able to run high level programming languages relatively fast doesn't mean the we now have to port all programme to high level languages so they can run at the same speed as they did 10 years ago, but require better hardware.

  • @NickEnchev
    @NickEnchev 5 ปีที่แล้ว

    I don't click the bell icon often, but when I do, its this channel.

  • @GogiRegion
    @GogiRegion 6 ปีที่แล้ว +12

    C has always been one of my favorite languages, even if there’s usually a better tool for the job. I typically use C++ for bigger projects, though, and occasionally Java (those are the holy trinity of languages to me). I know more languages, but always go back to those. Something about C and C++ just makes me want to program!

    • @stefanluginger3682
      @stefanluginger3682 5 ปีที่แล้ว +1

      Alexis Harper yes. Same for me. I love to use C. Even when I have to program Java and C++.

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว

      You're the MVP!

    • @philippezevenberg1332
      @philippezevenberg1332 3 ปีที่แล้ว

      its because once you understand the machine you kinda want to work with it more efficiently

  • @norelfarjun3554
    @norelfarjun3554 4 ปีที่แล้ว +1

    When you want to create a very large and complex system, sometimes it is better to give up the level of control you have over the small details, so that it is possible to focus on the broad system.
    I think it has a place of honor in our age, alongside lower-level programming

  • @captainswing4040
    @captainswing4040 4 ปีที่แล้ว +3

    A for apple
    B for ball
    C for speed

  • @MattGriffin1
    @MattGriffin1 7 ปีที่แล้ว +1

    I always enjoy videos from Prof. Brailsford, keep up the good work!

  • @DylanMaddocks
    @DylanMaddocks 4 ปีที่แล้ว +20

    throwback to the days when C was a high level language

    • @carldrogo9492
      @carldrogo9492 3 ปีที่แล้ว +1

      It has NEVER stopped being a high-level language!

  • @LightFykki
    @LightFykki 7 ปีที่แล้ว

    I really enjoy listening to this gentleman. His way of speaking and also contributing by historical references (which he lived through mind you, technology history is relatively young) is very intriguing.

  • @AdamFitton
    @AdamFitton 7 ปีที่แล้ว +26

    If it ain't broke, don't fix it.... Unless it is going to break in the future and when it does there will be no replacement parts or time to do it.

  • @scottfranco1962
    @scottfranco1962 5 ปีที่แล้ว +2

    I think the fact that Unix was written in C had a lot to do with the language's rise. It is impossible to know just how big a factor that was. By the time I got ahold of a Unix implementation (Unisoft on the 68000, 1982) I had written a stand-alone disc operating system in assembly that was modeled on Unix, or at least the notion of Unix universal serial I/O drivers (which Unix didn't and does not, in Linux, actually use, but BSD Unix does). The fact that Unix was written in HLL was very compelling. Computers and systems, even up to the PDP-11 were quite compact back then, and so was Unix. The PDP-11 had a 16 bit address limit, in bytes, even though it was a 16 bit machine, because it was byte addressable. If you look at the original source for Unix back then, you would be amazed both at how compact it was as well as how many odd tricks of the C language were used.
    In any case, in the 1980s the two main systems were Unix and the up and coming Windows franchise. The PC was mostly assembly then, but by the end of the 1980s was mostly C. Throughout the 80s and into the 90s Unix was considered a "real" operating system and Windows/DOS/Apple to be toys by comparison. Windows NT and then Mac OS X changed that, and by then we were firmly in a C based world.

  • @andremarques721
    @andremarques721 7 ปีที่แล้ว +295

    C is beautiful

    • @SuperNolane
      @SuperNolane 7 ปีที่แล้ว +46

      C++ is ugly

    • @SeriousAlexej
      @SeriousAlexej 7 ปีที่แล้ว +2

      Денис Мирзоев, no arguments? gtfo :)

    • @SuperNolane
      @SuperNolane 7 ปีที่แล้ว +3

      It's completely subjective. Go to school.

    • @LoyalSol
      @LoyalSol 7 ปีที่แล้ว +7

      All C languages are the devil. :)

    • @dipi71
      @dipi71 7 ปีที่แล้ว +8

      Whenever I can get away with it, I use Ruby. Whenever I need to be really fast, efficient and close to the metal, and I can get away with it, I use C. Whenever I need assembler, I feel like a real man. :-)

  • @Bandalorian
    @Bandalorian 4 ปีที่แล้ว +1

    Man the Cobol callout coming up on post-2020, was a fantastic read. Experience seeps out of this man's aura.

  • @goldwinger5434
    @goldwinger5434 6 ปีที่แล้ว +4

    As a programmer/software engineer/systems engineer I've written useful applications in BASIC, FORTRAN, COBOL, Pascal, Visual Basic, C, C++, and Assembler. Some languages are easier to write. Some are better for one thing or another. However, once C is mastered, it is the best overall language.
    I'm not a computer scientist, delving into the theoretical aspects of the application of computers and software. I'm a guy who spent most of his adult life in the trenches creating software.

  • @fritzschnitzmueller3768
    @fritzschnitzmueller3768 5 ปีที่แล้ว

    What a great video for us younger guys in their 20‘s trying to understand the evolution of programming languages..learnt quite a lot..thank u sit

  • @aum6032
    @aum6032 5 ปีที่แล้ว +9

    Real men never get into "Segmentation Fault"

  •  6 ปีที่แล้ว +1

    "Horses for courses", wow this is the simplest and most accurate way to tell to use the right tool for the task
    I want THIS on a t-shirt

  • @gloriascientiae7435
    @gloriascientiae7435 4 ปีที่แล้ว +3

    5:55
    tbh i love pointers.
    made me trick and magic whole systems together. (not in a proffesional context tho, so i can afford to make a few mistakes first, must add)

  • @commenter4799
    @commenter4799 3 ปีที่แล้ว +1

    The 1500 downvotes in 2021 are the "You aren't a real programmer unless you do what I do" crowd.

  • @l0renzz0
    @l0renzz0 7 ปีที่แล้ว +16

    Do you even C, bro?

  • @daviddupoise6443
    @daviddupoise6443 6 ปีที่แล้ว

    My favorite ComputerPhile ever. Not just because it has Ken & Dennis in it - but that helps

  • @jamessilva8331
    @jamessilva8331 4 ปีที่แล้ว +11

    9:22 OMG He called it saying that companies are still using COBOL! Who would have guessed that it would come back to bite us during COVID19

  • @spiderjuice9874
    @spiderjuice9874 5 ปีที่แล้ว

    I like all the 'Professor Brailsford' videos - professor, you must be a great teacher/supervisor I imagine. Greetings from a former chemist fumbling through coding in C!

  • @KPAdhikari
    @KPAdhikari 6 ปีที่แล้ว +7

    He used the term 'rai-son d'etre' but didn't know what that meant. So googled about it. Here is what I found:
    rai·son d'ê·tre /ˌrāzôn ˈdetrə/ noun
    unpunctuated: raison dêtre; noun: raison d'être; plural noun: raisons d'être
    the most important reason or purpose for someone or something's existence.
    "an institution whose raison d'être is public service broadcasting"
    Origin
    French, literally ‘reason for being.’

    • @zeusnitch
      @zeusnitch 5 ปีที่แล้ว +1

      "What is my raison d'être?"
      "You pass le beurre"
      "Zut"

  • @seeker-of-knowledge-777
    @seeker-of-knowledge-777 6 ปีที่แล้ว

    It's so true what he says on 8:55. I understand that there's huge costs involved in re-developing large-scale applications, but it just makes life much more difficult (and less secure) when you just leave it be and a "It's working well enough, let's not mess with it" attitude.

  • @NomoregoodnamesD8
    @NomoregoodnamesD8 7 ปีที่แล้ว +55

    What compiled the first compiler?

    • @ole4707
      @ole4707 7 ปีที่แล้ว +68

      NoHomeLike 192.168.8.1 Nothing. It was made by hand-writing assembly

    • @abigguitar
      @abigguitar 7 ปีที่แล้ว +11

      Assembly code

    • @Raatcharch
      @Raatcharch 7 ปีที่แล้ว +12

      Grace Hopper!

    • @stevenvanhulle7242
      @stevenvanhulle7242 7 ปีที่แล้ว +1

      IDK, but for instance the Delphi compiler (and the IDE) was written in Delphi.

    • @BobMonsen
      @BobMonsen 7 ปีที่แล้ว +33

      The first portable C compiler was written in C. It was called "The Portable C Compiler", and came from Bell labs. The idea was that for a new system with a new machine code, you would hack together a simple compiler for the subset of C that the portable C compiler used, using the new assembly language, which would then be used to compile the portable C compiler. After that, you had a fully functional compiler, compiled in C. Once you got the portable C compiler running, you could use it to compile itself, thereby getting more optimized code.

  • @paulmorissette5863
    @paulmorissette5863 3 ปีที่แล้ว

    Reasonably comprehensive, understandable and gets the job done.

  • @gnagyusa
    @gnagyusa 7 ปีที่แล้ว +59

    C has the perfect level of abstraction from the hardware. It's high-enough to be 100% portable, and human-readable, but it's low-enough to be efficient for performance- and memory use sensitive applications.
    And, it's much easier to understand other people's code than in something like C++, where you can even overwrite operators (what I call an encryption / obfuscation scheme, rather than a helpful language feature). With C99 and later, you can also create an excellent object-oriented runtime, way better than C++.

    • @MrAbrazildo
      @MrAbrazildo 7 ปีที่แล้ว

      I already tryied to code that, with C99. It worked, for almost all OO features, but it was way worse than C++.

    • @sebastianramadan8393
      @sebastianramadan8393 7 ปีที่แล้ว +1

      Problem...
      int lol(); // "The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied." -- C11/6.7.6.3p14
      int main(int argc, char **argv) {
      alarm(rand());
      signal(SIGALRM, exit); // sure to cause confusion!
      ((int (*)(int, char **)) lol)(argc, argv); // ok, so this might be UB, but it commonly works, and when it doesn't work it's sure to cause as much confusion as the above...
      }
      #define main lol /* and this completes the mess! */

    • @Hopsonn
      @Hopsonn 7 ปีที่แล้ว +12

      Like it was said in the video, you should use the right tool for the job.
      Operator overloading is very useful for general maths, like matrices, vectors etc
      I'd rather do
      newMatrix = matrix * matrix2;
      over
      matrix.multiply(matrix2);
      or in C it would be
      multiply_matrices(&matrix, &matrix2);
      and the power of operators even allows you do chain them together, and even allows the use of Bidmas lol
      Obviously, features get abused to the point where you might think it is bad, but I haven't really seen it used incorrectly.
      Also, modern C++ is probably more readable than modern C :P

    • @sebastianramadan8393
      @sebastianramadan8393 7 ปีที่แล้ว +1

      More problems:
      int (*memcpy_lol)(void *, void *, size_t) = (int (*)()) strncpy;
      int (*strncpy_lol(void *, void *, size_t) = (int (*)()) memcpy;
      #define memcpy memcpy_lol
      #define strncpy strncpy_lol
      #define strlen(str) (strlen(str) + (rand() % 2) - (rand() % 2))
      #undef getc
      #define getc rand
      #define size_t char /* I heard you want to store the return value of strlen into a size_t?! */
      #define int char /* ... or an int?! */
      #define float char /* ... or a float?! */

    • @philipstuckey4922
      @philipstuckey4922 7 ปีที่แล้ว +2

      Sebastian Ramadan you monster

  • @LFSPharaoh
    @LFSPharaoh 6 ปีที่แล้ว +2

    This is the kind of old (I'll say seasoned) knowledge that's timeless and that needs to be preserved, told, written, explained etc but is only really available from the early IT experts like Professor Brailsford. He and others like him hold a wealth of knowledge and wisdom that most people don't even think or care about today because things have advanced so much that it might not be worth their time to take time out and learn about this stuff, even though it's still fundamentally important because a lot of the time it's the "backbone" of how things are able to actually "work" as they do today.

  • @TaberIV
    @TaberIV 7 ปีที่แล้ว +147

    I am a CS major and my algorithms and data structures class was for some god forsaken reason taught in C lol. That was a bit of a headache, but I am still proud of my fully recursive AVL Tree in C.

    • @daviddupoise6443
      @daviddupoise6443 7 ปีที่แล้ว +32

      Would you prefer the shackles of PASCAL?

    • @TaberIV
      @TaberIV 7 ปีที่แล้ว +1

      David Dupoise no thanks!

    • @thenayancat8802
      @thenayancat8802 7 ปีที่แล้ว +73

      Honestly it makes sense to code such things in C in university. Now, implementing algorithms in higher level languages must be a walk in the park! Better to do difficult things in uni imo

    • @SuperNolane
      @SuperNolane 7 ปีที่แล้ว +4

      Recursive algorithms for trees are dangerous as you can never know if stack is big enough.

    • @sneedis9909
      @sneedis9909 7 ปีที่แล้ว +80

      everyone learns data structures in c. whats the point of learning them in a language that handles all that stuff for you.

  • @Mephistel
    @Mephistel 7 ปีที่แล้ว +2

    I really like this video, and I loved the videos with Brian Kernighan. Any chance we could get say, Bjarne Stroustrup to talk about C++, or Guido van Rossum to talk about Python, the history of it, the design goals, etc?

  • @raisinbiscuit2282
    @raisinbiscuit2282 7 ปีที่แล้ว +87

    Because you can't spell computer without it

    • @MegaRBN14
      @MegaRBN14 6 ปีที่แล้ว +7

      Komputer

    • @donsurlylyte
      @donsurlylyte 5 ปีที่แล้ว

      there is no i in programming, o, wait, there is

  • @gravy7861_
    @gravy7861_ 4 ปีที่แล้ว

    I could listen to this guy talk all day

  • @ray-al15
    @ray-al15 7 ปีที่แล้ว +162

    What! Assembly is for women
    Real men use binary!

    • @MalamIbnMalam
      @MalamIbnMalam 7 ปีที่แล้ว +27

      Sexist

    • @mechamogus
      @mechamogus 7 ปีที่แล้ว +12

      Real man use hardware description language. Not any kind of "software" programming language (too high level), in which you just need to figure out the instructions.

    • @ray-al15
      @ray-al15 7 ปีที่แล้ว +2

      lol, you mean butterflies are for women, real men use flowers.

    • @avisian8063
      @avisian8063 6 ปีที่แล้ว +26

      Sexism is for the weak. Real men can feel confident and capable without belittling women.

    • @starlwe
      @starlwe 6 ปีที่แล้ว +1

      Yeah, VHDL all the way. For something that specifies digital logic, VHDL is surprisingly easy to read, even for those who never used it before. I like it far better than Verilog, in this case more verbose is better. The more concise Verilog is actually a detriment, because HDL is not a programming language, the resulting digital logic from synthesis is the same whether or not the HDL is verbose. But the ease of understanding in HDL is very important as other people can look at it and go "ah I understand." Plus VHDL makes plug and play very easy by separating the interface (the entity with it's ports) from its implementation (the behavioral / architecture). That's actually like OOP, long before OOP was a thing.

  • @dolos_kuroshoe
    @dolos_kuroshoe 3 ปีที่แล้ว +1

    As someone learning ARM, seeing that C can handle it made me smile.

  • @Lost_01
    @Lost_01 6 ปีที่แล้ว +3

    Ha yes I can say for sure there are still COBOL mainframes in use.

  • @JetNmyFuture
    @JetNmyFuture 7 ปีที่แล้ว +1

    I mainly do embedded systems where C is the only practical option in many cases. The language is something I have learned to live with, but it is a constant reminder of its age. At the end of the day, however, I can make an application that is very efficient and small - even without assembly.
    I am glad I was forced to learn it.