The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
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)...
Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.
Blender is a free and open source 3D animation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, even video editing and game creation. Advanced users employ Blender’s API for Python scripting to customize the application and write specialized tools; often these are included in Blender’s future releases. Blender is well suited to individuals and small studios who benefit from its unified pipeline and responsive development process.
I've always recommended C (not C++) as a starter language for a couple of reasons:
- You learn to think about what's under the hood from the start. If you go the other way around you may get into some vices that are heard to unlearn.
- Once you get up to speed with C, other languages are easy to learn, plus you get the benefits of high level programming with the knowledge of knowing what's going on under the hood. That makes a lot of difference on writing good software.
- Eventually, if he is serious about game programming, the odds are that he is gonna hit C++. Either himself or with an employer. That will make it much easier for him.
Having said all that, the C language is a challenge for most teenagers, but you will not know if he can handle it if he does not try. Maybe it will feel natural to him and if he does, well, he will have a brilliant future in programming.
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
---- Our heads are round so our thoughts can change direction - Francis Picabia
I started out with similar intentions when I first picked up C# about 7~ years ago.
I started with the XNA Framework from Microsoft making simple PC games. It introduced me to some common problems and practices that are encountered in developing video games.
After that, my job called for some in-house tools to be developed, and my knowledge of the language expanded to meet it. I started out with a program that scrapes files from a folder and emails them. My most recent project being more complex; an automatic update program that first checks for updates to itself, then loads and executes an assembly of update procedures for our flagship software.
I guess an example of this would be my ACLib project at github, which was intended to expand on the native Windows console and add some functionality more appropriate for ASCII based video games. This is one result of my interests in video games and my collected knowledge on C#, and a weekend's worth of work.
I've also used things like Unity, but I feel like they abstract too far away from letting you use C# to build a game, and instead they try to force you into their own little system of how things work. It chokes out the strengths of C# as a language by funneling you through their own libraries and ambiguously defined 'magic' methods.
I am by no means in the leagues with some of the fine folk here on CP, but I feel that the path I've chosen has prepared me well enough to pick up a legitimate job developing software and I can only recommend anyone young and willing to do the same, especially if they have the free time.
Last Visit: 31-Dec-99 18:00 Last Update: 26-May-17 17:13