4 ms·
This is one of the major issues with these languages that were initially designed by amateurs (I mean that in the positive sense, someone who does something bec
by choeger 7y ago
This is one of the major issues with these languages that were initially designed by amateurs (I mean that in the positive sense, someone who does something because they care about it, and not because they are paid to do it). Often they simply did not see the long-term benefit of adhering to the limits of a "standard" architecture (i.e., context-free, unambiguous grammar, decidable static analysis (lookup!), multi-pass implementation). Yet these hackers still made a successful product. Now others must live with the consequences (for another example, have a look at javascript's scoping - I strongly suspect that it was a beginner's mistake that made it into production).
That particular syntactic ambiguity in C++ would have been trivial to fix (and could still be fixed today!), but no one really cares (and it would not be backwards compatible...).
Another example is the current situation with modules in C++. Instead of looking into the diverse ML implementations or even Java and trying to get the system right, the current discussion goes into wild compiler hacks just to avoid a simple limitation on filenames.
- rightbyte 7y agoIf I remember correctly Stroustrup was working at Bell labs in the initial phases of the cpp design with a formal education in CS. Hardly an amateur? Inexperienced maybe.
- smitty1e 7y agoFor a random sampling of the internet, being a critic of a complex system is trivial. Offering an alternative that's an objective improvement, much less, on par with the status quo? Not so much.
- vkazanov 7y ago"Formal education in CS" is not the same as, say, a degree related to programming languages or compilers.
- tralarpa 7y agoYes. There is a section in one of his books where he wrote that he added some feature in an ad-hoc way just because of a request from a colleague. Unfortunately, as I have already written in another comment some months ago, C++ was the wrong thing that came at the right time (C people were starting looking for alternatives, seeing what cool things other languages were doing).
- tempguy9999 7y agoI think you might mean the 'protected' thing in classes. It was something he regretted later. IIRC the person who asked for it also regretted that, but I'm less sure on that.
- deleted 7y ago[deleted]
- iainmerrick 7y agoSure it is! A reputable CS degree will cover multiple programming languages and compiler implementation. I don’t think you could study just “compilers”, say, at undergrad level. Maybe you mean postgrad or postdoc-level qualifications? It would certainly be a pretty different world if you were only allowed to design a new programming language after getting your PhD in language design.
- coldtea 7y ago>Sure it is! A reputable CS degree will cover multiple programming languages and compiler implementation. Which is neither here, nor there. A reputable CS degree is an all rounder, it's not expertise in PL design and research. >I don’t think you could study just “compilers”, say, at undergrad level. Maybe you mean postgrad or postdoc-level qualifications? For starters, yes, but it's not about official qualifications. Someone (e.g. Simon Peyton Jones) could be a PL expert without "official qualification" in the form of such a degree. Even writing many increasingly successful languages could do it. Starting with your first (or first serious) attempt at a language, however, is not that... Anders Hejlsberg is another famous example. He didn't complete his university (and it was on Engineering anyway), but after decades of successful work on the field be became a major PL designer and expert. Stroustrup, however, was hardly anything like that at the time he first designed C++.
- pjmlp 7y agoIn most European universities CS and Engineering are intermingled. Pure CS theory tends to be a maths major.
- pjmlp 7y agoThe problems with modules is not getting the system right, the module proposal owners are well aware how to do it. The problem was the politcal wars of tons of companies that don't want to let go of their in-house build systems based on translation units just to make use of modules. So the end result is a compromise to make some of those big names happy.
- bigcheesegs 7y agoWhat do you mean by wild compiler hacks?
- choeger 7y agoFor instance the proposed solution where the compiler becomes a service that blocks compilation of a unit until it has seen all the module dependencies.
- gpderetta 7y ago>Yet these hackers still made a successful product. Worse is, was and always will be better. It seems that's an unchanging law of software design. Practicality, getting things done and catering to user needs always beats purity, elegance and soundness.
- TeMPOraL 7y agoLess rosy view: sacrificing quality to increase adoption or decrease time to market always wins, so on the market, all software moves towards being the worst possible design that's still fit for purpose. Alternative phrasing: the market runs on greedy optimization, which means a lot of value that could be gained is simply unreachable.
- gpderetta 7y agoDefinitely. There is still value in elegant and sound solutions though. Even if inevitably unsuccessful, they will still be influential on the next round of practical hacks.
- skohan 7y agoIn defense of amateurs, there is also something to be said for the ergonomics which come out of designing a language iteratively, against concrete use-cases, rather than from a purely theoretical direction.
- amelius 7y ago> This is one of the major issues with these languages that were initially designed by amateurs (I mean that in the positive sense, someone who does something because they care about it, and not because they are paid to do it). As opposed to a "professional" who is told by their boss to implement X before the end of the day?