Dennis J. Darland's Software Projects Home Page
Description: Programmer and Philosopher
Keywords: ordinary differential equations,Taylor series,Dennis Darland,arbitrary precision floating point,quantum mechanics,Ruby,rails,consultant

Home Page of Dennis J. Darland's Software Projects
Email: Mail To: pal at dennisdarland dot com
Programmer At Large
Comments welcome.
For other things I'm doing see my home page.
Computer Languages I have available to me.
Some of the other software I have available to me.
As of 6/1/2014 this needs extensive revision.
I have Changed Linux OS's

## MY SOFTWARE PROJECTS

1. Work in Ruby
   1. My Arbitrary Precision Floating Point (APFP) Library and Rails Calculators
   2. My Software for Solving Systems of Ordinary Differential Equations (SODE)
2. My Port of the Language Life (wild_life) to Linux and Cygwin
   1. Wildlife 1.02 as I obtained it in the 1990's and Notes on Port
   2. Wildlife 2.01 - My Port
   3. Wildlife 1.02 Documentation
3. The Computer Language Bertrand
4. The Computer Language Russell
   1. Russell as I obtained it in the 1990's - or the closest I have to it.
   2. The Russell Grammar as I received it
   3. Porting Efforts - Past - c, Ruby, Snobol
   4. Porting Efforts - Present - Unicon
   5. Bibliography relevant to Russell Language I can share.
   6. Examples of russell code.
   7. Bibliography relevant to Russell Language I have.
   8. Bibliography relevant to Russell Language I do not have.
   9. Russell - Additional Relevant Bibliography that I have
   10. My Notes on Porting Russell etc.
5. The Computer Language Russell2 - Just an Idea so far
6. My Health Data Analysis Software
7. Work in Java

1. Work in Ruby.
   1. My Arbitrary Precision Floating Point (APFP) Library and Rails Calculators
   2. My Systems of Differential Equations Solver (using Long Taylor Series)
2. Port of wild_life to 64 bit SUSE Linux and Cygwin
   1. Starting point Wildife 1.02 as I received it in 1990's and Porting Notes
      1. Life-1.02.tar.gz
      2. Also located port I had done to OS2 in 1990's
      3. Main points of Port (mostly from memory after the fact - I should have taken notes!)
      4. Changed from varargs to stdargs - Used code in OS2 Port for this.
      5. Added proper prototypes.
      6. Replaced compare functions as arguments with longs indicating sort of compare (for find and inserts).
      7. Last required converting integers to strings before compare & result back to string afterwards - except special handling for NULL.
      8. Added many checks for NULL pointers
      9. 3/6/2015 Found in porting to cygwin only big problem was archive had files same except for case and windows is not case sensitive.
      10. Also there were 3 files within Life that required case sensitivity - tho others were from my old OS/2 port.
      11. I eliminated all conflicts by getting rid of the os/2 files and changing other names.
      12. Changed how memory allocated for gamma_table
   2. Wild_life 2.01
      1. Tarball of wildlife 2.01
      2. Also Short Wild Life 2.01 Video Demo (of card game pitch programmed in wild_life)
      3. Wild_life 2.01 Seems to work file under 64 bit SUSE Linux and both 32 and 64 bit cygwin.
      4. Will need a little attention to paths to install & get working and the install process (configure) has not been updated. (Not enough time yet & not tested enough)
      5. DO NOT TRY to use "configure"
      6. Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
   3. Life Documentation:
      1. Life Handbook
      2. Life Toolkit
      3. Context 1
      4. Context 2
      5. Context 3
      6. Context def
      7. Dumant
      8. Meyer
      9. Van Roy
      10. c_life
      11. Debug
      12. Parser
      13. Profiler
      14. Shell
      15. Sys
      16. Tokenizer
      17. wildlife doxygen info
3. Bertrand
   1. Found newer version of Bertrand (still written in c - and got working (5/24/2014)
   2. Bertand tarball - works under SUSE Linux 13.1 (no graphics I think) All I changed was the Makefile, I think
   3. Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
   4. Bertrand Documentation
      1. Bertrand Documentation
      2. Bertrand Guide
      3. Bertrand Reference
      4. Bertrand License
      5. Bertrand README
      6. Bertrand README2
      7. Bertrand book
      8. bertrand doxygen info
4. Work on russell
   1. Russell as I received it in 1990's and Porting Notes
      russell.tar.gz
      russell doxygen info
   2. Russell Grammar as I received it in 1990's
      1. grammar.y - input file to flex and bison (at that time lex and yacc) to create lexical scanner and parser
      2. lex.yy.c - scanner
      3. grammar.tab.h - header file for parser
      4. grammar.tab.c - parser
      5. russell.grammar report - bison report file on russell
   3. Porting Efforts - Past - None of these are nearly complete or functional at all.
      C, Ruby, Snobol
      1. Tarballs of Ruby port, etc.
      2. Tarball of progress on converting russell from c to ruby(as of 7/6/2014 )
      3. Tarballs of snobol4 port, etc.
      4. Snobol program for indenting snobol programs (9/10/2015)
      5. The russell.sno program (as of 9/18/2015)
      6. A simple russell test program (as of 9/18/2015)
      7. Scanner Table for test program (as of 9/18/2015)
      8. Parser Table for test program (as of 9/18/2015)
      9. Statistics from russell.sno for simple test program (as of 9/18/2015)
      10. Nodes data from test (as of 9/18/2015)
      11. Lists data from test (as of 9/18/2015)
      12. Debugging data from test (as of 9/18/2015)
      13. Error data from test (as of 9/18/2015)
      14. Output of Russell test (as of 9/18/2015)
      15. Statistics from snobol for russell.sno Test (as of 9/18/2015)
      16. 9/18/2015 - Suspended port of russell for port of flex & sbison - (sflex & sbison) - to be used. More on them to be added on this page later.
      17. 9/21/2015 - My intent had been to modify flex & bison to generate snobol4 code.
      18. However in studying this I learned there is some support already for generating java.
      19. Then investigating that, I found there are other applications of that sort for java.
      20. Java would be superior to snobol for a number of reasons - so I am going to investigate this.
      21. One reason is the global nature of variables etc in snobol.
      22. Another is java is much more like the C russell was originally written in.
      23. Another is the garbage collection that java does automatically.
      24. However, again, my study has paid off.
   4. Porting to Unicon - Lexical Analysis and Parsing Seem to Work
      1. It ended up that I decided to use Unicon rather than Java:
         Source Code: (as of 10/6/2015)
         It's too hard to update this - I am providing tarballs further below.
         1. The Grammar files:
         2. pass1/parser/grammar.orig.c.y.txt
         3. NOTES.gmr.edit.txt.txt
         4. pass1/parser/grammar.edit.y.txt
         5. fixgram.sno.txt
         6. pass1/parser/grammar.icn.txt
         7. Unicon Source
         8. defs.tmp.icn.txt
         9. global_vars.tmp.icn.txt
         10. globals_init.tmp.icn.txt
         11. main.tmp.icn.txt
         12. mine.tmp.icn.txt
         13. pass1/scanner/scan.tmp.icn.txt
         14. pass1/scanner/scan_sep_inc.tmp.icn.txt
         15. pass1/parser/grammar.fixed.tmp.icn.txt
         16. pass1/parser/initids.tmp.icn.txt
         17. pass1/applinfer/precedence.tmp.icn.txt
         18. pass1/stt/stt.tmp.icn.txt
         19. pass5d/RIC.tmp.icn.txt
         20. stree/ststructs_cls.tmp.icn.txt
         21. stree/mknode.tmp.icn.txt
         22. pass1/applinfer/mkappl.tmp.icn.txt
         23. stree/Array.tmp.icn.txt
         24. pass1/applinfer/mkappl2.tmp.icn.txt
         25. pass1/applinfer/outermost_op.tmp.icn.txt
         26. pass1/applinfer/single_arg.tmp.icn.txt
         27. pass1/applinfer/cand_cond.tmp.icn.txt
         28. pass1/applinfer/cor_cond.tmp.icn.txt
         29. sigio/sig_out.tmp.icn.txt
         30. sigio/sig_in.tmp.icn.txt
         31. End Unicon Source
         32. mknode.icn - make nodes
      2. NOTES on Unicon and iyacc
         1. I found I had to remove comments from the rules section of grammar.y for iyacc
         2. I found many closing "}"'s were missing in the code iyacc generated
         3. I had to move local variable declarations - they can go after any "{" in c or anywhere in c++, but must go at top of procedure in unicon
         4. At this point, the scanning & parsing seems to work - I haven't started on code generation yet.
      3. Tests (10/11/2015) - Lexical Analysis and Parsing
         1. Misc russell code - output
            1. misc.r.txt
            2. urusserr.tmp.txt
            3. urussout.tmp.txt
            4. progress.tmp.txt
            5. reduce.tmp.txt
            6. ccode.tmp.txt
            7. stats.tmp.txt
            8. lists.tmp.txt
            9. nodes.tmp.txt
            10. cons.tmp.txt
            11. tree.tmp.txt
            12. sym.tmp.txt
            13. russ_info.tmp.txt
         2. Factorial function in russell
            1. fact.r.txt
            2. urusserr.tmp.txt
            3. urussout.tmp.txt
            4. progress.tmp.txt
            5. reduce.tmp.txt
            6. ccode.tmp.txt
            7. stats.tmp.txt
            8. lists.tmp.txt
            9. nodes.tmp.txt
            10. cons.tmp.txt
            11. tree.tmp.txt
            12. sym.tmp.txt
            13. russ_info.tmp.txt
      4. Tarball of Russell language in Unicon as of 10/6/2015
      5. Tarball of Russell language in Unicon as of 10/11/2015
      6. Tarball of Russell language in Unicon as of 10/12/2015
      7. Tarball of Russell language in Unicon as of 10/15/2015
      8. Tarball of Russell language in Unicon as of 10/16/2015
      9. Tarball of Russell language in Unicon as of 10/19/2015
      10. Plans for Code Generation
          1. I have begun to study the runtime code
          2. I think it will be much simpler in unicon
          3. I think the difficulties with garbage collection will go away with unicon's garbage collection
          4. I will not need to keep lists of things to be freed.
          5. I think I won't need to worry about type conversions either.
          6. I did enough with the runtime to realize I cannot do much without data to drive it - which will rely on code generation.
          7. But I need to have at least a general idea of the runtime in order to know what is important in the code generation.
          8. I suspect some (but not much) of what I have done is unnecessary because of unicon's automatic garbage collection
          9. I will study the runtime a little more then switch back to porting the code generation
   5. Russell Documentation that I can Share
      1. What is this documentation?
      2. Introduction to Russell I'm working on editing this Introduction - there is much more in this than I realized - I should have worked more on it before.
         I will provide a pdf of the result here soon.
         Also I obtained the bibliography below from it.
      3. Changes to Russell
      4. Initial Environment for Russell
      5. Installation (old directions) for Russell
      6. Pass1 What file for Russell
      7. Pass1 Readme file for Russell
      8. Pass2 Readme file for Russell
      9. Pass3 Readme file for Russell
      10. Pass4 Readme file for Russell
      11. Pass5c Readme file for Russell
      12. Pass5d Readme file for Russell
      13. Pass5d op_codes.h file for Russell
      14. doxygen documentation generated for russell from code I started with
   6. Examples of russell code
      1. callcc_test.r.txt
      2. complex.r.txt
      3. compose.r.txt
      4. enum_test.r.txt
      5. extend_test.r.txt
      6. extern_test.r.txt
      7. fact.r.txt
      8. ffact.r.txt
      9. fib.r.txt
      10. fixpoint.r.txt
      11. fp_test.r.txt
      12. gauss.r.txt
      13. identity.r.txt
      14. lazy_sexpr.r.txt
      15. lazy_test.r.txt
      16. lfib.r.txt
      17. memo.r.txt
      18. points.r.txt
      19. primes.r.txt
      20. print.r.txt
      21. psexpr.r.txt
      22. psexpr_test.r.txt
      23. rfib.r.txt
      24. self_appl.r.txt
      25. sep_test.r.txt
      26. sexpr.r.txt
      27. sig_test.r.txt
      28. squares.r.txt
      29. string_test.r.txt
      30. sum.r.txt
      31. tree.r.txt
      32. tree_test.r.txt
      33. typearg.r.txt
   7. Russell - Additional Bibliography that I have
      1. Boehm, Hans‐J., and Alan Demers, ‘‘Implementing Russell’’, Proceedings of the SIGPLAN ’86 Symposium on Compiler Construction, SIGPLAN Notices 21, 7, July 1986, pp. 186‐195.
      2. Boehm, H., Russell on‐line ‘‘rhelp’’ facility. Distributed with the Russell Compiler. (A version of this paper is available as ‘‘rhelp intro’’.)
      3. Demers, A. and J. Donahue, ‘‘Data Types, Parameters, and Type‐Checking’’. Proceedings, Seventh Annual Principles of Programming Languages Symposium, 1980, pp. 12‐23.
      4. Demers, A. and J. Donahue, ‘‘Type‐Completeness as a Language Principle’’. Proceedings, Seventh Annual Principles of Programming Languages Symposium, 1980, pp. 234‐244.
      5. Demers, A. and J. Donahue, ‘‘Making variables abstract: an equational theory for Russell’’. Proceedings, Tenth Annual Principles of Programming Languages Symposium, 1983.
      6. Donahue, J., and A. Demers, ‘‘Data Types are Values’’, ACM Transactions on Programming Languages and Systems 7, 3 (July 1985), pp. 426‐445.
      7. Dijkstra, E., A Discipline of Programming. Prentice‐Hall, 1976.
      8. Hook, Jim, ‘‘Understanding Russell ‐ A First Attempt’’, Semantics of Data Types, Proceedings, Springer Lecture Notes in Computer Science 173, 1984, pp. 69‐86.
      9. Stoy, J., Denotational Semantics: The Scott‐Strachey Approach to Programming Language Theory. MIT press, 1977. See esp. chapter 7.
   8. Russell - Additional Bibliography that I do not have
      1. Boehm, H., A. Demers, and J. Donahue, ‘‘An Informal Description of Russell’’. Technical Report 80‐430, Computer Science Department, Cornell University, 1980.
      2. Boehm, H., A Logic for the Russell Programming Language, Thesis, Cornell University, 1984.
      3. Demers, A., and J. Donahue, ‘‘Data Types are Values’’, Departmentof Computer Science, Cornell University, Technical Report TR79‐393, 1979.
      4. Demers, A. and J. Donahue, ‘‘The Semantics of Russell: An Exercise in Abstract Data Types’’. Technical Report 80‐431, Computer Science Department, Cornell University, 1980.
   9. Russell - Additional Relevant Bibliography that I have
      1. Aho, Alfred V., Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques and Tools. Addison-Wesley, 1988.
      2. Aho, Alfred V. and Jeffrey D. Ullman, Principles of Compiler Design. Addison-Wesley, 1977.
      3. Backus, J., ''Can Programming be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs'', Communications of the ACM 21, 8 (August 1978), pp. 613-641.
      4. Cadenhead, Rogers, SAMS Teach Yourself Java 2 in 24 Hours, SAMS, 1999.
      5. Corre, Alan D,, Icon Programming for Humanists, 2nd Edition. Goal-Directed Press, 2010.
      6. Church, Alonzo, The Calculi of Lambda-Conversion. Princeton University Press, 1951.
      7. Daconta, Michael C., Al Saganich and Eric Monk, Java 2 and JavaScript for C and C++ Programmers, Revised Edition. Wiley, 1999.
      8. Dahl, O. J., E. W. Dijkstra and C. A. R. Hoare, Structured Programming, Academic Press, 1972
      9. Dijkstra, Edsger W., Selected Writings on Computing: A Personal Perspective, Springer-Verlag, 1982
      10. Flanagan, David, Java in a Nutshell, 3rd Edition. O'Reilly, 1999.
      11. Gimpel, James F., Algorithms in SNOBOL4 ("The Orange Book"), Catspaw, 1986.
      12. Griswold, Ralph E., The Macro Implementation of SNOBOL4. Freeman, 1972.
      13. Griswold, Ralph E. and Madge T. Griswold, A SNOBOL4 Primer. Prentice Hall, 1973.
      14. Griswold, Ralph E. and Madge T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
      15. Griswold, Ralph E. and Madge T. Griswold, The Icon Programming Language, third edition, 1997.
      16. Griswold, R. E., J. F. Poage and I. P. Polonsky, The SNOBOL4 Programming Language, second edition, ("The Green Book"), Prentice-Hall, 1968.
      17. Griswold, Ralph E., String and List Processing in SNOBOL4: Techniques and Applications. Prentice-Hall, 1975.
      18. Jeffery, Mohamed, Pereda and Parlett, Programming with Unicon: Very high level object-oriented application and system programming. draft manuscript, 2002.
      19. Jeffrey, Clinton, ed. The Implementation of Icon and Unicon: a Compendium. draft manuscript, 2004.
      20. Josuttis, Nicolai M., The C++ Standard Library: A Tutorial and Reference. Addison Wesley, 1999.
      21. Kernighan, Brian W. and Dennis M. Richie, The C Programming Language, second edition. Prentice-Hall, 1988.
      22. Levine, John, flex and bison. O'Reilly, 2009.
      23. Lewis II, P. M., D. J. Rosenkrantz, and R. E. Stearns, Compiler Design Theory. Addison-Wesley, 1976.
      24. Maurer, W. Douglas, The Programmer's Introduction to SNOBOL. Elsevier, 1976.
      25. Paulson, L. C., ML for the WORKING PROGRAMMER. Cambridge, 1996.
      26. Steele Jr., Guy L., Common Lisp: The Language. Digital Press, 1984.
      27. Stroustrup, Bjarne, The C++ Programming Language, Third Edition. Addison Wesley, 1997.
      28. Ullman, Jeffrey D., Elements of ML Programming, Prentice Hall, 1994.
      NOTES:
      ML is a computer language I have which has some characteristics of Russell.
      I am now working on porting Russell from C to SNOBOL4.
      Common Lisp is a computer language with some relation to the lambda calculus and denotational semantics, etc.
      flex is a Linux replacement for lex which was used generating Russell C code.
      bison is a Linux replacement for yacc which was used generating Russell C code.
   10. My Notes on Russell and my porting efforts
       1. 5/24/2014 Worked on porting c code.
       2. 5/25/2014 Decided to try to port to Ruby
       3. I have made special version of ruby supporting goto (needed for code generated by bison)
       4. Work just begun - not optimistic
       5. 5/26/2014 Continue on Ruby port - not optimistic - but it is fun anyway.
       6. 6/4/2014 Going much better than expected - lexical box runs although not tested and part of pass 1 of parser - though much commented out for now.
       7. 6/11/2014 Continue to make much better progress than expected - was stuck at one point - but solved it and things seem to be going easier again
       8. 6/21/2014 Still making progress - but little hope of success.
       9. 7/6/2014 Giving up for now - I don't understand how it is supposed to work to tell what is going wrong - and I have other things I want to do more.
       10. Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
       11. Decided (8/23/2015) to go back to working on C version.
           Main Reasons:
           1. I am not sure Ruby goto really works well.
           2. I learned a lot working on Ruby code I can use.
           3. I researched and found out gnu debugger does more than I realized - although it will require some learning.
           4. I found I really have a little more documentation than I had realized - I am working on formatting some of it better.
           5. Most modern languages I might use have no goto (which is used in code)>
           6. I need a project.
       12. After working on c port (8/24/2015), think Ruby may be better after all. Eliminate goto's somehow if necessary!!!
       13. Switched to porting to snobol4 a few days ago (as of 8/29/2015)
       14. The past few days I have been working on a snobol4 program to better format a snobol4 program (9/4/2015)
       15. This is useful both for formatting russell.sno and reviewing my knowledge of snobol4
       16. 9/10/2015 forward Notes on porting Russell from C to Snobol4
       17. 9/18/2015: I've decide to make modified versions of flex & bison to generate snobol4 instead of C. (reamed sflex and sbison)
       18. I have not wasted time attempting to modify C code ad this knowledge will be helpful.
       19. Doing this will have the great advantage that the input to sflex and sbison will be easier to modify if desired that the C code generated and then converted!!!
5. Russell2
   1. 01:26:12 AM Thu, Feb 05 2015
   2. I've started a project of modifying Icon to be similar to what Russell was - I am calling it Russell2.
   3. So far I have installed Icon and modified it to create executables russell2t and russell2x.
   4. I also changed it to Russell2 Version 1.0.0
   5. I intend to slowly make changes to modify it to have syntax closer to Russell while letting much of Icon stay the same.
   6. It builds and runs (with new names) - I haven't run all the tests yet.
   7. Mostly I just want to do some programming - missing it. Don't expect to accomplish much.
   8. 07:21:53 PM Thu, Feb 05 2015
   9. Testing - fixed revision of icode.
   10. Tests work except cfuncs and extvals.
   11. Samples work except featues.
   12. Worked to male use src/common/typespec.txt
   13. Next need to use flex and bison.
6. My health data analysis project - using snobol, unicon, c++, APL, and Maple:
   My Heath Analysis Project
7. Work in Java.
   Java Quantum Mechanical Pinball Game.
   I studied the code some again - I am not certain that it is quantum mechanically correct - but I am sure it has that sort of effect.
   1. Pinball Help
   2. JavaQm javadoc generated documentation
   3. Quantum Ball