Yesterday was the first day of our public "Learning to progam in Lua" course
Lua is an open source language, with a very open license indeed which allows it to be incorporated into other products without raising complex onward licensing issues even if the resultant product isn't itself open source. So this makes it rather good for incorporating into software such as computer games to provide a tailoring interface for knowledgable users. It has small footprints too, and again that makes it rather good for building into other products, especially where those other products may be running on smaller systems rather than meaty server computers. Paradoxically, the smaller footprint means that some things are left out of the language - features which are in a standard library routine in Python or Tcl need to be coded from first principles in Lua, or downloaded from another library / source, or built into your own library. Which makes learning the smaller language a slightly
bigger task - I say "slightly" because Pareto's Principle - the "80:20" rule
applies - Lua's a langauge that's less that 20% of the size of others, but actually does well over 80% of what most people want to do with it.
Delegates coming to Well House to learn a programming language come with two different backgrounds. The first group comes with some prior programming knowledge, and is looking for something of a "conversion course" - there will be things that are different from the langauges they already know, but principles
such as naming memory elements ("variables"), conditionals, loops, and named blocks of program ("functions") still apply. The second group comes without any prior programming experience, and so they need to learn these principles as well as the language itself and how they're implemented in the language.
How do we handle these two different starting points / groups on our courses? We can't just run a single course. It would EITHER be far too slow for those with prior experience OR it would be far too fast for newcomers to programming. But with some of the niche subjects we train in (Lua, Tcl etc), it wouldn't be cost effective to run two completely separate courses. So here's what we do:
• Newcomers to programing join us on the first day for "Learning to program in XXX" - an easy introduction to the priciples of variables, loops, conditionals, data types, etc, presented in the programming language that they'll be learning all week
. This day starts with a blank canvas - no book of "here is one I wrote earlier" examples, but rather with clear explanations from scratch, importantly showing delegates not only what a particular program does but also - and much more importantly - how to write such a program
• Delegates with prior programming experience join us on the second morning. A much faster introduction to variables, loops, etc for them - showing too how they differ from the other languages that those delegates know - acts as a re-inforcer of the principles learned on day one by the newcomers to programming, and the course can then carry on with both groups working together.
Every delegate on our courses who have prior programming experience was once a complete novice
, so those delegates joining us from day two have a tremendous appreciation of what the "day one folks" are going through. It extends beyond sympathy - it means they can and will provide truely interactive help during practical sessions. And it means they'll be challenged to explain their own understanding of first principles - a big gain for them in making sure that their groundworks are correct and secure too as we go on through the course.
Our formula for training both newcomers to a language, and newcomers to programming, works in such a way that both receive an excellent course. Today is the second day of "Learning to program in Lua" and the first day of "Lua Programming"
. In about an hour's time, I'll be talking about the principles of variables again, but this time with a slighly more technical slant to paint a slighly deeper picture for yesterday's delagate, and to highlight the differences between Lua, Java and PHP (I'm pre-altered to prior knowledge in my group of those two) for those who are converting.
From yesterday's course ... I've put the examples online for the delegates to refer back to later:
• Simple program - read keyboard, calculate, output result in Lua: [link]
• Adding in a condtional test - [link]
• And with a loop, producing a whole series of outputs - [link]
Please follow the course links in this article to read full course descritpions, and find our current schedule of dates, prices, and our location. As well as public courses, we can run private courses at our training centre, or on your site if you have a larger group who require the same course at the same time.
(written 2012-05-09, updated 2012-05-12)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesU101 - Introduction to Lua. 
Learning to write high quality code in Lua - (2009-07-30) 
Lua Course, and the Wiltshire Countryside too - (2008-10-16) 
Rules, suggestions, considerations for Lua variable names - (2008-08-05) 
If you are learning Lua, here are some more examples - (2008-07-06) 
Lua Course - here is the index - (2008-07-03) 
Training in Lua - (2007-03-16)U050 - Lua - General 
December courses - PHP, Python, Perl - and a weekend Lua course - (2011-11-24) 
Teaching Lua to a Perl advocate - (2010-09-06) 
Bookkeeping - (2009-12-29) 
Learning to program in ... - (2009-11-15) 
Lua Classes - open enrolement - (2009-11-04) 
Certification Revisted - Lua - (2009-08-09) 
For Lua Programmers AND for Town Planners - (2009-08-02) 
New Lua Examples - for last weeks delegates - (2009-08-01) 
Lua training class in Spanish - (2009-07-29) 
Learning PHP, Ruby, Lua and Python - upcoming courses - (2009-06-11)
Some other Articles
The future needs for rail services to Melksham - change needed; current service an insultUsing Lua tables as objectsPress Release - Museum to explore the story of MelkshamLua TablesLearning to Program in Lua - public / open training course / classBank Holiday Monday, so it was pouring with rain.Walking by the wiverNaming blocks of code, structures and Object Orientation - efficient coding in manageable chunksMelksham ATC - freedom of the townStrawberry Cream Teas, Well House Manor, Melksham, starting this weekend