All programs are just files on your computer filled with text. That text has a special syntax we call code. The programming language you're using defines the syntax of the code you are allowed to write. Programs are converted to machine code so that the computer can understand it.
Depending on the programming language you're using, it will either be a compiled language or an interpreted language. Compiled programs will first be converted to machine code and then you will be able to run the program. Interpreted languages will be interpreted and converted to machine code at run time.
Once you have a Ruby program as a file, you can run it through the Ruby interpreter to execute it. Your Ruby interpreter is accessible via the
ruby command in your command line (assuming you have ruby installed correctly).
When you type in
ruby -v you should see the version of Ruby you are currently running.
ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
As an example, to run a Ruby program that was stored in
some-program.rb you would simply type:
Every word and character in a program has to be valid code for the Ruby language. Basically, every word can be one of three possible things:
Anything that isn't one of those is invalid and the Ruby interpreter will throw an error.
Let's say you ran a program, and saw the following output (pay attention to the last line):
Programs are composed of basically three things: A language's keywords, like 'if' or 'end' (approximately 43). Literal pieces of data like this very sentence (or String). Finally, barewords, or variables, that are set equal to things. Anything that isn't one of those will cause an error. lib/a_ruby_program.rb:23:in `<main>': undefined local variable or method `see' for main:Object (NameError)
That last line,
lib/a_ruby_program.rb:23:in '<main>': undefined local variable or method 'see' for main:Object (NameError) is telling you that there was an error caused by an unrecognized word in the source of our program, more specifically on line 23.
We'll soon learn all about reading error messages.