Topic talk:Introduction to Programming
From Wikiversity
Hi, I have a number of critiques I'd like to offer about this article.
- Of course, computers don't understand recipes written on paper. Computers are machines, and at the most basic level, they run on 1's and 0's. If you really wanted to tell a computer directly what to do, you'd have to talk to it in binary, giving it coded sets of 1's and 0's that tell it what instructions to execute.
- It's not clear what it means to "run on ones and zeroes". A car runs on gasoline, and some people might have an idea of what that really means. But a complete novice is not going to have a clue what it means to say a computer runs on ones or zeroes.
- Most people are not going to know what binary is.
- Most people are not going to know what a "coded set" is.
- A programming language is a way for a person to write a program without writing directly in binary. A programming language is not a way to do things -- a programming language is a way to express instructions that both a computer and a human can understand.
- Programming languages are meant to be read by a person, so a computer must either compile or interpret them before they can be executed.
- You're not defining either of those words, so people are not going to know what compile or interpret mean! Remember, as computer scientists we take our knowledge of computer science of granted. Beginners are not going to know these teams, and consequently these sentences won't teach them anything.
- I think it's best to leave out the mechanics of how programming languages are executed by the computer. It's OK if a beginner thinks that the computer actually directly executes Python. Telling them about compilation and interpretation is just going to confuse them.
- There are a couple different levels of programming languages. At the most basic level is assembly language. This language is just a direct translation of the binary instructions the computer executes. Every kind of computer has its own assembly language. Here's how to add two numbers in MIPS assembly:
- Beginners don't need to know about the varieties of programming languages. We should especially stay away from assembly because it does not resemble things they have learned before. High level languages are OK because most people know what the syntax f(x,y) = x+y means, so we have a common ground by which to explain.
- You've said There are a couple different levels of programming languages but haven't actually specified what those levels are. Mentioning assembly and high level languages is not defining the levels; you're leaving it to the user to infer that levels are defined by how abstract they are from the hardware. We don't want to make people infer things when it can be said explicitly.
- Most people don't program in assembly, because it can be complicated, it takes a long time to write, and it only works on one kind of computer.
- Yes, so let's not teach it to beginners. Let's not even mention it until introductory courses.
- High-level languages look more like English with mathematical operations thrown in.
- What we show below looks nothing like English.
- These languages require more translation before the computer will understand them,
- So does every language, but we shouldn't mention that now.
- The process of translating a program from high-level language to assembly to machine instructions is called either compiling or interpreting, depending on what language you are using.
- This is factually incorrect. Compilation and interpretation are not conceptually similar.
- The paragraph following this quotation is far too detailed for a beginner to understand.
I will attempt to rewrite this article. As I have mentioned in other places, I think it would be highly beneficial for the Intro computer science curriculum to use exactly one language, at least until the intermediate level.
A student would not learn Spanish effectively by also being taught German and French concurrently. The fastest way to learn would be to focus on Spanish, then pick up Frech and German later. Similarly, we want to let people focus on as few language concepts as possible while still conveying general programming concepts. Hence, one language.
JustinC 20:54, 14 October 2006 (UTC)
[edit] About the merging
I think this resource shouldn't be in the Topic namespace, it should rather be a resource linked to under the Topic:Programming resource. --Devourer09 02:37, 27 September 2008 (UTC)