a guest Jul 11th, 2018 165 Never
- (My apologies on the delay in replying to you; I tend not to check the e-mail account to which you sent your letter as often as I ought, and sometimes I miss interesting things that arrive there.)
- I've just stumbled upon your comment in response to esr's announce of his C++ critique. I know it dates back to October 2008, but I really liked it - it sounds based on actual experience and real life pain using C++.
- I've written a lot of code in C++, but today I rarely if ever use it anymore. As much as I liked the performance and power it offered, I hated... well, just about everything else about it. I liked the low-level feel, and at the same time I hated being forced to do everything at the lowest level. And what's worse is that the libraries often made things harder, not easier.
- I'm currently working on 'ooc' (website = ooc-lang.org) which doesn't thrive to replace C++ but rather to find a compromise between low level and high level languages, to choose paradigms that make sense and implement in a way that makes sense & is extensible.
- I consider the syntax to be important, because it's the way one expresses, so readability and terseness (in that order) count.
- I think a good language should be extensible, and more importantly, it should has a small core on which everything else is built on. Most of C++ features are unnecessarily hardcoded, where they could be extensions, had they a powerful enough macro system.
- And by macro system I don't mean "something that spits text", but "something which manipulates the AST".
- The paradigms & influences I'm concentrating on at the moment are: Object-oriented programming (Java), Modules instead of .c/.h separation (Java), Contracts (Eiffel), Static typing (Java, C), Concept programming (XL), Closures/Blocks (Python, Ruby...), Simple syntax (Io), Exceptions (Java), Pointer+References for low-level (C/C++ but with clearer syntax), Garbage Collection (Boehm GC), ..
- That's an interesting laundry list of influences, to say the least. I worry a little from the length of that list that your design might become a little distracted, unsure of its direction; having only had the time to skim the website, I can't be sure. I do know that I didn't see any formal grammar there, which also worries me a little; without a formal language definition, I do ask myself how "sturdy" the language design is, how likely it is to withstand the abuse that would be put upon it by everyone from garden-variety grunt programmers to hardcore gurus. I also wonder, having not seen that, how far you've gone towards ensuring the language has solid theoretical underpinnings, and whether your language knows its place in the pantheon of language design.
- On the other hand, I commend you for doing at least some research before trying to just build something. All too many people say, "I want to build a new language!" and then they build either C or Pascal with some minor syntactic tweaks. If you're going to do something new, you should at least attempt to understand what's been done before so that you don't end up repeating it, and often repeating it worse than the original design.
- I respect the notion of a macro system that can manipulate the AST: How well-versed are you in your Lisp? Are you familiar with Paul Graham's Arc? And as for simple syntax, have you studied Smalltalk at all? Designing a new language without having a decent familiarity with Smalltalk and Lisp is somewhat like designing cars without knowing how combustion engines work: It's critical foundational material, and if you haven't studied it, you'll at best eventually approach what their designers already learned years ago.
- Why am I telling you all this? I'm aware a vast majority of people out there - including you - have griefs against programming languages like C++, but no time to try and work on a better solution. I have plenty of time (student) so I'm taking a shot at it ;) I'd appreciate a lot if you kept an eye on the project, I'd love to talk with you of language design (so that I can avoid some C++ decisions/features that were mistakes, etc.), you got my gmail from your form, it's also a Jabber account to which I'm connected pretty often.
- I have made time in the past, actually, but I have nightmarishly high standards: If I'm going to switch languages, the new language had better be worth the effort, and that doesn't mean "X language with Y feature done right" or "X language with Z feature added". (I code in C# today not because I especially love it but because it puts food on my table, and properly providing for my wife is an important issue at this point in my life.) So in the language research I've done over the past decade and a half, I've developed the theoretical core of a very pretty language, one which is very, very different from anything that's been seen before, but sadly, I haven't had enough time to finish a full implementation of it.
- So bear in mind that if you'd like me to look at OOC, I will happily do so, but I'll likely look at it from a very harsh perspective: I know what I'd really like to see in an ideal language, and I'll warn you from the start that I haven't seen a language yet that meets my goals.
- Sean Werkema
RAW Paste Data