- As mentioned in my previous post: Comment Addendum for Intro to Coding: Functions 2 - Instances and Particles, this is Part 1 of the comment series.
- I am looking for someone to review my comments (“code”) for technical accuracy and semantics. Please keep in mind I am learning this stuff myself; I am not a professional developer. Although I do have an instructional design background, I am simply looking to fill the gaps of the tutorials with information that I find particularly useful when new terms and jargon are introduced.
print("Hello world!")
-- The print("Hello world!") statement is automatically generated by Roblox
-- Studio when a new script object is created, such as this script file.
-- COMMENTS, INTERPRETERS, and COMPILERS:
--[[ Comments are lines of code that are ignored by the Lua interpreter.
Generally speaking, an interpreter is a program that converts the
easy-to-read Lua script code (or any other interpreted programming
language such as Python) into executable code and then executes it without the
need to for intermediate "middle-men". The interpreter is typically installed
with the program that executes it, such as Roblox, Roblox Studio, or, in the
case of Python programmjing language, Python. Without the interpreter,
program code cannot execute and exists only as plain-text script files or
underlying support files.
Interpreted languages exist in contrast to traditional compiled code, such
as C or C++ or C# programming languages, which require a compiler to
translate easy-to-read programming code into lower-level assembly code or
machine code (or both). Compiled code is converted from one file type,
such as "my_program.c", into an executable program such as "my_program.exe"
(exe is the file extension for executable programs in Microsoft Windows). The
compiler will compile the code into executable code that is compatible with
the underlying system hardware and operating system (OS); otherwise, the
program cannot execute on the system. For example, a program compiled for
Microsoft Windows will not execute on a system running macOS and vice versa,
at least without some kind of emulator or third-party program.
Why the need for two different types of languages? Well, "in the old days",
compiled languages were much faster when executed. This speed advantage had
its own trade-offs; to acheive execution speed, compiled programs require
the time to compile and then the compiled file(s) need to be distributed to
end-users, and finally installed on the compatible systems. Updates to a
compiled program required re-compiling, re-distributing, and re-installation
in the form of a complete re-install or a software update. While the steps
performed are somewhat lengthy (the internet has helped decrease updates and
distribution speeds dramatically!) the performance payoff was great. Fast
forward to today, compiled programs retain their performance payoff but not
by much. Interpreters are compiled programs so the interpreter such as
Roblox Studio or Python just need to be installed periodically. The scripts
that the interpreters run can be updated on-the-fly without any down time.
Thanks to improvements in the underlying hardware, interpreted code can be
interpreted very quickly.
Almost all programming languages support the use of comments. As mentioned
above, comments are ignored by the interpreter (or in the case of compiled
languages, the compiler). In Lua syntax, single-line comments are designated
with the double-hyphen -- . As a best practice, a single-line of code should
be no longer than 80 characters. This is actually a throw-back to the very
old days of programming when punch cards were used to program. These cards
werecomprised of 80 columns and multiple rows. When monitors came on the
scene,the terminal windows that displayed code preserved this limit as well!
If your lines of code exceed 80 characters, it is good practice to separate
thecode into multiple lines. Lua provides the multi-line comment syntax that
beginswith two hypens immediately followed by two opening square brackets:
--[[ . Any text following the opening square brackets will be commented out
until the comment is ended with a pair of closing square brackets, ]]
--[[ Although are not required, in Lua, it is good practice to precede the
closing square brackets with double hyphens --]]
-- BACK TO THE SCRIPT:
--[[ Begin your script with a short description detailing the purpose of
the script. While you may remember why the script was created right now,
a few months from now when you revist the script, the description may
provide valuable insight into your own logic. In addition, if you plan
on working with other developers on your project, comments will help them
gain some insight into the design, logic and flow of your decision-making,
and why decisions in your script and its code were made. Example below: --]]
-- SCRIPT SUMMARY:
--[[
*** This is Intro to Coding 1: "Create a Script". In this tutorial,
*** developers are introduced to script files and supporting details.
--]]
-- SCRIPT LOCATIONS:
--[[ Scripts can be created in almost every location in Roblox Studio.
All of these locations, use-cases, advantages and disadvantages will be
covered in later lessons. Typically, scripts are stored in:
ServerScriptService for server-side scripts, ReplicatedStorage for
client-side AND server-side scripts, and ReplicatedFirst or
Starter{Player | Pack | Gui} folders for Client-side (local) scripts.
--]]
--[[ This particular script should be stored in the ServerScriptService
folder in Roblox Studio. ServerScriptService is a "special" folder that is
designated for the ServerScriptService API. APIs will be covered later.
Suffice to say the ServerScriptService folder uses the ServerScriptService.
Scripts in the ServerScriptService location are run solely on the server -
not the client, meaning the individual player's system. Per the Roblox API
documentation, this "allows for the secure storage of important game logic".
When the service runs, such as when you press "Test and Play" in
Roblox Studio, the scripts and code in this container are automatically
executed. --]]
-- SCRIPT BEST PRACTICES:
--[[ A best practice is to rename your scripts. Per Lua and Roblox best
practices, rename your scripts using PascalCase, where the first letter
of each word in your label is upper-case. Examples include:
ThisIsPascalCase, SoIsThis, and This. Names should be short but descriptive,
such as DestroyFirePart, RespawnCharacterAfterLavaDeath (assuming there are
multiple scripts for respawning characters; otherwise RespawnCharacter
is preferred!) --]]