How Nougat differs

Here's what you need to know if you're coming from another language: Nougat does not syntactically derive from other languages. It is a new language that is designed to be easy to use and understand, while also being powerful and flexible. To make a language that is intuitive by design, we had to make a few compromises to familiarity, but this is a good thing! Here's why:
For instance, let's take a look at the following code snippet:

log {Hello World!}

It outputs: Hello World!

But if we do:

log {"Hello World!"} // note the added quotes

It outputs: "Hello World!" including the quotes you've added, which might not be what you want.
To understand why this happens, we must keep in mind that Nougat is a highly dynamic language with input-based types.

Inputs in Nougat are different kinds of brackets, which are used to determine the type of data you want to plug into a function, such as a string, a variable, or a mathematical expression. In this case, we should focus on the {} input (or the "literal" input, as I like to call it.). What this does is that it takes what's inside the brackets, not inside quotes, and dynamically determines it as a string or a number. It is used for "literal" values, which are values that are not variables and do not change.

So to sum things up, {} is for literals, () is for variables, [] is for plugging the output of a function into another, and <> is for mathematical expressions. All you need to do is enter whatever you want to compute inside the brackets, no quotes needed, and Nougat will take care of the rest.

The concept of objects

Nougat is not entirely object-oriented in the traditional sense. In fact, Nougat has a completely different concept from languages like JavaScript of what an object is. In Nougat, an object is more like a sprite in Scratch. A folder that contains all code and assets related to a specific thing. For example, if you want to create a game, you would create a folder for each character, and inside that folder, you would put all the code and assets related to that character.

Scripts inside an object, when bundled inside a fully compiled project, are immediately "activated" and executing whatever is inside when {run} {} and/or listening for events broadcasted from other objects with send {myEvent}. For more info on how to set up a project and its folder structure, including objects, check out the project setup guide.