Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
@devs yes
@AndSoWeCode no, because people usually give up while learning assembly and think that programming is not their cup of tea. -
devs30478y@AndSoWeCode I believe that most will code C at some point. Well, I cannot be sure, but I believe that most will never code assembly. Of course some will, but I believe it’s much more limited -
devs30478y@AndSoWeCode and as @NOOB4LIFE says, a lot people will probably give up if they start with assembly -
I'm of the opinion that you should begin by looking at computer architecture and why an instruction set is the way it is. Then move to assembly, then C. It's all about building from the bottom up and thinking how the original computer architects and programmers thought about things.
-
Starting with assembly actaully sounds like the best way if you have enough time and dedication. If you dont care about the inner workings and/or dont have the time dedication you should start with C or even C++. Java is just too high level and specific to start with. Its compilation process for example is kind of unusual and wonky.
-
@milkybarkid yup, we had assembly after java, which makes no sense at all, but assembly itself is the very best way to start off.
Simple stuff like MU0 to get you started and something like a SBC-86 to try some more advanced shit is more than enough and you learn to actually write efficient programs in C or higher.
Of course, assembly is a random pain in the ass sometimes because it seems illogical to not be able to store the value of an 8 bit register into a 16 bit register but as soon as you know how a cpu actually does shit its pretty logical and easy.
Every starting point is hard and has its obstacles. As if nobody ever fucked up pointers in arrays of strings in plain c..^^ -
antic16178yI used to code in C a lot, then I switched to C++ for many years. The other day I was kinda irked at how many copies of my class template was needlessly duplicated in the output executable. I wondered, there has to be a way... Maybe a void pointer? That loses some type safety, but that's the trade-off. Then I wondered, "but how do I iterate over an array of unknown size?" And then me from the past came along with a large trout and smacked me with it and said "BY PASSING THE SIZE OF THE ARRAY ELEMENT, NUMB NUTS!"
I have been utterly spoiled by not only syntactic sugar, but by all the other abstractions as well. So I'll see your rant and raise you another:
All programmers should learn C and code in it once in a while. Understanding how hardware actually works by using such a low level language is incredibly helpful. And at least write a function or two in assembly just to drive the concepts home. -
bahua124698yOO should come later, once the core principles of programming are learned. C and Perl are great for building that foundation. -
But not everyone will need to work on a low level.
Software has become so diverse that some people never need to touch C++ and can spend their whole lives using just Javascript you know.
Learning C doesnt benefit you on an abstract level.
I think python is better
not mainly because it's easier but because
due to the easiness of its syntax students can focus more on learning the mentality of programming without worrying about the details of what's happening under the hood.
Then once people gain that new perspective of the world. Then teach them whatever you want.
I studied in a university where they taught C first. It's a disaster. After my year they hanged the curriculum from C to Python for the programming introduction.
The performance of the average student improved a lot.
TLDR;
My opinion is simple:
Teach first the logic and perspective of programming.
Then the inner workings. -
nerdofcode38yI think C++ is a much better language to start with... that way they are somewhat familiar with C and it is very simple to move from languages
-
devs30478y@brasorexia @AndSoWeCode In some way I agree. Sure, don’t jump right out for C. I think it’s good to learn about the abstraction first. Learn how to use branches, loops, method calls. But I don’t think python and java are great for that.
For complete beginners I think a great way is to start of with graphical programming. That way you don’t have to think about syntax at all.
Then, if you start on a CS education, I think it’s good to learn C early on.
I believe that if js or python is good enough for the student, a CS education might be a bit overkill. To me, CS is about knowing about the inner workings of the CPU etc. -
kieni1728y@AndSoWeCode I'm sorry, but I tend to disagree.
High level languages like C#, Java, Swift, PHP, Python (and many more) inherit an awful lot from "old" low level languages. Learning them (at least the basics) leads to a better understanding of both the programming language you prefer and how everything is working together.
Anyone, who calls him- /herself a "real programmer" (and NOT doing web development exclusively) should have at least a *basic* understanding of low level languages, ISAs and Operating Systems. Not because they'll *need* it to write software, but because it helps them to write *better* software.
The more we focus on high level languages and huge frameworks alone, the more the knowledge of how to write them in the first place disappears.
But that's just *my* opinion. Feel free to shun me for that :) -
aaxa22008y@devs I completely agree.
I kinda regret that I learned Java as my first language.
Luckily I had an awesome professor last year who taught in functional programming which kinda requires you to know what a CPU consists of, so he taught us that as well.
I still wish I had started out with C though -
@devs You make a good point
and I like the Graphical programming idea.
But I disagree with your statement on CS
Computer Science is more theoretical and therefore the abstract ideas are what matters.
C is more for engineers (ie. Computer Engineering), people who need to know the inner workings of a computer.
Computer Science is about the algorithms. You don't need to know pointers to do that. You can just imagine some concepts and use the higher level tools to implement them and test. Unless of course your focus is on the low level stuff. I dunno anymore lol.
Full disclosure C is my all time favorite language, along with Python.
So I have nothing against C or low level things. I'm just trying to speak for what I think will he better for students. Because I'm tired of seeing people's minds fucked from jumping into C and The low level details too fast. -
kieni1728y@AndSoWeCode The "discrimination" card? Cool :)
But seriously, you got it wrong. It wasn't meant to discriminate, but to distinguish.
As I pointed out in my previous comment, you don't have to learn C to perfection. It's about understanding the language, that today is still one of the foundations to almost any modern programming language and the things we work with on a daily basis (take a look at your own profile: how many of the languages listed there, have a common ancestor named C?)
Same goes for Operating Systems: concepts like threading or sending messages to other instances are key to things like GUIs.
I'm oversimplifying, but I hope you get my idea. And I agree, that those are sometimes tough and dry things to learn, but it is part of the whole big realm of CS. Depending on what you've signed up for, you'll have to deal with it. -
devs30478y@AndSoWeCode I might be mixing computer engineering and science a bit. I’m technically studying engineering, however we still have a lot of algorithm stuff and so on.
We started out with java where we developed apps/rest services/small games etc. Then we started with C when learning about CPUs/GPUs (in high performance computing and parallel systems).
A lot of the others from my team struggles quite a bit transitioning from java to C, so that is what my personal opinion was based on. -
kieni1728y@AndSoWeCode Okay, that's enough. What level of retarded are you? YOU started out with the "real programmer" thing, a few comments ago; I merely picked it up to make a point and now you're holding it against me? Seriously?
Also, it doesn't seem like you're reading the comments properly. I never said, that you should use C to teach threading. I just implied, that the concept of threading is something usually taught as part of operating systems theory.
From what you've been writing so far in this thread, you sound like an angry, disappointed kid who has had some bad experience with learning a language (in this case C) and now goes around telling everyone how hard and bad it is. To me, THAT sounds like discrimination.
There are reasons, why certain things are taught in certain ways. Deal with it or start your own course to teach it differently.
I'd like to apologise to the other readers of this thread. Usually, I'm a well mannered and nice guy. :) -
kieni1728y@AndSoWeCode My gosh, you're right. Let me start over:
- you can basically teach anything CS-related in almost any programming language, it doesn't have to be C.
- languages with a higher abstraction level lead to impressive results much faster (and easier), than lower level abstraction languages.
- aforementioned languages with a higher abstraction level are usually easier to learn.
- forcing C doesn't seem to be fair, but it is one of the important foundations to modern programming.
- CS related books use an awful lot of C for that exact reason.
- I am from Austria, writing in English (not my first language). Why do I have to learn to read, speak and write in English? Because it's the language of computing/programming worldwide. If I don't learn it, I'm excluding myself from a huge part of this scene. Any similarities here to C?
- You're asking some valid questions, providing some good reasons, but at the same time fail to accept arguments or opinions differing from your own. -
kieni1728y@RantSomeWhere I apologise, I'm usually not like that. But when someone's taking something you said out of context, ignoring the content of the actual argument and uses the part taken out of context to put words in your mouth, it's not a discussion. -
@RantSomeWhere @AndSoWeCode Well low-level languages like asm or even c force you to think first.
Especially asm, as you often need to know what you gonna write 12 lines later.
The higher the level, the more "forgiving" the runtime is. And imho this isn't necessarily a good thing and it'll stop you more and more from think first - code later, which is the better approach in the real world.^^
E.g. I have massive problems with Unity, mostly because there are 25 ways to do it right, 5 ways to do it semi-right and 100 ways to do it wrong.:b -
kieni1728y@AndSoWeCode
- "Writing thousands of lines for a simple program is not appealing"
Seconded, but as languages are created with a certain purpose in mind, it's a choice of "language for task".
- "C punishes you hard for mistakes that are easily made"
Please define "punishes you hard". Every language punishes you in some way for making mistakes. Sometimes it's as simple as an error message, sometimes it's your program crashing with no further information.
- "[...] C is not simpler, but more complex, as you have to take care of more details when programming"
Higher languages tend to have more built-in types and larger default libraries, as they abstract more of the hardware, operating system and sometimes even more. That enables programmers to do more with less code. But the work has to be done somewhere. Either directly by the programmer or in the included library. Using an appropriate library/framework, low level languages like C can also follow the idea of "write less, do more". -
devs30478yIf someone is completely new to programming, and haven’t caught the interest yet, I see why you would loose interest quickly with C.
I myself started with VB.net because it’s easier then C#. Then moved on to C#, PHP, JS, Java, Elixir, C etc.
There are a few things though that only languages as C (and similar) can teach.
Java can’t teach CPU cache, memory usage optimisation, high performance computing etc.
At my university we started out with java. Now we have a course called parallel systems, which focuses on HPC primarily. A lot of people now struggle with C to even understand what is going on
Related Rants

Everyone should start with C rather than java/C#/python (or alike). Much easier to move from C to java than the opposite
rant
wk92