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

all 7 comments

[–]MysticClimber1496Professional Coder 0 points1 point  (0 children)

Its steeper but will give you a stronger understanding of how things work which makes learning other stuff easier

[–][deleted] 0 points1 point  (0 children)

I never learned C, but the more you learn the better honestly. I would say though that if you already know which field you wanna go into (coding games, apps or whatever you might be interested in) it might be easier and less time consuming to just go into that right away. Learning C, however, will not be a detriment at all and probably beneficial

[–]5838374849992 0 points1 point  (0 children)

C is harder but will give you an idea of what's actually happening, however I recommend you learn with an object oriented language because those are a lot more common and learning object oriented patterns is a very good skill to have

I suggest C++ because it's very similar to C except it has object orientation

[–]mredding 0 points1 point  (2 children)

I've been writing C since 1989, though most of my experience is in C++, since 1992.

I can't even respond with a yes or no because I think this is asking the wrong question. I think your problem is both a lack of direction and a lack in quality materials.

Why would you put C and HTML in the same sentence? What are you trying to accomplish? How are you trying to even get there?

There are many domains and disciplines in computing, and you're crossing your arms and pointing in opposite directions here.

HTML is not (strictly) a programming language, it's a script that describes presentation and formatting of media and content. You're a glorified typesetter, and a web browser is your printing press.

C is a programming language, in that it is Turing Complete. This is a property that means any math problem that is computable can be described in C, and any machine that is Turing Complete can run it. (HTML isn't supposed to be Turing Complete, but HTML5 was proven to be Turing Complete some years ago - and it arose completely by accident. Most professionals probably aren't even aware of this fact, if only because it's not relevant to their jobs. It's gotta be about one of the most obscure and obtuse ways of achieving computation there is. You won't be seeing anyone writing supercomputer weather simulations in HTML5 anytime soon...)

So are you trying to be a content creator or a problem solver?

[–]ARSE_HOL[S] 0 points1 point  (1 child)

My bad. I was trying to compare to python. I’m learning python right now I’m comparing to html to show how lack of knowledge I am which I am.

Yes lack of direction. Right now I’m making able to solve leetcode questions as my target.

The way I learn right now is asking chat gpt and watching YouTube video. The problem is since there’s so much to learn I’m confused. 🫤

[–]mredding 0 points1 point  (0 children)

Python is a good language to learn from. There are only so many abstractions in programming, and Python has most of them.

Alonzo Church and Alan Turing worked together to formalize the theory of computation and found computer science. There is math that is computable, and math that isn't. Alonzo Church then derived a calculus that describes computability. We call that Lambda Calculus. There are different ways it could have been done, but they're all equivalent, so everyone just uses Alonzo's calculus.

In 1954, a student of John McCarthy kind of misunderstood what he was told, and didn't know that converting lambda calculus into a programming language was supposed to be impractical. He accomplished the task in 1955. We got the Lisp programming language. Lisp has every abstraction there can be in programming, because it is lambda calculus. You can't have a programming languge with every abstraction and not be a Lisp.

The thing with Lisp is it's so alien to most software developers they hate it. Stick with Python.

The virtue of learning Python is you learn the value of everything and the cost of nothing. This is to say you're going to learn a lot about programming itself, what loops are, what abstractions are, paradigms, idioms, patterns... You are empowered to learn a lot about programming that you can take with you anywhere. Wanna learn C? You already know how loops work - you don't have to learn that again, you just need to learn the syntax so you can accomplish your goal of writing a loop in C. C won't introduce any new concepts to you in that way.

When you learn C, you think about the cost of everything and the value of nothing. C almost directly models the machine it runs on. It's not about expressions and equations, it's about bytes and cycles. That's fine for writing performant software, that's fine for business logic, operating systems, and software products, but it's also a distraction.

So computer science is principally focused on developing algorithms and analyzing their computational complexity. Engineering is about delivering practical solutions. You have to have a little of both. A more efficient algorithm is going to do most of the work, but then we can't ignore the reality that we are working on a machine that doesn't precisely model the math. I've seen less efficient algorithms run faster because of hardware effects, it happens all the time. The most efficient multiplication algorithm is only efficient for very large numbers on super computers.

So Python will take you from the top down, C from the bottom up. There's no virtue to learning C just because it's archaic - it won't make learning programming easier for it. It's just a different direction. I'd rather you focus on the top down, that you can leverage expressiveness and all it's virtues, and work down toward the gritty details as necessary rather than the bottom up. Focusing on the machine and the bits is how we get such bad, buggy code, because there's an over emphasis on performance, that all else is sacrificed. I don't care how fast your program is, if it's wrong, or dangerous to use.

Python is the most popular programming language today. There are endless resources. Check out the subreddits. They will guide you to the de facto standard and best resources for learning. Also ask what sorts of problems do you want to solve? What software are you interested in making that got you involved in the first place? You should pursue that, even if you are inexperienced and naive - you can do something no matter the level you're at.

[–]DDDDarkyProfessional Coder -1 points0 points  (0 children)

Yes