  Block-based environments are visual programming environments, which are
becoming more and more popular because of their ease of use. The ease of use
comes thanks to their intuitive graphical representation and structural
metaphors (jigsaw-like puzzles) to display valid combinations of language
constructs to the users. Part of the current popularity of block-based
environments is thanks to Scratch. As a result they are often associated with
tools for children or young learners. However, it is unclear how these types of
programming environments are developed and used in general. So we conducted a
systematic literature review on block-based environments by studying 152 papers
published between 2014 and 2020, and a non-systematic tool review of 32
block-based environments. In particular, we provide a helpful inventory of
block-based editors for end-users on different topics and domains. Likewise, we
focused on identifying the main components of block-based environments, how
they are engineered, and how they are used. This survey should be equally
helpful for language engineering researchers and language engineers alike.
