Re: [GD-General] C++ analyzers?
Brought to you by:
vexxed72
From: Kent Q. <ken...@co...> - 2002-07-19 00:20:23
|
Thursday, July 18, 2002, 5:30:28 PM, you wrote: > Other than the bitwise part, this is exactly what I'm talking about, but > as I've been ranting for several e-mails now =), a script that doesn't > know the language simply can't do it all. You can't do a bitwise compare > if you have assertions or anything else that might insert or create a > string based on a variable name, and who knows what other minor stuff > might be shifted around inside a symbol table because the symbol hashed > differently, etc. > Java IDEs provide a lot of the stuff I'm talking about, and I'm curious > why this doesn't exist in C++ except in the crudest form (i.e. "Class > Wizards" that generate code but then, if you edit the code, you're > usually hosed if you want to use the wizard again, unless that > 'technology' has gotten much better). > With a typical Java IDE you can trivially rename a method, class, member > function, etc. and it just runs through your code and updates it as > necessary. In fact, IBM's IDE used to prevent you from editing files > directly (!). I don't think we're at that point yet, but I think that > the notion is completely sound. > Hell, didn't SmallTalk do a lot of this? Kent, you reading this? There were some very cool tools in Smalltalk. It's been 8 years now since I was a Smalltalk weenie. The cool thing about Smalltalk was that the tools were part of the environment. If you needed something, you could write it just that easily, and there was a lot of stuff already written. But the bad thing was that you usually had to ship your environment because it was nearly impossible to disentangle the tools from the code that made up the application. You're really dancing around the thing that I think is the worst thing today about C++, and that is its continued insistence to depend on 1970s linker technology. C++ assumes that the linker is stupid, so that all the work has to be done by the compiler, and there's no standard linker format. Java uses a standard class (object) file format, and it's easy to write tools that look at that format. It also supports reflection, so you can write code that loads and analyzes compiled objects. As a result, you can use the built-in tooling to manage the codebase. With C++, you have to rely on parse-level tools, which, given the complexity of the C++ language, means that you basically have to write a GOOD compiler to even parse a source file. That's why nobody writes good tools for it. Your emails got me thinking that there really is a crying need for this, and maybe there's a business in it. But the cost of development of the tools is quite high, making the business much more difficult to get funding for. The more I code in C++, the more I like Java...for everything but delivering the final app to millions of users. Kent -- Kent Quirk, CTO, CogniToy ken...@co... http://www.cognitoy.com |