Snipped from SmalltalkSecurity * Security * Garbage Collection * Orthogonal Persistence What other language features are "fundamental"? I'd list (off the top of my head): * Concurrency * Access to OS-supplied resources - C.J. ---- * Regular Expressions and Context Free Grammars (unfortunately often left as an external tool e.g. YACC) support ''Isn't a library good enough for those (as in Ocaml)?'' Well, that is better than as an external tool, isn't it? Perhaps you mean that those aren't as fundamental is some way since they can be relegated to a library? ---- I would question whether any of the above can be regarded as FundamentalLanguageFeatures. We really don't need another LanguagePissingMatch page. Below are some features that could be considered fundamental, i.e. common to all. * Multiple representation of numbers trading off efficiency, range, and accuracy. We commonly have integers, long integers, and at least one kind of floating point. * Addition and subtraction. Multiplication and division may also be included, though there are some assembly languages that do not provide a multiply and divide operation. * Text representation (but not necessarily text string manipulation). * Array representation. * Data comparison. * Branching and conditional branching. * Concept of volatile versus non-volatile storage. * Subroutines. * Copying data. ''HaskellLanguage and other PurelyFunctional languages do not have this, nor the next one.'' * Difference between copies of data and references to data. * Use of a single return value. Arguably, exceptions may be providing an alternative to allow functions to return two independent values, a result or an error. ---- I believe one of the most fundamental features is AbstractDataTypes. Another thing I'd like to mention (despite that I'm unsure it can be considered to belong to FundamentalLanguageFeatures) is LanguageMinimalism; that is, everything which can at all be implemented by an external library, actually '''must''' be implemented as a library not a part of the language. And, by the way, GarbageCollection is to my mind a thing which limits a language to some certain problem domains only. Hmm... it can even be implemented by a library, as it is done for C++, so I'm unsure there can be a good reason to include it into a language... unless the language needs it naturally, like Lisp which has no memory management facilities at all. -- AndreyStolyarov ---- If I had to create this page again, I would name it CrossCuttingLanguageProperties. ''Language aspects?'' One would think so based on AspectProgramming, but the word aspect has a sort of nebulous feel to it. A language aspect could be just about anything, even the term 'fundamental language aspect' could mean just about anything. I mean hell, it could refer to the syntax or the fact that it uses English words. -- RK ---- Isn't this page a poor version of KeyLanguageFeature''''''s ?