== Question, one should ask per programming language Which atoms exist which are values of a defined type? Which simple values evaluates to true? How can one annotate the type to a value like "42"? How does one write numbers in a different radix? How does one generate a random number between 0 and 1? How does one test is-NaN? Are there bitwise functions on integers? What is the remainder of a negative number divided by a positive number? Which means allow to convert between types? Specifically from string to a specific type. How does one read UTF-8 files? How does one sleep/pause the runtime? How does one write a message to stderr? How does one start a separate process? == A modern programming language is ‘sane’(tm), if … [ ] true & false belong to a type which only allows 2 or 3 values [ ] there is an equality operator which distinguishes between 0 and "0" [ ] fetching a substring of a string uses the same index structure (e.g. inclusive start & exclusive end) like fetching a subsequence of an array [ ] if there is a fixed-width integer type, one can find bitwise operations like XOR in the standard library [ ] if there is a IEEE 754 type, NaN and +0.0 and -0.0 can be specified or distinguished [ ] there is a model for optional function arguments [ ] there is a model to introduce a custom scope for a sequence of few instructions [ ] string equality is case-sensitive per default [ ] Unicode operations {titlecase, uppercase, lowercase} are implemented [ ] string slicing operates on codepoints, not bytes [ ] utf8-bytes can be easily converted to strings [ ] strings can be easily converted to utf8-bytes [ ] string formatting supports integer representation in various radices [ ] string formatting supports integer representation with leading zeroes [ ] string formatting supports string representation with left- and right-padding [ ] string formatting supports out-of-order argument representation [ ] an array of strings can be easily joined with a provided separator [ ] loops with upper iteration-count limits can be specified [ ] the representation of an error indicates the filepath, line number, and line column where the error occured