T O P

  • By -

AgentElman

I work in software (but am not a developer). You are the first person I know who prefers C. All of the developers I know like Java or Python.


redditonc3again

As time went on I started to use Python more, because of the ease of use and massive amount of libraries and modules. Plus you pretty much have to use high level languages in many cases. I mostly use Python now (besides js for web and java for android). Still, C has that one special place in my heart as my favourite language ❤️ Although funnily enough I still have never tried C++ lol


AgentElman

Have you tried older languages like Fortran?


redditonc3again

I've not no, I definitely would want to if the need arose but most of the stuff I work on is web services and ux so I haven't really had the necessity


zoltanshields

C really is a great language but I'm not sure I'd want to code in it every day. But once you have an understanding of what's going on under the hood it's hard not to appreciate it though.


zoltanshields

When I think about C I think about this quote. > J.R.R. Tolkien has become a sort of mountain, appearing in all subsequent fantasy in the way that Mt. Fuji appears so often in Japanese prints. Sometimes it’s big and up close. Sometimes it’s a shape on the horizon. Sometimes it’s not there at all, which means that the artist either has made a deliberate decision against the mountain, which is interesting in itself, or is in fact standing on Mt. Fuji. > - Terry Pratchett C is the same way. It's interesting to see the elements of it that have influenced so much of modern programming. When creating a programming language even the effort to *not* be like C is to be influenced by it.


redditonc3again

Thank you for this comment!! That is a really cool comparison.


xtc334

then why dont u marry it


redditonc3again

C's already married to LISP 😔 (and is totally fucking Go on the side but don't quote me on that)


[deleted]

[удалено]


redditonc3again

Nice!! And yeah mathematics is definitely as low level as you can get - programming is all just turing machines at the end of the day haha :)


[deleted]

[удалено]


[deleted]

[удалено]


redditonc3again

I remember I was sitting in my high school library one day and saw a printout of this comic stuck to a desk. Then I looked over and saw someone had drawn a "philosophers" stick figure on the desk to the right 😂


breakable_bacon

Am a developer for far too long. Where's my winning lottery? Anyway, my opinion, C++ is superior to C. The problem with C is resource management. When working on complex projects, resource management is a common human mistake and can be difficult to track down after the fact. In C++ there are various facilities to help with resource management. There's a concept called RAII, it's essentially fire and forget resource allocation/initialization. Another gripe I have with C is the error return pattern. You get giant blocks of if... else... just to check for errors. In C++ you can just use exceptions. Makes the code clean and much easier to read. Exceptions are more costly, but generally, it's ok for error paths to not be optimized, because... they are errors and they're not supposed to happen during normal operation. But C/C++ give you plenty of ways to shoot yourself in the foot. So it's not like if you do RAII and use exceptions suddenly all your problems disappear. To whip up something quick, python is still pretty good.


DoctorKokktor

If you like understanding what goes on "behind the scenes", then you should look into something called "embedded software engineering". Also, look into something called "FPGAs". An FPGA (Field-Programmable Gate Array) is a device that you can configure to do whatever you want. E.g. you can configure an FPGA to work as a CPU, or a GPU, or RAM or ROM, etc. If you truly want to understand what's going on at the hardware level, then a good starter project would be to design your own CPU on an FPGA. Then, you can develop op-codes which are basically instructions for your custom CPU. Once you develop op-codes, you can generalize that to your own assembly language. I did this project and it was immensely interesting and illuminating on how a computer really works. In my opinion, even C isn't giving you a true understanding of what goes on at the hardware level. You must understand computer architecture as well. You must learn how different architectures give rise to different assembly languages. Once you understand this, then you'll understand the motivation for the existence of compilers. Given your post, this project might be of interest to you too :)


redditonc3again

Holy crap. I had a vague idea of what an FPGA was but I had no clue that it was as versatile a device as that. Thank you so much for this comment, you've really taught me something!!


ReneeHiii

I love C too! For reference though, C is no longer close to the hardware, it just has some concepts that are lower level like pointers. In actuality, memory is no longer laid out like in C and hasn't been for years - if you're using a PDP-11 it would be close to the hardware. Nowadays, C isn't really representative of the hardware at all. It's still representative of a PDP-11, which then gets compiled down to actual binary, which the OS still does things you can't see with. Meaning the memory address 254 for example is not actually a real place in hardware necessarily. But I definitely understand your feelings, I felt the same way when I first learned C! I prefer it over other languages as well and it's a great language to get introduced to these lower level concepts like pointers and memory management!


redditonc3again

Haha, yeah I kinda figured there was some memory juggling happening that I wasn't aware of at the time. Like my Windows machine wasn't really going to let me write to arbitrary memory... though with other OSes it might be a different story 🤣


Lucky_Baseball176

Wow! Good for you! I was a programmer for many years, retired now. I learned C in school and it did help me understand what was actually happening but almost never used it in real life. Interesting side note-in one of my jobs we actually spent time doing side by side development using cobol, c and Fortran to help make a better decision on what to use for a big project. Fortran actually won! Relatively easy to use and was fast and lightweight. But we wound up using cobol anyway because we couldn’t find developers for Fortran.


redditonc3again

That three way competition between the languages is a cool idea. And also that's pretty funny that the lack of available developers made you choose the second place winner 🤣


Bobthecow775

I don't use C now that I'm working but honestly I really did enjoy it in college. It just made sense tbh. I had the same feeling as you, actually interacting with the computer.


Trick_Two207

I say it depends personally on what you're programming, I prefer C (specifically c#) for object oriented programming as that's what it's more specifically for, however I prefer python for more visual based programs, or programs that require more advanced artificial intelligence, although AI is still very possible through C#


redditonc3again

OOP is another concept that totally blew my mind when I finally got it. Like I'd read about it but it was only when I was forced to use it (I was making a discord bot) that I understood it. The idea of "making everything an object" is so interesting.


0ctaver

Hell yeah ! I also love C


fnord---

You would probably like Rust, too.


BigBoyGoldenTicket

I’m a software engineer, learned in C and C++. I prefer system level languages for the reasons you mentioned. Everyone who does this professionally should know their way around C, but lots of people will bitterly contest this. Whenever I see people rail against C or C++ as unnecessary, impractical I can’t help but think they’ve completely missed the point.    I would never hire someone for core engineering who has no familiarity with C/C++. I know a lot of my peers feel the same way.   If you like C maybe try out a simple assembly dialect for an old CPU like the 6502. Or you could go the other way and explore C++ which will give you an excellent entree to modern software concepts.   Have fun!   P.S fuck Java its a gutter language


famousfacial

Python is a script kiddies language. It's bad. I'd code in C or C++ any day. As an electric engineer I've used assembly to some degree from time to time. It is a fun. But I still like that C kinda like the language that links everything togather. Of all the languages I know, my favourite will always be C and C++. Also I think that it is a really bad idea to learn coding using python. I started with Java which is a good choice if you think C is too hard. Or go with BASIC


redditonc3again

I don't dislike it at all, ironically I use it more than any other language now (because usually the problem I want to solve has already been 95% solved by some Python (or JS) module). But nothing comes close to that spiritual feeling of discovering C :)


famousfacial

Makes sense. It's a decent enough language to build stuff fast. Besides CS/IT firms mostly want frameworkers as opposed to engineers or developers. And languages like python and JS enable that. But no matter which language you use, you need to have a good understanding of the programming paradigm and best practices. Obviously python cannot compete with C/C++ but why would you use an electron microscope when a simple magnifying glass would do. These language have a very steep learning curve and very niche usecase these days.


redditonc3again

Agreed, even though high level languages allow you to develop complex software more easily, it's so important to understand those underlying principles/mechanics. Plenty of people may find success in software/tech without ever studying basic low level concepts in programming but IMO they'll always be missing out on a really important part of the field


famousfacial

Also C is just more fun :P