In programming languages, a literal is a way of placing actual (constant) data in source code, as opposed to data stored in some variable, or computed somehow, or otherwise generated during execution. The compiler or interpreter defines certain syntaxes for identifying these places where data is being given or passed "literally".

So, 17, for instance, is an integer literal (in most sane programming languages). a = 17 might assign the literal 17 to the variable a. But 17L could (and does, in C, for instance) signal a long integer literal. "Hello World" is the syntax (in several popular languages) for a string literal. And so on. Obviously, some literals are more complex (and might be nested). In Python, you might have the list [17, "Hello World", {2: (1,2)}] which has three elements: the integer 17, the string "Hello World", and a dictionary with just one entry, the tuple of two integers 1 and 2, under the (integer) key 2...

Literals' syntax is part of the compiler or interpreter's basic parsing. Thus, in most modern mainstream languages, builtin types have their handy syntax for literals, while user-defined types and classes must make do with standardised functional constructor syntax, or whatever else is available.