Learning C language ?

Status
Not open for further replies.
Pre courses: C Programming, Object Oriented Programming, Data Structure, Algorithm, ...
Related courses: Database, Operating system, Discrete Mathematics...
Why not start wth Machine Language, assembly language, basic, Pascal, ...

:D

Just kidding, go direct to C# is OK, and as for IM, php is useful
 
First, I'll say I'm more of a hobbyist than anything.

I know you came out of the gate asking for C v C++ v C#, but there are some other higher-level languages out there if you're just looking to get stuff done rather than understanding the underlying processes and concepts.

Python has been a very beneficial language for me, and I've found it to be unbelievably easy to pick up. I started out learning C, and was woefully disheartened in the beginning. About a month in, I realized I'd never be able to focus on the level of strategy I do on a daily basis while worrying about that level of operations, so I took off into Python and haven't looked back since. There's a library for everything, and there's someone in a forum somewhere posting code for everything else. It's a very dynamic language IMO bc a beginner can do some really cool stuff with it while learning along the way, but tools like Cython and etc. allow for enterprise-level optimization for those that live and breath CS.

I'd take a hard look at Python if you're looking for bots and general work-horse type things. It's got some power web capabilities, but php def has an entire different level of resources available to learn that.

As a side note, I'd check out the edx.org site for some really quality free courses (probably premium too) for any language. The CS50 course offered by Harvard on there is the most well-produced online course I've ever seen. It's a survey of languages that starts with C and moves into modern times. It helped me learn starting out, and also helped me reaaaally appreciate high-level languages like python for just getting sh*t done fast.

Best advice though, find a project and learn while you do it.
 
First, I'll say I'm more of a hobbyist than anything.

I know you came out of the gate asking for C v C++ v C#, but there are some other higher-level languages out there if you're just looking to get stuff done rather than understanding the underlying processes and concepts.

Python has been a very beneficial language for me, and I've found it to be unbelievably easy to pick up. I started out learning C, and was woefully disheartened in the beginning. About a month in, I realized I'd never be able to focus on the level of strategy I do on a daily basis while worrying about that level of operations, so I took off into Python and haven't looked back since. There's a library for everything, and there's someone in a forum somewhere posting code for everything else. It's a very dynamic language IMO bc a beginner can do some really cool stuff with it while learning along the way, but tools like Cython and etc. allow for enterprise-level optimization for those that live and breath CS.

I'd take a hard look at Python if you're looking for bots and general work-horse type things. It's got some power web capabilities, but php def has an entire different level of resources available to learn that.

As a side note, I'd check out the edx.org site for some really quality free courses (probably premium too) for any language. The CS50 course offered by Harvard on there is the most well-produced online course I've ever seen. It's a survey of languages that starts with C and moves into modern times. It helped me learn starting out, and also helped me reaaaally appreciate high-level languages like python for just getting sh*t done fast.

Best advice though, find a project and learn while you do it.
+1 for cs50. A fellow cs50 alumnus here. One of the best courses ever on edx. David Malan and the other instructors rock! I still refer back to the course material for a refresher on basics like sorting and searching.
 
Thanks above guys learned a lot here too, btw, I have 0 knowledge of programming too as OP, but I think myself even more noob-ish.

For example, I want to learn how computer envolved along the way? And how computer works? How the data 0 and 1 working in the PC? How the WWW work and how the data transferred? How the programming language work with computer? I am a very keen man on knowing all of this thing, but I realized maybe you will never learn so many things, I have no idea.


So is there any good books to explain all of this? Or even a series? I want to learn those all! Just as my hobby!

And I am not native english speaking, english level is so so average.
 
Thanks above guys learned a lot here too, btw, I have 0 knowledge of programming too as OP, but I think myself even more noob-ish.

For example, I want to learn how computer envolved along the way? And how computer works? How the data 0 and 1 working in the PC? How the WWW work and how the data transferred? How the programming language work with computer? I am a very keen man on knowing all of this thing, but I realized maybe you will never learn so many things, I have no idea.


So is there any good books to explain all of this? Or even a series? I want to learn those all! Just as my hobby!

And I am not native english speaking, english level is so so average.

You might want to check out Computer Organization and Architecture by Carl Hamacher or William Stallings. Then an interdisciplinary subject called Digital Logic design. This will probably answer your questions about how the computer works (a fraction of it) .

If you're still interested after that, you might want to look at Assembly programming, preferably 8086.
 
You might want to check out Computer Organization and Architecture by Carl Hamacher or William Stallings. Then an interdisciplinary subject called Digital Logic design. This will probably answer your questions about how the computer works (a fraction of it) .

If you're still interested after that, you might want to look at Assembly programming, preferably 8086.

Thanks for the points here mate, I will search for these books later, and see if I can download some free PDFs, you know if one suddenly step into the computer and Internet, its just too overwhelming like fc, I feels like an old 80s man live in 1890 and suddenly teleport to 2017.
 
Thanks above guys learned a lot here too, btw, I have 0 knowledge of programming too as OP, but I think myself even more noob-ish.

For example, I want to learn how computer envolved along the way? And how computer works? How the data 0 and 1 working in the PC? How the WWW work and how the data transferred? How the programming language work with computer? I am a very keen man on knowing all of this thing, but I realized maybe you will never learn so many things, I have no idea.


So is there any good books to explain all of this? Or even a series? I want to learn those all! Just as my hobby!

And I am not native english speaking, english level is so so average.
That's like 6 semester worth of study topics right there. To learn how the computer works and its history, architecture, organization etc read books by Stallings, Mano. To learn about digital electronics (how 1 and 0 works) then read any Digital Electronics book preferably Digital Electronics by Salivahanan. Then you might want to know about assembly level programming - start learning from 8085 microprocessor. Best book to learn about this is the one by Ramesh Gaonkar. A truly wonderful book which at first gives you the overview and then goes into the detailed working principles of each and every component. Then if you want to learn about the WWW then you should pick up the Data Communications and Networking book by Behrouz A. Forouzan.
For programming language learning, it depends on what programming language you want to learn. If you want to work with a massive load of data and build bots then your best bet is to go with python or else go with a modern language like C#. In addition to this you might want to learn web programming too - there's a ton of languages to learn in this discipline.
 
That's like 6 semester worth of study topics right there.

Very valuable guideline here, thank you very much, both of you guys! I am reading the 9th edition of the <C O and A> recommended by @Mnemosyne03 , this book is very detailed from what I can see but very hard to learn for myself, I prepare dictionary aside and try to understand each word I didnt know lol, but its definitely a good book, very very detailed! Hope I can learn sth from it at least, and I will combine what you said and give myself a rough plan, I already planned learn these things a long long time ago, always lack time :(

terry
 
I just started learning C language, so i can then move to C++ and C#. I don't know anything about programming. Can you guys recommend me good source to learn it ? right now i am using free course on udemy.
My friend, you made a very bad choice about Udemy. Go google and search "the henewboston.com" trust me the best tutorials for free for every subjet you want. Take a fast look if you want
 
If you wont to be good programming you must know C. At list because OS is written on C.
C++ include C so if you will learn C first of all, you know C about 30%.

Literature:
The C programming Language By Brian W. Kernighan and Dennis M. Ritchie.
 
Somebody told me i need to first learn C language and it will be easy for me to learn C++ and C# after that.
C is the mother of all programming languages. C seems hard thats true but if you can learn C well then every programming languages will be at your fingertips. C# is dot net framework based so u can solve a lot of complex problems with a single line. If u learn C u will know ins and outs. In the long run C helps.
 
To learn C, any free source, or any old C book will do fine. You can use something like.... http://www.learn-c.org/ to learn the basics in the browser without having to touch a compiler.

Once you've learned the basics, try https://www.codingame.com and do some of the easy challenges. It'll make learning a lot more fun than running different permutations on the same-old "Hello World" program!

I'd go against what a lot have said here, and say keep on with your plan to start with C, as the basics are an easier entry-level than C#. Just the basics (like variables, arithmetic, functions, arrays, loops etc.), don't get into more advanced topics like pointers and memory allocation (as C# doesn't use them anyway). Once you know the basics, it's transferrable to pretty much all (common) languages, and the step up to C# will be a bit easier.
 
First thing you should do is ask yourself what is you goal in learning programming. There are lots of different programming languages and each have various applications. C/C++ is definitely not a good choice to start. Trust me - I'm a software developer with 15 years experience, and know a bunch of different languages.

@Nut-Nights, tell me what you want to do, and I'll tell you what to choose.
 
I learned C# by making games in Unity engine. Making some mobile games is a really fun and easy way to learn programming. Because you are using it with an engine you can get instant results which helps with motivation

The unity website also has tons of great video tuts for using c# with unity https://unity3d.com/learn/tutorials/s/scripting
 
Unity for sure is great for game development. You can make cross platform casual games in no time. Want to make tic-tac-toe or angry birds clone - go with Unity. As you say it's very fun and quite easy but is also very different from normal application development.
 
Here are my thoughts as a programmer...

C has the advantage of being a very old and very low-level language for starters. C++ is similar. C# has almost nothing to do with the former two. People turn to the likes of C or C++ when they want strong typing, control over memory management, fast performance, etc etc etc you would expect from a low-level language. Why should you learn C or C++? Well, you really shouldn't unless you're planning to jump onto an existing C or C++ project.

What about C#? C# has pretty much nothing to do with the other 2. C# is a language that runs on a virtual machine like Java. Its primary use-cases are in Windows though some efforts have been made to change that (And are a pain in the ass to get going with). C# .NET is a respectable framework in which you wind up with almost a full stack but it can be very limiting. You'd wind up finding that out the hard way.

What you want is a modern language that works across all major operating systems, supports multiple paradigms, is low-level, doesn't require a VM, and enables a full stack. Things like a macro system and safe easy threading are a plus too. For all these things I suggest Nim. Nim feels like you're writing Python but is strongly typed, compiled, compiles to all OSes, supports all major paradigms, is low-level (It compiles to optimized C code before it becomes a single executable), has a macro system, nice threading, and supports a full stack. It can compile to: C, C++, Objective-C, and Javascript. One cool thing is that you get all the benefits of C but all the annoyances and difficulties are abstracted away. You can also easily use any existing C library with Nim. There's also a nice package manager to pull in modules. Oh yeah and it has a garbage collector so you don't have to worry about memory management. It's done for you though you can turn off the GC for things like game development. I believe there's even a Unity3D wrapper now for Nim.

I'm currently in the process of replacing most of my PHP with Nim, especially where my APIs are concerned. Nim has an easy to use MySQL module so no big deal. You can run your programs on a web server easily. Just plop your executable file into the cgi-bin directory of your hosting. I highly recommend Nim for beginners and experts. There's a really nice Nim book out now too that I just bought called Nim in Action. There's a 39% off Manning coupon code on retailmenot if you decide to get it.

Installing and using Nim is free and easy. Give it a try and see if you like it.
 
Last edited:
What about C#? C# has pretty much nothing to do with the other 2. C# is a language that runs on a virtual machine like Java. Its primary use-cases are in Windows though some efforts have been made to change that (And are a pain in the ass to get going with). C# .NET is a respectable framework in which you wind up with almost a full stack but it can be very limiting. You'd wind up finding that out the hard way.

The part about being a pain in the ass is actually no longer true. With the new .NET Core platform C# is now truly cross-platform. You can google some information on Kestrel performance and check for your self that the new ASP.NET MVC Core outperforms a lot of top other language frameworks.

Regarding Nim, I have to disagree. I'd say stick with languages which have a huge community behind them. These days in 99% cases language performance isn't really an issue. Checkout the biggest dev community - StackOverflow and take a look at the Tags page - you will get an idea on whats hot, and whats not.
 
Status
Not open for further replies.
Back
Top