If you don't know how to code, then you can learn even if you think you can't. Thousands of people have learned programming from these fine books:
Programming, Mother****er
Do you speak it?
We are a community of mother****ing programmers who have been humiliated by software development methodologies for years.
We are tired of XP, Scrum, Kanban, Waterfall, Software Craftsmanship (aka XP-Lite) and anything else getting in the way of...Programming, Mother****er.
We are tired of being told we're autistic idiots who need to be manipulated to work in a Forced Pair Programming chain gang without any time to be creative because none of the 10 managers on the project can do... Programming, Mother****er.
We must destroy these methodologies that get in the way of...Programming, Mother****er.
* * * *
Our Values
They Claim To Value They Really Value We ****ing Do Individuals and interactions Tons of billable hours Programming, Mother****er Working software Tons of pointless tests Programming, Mother****er Customer Collaboration Bleeding clients dry Programming, Mother****er Responding to change Instability and plausible deniability Programming, Mother****er
We think the **** on the left, is really just the con in the middle, and that we really need to just do the thing on the right...Programming, Mother****er.
Signed,
Zed A. Shaw
And The Programming Mother****ers
Your first imperative language is not really that important, as long you learn how some basic data structures/algorithms/control flows work.
Hell, you could always do it the hardcore way and go for full blown pseudo-code.
Don't learn a scripting language first.
C is actually a really good place to start.
If Scheme is your first programming language I swear I will worship you forever.I played with Java and QBasic first, then took C++ and HTML/CSS/Javascript/Perl in highschool, then the first programming course in college used Scheme. So unfortunately I will have to turn down the nomination for godhood. :(
I.... hate scheme with a passion. I agree with those that say start with C - you'll find that plenty of languages look an awful lot like C, and C is still a perfectly viable language to program in. As for compiler environment, I personally think you should set up Linux of some sort (Personal preference is something Debian based, at least in a VM) and compile with gcc; but that's likely because I've not touched Visual Studio.
Whereas our entire University's Computing program is built around the idea that straight procedural ANSI C comes first, and then they add in C99, Java, Python, etc. later on; and IMHO, I think it's made me a better programmer. That's not to say I dislike Python, in fact I really like working with it, and if that's what you start with you could do far worse. Java is also a fairly good one to start with.
Personally, I feel though that C is actually a pretty good level of abstraction to start with. It's not assembly, but it's also not going to hold your hand and allow you develop sloppy coding practices either. A good middle-ground, if you will.
I.... hate scheme with a passion. I agree with those that say start with C - you'll find that plenty of languages look an awful lot like C, and C is still a perfectly viable language to program in. As for compiler environment, I personally think you should set up Linux of some sort (Personal preference is something Debian based, at least in a VM) and compile with gcc; but that's likely because I've not touched Visual Studio.
this is about the only thing i like about linux. gcc is ****ing awesome, it takes all the bull**** out of programming. no ides to configure, libraries are easy to get, etc. just a simple makefile is all you need. visual studio on the other hand can be such a *****.
Don't learn a scripting language first.
C is actually a really good place to start.
I'm gonna say the opposite. Python is a fantastic place to start and learn all the basics about programming. It's a great language. I came to this thread planning to urge you to do something other than C as a first language anyway. There's a reason why the vast majority of introductory programming courses start with Java or Ruby or Python and NOT C/C++. Those last two have a lot of extra complexity that frankly just gets in the way of learning the basics.
I really don't buy the argument that it's bad to start at a higher level of abstraction. Abstraction, after all, is what programming is all about. :)
Pick up C as a second language, and use it to write a webserver or something (although there's nothing stopping you from doing that in Python too). :)
I.... hate scheme with a passion.I strongly agree. I forget which course it was that was based around Scheme, but I loathed it. The whole language is so minimalistic and ass-backwards that it requires some sort of zany sideways thinking to do even something simple. Give me operations and loops that actually make sense in plain English any day of the week.