How is scripting different from programming?
Scripts can be written and executed on the fly (step-by-step executors of source code, where no translation takes place), without explicit compile (translators which generate machine code from source code) and link (combining one or more objects generated by a compiler into a single executable program.) steps. Scripts are typically created or modified by the person executing them. A scripting language is usually interpreted from source code or byte-code. Scripts are written for a software environment like Python or Maya which was built by a compiled language and distributed in machine code form; the user may not have access to its source code, let alone be able to modify it. (http://en.wikipedia.org/wiki/Scripting_language)
What Makes programming difficult to learn?
Programming is difficult to learn because there is a mismatch between the way we think about a solution and the way it must be expressed in the code. Beginners attempt to enter into a human-like communication with the computer. Computer cannot infer from context or enter into a clarification dialog. Conventional programming languages require the programmer to make tremendous transformations from the intended tasks to the code design (http://alumni.cs.ucr.edu/~ratana/PaneRatanamahatanaMyers00.pdf)
MEL: (Maya Embedded Language)
MELTM is a scripting language at the heart of Maya. Maya's user interface is created using MEL, and MEL provides an easy way to extend the functionality of Maya. Everything you can do using Maya's graphical interface can be automated and extended using MEL. Maya has thousands of commands to perform various functions covered in MEL documentation. MEL is descended from UNIX shell scripting. This means MEL is strongly based on executing commands which are little stand-alone programs with many options that modify their behavior to accomplish anything in Maya. (..\Autodesk\Maya2011\docs\Maya2011\en_US\index.html)
MAXScript is the built-in scripting language for 3ds Max that interactively controls all aspects of 3ds Max modeling, animation, materials, rendering, and so on. You could package scripts within custom utility panel rollouts/windows, giving them a standard 3ds Max user interface, and build custom import/export tools using the built-in file I/O. You could write procedural controllers that can access the entire state of the scene and build batch-processing tools, such as batch-rendering scripts. The MAXScript language is specifically designed to complement 3ds Max. It is object-oriented, and has several special features and constructs that mirror high-level concepts in the 3ds Max user interface.
Python has a clear readable syntax, dynamic object orientation, natural expression of procedural code (built in natural language expressions like iter(myObj)), full modularity (composed of separate, interchangeable components), supporting hierarchical packages, exception-based error handling, very high level dynamic data types, extensive standard libraries and third party modules for virtually every task. Adding extensions and modules to python are easily written in C, C++ (or Java for Jython, or .NET languages for IronPython). Python is embeddable within applications as a scripting interface such as Maya. (http://www.python.org/about/)
Python in Maya is a direct translation of Maya's command into python functions that is packaged in a Maya library. (...\Autodesk\Maya2011\docs\Maya2011\en_US\index.html)
Python scripts in Max is through Blur Studio's Py3dsMax plugin an open-source tools and scripts from Blur which is available on Google project hosting that includes a redistribution of the PyQT cross-platform GUI library. (http://area.autodesk.com/blogs/chris/py3dsmax_python_scripting_for_3ds_max_from_blur_studios)
Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight configuration language for any program that needs one. Lua is implemented as a library, written in clean C (that is, in the common subset of ANSI C and C++).
Being an extension language, Lua has no notion of a "main" program: it only works embedded in a host client, called the embedding program or simply the host. This host program can invoke functions to execute a piece of Lua code, can write and read Lua variables, and can register C functions to be called by Lua code. Lua is a dynamically typed language,which means variables do not have types; only values do. There are no type definitions in the language. All values carry their own type.
There are eight basic value types in Lua: nil(like null & make a condition false), Boolean (true/false), number (double-precision floating-point real numbers), string (arrays of 8-bit characters), function (little stand-alone programs written in Lua or C that can be stored in variables, passed as arguments to other functions, and returned as results), userdata(arbitrary C data of a block of raw memory which cannot be created or modified but can be stored in Lua variables), thread(independent threads of execution used to implement co-routines), and table(associative arrays that can be indexed not only with numbers, but with any value except nil). (http://www.lua.org/manual/5.0/manual.html)