4 ms·
Does there exist a catalog of these pioneering or best practice features, and bad features that should not be replicated? It might be worthwhile to have a tome
by acegopher 3y ago
Does there exist a catalog of these pioneering or best practice features, and bad features that should not be replicated? It might be worthwhile to have a tome of such for future language designers to learn from.
- winter_blue 3y ago> Does there exist a catalog of these pioneering or best practice features, and bad features that should not be replicated? It might be worthwhile to have a tome of such for future language designers to learn from. A "programming language features" wiki cataloging such features (and their pros/cons) would be amazing.
- adrian_b 3y agoI am not aware of any such catalog, so I had to compile one for my personal use from reading a very large number of old documents. There are a few books about the history of programming languages, but they are mostly descriptive and contain little comparative analysis of the value of various features. Moreover because due to space limitations they have to mention only a part of the features of the languages that are described, the choice of what to mention and what to ignore in the description of a language may be not the most appropriate from the POV of an experienced programmer. Therefore I have found more useful the original manuals of various programming languages, from when they have been launched, during the fifties, sixties and seventies of the 20th century. After 1980 the pace of innovations has slowed a lot and most of the languages that introduced those innovations are still used today, so finding documentation about them is no longer difficult. While C was itself an innovative language, the fact that it included very few of the features of the languages contemporaneous with it ensured that many of those features are not available even today in mainstream languages, while other features have become widely used only after decades after their invention, for instance iterators have already been introduced in 1974, in the same year with C, but they have been revived only a quarter of a century later. Fortunately now there are a handful of Internet sites dedicated to the preservation of the history of computers and programming languages, from where it is easy to download most of the old documentation.
- ethbr1 3y agoOne reason that such a list might not exist is its inherent multidisciplinary nature. Program language design is also: - Performant compiler design - CPU/GPU hardware optimization - Programmer ergonomics - Large software project organization - Source code hygiene - Evolutionary flexibility - Platform management and organization That's a lot of intersections! And it's reasonable that we get programming languages with flaws in one or more areas simply because their designers weren't experts in yet another needed field.
- samsquire 3y agoThanks for this comment. I agree! Those things you listed all interact with eachother. I am still trying to get my head around orthogonality in design and how to design permutations/combinations that work together well and are flexible.
- ethbr1 3y agoI'd be fascinated to see a graph based approach to programming language features, but I'm not sure they're decomposable and independent enough to make it feasible. Start by listing out programming language qualities that are good/bad/intolerable for each of those other interaction categories, then work that backwards into a set of required features for a desired language. E.g. X makes writing a Y compiler optimization impossible
- samsquire 3y agoI have had the same thoughts. I am writing about your idea: Structured Interaction Programming: https://github.com/samsquire/ideas5#350-structured-interaction-programming-trying-to-restrict-interaction-complexity-and-implement-arbitrary-software-composability-of-abstractions https://github.com/samsquire/ideas5#350-structured-interacti... Knowledgegraph programming language: https://github.com/samsquire/ideas4#334-knowledgegraph-programming-language https://github.com/samsquire/ideas4#334-knowledgegraph-progr...
- zeckalpha 3y agoThe decadal History of Programming Languages conference and its proceedings are a good reference for this.
- thaumasiotes 3y agoThis is something that always makes me sad: In C, the escape character for literal strings, as interpreted by the C compiler, is the backslash. ("\") Also in C, the escape character for format strings, as interpreted by the printf function, is the percentage sign. ("%") This is the correct way to do things, for the very obvious reason that neither the compiler nor printf can get confused by the input the programmer provides. Directions to the compiler look nothing like directions to printf. But for some reason, this knowledge of how to define formats was completely forgotten, and so regular expression parsers were all defined to use a backslash as their escape character. There is no earthly reason you would want to do this. It causes many, many problems, and has no benefits, to use the same escape character for the compiler/interpreter and for the regex engine. But we're doing it anyway.
- vbezhenar 3y agoLua uses % for patterns.