# Core concepts

IDC language is a C-like language. It has the same lexical tokens as C does: character set, constants, identifiers, keywords, etc. However, since it is a scripting language, there are no pointers, and all variable types can be handled by the interpreter. Any variable may hold any value; variables are declared without specifying their type;

auto myvar;

An IDC program consists of function declarations. By default, execution starts from a function named 'main'.

Select a topic to read:

* [Variables](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/variables)
* [Functions](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/functions)
* [Statements](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/statements)
* [Expressions](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/expressions)
* [Predefined symbols](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/predefined-symbols)
* [Slices](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/slices)
* [Exceptions](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/core-concepts/exceptions)
* [Index of IDC functions](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/idc-api-reference/alphabetical-list-of-idc-functions)
* [Index of debugger related IDC functions](https://docs.hex-rays.com/9.0sp1/developer-guide/idc/idc-api-reference/index-of-debugger-related-idc-functions)
