This book came about as my students were coming to me alwayslooking for a better way to learn how to program computers or how to learn aprogramming language. As you may be aware, if you have been searching for bookson learning computer programming, for the most part programming books areincredibly similar to one another. The typical learn programming book usuallystarts with very little background material and they jump right into the famousHello World code as if all programming languages were created with this idea in mind.
This book Becoming a Programmer was written withthe intent to go another direction, to introduce the programming student to theideas and concepts of computer science, which are used by programming languagedesigners to create computer programming languages in the first place. It is my belief having this crucial knowledge in place before jumping intowriting code is the critical piece missing from most of the current methods and material used to teach computer programming.
Introduction
Quick and to the point!
I have spent yearsteaching myself various programming languages, countless hours after countless hours during the course of three plus decades. I learned how to learn programminglanguages. I learned how the traditional How to program courses and bookswere without fail long, drawn out and frustrating. Each one had to cover thesame Hello World pseudo code example, presented in mystery code andunchained from any meaning. I learned along the way programming languages havemany similar methodologies based on the fact modern computer operating systemsperform the same tasks repeatedly.
This secret has enabledme to learn many programming languages and to learn them well. For the mostpart all one needs to do is to learn how different programming languagesoperate on and implement the core fundamental ideas and concepts presented inthis book. For the life of me, I cannot understand why programming courses failtime after time in presenting these universal ideas in context with the codetheir shoving down your throat. It is as if they expect you to have alreadyknown these concepts in the languages they are trying to teach.
Learn these concepts in contextof learning computer programming then it becomes a simple matter of learningthe particular syntax and semantics of each language! Of course, there areunique characteristics of each language but learning those means, the basics ofthe programming language are similar to countless other languages.
Normally languagespecific particulars cause us so much grief but this I have found is because ofthe methods normally used to teach the language. Rarely taken in context and thesemostly serve only to perplex and stall our progress in learning to properlyprogram in the language.
Computer Programming isan art and a science, it consist of a formalized set of ideas implemented in arigid system of properties, methods, functions and structured rules. Theseformalized properties, methods and functions are necessary in order for anycomputer programming language to do its job. They are an unavoidable all-encompassingmandate. The good news these concepts once mastered become a simple matter ofapplying them to the particular programming language one is attempting tolearn.
Many of these concepts, properties, methods and functions are the basis of the computer science curriculum in our Universities where a single concept occupies the entire semester (or the entireyear). Fortunately, for us it is not necessary to spend semesters in a classroomto not only learn computer programming but also learn to master these concepts.This is your challenge, acquire the computer science and generalized computer programmingknowledge needed to utilize any programming language one chooses to learn.
It is these properties, methods, functions and structured rules, which allow the computer to operate,without the construct of a set of instructions the computer is merely aninanimate object, a boat anchor if you will. Every programming language is inactuality a set of instructions the computer processing unit (CPU) uses to produce a desired result.
Every book or course oncomputer programming begins with explanations of some basics and the groundrules of programming followed by the usual, a supposedly simple example youwill see time after time the Hello World application. I prefer to go down an entirely different path and get right into an important idea, why do you want tolearn computer programming. Which programming language should you learn first?If you want to learn the through a Hello World application example, youhave the wrong book.
What programming language should Ilearn?
One of the most commonlyasked questions by anyone interested in learning computer programming however, the reality is, a simple unambiguous answer does not exist. There is noone answer fits all for potential computer programming students. What doesexist is an answer to a significant question potential programmers can ask themself in regards to their motive, rational and desire to learn computer programming.I believe given the right information anyone looking to learn computerprogramming can answer this question as they begin their learn computerprogramming journey.
Why do you want to learn computerprogramming?
It is of utmostimportance to have a clear and concise purpose behind ones desire to learncomputer programming. Having a picture of why you want to accomplish a certaintask, in this case learning computer programming, can be helpful in severalways. This sort of clarity can help identify which language would be mostappropriate for you to learn first. Different answers lead to differentcomputer programming languages being the place to start.
If you want to learncomputer programming to build websites JavaScript, PHP or Ruby as well as the format style language, CSS (Cascading Style Sheets) and the marklanguage HTML (Hyper Text mark Up Language) are definitely appropriatechoices. If you want to learn programming to design smart phone apps then ObjectiveC and Swift for Apples iOS Smart Phones and/or Java for learning to build Android apps or if Windows Phone apps are your thing thenlearning C# is where to start. All would be appropriate languages to getstarted learning Smart App Development.
On the other hand ifyour interest lies in a more rigorous and professional software application development career track then consider in context how these types of careers arecategorized and then consider the programming languages in use for these categories.
Front end /Client side programmer Mostly the same tools andlanguages used in web development. Definitely need to know JavaScript
Back-end/Server side programmer Java, PHP, ASP.net, Go, Python, Ruby on Rails, .Net (C#, Visual Basic, C++)
Smart Phone/Mobile Development C#, Java, Objective C, Swift andJavaScript