• Please review our updated Terms and Rules here

Decided to start learnig C

But the best way to learn that is by understand what's wrong with it, rather than just parroting some rote principal you heard somewhere. It's one of my quibbles with the whole "Best Practices". Many embrace them without understanding why. And if they did understand, they wouldn't necessarily need lists of Best Practices to follow. And, IMHO, they should understand.
This cannot be reiterated enough. I wish we could drill this into the heads of every instructor and manager in the world.
 
I keep reading in this thread a lot of suggestions to the OP that require hours, days or even months of practicing coding.
The OP didn't indicate if this is a hobby or if he is trying to break into a job that requires programming.
Most people don't have the spare time required to become a proficient programmer unless it's their full time job.

Personally, at my age it's just a hobby. Maybe spending time learning how to create a device driver or modifying boot code. Nothing that required hundreds or thousands of lines of code.
 
Some of us have spent the better part of our lives coding. In retrospect, that's pretty sad, isn't it?

Why oh why didn't I go for fast cars, snazzy clothes loose women and a generally debauched lifestyle instead? :)
 
I keep reading in this thread a lot of suggestions to the OP that require hours, days or even months of practicing coding.
The OP didn't indicate if this is a hobby or if he is trying to break into a job that requires programming.
I mean, any time you want to get into anything, it's going to take time and effort to become good at it. Whether he wants to invest the time is his own decision, but his question was about what would be a good path forward in general, not about what would be the quickest and easiest way to get to a certain specific end goal.
 
Some of us have spent the better part of our lives coding. In retrospect, that's pretty sad, isn't it?

Why oh why didn't I go for fast cars, snazzy clothes loose women and a generally debauched lifestyle instead? :)

I managed the fast cars bit, but failed on the loose clothes and snazzy women ;)

I like the way C can overwrite the program if you exceed the bounds of a variable. Leads to all sorts of unexpected events.
 
Some of us have spent the better part of our lives coding. In retrospect, that's pretty sad, isn't it?

Why oh why didn't I go for fast cars, snazzy clothes loose women and a generally debauched lifestyle instead? :)

Whoa, back the truck up. Let's not make coding and fast cars a mutually exclusive choice.
 
Some of us have spent the better part of our lives coding. In retrospect, that's pretty sad, isn't it?

Why oh why didn't I go for fast cars, snazzy clothes loose women and a generally debauched lifestyle instead? :)

The JavaEE guys get all the fast cars and loose chicks. :3
 
It's a pretty good teaching tool. The main reason for going with an online course is that I need some structure and some goals to strive for to try to get a good foundation to build upon. The great thing about the Dartmouth program is that they get the student coding right away and keep building to more advanced programming problems. I don't yet understand enough to play manipulate the code for Soarer's converter, but I think I'm making headway.


Their problem solving approach probably goes back to when they were creating BASIC.
 
no one without extensive programming knowledge would be able to handle much more complexity then simple BASIC programs anyway. You got to start somewhere.

I will reiterate a formal textbook will give all the structure that's required. And run you through problems to exercise your understanding.
 
I keep reading in this thread a lot of suggestions to the OP that require hours, days or even months of practicing coding.
The OP didn't indicate if this is a hobby or if he is trying to break into a job that requires programming.

OP Here again, Thanks Chuckster, I have been feeling a bit overwhelmed with all of the suggestions for books to read and such. Yup, this is just a hobby for me, not for professional use. I do appreciate EVERYONE'S advice though!

Most people don't have the spare time required to become a proficient programmer unless it's their full time job.

Personally, at my age it's just a hobby. Maybe spending time learning how to create a device driver or modifying boot code. Nothing that required hundreds or thousands of lines of code.

I'm not trying to learn to build a house. I just want to be able to fix the roof or maybe install a set of french doors someday, if you know what I mean.

I've tried reading books about programming, but just found it to difficult to stick with it. I really wanted to find a night class at the local community college, but the online course seems to be the next best thing. There's just enough structure to keep me challenged and interested. I do realize this is just a beginning and will have to keep at it, and yes, I agree that there's nothing that can replace actual programming experience. I've seen this many times in my day job as a machinist. I've been at it for nearly 40 years now and when I see a new hire fresh out of school, you can't tell 'em nothin' cause they already learnt it all in school. Then they make a rookie mistake and I think, if they would have listened to me, life would be easy. But, then I realize their just learning the hard way, kind of like I did when I was a green horn!!
Any suggestions for small projects to attempt would be appreciated. Nothing to complicated for now. Maybe some sort of DOS utility for older PC stuff?

Thanks again for all the great replies.

Greg
 
C is not the language to learn to program with--it's just too quirky. However, back in the day, learning to program started with machine language. I kid you not. Assembly was the next rung up. And I walked 20 miles in a snowstorm to school every day... :)

Start with BASIC. Plenty of that around--and it's very forgiving.
 
When I was young and started college we had a class in programming and used BASIC running on some old Sanyo PC systems. For engineering we learned FORTRAN on a terminal connected to a mainframe (mostly to calculate simultaneous chemical reactions that would take all day on a XT).

The thing is I was programming before I went to college on my Timex 2068 back in 1983 because it had little software using the built in BASIC. This ended when I got a C64 and had a ton of games.

C was something you used to write an operating system, device drivers, or something that needed to get every ounce of power out of the system (and you didn't want to do the whole thing in machine code).

I would recommend MS professional BASIC if you want to start programming and then branch of to Visual Basic. You can write bits in C++ and use that inside VB.

I don't consider myself a programmer but I had to dabble to get some projects done and you would be surprised the variety of tools out there. You need to have a project in mind or you will never get anything done, and most of your time will be spent on the "boring" user interface and error trapping and not the fun code that actually does stuff.

Embedded controllers were fun to work with if you needed A/D and DIO stuff to control other hardware.

One of my favorite things to use back in the 90's was a program called Testpoint by Capital Equipment Corp. It was like VB for test and measurement, anybody ever use that?
 
C is not the language to learn to program with--it's just too quirky. However, back in the day, learning to program started with machine language. I kid you not. Assembly was the next rung up. And I walked 20 miles in a snowstorm to school every day... :)

Start with BASIC. Plenty of that around--and it's very forgiving.

If you want to get your toes wet, try good old GWBASIC. Runs on a PC on up--maybe even 64 bit W10 with the appropriate emulator.


Evidently, you (Chuck(G)) forgot the very start of this thread.

I've played around with BASIC since about 1979

I've programmed in BASIC on an AppleII, an Imsai 8080 and later on an IBM XT. I later played with Microsoft QuickBASIC. I just decided it's time to learn a little higher level language. So, I chose C. I still play with QuickBASIC and have thought about checking out Visual BASIC. So, My feet have been a little wet for a while now! ;)
 
Last edited:
Stick with the C. No sense in having the OP start all over again with a different language. You can write rudimentary "console" apps in C just like any other language, don't worry about a user interface, text based menus and whatnot will do quite nicely. When you start writing a C program, you mostly get right to it, besides some variable declarations. C has that structure, having to declare and even initialize variables before using them, BASIC doesn't. I'm not knocking BASIC. And if the OP wanted to dabble in BASIC, I recommend Quick Basic all the way. I think I may even have version 4.5 for sale.

There isn't much you can do with a computer that you can't do with C. Stick with C. If you go through all the courses, and even possibly read a book or whatever, and still don't find yourself with the ability to write stuff, give it time, it just may kick in.

When I read a book, anything, even fiction these days, I either use a pdf or I scan the book myself. Then read it on a computer, and extract portions of the text that I figure I'll need to refer to later (hence my notes). You can blow through books pretty quickly that way. I finished 2 books in one week, one was a novel, having completed at least 60% of each book that week. That's pretty fast. I don't keep up that sort of pace all the time. It just shows what you can get done. The old fashioned pen and pencil note taking, I find, is not only unnecessary but a waste of time. Years ago I would do it with a tape recorder. But then you have to go back and write or type what you recorded. People insist you learn something by writing it out. I totally disagree. You have to use something to remember it, and even then you can forget it. Simply writing it out doesn't accomplish much as I see it. Sometimes you can lose contexts by simply copying and pasting portions of a text. But the text doesn't disappear, you can always go back and refer to it (and it's neatly tucked away inside your computer).
 
I've taught a few middle and high school students an introduction to programming class. One environment I really like is Processing. It is a self-contained IDE that has lots of tutorials and examples focussing on a visual approach. Although it is Java based, it simplifies most of the Java-ishness out, and you can install a Python environment that I prefer as an introductory programming platform. Processing runs on just about every popular operating system and CPU. Highly recommended.
 
Maybe some sort of DOS utility for older PC stuff?

You can try writing simple games: Blackjack, "Slot machine", Battleship. Simple games. Use some character graphics (pretty sure the PC character set has the 4 suit characters). My teacher wrote a very nice blackjack game on the PET long ago.

You can try writing a simple DOS utility. Try to write a crude clone of Midnight Commander. This gets you in to simple DOS calls (scanning the directory, removing files, renaming files), sub directories, things like that. Feel free to mercilessly copy UI examples.

Write a SORT program. First you can write one that just loads a text file in to memory, sorts it, and writes it back out. Then you can modify it to define simple fields (i.e. character sort on characters 1-6, or 10-15), add a flag to ignore case. Then change it to work on files that won't fit in memory. This gives you a quick dive in to sorting algorithms.

Grab a copy of the book "Software Tools" for Pascal or even the original in RATFOR, and port those to C. It will be easier than it sounds, since they're both, essentially, C and Unix in Pascal and RATFOR, so it's just (mostly) simple translation. When you're done with those, you end up with the basic UNIX utilities including a search utility, a sort utility, an editor, and a document formatter. Non-trivial stuff, but in the end pretty simple. And it's an achievable goal that you can just tick off going through the book.
 
Evidently, you (Chuck(G)) forgot the very start of this thread.

Not at all--"playing around" with is not exactly real programming. You can write a "hello world" program in dozens of langauges; e.g.,

'Hello World!'

Runs in APL just fine, but doesn't even begin to scratch the surface of the language.

It's "playing around".
 
Back
Top