That said, no one has yet invented a general-purpose language that makes mistakes impossible, and the actual design of C# and the .NET Framework still have many pitfalls.
Every time I see such a defect I ask myself "is it possible to write a code analyzer which would find this bug automatically?" In an ideal world the language and framework would prevent developers from writing the broken software in the first place, but we live in a world where general-purpose languages are imperfect.
As reported by Emshoff and Sisson (Shannon 1975), important features of a special-purpose simulation language versus a
general-purpose language are that the special-purpose simulation language needs to be able to: 1) create random numbers; 2) create random variables; 3) advance time, either by one unit or to the next event; 4) record data for output; 5) perform statistical analyses on recorded data; 6) arrange outputs in specified formats; and, 7) detect and report logical inconsistencies and other error conditions.
English is our most important
general-purpose language; math, our most important limited-purpose one.
SQL, the universal language of databases, looks simple and is often used by developers as if it is, but in fact its relatively few but very powerful commands and the necessity of it being invoked by
general-purpose languages such as C++, Java, Python and Perl make it a sophisticated tool that can solve difficult problems with a single statement.