Dynamic Alternatives
P.O. Box 59237
Norwalk, CA 90652
dynalt@dynalt.com


S U M M A R Y


DIARY: July 27, 2003 10:06 AM Sunday; Garold L. Johnson

SDS++ -- Upgrading / Rewriting SDS

1...Summary/Objective
2...Enchancing the current program
3...Add DOS Extender
4...Use external programs
5...Rewriting SDS
6...Use a commercial editor
7...Editor with source code
8...Choice of programming language
9...Controlling the source code
10...Ease of learning important
11...A modern language preferred


..............
Click here to comment!

CONTACTS 

SUBJECTS
Knowledge Management
Subject Index Navigation Problem
Improvements
Deleting Subjects in SDS Records

0706 -
0706 -    ..
0707 - Summary/Objective
0708 -
070801 - Follow up ref SDS 36 0000. ref SDS 34 0000.
070802 -
070803 - I have considered several approaches to enhancing or rewriting SDS.
070804 - Here I intend to review them, and maybe add a few more.
070805 -
070806 -
070807 -
070808 -
070809 -
0709 -

SUBJECTS
DOS Extender to Solve Memory Problems
Launch Other Programs from Within SDS Using Windows Start Command

0904 -
090501 -  ..
090502 - Enchancing the current program
090503 -
090504 -
090505 -
090507 -  ..
090508 - Add DOS Extender
090509 -
090510 - This essentially means adding a DOS Extender to get around the memory
090511 - problem. Until that is done, modifying the current program is a very
090512 - ticklish operation, as we are constantly fighting memory issues in
090513 - one way or another.
090515 -  ..
090516 - The best candidate for a 16-Bit DOS Extender I have found so far is
090517 - DOS/16M from http://www.tenberry.com
090518 -
090519 -    Includes the development tools and two run-time licenses for $375
090520 -
090521 -    Additional run-times are normally $25 each.
090523 -     ..
090524 -    DOS/16M is sold with a full 60-day no-questions-asked return
090525 -    privilege.
090527 -  ..
090528 - I have the following notes on converting to DPMI:
090529 -
090530 -    http://saturn.spaceports.com/~dosuser/dpmiconv.htm
090532 -     ..
090533 -    If you have a lot of code in compiled form, such as libraries (.LIB
090534 -    or .OBJ files) purchased from third-party vendors (ie. not the
090535 -    compiler makers), or if you use a lot of assembly language, then
090536 -    you'd do best to go for 16-bit DPMI.
090538 -     ..
090539 -    In this case, you should be able to link the old modules with your
090540 -    program to get a working DPMI executable.
090542 -  ..
090543 - If this works, it would give us room to grow for some time to come.
090544 -
090545 -
090547 -  ..
090548 - Use external programs
090549 -
090550 - Since much of SDS operates on files to create other files or to
090551 - extract information, it is possible to use external programs to do
090552 - those operations. These can be Windows programs which don't have the
090553 - memory limitations of DOS. This has been demonstrated with both
090554 - Delphi and Perl scripts.
090556 -  ..
090557 - The prototypes use a macro to write information to a file, which the
090558 - application reads. The application can then read SDS records, and
090559 - place information on the Windows clipboard for other programs or
090560 - write a file that can be used by SDS.
090562 -  ..
090563 - Related Records:
090564 -
090565 -    021125, ref SDS 4 0001
090566 -    021126, ref SDS 5 0001
090567 -    030103, ref SDS 7 0001
090568 -    030105, ref SDS 8 0001
090569 -
090570 -
090571 -
090572 -
0906 -

SUBJECTS
Functionality for New SDS

1003 -
100401 -  ..
100402 - Rewriting SDS
100403 -
100404 - Since SDS is based on an editor, and there seems to be no better
100405 - base, the issue of a new SDS revolves around the issue of *what*
100406 - editor to use as a base.
100408 -  ..
100409 - Rod has argued that we need control of the editor code base.
100410 -
100411 -
100413 -  ..
100414 - Use a commercial editor
100415 -
100416 - Regardless of that I think that experimenting with an existing
100417 - (commercial) programming text editor could have some advantages.
100418 -
100419 -    •  MultiEdit -- Because I know and like it. I would have to learn
100420 -       the macro language far better than I know it now, but that is
100421 -       something I have threatened to do for some time.
100423 -        ..
100424 -       The macro source is available and includes everything but the
100425 -       core editing engine.
100427 -        ..
100428 -    •  CodeWright -- Supports Perl as a macro language, and I am
100429 -       fluent in Perl. There is the editor interface to learn, but
100430 -       that would need to be done for any approach.
100431 -
100432 -
100434 -  ..
100435 - Editor with source code
100436 -
100437 - We can write an editor from scratch or start with editor code that we
100438 - can obtain and control.
100439 -
100440 - Most of the editor source code that is freely available is Gnu Public
100441 - License (GPL), and requires that source be made available if there
100442 - are any modifications made.
100444 -  ..
100445 - There may be commercial packages that could be used. Most of what I
100446 - have seen is for word processing. TxText is one of the better known
100447 - and expensive) Rich Text editing components. Could SDS be based on a
100448 - Rich Text editor?
100450 -  ..
100451 - There is a free editor component, written in Delphi, called TMemoEx
100452 -
100453 -    http://www.tmemoex.com/
100455 -  ..
100456 - It is an enhanced version of the TMemo control that comes with
100457 - Delphi.
100459 -  ..
100460 - This, of course, determines the source language for the program,
100461 - which is an issue in any case.
100462 -
100464 -  ..
100465 - Choice of programming language
100466 -
100467 - There is a strong argument that this is as important or more so than
100468 - selecting an editor to use as a base.
100469 -
100470 -     [On 081120 followed up. ref SDS 37 HH6I
100472 -  ..
100473 - If we use a commercial editor, we are stuck with whatever it supports
100474 - as a macro language.
100476 -  ..
100477 - If we choose an existing editor component, we choose its language as
100478 - well. We could choose to translate the structure, but we should then
100479 - use it only for guidelines.
100481 -  ..
100482 - The language options appear to be:
100483 -
100484 -    •  Assembler -- Not a good choice. Hardly anybody knows it, and it
100485 -       can be inordinately difficult to program.
100486 -
100487 -    •  Visual Basic -- Included only for the sake of completeness. I
100488 -       don't consider it a serious candidate.
100490 -        ..
100491 -    •  C / C++ -- There are lots of programmmers. C++ is extremely
100492 -       complex. With appropriate discipline it can be a good language.
100494 -        ..
100495 -    •  Objective C -- Built on C. Status of Windows development
100496 -       environment not known.
100498 -        ..
100499 -    •  C# -- A decent language, but that requires buying into the
100500 -       entire Microsoft .NET scheme, and that has a horrendous
100501 -       learning curve. I don't know about its performance. If we bite
100502 -       the bullet on .NET, I would prefer to use Eiffel.
100504 -        ..
100505 -    •  Java -- Widely used. Lots of code both free and GPL. Lot of
100506 -       programmers (not me). Performance stinks. I have seen a few
100507 -       editors written in Java, and they are painfully slow.
100509 -        ..
100510 -    •  Delphi -- Object Pascal for Windows and Linux. It, too, has a
100511 -       steep learning curve, but much of it is the same as any Windows
100512 -       visual environment. It is not as hard as C++, but it is not as
100513 -       widely used. It gets my vote only because I have free source to
100514 -       an editor component, and it is the language I settled on as a
100515 -       Windows development language.
100517 -        ..
100518 -    •  Eiffel -- The most elegant of the object oriented languages.  I
100519 -       have wanted to learn it for some time, but its use is limited in
100520 -       this country. I would have to investigate it further before
100521 -       deciding to use it. It was rejected for a trial rewrite of Perl,
100522 -       but I am not certain that the reasons were accurate. At one time
100523 -       it required a C / C++ compiler in addition.
100525 -        ..
100526 -    •  Perl (or Python) -- I know Perl and could learn Python.
100527 -       Interfacing it with an editor involves using a windows
100528 -       component. There is an interface to wxWindows, which is a
100529 -       cross-platform GUI toolkit. I have used an outliner deveoped in
100530 -       Python using the package, so it can be done.
100532 -        ..
100533 -       Since Perl is an interpreter, is could have performance issues
100534 -       similar to Java. I haven't seen a full editing environment
100535 -       built using Perl, so I don't know if this is an issue. Python
100536 -       can load precompiled modules, which improves startup time.
100538 -        ..
100539 -       Perl under CodeWright is also possible.
100541 -        ..
100542 -    •  Smalltalk -- Lots of people swear by it. There are powerful
100543 -       compiled environments. It is a strange language, and I wouldn't
100544 -       recommend using it.
100546 -  ..
100547 - There are other contenders, but they start getting into diminishing
100548 - returns very quickly.
100549 -
100550 -
100552 -  ..
100553 - Controlling the source code
100554 -
100555 - Perl application have to be delivered with source code. It can be
100556 - encrypted in various ways, but that is a losing proposition.
100557 -
100558 - Python and Java can be delivered with only "compiled" code, but
100559 - decompiling them is fairly easy with readily available tools.
100561 -  ..
100562 - The ,NET languages compile to a bytecode which is also likely to be
100563 - readily decompiled. This includes C# and the .NET version of Eiffel.
100565 -  ..
100566 - The true compilers, assembler, C / C++, Delphi, and Eiffel (non-.NET)
100567 - all produce object code which is essentially imposible to decompile
100568 - and is therefore secure.
100570 -  ..
100571 - Depending on how paranoid we choose to be, there is a spectrum of
100572 - protection for the source code. One could argue that much of the code
100573 - for SDS is available with the product, but it is effecively
100574 - obfuscated for all but the extremely dedicated.
100575 -
100576 -
100578 -  ..
100579 - Ease of learning important
100580 -
100581 - The choice of language depends largely on the people doing the work
100582 - and their preferences. It would be nice if we could have all the
100583 - developers on the same page so far as language is concerned, but that
100584 - might not be easy. It may, however, be essential.
100586 -  ..
100587 - Trying to pick a language that people at all levels of skill can
100588 - manage is a challenge. Rod is not a programmer, though he has done an
100589 - amazing job with the tools at hand. His comfort with learning the
100590 - language we choose should get a great deal of consideration.
100592 -  ..
100593 - I think this rules out C++. I have studied the language, and it has
100594 - entirely too many nooks and crannies to trap the unwary. I have
100595 - resisted learning it until and unless somebody is willing to pay me
100596 - to do it.
100598 -  ..
100599 - C#, Java, Delphi, and Eiffel are all relatively easy as OO languages
100600 - go. There is the learning curve for objects in all of them, but the
100601 - languages are not huge. The libraries for any of them are substantial,
100602 - and about equivalent. There are string packages for them, but that is
100603 - generally not their strength.
100605 -  ..
100606 - Perl has some strange syntax, but is manageable with some simple
100607 - rules. Python is not much more difficult. The libraries are about
100608 - equivalent in complexity. The wxWindows toolkit is about the same
100609 - level as other GUI packages.
100611 -  ..
100612 - C lacks many of the capabilities of C++, but there has been an
100613 - incredible amount done using it. It is a relatively simple langauge,
100614 - but it does have its pitfalls. C doesn't have garbage collection
100615 - natively, though there are garbage collectors for it. Lack of garbage
100616 - collection can make memory management extremely difficult to debug.
100617 - It is not object oriented, and learning a language that doesn't
100618 - support OO would have to have some good arguments to support it.
100620 -  ..
100621 - By adding techniques to C, many of the difficulties can be overcome.
100622 - Objective C is an OO language built on top of C (it was used in the
100623 - Next system) that is well regarded in some circles. I haven't
100624 - determined the status of a Windows development environment for it.
100625 -
100627 -  ..
100628 - A modern language preferred
100629 -
100630 - I think there is value to learning a current, modern, language if a
100631 - new language needs to be learned.
100632 -
100633 - That would mean C++, Java, C#, Delphi, or Eiffel among the compiled
100634 - languages, and Perl or Python in the interpreters.
100636 -  ..
100637 - I seem to be back to Delphi, Eiffel, and Perl. I have been through
100638 - this exercise from the start several times, and I always come to the
100639 - same set. I could be in a rut, but I think that these are the only
100640 - viable choices for learning a new language.
100642 -  ..
100643 - If a group of developers decided to work on SDS and had strong
100644 - desires for a different, language, I can learn anything. Still the
100645 - concerns raised above need to be addressed in selecting a language.
100646 - Simple popularity among developers (even me) isn't enough of a reason
100647 - to choose a specific language.
100648 -
100649 -
100650 -
100651 -
1007 -