I don’t know whether the existence of such a gear is plausible. But to your point, I might say:
“Try this. If you’re having fun an hour from now, you have the gear. Good luck!”
As for on-ramps, I would start with HTML as an introduction to thinking like a programmer, and then transitioning over to Python. But opinions vary, so seek the advice of more experienced programmers than myself.
Not HTML! Not HTML! In addition to the obvious shortcoming of not being a programming language, HTML is confusing and often vague. Start with python, ruby, or a lisp.
I’ve usually heard that as the reason to give Lisp to a new programmer. You don’t want them thinking about fine details of syntax; you want them thinking about manipulations of formal systems. Add further syntax only when syntax helps, instead of hinders.
What’s the argument for preferring a more syntax-ful language?
People can always find things in surface syntax to object to. Python’s whitespace is pretty unpopular with people who think all “normal” languages have to have curly braces — as well as with some folks who grew up with Fortran and think that significant whitespace equals dinosaurity.
The interesting thing about Lisp is not its surface syntax, but the relationship between code and data. The textual syntax of Lisp is a way of expressing data structures; Lisp code is defined in terms of trees, not text. Most languages don’t make the syntax tree of the code available to the programmer; it’s hidden away as internal data structures within the compiler.
If there is a site that will let you play with strictly-validated HTML or something like that, I think that could be a good introduction to the idea of precise syntax without having to worry about algorithms or variables at first. But I agree that typically HTML is a bit too loose.
In fact now that I think about it, teaching syntax and semantics separately (eg with a stricter subset of HTML for the first and some sort of graphical programming thing like Scratch for the second) could be helpful for beginners.
Someone awsome on here recommended Learn Python the Hard Way. I’ve had school off since Tuesday and I’ve been kicking it’s ass since. It’s really fun. I thought it’d be neat to test out what my abilities are like on Project Euclid.
I’ve solved three so far. I’m particularly proud of coming up with a program to do the Fibonacci sequence. It’s a simple program, and probably not as efficient as it could be, but i didn’t look at any spoilers and feel like a diabolical genius after having solved it.
I assume you mean Project Euler? If so, I heartily second that, and I have introduced at least one person to programming (in Python) via it, and she was extremely enthusiastic about it. (Admittedly, she was/is extremely mathematically talented, so there is a confounding factor there.)
It’s a simple program, and probably not as efficient as it could be, but i didn’t look at any spoilers and feel like a diabolical genius after having solved it.
For me, this is one of the best bits about solving Project-Euler-esque questions: often one can make progress and solve a question with a relatively simple (but still really cool!) program, but there’s always more tricks to learn (how to cut the run time in half, how to half the number of lines of code, etc etc.), and so more chances to be a diabolical genius!
And then coming back to a few of the questions and solving them in completely different language to see how neat/fast/short one can make the program that way (for people who started with Python, this might mean experimenting with C or assembly or a lisp or Haskell).
I don’t know whether the existence of such a gear is plausible. But to your point, I might say:
“Try this. If you’re having fun an hour from now, you have the gear. Good luck!”
As for on-ramps, I would start with HTML as an introduction to thinking like a programmer, and then transitioning over to Python. But opinions vary, so seek the advice of more experienced programmers than myself.
Not HTML! Not HTML! In addition to the obvious shortcoming of not being a programming language, HTML is confusing and often vague. Start with python, ruby, or a lisp.
Not Lisp! Not Lisp! It’s a great language, but it has no syntax.
I second Python.
I’ve usually heard that as the reason to give Lisp to a new programmer. You don’t want them thinking about fine details of syntax; you want them thinking about manipulations of formal systems. Add further syntax only when syntax helps, instead of hinders.
What’s the argument for preferring a more syntax-ful language?
I would object to Lisp because it has scary parentheses everywhere. It might be intimidating to a novice.
In fact, I also think Python is good, precisely because there’s not too much syntax, especially at the beginning.
People can always find things in surface syntax to object to. Python’s whitespace is pretty unpopular with people who think all “normal” languages have to have curly braces — as well as with some folks who grew up with Fortran and think that significant whitespace equals dinosaurity.
The interesting thing about Lisp is not its surface syntax, but the relationship between code and data. The textual syntax of Lisp is a way of expressing data structures; Lisp code is defined in terms of trees, not text. Most languages don’t make the syntax tree of the code available to the programmer; it’s hidden away as internal data structures within the compiler.
True, and that makes it a good language to be familiar with, I’m just not convinced it’s a good language to start with.
If there is a site that will let you play with strictly-validated HTML or something like that, I think that could be a good introduction to the idea of precise syntax without having to worry about algorithms or variables at first. But I agree that typically HTML is a bit too loose.
In fact now that I think about it, teaching syntax and semantics separately (eg with a stricter subset of HTML for the first and some sort of graphical programming thing like Scratch for the second) could be helpful for beginners.
Someone awsome on here recommended Learn Python the Hard Way. I’ve had school off since Tuesday and I’ve been kicking it’s ass since. It’s really fun. I thought it’d be neat to test out what my abilities are like on Project Euclid.
I’ve solved three so far. I’m particularly proud of coming up with a program to do the Fibonacci sequence. It’s a simple program, and probably not as efficient as it could be, but i didn’t look at any spoilers and feel like a diabolical genius after having solved it.
Link: Learn Python the Hard Way
That’s great! I hope you keep working on it.
I assume you mean Project Euler? If so, I heartily second that, and I have introduced at least one person to programming (in Python) via it, and she was extremely enthusiastic about it. (Admittedly, she was/is extremely mathematically talented, so there is a confounding factor there.)
For me, this is one of the best bits about solving Project-Euler-esque questions: often one can make progress and solve a question with a relatively simple (but still really cool!) program, but there’s always more tricks to learn (how to cut the run time in half, how to half the number of lines of code, etc etc.), and so more chances to be a diabolical genius!
And then coming back to a few of the questions and solving them in completely different language to see how neat/fast/short one can make the program that way (for people who started with Python, this might mean experimenting with C or assembly or a lisp or Haskell).