Bandwidth is not something most of us even account for these days...isn't it unlimited, like everything else...memory, disk space? (sarcasm) As for installers, my gripe is against those who create installers with the kitchen sink thrown in for good measure...using merge modules for third party libraries with everything selected! I have a current situation with another vendor where we use almost the same version of a popular reporting package. We went through a lot of effort to include only the libraries needed (only a dozen or so) with our installer. The other company installs the whole shebang...hundreds of dlls that they don't even utilize! The problem is that the mere presence a particular file of a particular version (naturally, the one that they install) causes reports in our software to crash intermittently...no pattern. Research shows that this rogue library gets called into memory by some (so far) unknown process. Removing the file on the client caused their installer to go into a tizzy and replace it anyway. I wrote a special installer to update the library to a reliable version. Problem solved. Our reports work OK, their reports work OK. Until...they release a software update. Apparently, their installer replaces the newer library with the old flaky version. ...which leads to another support call, and simply replacing that file again. The bad news is that about 35% of my customers use their product. It's hard to convince a customer that your program is crashing because of an update they did to another program.
My wee teenage son has only been interested in games etc, but recently school has introduced him to scratch. He has enjoyed playing with it, but when I looked at it, it appeared to be a bit simplistic.
My background .Net and I have my prejudices but I'm wondering what other peoples opinions are on a easy to learn professional language for someone interested in games and animation (now thats outside my expertise)
I'm trying to put my prejudices at door and would appreciate some balanced thoughts. Thanks
These are all great introductions, though a little less 'open' than Scratch (i.e. they tend to use small pieces of code to perform small tasks- building upon previous tasks, and do it as part of a game format)
Kids using scratch for a few hours tend to come out with the "I know Scratch now, what's next". Really they've just scratched the surface (intended). Often they will have done an animation with maybe a couple of characters - sometimes with some minor interaction - but nothing more. They won't use variables by themselves and will sometimes delete huge swathes of code when something doesn't work rather than keep trying.
So they need help and encouragement (which is exactly what happens at a Dojo!).
Sure, scratch is a bit simplistic - but it is much less scary than a 'real' language - but if HE is bored with it, then I would recommend one of the other links (in increasing order of difficulty) for him to look at.
The other thing to look at is what HE wants to program?
When I casually asked a room full of about 35 kids (from 5 to 16) if they would be interested in looking at some Minecraft Modding i was nearly deafened by the response - kids are addicted and will have enormous kudos if they can write a mod.
Of course there are other approaches - you could teach 'em Java or C# or VB .Net or almost anything - but this isn't school - it's letting them explore and do something they want to do outside of the classroom - so instant gratification is king! these online tools will help them develop "computational thinking" and understand the syntax of a language, with which they can achieve something for themselves.
Finally, as I have waffled long enough on a subject about which I am passionate, Scratch, while looking simplistic to the experienced developer, really does teach these kids the concepts without them realising it - and that is great. Push them to do bigger and better stuff in Scratch and, when they are ready, they can apply those concepts to any language.
And this from someone who taught himself Basic on the Commodore Pet so that I could write an Assembler program to enable me to write in assembler on the Pet. tell the kids of today, and they won't believe you
I don't have any sensible suggestions for a first language really (although Logo used to be popular). I just wanted to make the point that the important thing is to learn the principles of program development (no matter how basic to start with) rather than get hooked on a particular language or dev environment. Any of the 'big' dev environments like .Net, Java, etc are in themselves quite complex beasts, and are often surrounded either by even more complex tools and/or require knowledge of complex libraries or frameworks to use effectively.
Those of us who started before all these things (I began with FORTRAN IV on paper coding sheets, then Algol 68R and assembler FFS!) forget that to someone who doesn't even have a basic understanding of how the hardware works, this is all just a mass of detail that obscures what you are really trying to achieve: bend the machine to your will!
So, my advice: find something that can produce a working application without needing to learn either complex editors/IDEs or libraries/frameworks: stick with that until the core principles of problem-solving and control of the hardware start to sink in; then introduce the complexity gradually. Try to find something relevant to do, whether it's a game, controlling a device, solving puzzles or whatever - something the learner can relate to in their lives.
It wasn't until I realised that the development process has (with the exception of DSLs) NOTHING to do with the language and framework you are building with, that I started to really feel productive.
If your son's interested in games, definitely use that to your advantage. I got into software development because of my love of games. My first language was Dark Basic, a Basic derivative for game prototyping. I loved it.
Get him a physical book. Online tutorials are great and all but physical media can really help you focus. He can take it to school and reed it in his down time, he can pick it up if the internet goes out, he can read it on the toilet, whatever lol. Unity, as someone else mentioned, is a pretty good choice though it may be a bit complex for someone just starting out. Gamemaker would teach your son more about game development, than it would programming but it's not a bad choice.
I always recommended to my friends growing up that they try to make a text based game as their first goal; that way you don't have to learn any graphics, sound, controller, etc apis. It's just simple logic and prints to a console. Could be a number guessing game, or a full blow text-based rpg. I'd recommend anything with console support (which is just about every language.) Python has console support, he could take that project and use pygame to turn it into something more later on. C# has console support and it's used to back Unity programming, so it would be relevant for him to learn. If he's interested in animations, flash is still a thing I hear lol.
I think adding more languages too quickly is a pain.
If he and his friends use scratch, then encourage him to write other programs in scratch.
Show him how to find, download run, and MODIFY someone elses code.
I offer my teen daughter a "bounty" (others call it a bribe), to pickup skills that are
on the "cusp" of her interest. (She did the online MSFT Excel training and made some cash
over the summer. She does not get an allowance, which encourages bounty seeking!).
Anyways, the thing that OPENED the door for my development was realizing I could start
with someone elses work and make it better... I started adding back doors to PDP/11 programs
while in high school, fake login programs to steal passwords (which apparently can be done on
Android devices... Everything old is new again)...
Last Visit: 31-Dec-99 18:00 Last Update: 16-Sep-14 12:57