|
I would recommend Liberty BASIC, for Windows. It's what got me started on programming in middle school. LB is interesting in that it's BASIC, with a classic BASIC syntax, but it's also got access to the entire Windows API. The only current programming concept it can't teach is Object-Oriented programming, which is not for beginners, anyway.
A free version, Just BASIC, is available, but slightly less powerful.
http://www.libertybasic.com
http://www.justbasic.com
|
|
|
|
|
I would say a version of BASIC is a good place to start. I was programming in basic when I was in 2nd grade though so you may actually want to find something more relevant. By sixth gradeish I was doing C++ and assembly.
Its part of the balance of their personality. You don't want them to get frustrated or bored and walk away, but you don't want to make things too easy so they believe real programming is that easy.
I think the MOST important part of programming is learning the structure. I was really bad with structure and I don't even think about it when I start writing a small app. The result is I usually miss a key structural element and just do a whole rewrite or two. I'd recommend getting a good flowchart program and encouraging him to plan it out thoroughly before touching the keyboard. Then let him pick what he uses, there are so many free compilers, but the more industry relevant the better I think.
Honestly, I use FreeBasic all the time. The runtimes are the fastest I've seen for basic and if I'm just trying to figure out a math concept, I run home to my language mommy.
(One of the things I was always interested in but didn't have the money to do till I was older was micro controllers. They have the same gratification as the flashy graphics, but for some reason I always learn more. I think that may be another good place to start learning programming.)
|
|
|
|
|
Lego NXT!
If you're not familiar, it's a lego robot. The programming is a high level visual block programming. So you programming with a flow chart, there loops decisions etc... you can actually create some pretty complex stuff. I think it's great to learn the concepts of how applications work. From there you can find C and C++ compilers for it, and I believe even a .net version.
My nephew is has been obsessed with the thing for years now.
|
|
|
|
|
Perhaps you are looking for the wrong answer...
Don't look for a programming langauge to start off with,
Start off with html.
Get a beginner book to build a website.
Only notepad would be required, and a copy of an internet browser.
Get them to build their own website with pictures and all.
That would be a good simple start.
Getting a copy of something like expression web 2 ( 3 is out now so you should be able to get a cheap copy of 2 ).... is a wisiwig designer for web pages too.
Leraning html / css for web pages, can then lead to asp.net ( web page programming using vb.net / c#.net ).
Cheers'
Miro
|
|
|
|
|
I'd suggest SmallBasic as a first language.
|
|
|
|
|
In the old days, I think "Logo" was the language the really young programmers were learning with:
http://www.cs.berkeley.edu/~bh/
|
|
|
|
|
I started programming in 5th grade with C++.
Yeah.
Find some old textbook, or get "Beginning programming for dummies". thats how i started.
Good luck!
|
|
|
|
|
I recommend either Phrogrom (small cost but uses .NET with Intellisense and uses Sprite concepts in a simple ay to make it easy to write interesting games) or Python (free, multi-paradigm with nice syntax and no irritating decorations - poweful lists and dictionaries)
|
|
|
|
|
I would recommend some of the child-orientated tutorials from http://www.kidwaresoftware.com/[^], though they aren't free they, they have "trial versions" that are downloads of the first half of the courses.
|
|
|
|
|
In a computational physics class I took, we used True Basic[^] to implement physics algorithms. It was OK in terms of using a BASIC-based language. It looks like it has a demo version you can download, but it terminates after 15 minutes of use.
If you want to go the C++ route, You Can Do It! - A beginner's introduction to Computer Programming[^] by Francis Glassborow & Roberta Allen has a pretty positive review. I've never actually looked at the book so I can't give a personal endorsement.
--
Marcus Kwok
|
|
|
|
|
Yesterday I spent hours trying to get a WPF grid control to do something which seemed obvious to me but seemed to need acres of XAML and C# (including 4 test programs) - I eventually gave up and decided that feature wasn't really required - who needs to set the next cell in a grid to readonly if the value of the current cell is a certain value - I mean, if the user types something into it then just ignore it.
Then it occurred to me that in the dim and distant past when I used COBOL such a thing would have been a matter of seconds to implement and I could concentrate on the thing the actual program was supposed to do rather than constantly hacking about trying to prevent the user from going where he/she shouldn't. Now, I have no wish to return to COBOL but sometimes...
|
|
|
|
|
Grids in COBOL?
All COBOL interfaces are readonly -- it's on paper!
|
|
|
|
|
It was very easy to implement "grids" in COBOL
|
|
|
|
|
You've never drawn a grid on paper?
(If i recall correctly, screen-oriented COBOL programs pretty much just mapped out row-column areas on the terminal that would be used as input, so grids were fairly trivial)
|
|
|
|
|
Manuel says: what a mistaka to maka[^].
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
Uh-huh. That's a common problem with these massive abstractions... They're written to fit a certain ideal mental model, and therefore make life rather difficult when your own idea of how the system should work doesn't match up. It's especially frustrating when, as an experienced programmer, you know what has to happen "behind the scenes" and just can't quite figure out how the framework designers envisioned that mapping onto their system.
But, that's always been true to some extent. AFAIK, you'd have bumped into similar barriers trying to write a side-scrolling platform game for VT-100 terminals...
|
|
|
|
|
I wrote a version of Scramble in COBOL-74 on a TI-990 - it worked alright 
|
|
|
|
|
Shog9 wrote: They're written to fit a certain ideal mental model, and therefore make life rather difficult when your own idea of how the system should work doesn't match up.
Does anyone know what model Microsoft have been using lately?
Oh and would thier telling us help in any way?
|
|
|
|
|
|
pseudonym67 wrote: Does anyone know what model Microsoft have been using lately?
No model; just mental.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
Off the top of my head, I can think of three ways to accomplish what you're trying to do. The simplest is to ignore the fact that the two things you're dealing with are in a grid. What matters is that the control behavior in one cell depends on the value of a control in another cell. Have the second control listen to change events in the first, and enable/disable itself appropriately. When you are populating the grid, tell the 'second' cells which 'first' cells they should listen to. The thing to note here is that the grid is a container for controls; all it does is describe how they're arranged. I don't think it needs to have anything to do with how the contents behave.
I'm not really trying to offer a solution here. I'm trying to illustrate that your viewpoint can give you tunnel vision when using a new technology. It sounds like you're trying to make WPF implement the solutions you've implemented in the past with other technologies, rather than learn how to solve the problem 'the WPF way'.
BTW, I'll be the first to admit that WPF takes quite a bit of getting used to. I'm a C++/MFC programmer from way back, and I skipped the whole .NET/WinForms thing until now. That said, WPF rocks. Even with the buggy Visual Studio 'designer', the abortion that is Expression Blend, and the monumentally informative exception handling (NOT), it is possible and easier to implement UI in WPF that you would have spent eons of time and thousands of lines of code implementing previously.
Software Zen: delete this;
|
|
|
|
|
Don't get me wrong, I haven't used COBOL for 20 years. I was just using it as an illustration, perhaps unwisely.
I do like WPF and some things are far easier in it than previous GUI technologies - however some are rather impenetrable - I wouldn't mind if it was clear there wasn't a solution and I was limited by the technology but in this case I feel sure I am not and I have gotten close to a solution using several approaches but there is always something which isn't right.
|
|
|
|
|
There does seem to be a certain 'WPF-fu' that is difficult to acquire and retain.
When it works, it's wonderful.
When it doesn't, as typified by the ever-popular XamlParseException when your app starts, it can get pretty ugly.
Software Zen: delete this;
|
|
|
|
|
WPF looks at things differently... If you're writing code in the grid cells, you're going against their "way"...
The "proper" way is to have each row in the grid correspond to a data object, and bind the values to the appropriate properties in templates... Then you can bind IsReadOnly to the value you want, with a supplied converter.
I've been working with WPF for about six months now, and I have to say I like it... Tricky to get used to, but once you figure out how to do things, you'll be amazed at what you can do.
But yes, the designer is garbage... Just do everything in XAML, and if you're lucky, you'll see the results.
|
|
|
|
|
That is mostly what I have been doing but there is always some gotcha - the grid (it's a datagrid) vendor says it is difficult to achieve and they do give an example of how to solve it but it doesn't really work very well.
I agree about doing everything in XAML, I gave up on the designers months ago
|
|
|
|