Path: utzoo!attcan!uunet!munnari!jkjl From: jkjl@munnari.oz (John Lim) Newsgroups: comp.sys.mac.programmer Subject: LSC 3.0 critique (long) Keywords: Wish-list, improvements vis-a-vis LSP Message-ID: <2367@munnari.oz> Date: 15 Sep 88 06:16:58 GMT Organization: Comp Sci, Melbourne Uni, Australia Lines: 104 Dear Rich, heres a long critique of LSC. If you could forward it to M. Kahl I would be grateful. I have been using LSC 3.0 extensively for the past month, and have written about 10 000 lines of code with it so far. It's a great improvement over 2.15, but to me it seems that in taking two steps forward, THINK has taken 1 step backwards... What I mean by this is that in developing LSD (:-) they didnt implement many of the features of their sister compiler LSP. LightsBug is much superior when you are doing a stack crawl, or you want to view the application heap. LightBug's memory dump is a lot better than the display as Address feature of LSD when doing programs that involve large blocks of memory which cant be described easily by structs/unions, like variable length records or viewing text buffers. The stack crawl feature is LightsBug is so much superior to LSD. I do a lot of data hiding in my code, so the current context might not allow me to view a variable that was used in the calling function. For example : /*========= In one file ===============*/ static int not_in_context; f() { int not_in_context; a(); } /*========= In another file ===========*/ a() { /* I want to view both values of 'not_in_context' here */ } I know that you want to optimize the debugger so that it's fast, but couldnt you make it optional to view it like you do with structs (i.e. display only on double-click). Maybe you can have 3 data areas : 1 for auto, 1 for extern, and 1 for static vars. A minor bug i have noticed is that using cmd-D to write a variable to the data window doesnt work if you have selected an identifier in the declaration section, but selecting it from a stmt works. LSP allows you to search for a missing file. LSC just tells you a file cant be found. This is very irritating, as it often means i have to delete the file from the project and copy it again. A minor quibble though. The next feature LSP enjoys is the ability to alter options on a file by file basis (i.e. range checking etc.). When writing code for multiple machines, it would be really useful to be able to select 020 code for files that will only be used on a Mac 2 while 000 code is used for the other files that will run on SE's etc. Furthermore, if #define _68881_ and #define _68020_ were automatically predefined if the 020 /881 options were turned on would help improve code maintainence immensely. If we could simply do a #Options -68020 -Debugger -DebugName on a file by file basis like MacC (i dont believe it - i just complimented one of the worse C compilers out there !). All the above features that LSP has is lacking to some degree in LSC. Now here comes the wish-list of future features that is specific to LSC 4.0 only. 1. asm for 68020/68881 2. opening TEXT files when no project is open. I.e. using LSC as a plain-vanilla text editor. 3. multiple views of a file (i.e. split windows). 4. crc of project on request. Very useful as the project might become corrupt, but you only find out after you deleted your old backup and replaced it with a new 'corrupt' backup. Happened to me. I couldnt even remove the offending file from the project because it was corrupt. Recompiling the project sometimes doesnt help either. Throwing it away and adding again is a pain when you have 100+ source files ( i like data-hiding). 5. better use of address register variables in arrays: i.e. p[i] = q[i] should generate asm { move.? 0(p,i),0(q,i) } when p,q,i are all register vars. 6. Instead of making the user inform the stdio libs that the mac initialization (initgraf etc.) has been done, put a check in your Init_Stdio() code to check if (WWExist == 0) /* means Window Mgr already inited */ 7. LSD specific QuicKeys macros dont seem to work properly. Is that my fault, or due to the caching scheme used by the INIT provided ? 8. Saving of data window variables and contexts. I know that your debugging tables could be changed by recompiles, but i dont mind if the variables are displayed as undefined the next time i Run. At least it saves me the trouble of retyping the vars again, as all i have to do is reset the context. 9. Make LSC 4.0 a free upgrade :-) I like the product. I just wish it were perfect. john lim jkjl@munnari.oz