Posts

Showing posts from November, 2017

Modifying Java, Explained!

I need to clarify an important aspect of Awesome Sauce Java with regards to method names and evolving Java.  Awesome Sauce Java can offer (at least) three different types of method signatures with regards to the name of the method and the return type.  There are many aspects of Java that can be modified, but the first that makes sense to present is with regards to method names and return types.  Here are the three types of method signatures I'm going to offer in Awesome Sauce Java : Standard Java calls Nothing changed in any part of the method signature. Standard Java methods altered to become Functional Java calls Returning a value that makes sense in the context of functional programming. Upgraded/renamed Java calls that either preserve the Standard Java method signature, or offer a Functional method signature. I'd like to take a minute to show what it means to evolve Java, because without clarification, it could sound like the Awesome Sauce Java ...

Extending the Reader for a Specialized Language

Extending the Reader to process Spreadsheet Formulas This is kind of a weird but fun experiment.  Today I altered the Awesome Sauce Java reader so an application can extend it to process symbols. The concept started as is a way to process Awesome Sauce Java forms entered into a spreadsheet cell: (+ 1A 2A) Note: I'm inverting the normal cell reference labels to follow row/col format. I'll probably change it, but I like the different order. When I looked at the formula, I realized it needed to be processed either in a special reader, or in the actual reader.  The fun part about building a functional language that's modeled after Lisp is the recognition that every problem is associated with a part/component, or a function.  The structure of the language greatly simplifies the architecture. As soon as I realized the spreadsheet had to convert a cell reference, like 1A, and convert it to the value held in cell 1A?  It became apparent the next problem was figuring...

Modifying Java WIthout Modifying Java

This is as much a reminder to myself as it is an update for you.  While working with Awesome Sauce Java, it became clear that it does at least two things: It works just like Java, because it exposes Java as Java. It can be modified to work just like Java, but it can be changed: To become functional, by e. g. returning values from method calls that currently return void. To support concurrency, by eliminating side-effects. To clean and edit method names, to shorten them and/or make them more representative of what they do. The list of ways Awesome Sauce Java can change Java is considerably longer, but I first wanted to highlight these three important ways in which it's possible to modify Java.  Modifying Java isn't something to be taken lightly, but providing the same functionality with more consistent names, that are possibly shorter, may help the language become more usable and improve programmer productivity. How Awesome Sauce Java Can Evolve Java Beca...

Starting A Spreadsheet in Awesome Sauce Java

Image
Start of a Spreadsheet While working on the model for the debugger table, I forked the code and wondered how to turn it into a spreadsheet.  I'd coded up a spreadsheet in Lisp a number of years ago that came together well.  I ran into problems with one thing: the release format of the Lisp I was building my system on. I was so enamored with CMUCL and Hemlock and how much I could build with it, I was blind to the release format.  When I really had to figure it out, make a release that could ship on any system, I ran into nothing but roadblocks that I thought I could overcome, but I needed more people, money, and time than I had. Today, with Awesome Sauce Java running on top of the JVM, having control of the internals, and the ability to explore not just in a Lisp environment, but in a functional format that includes all of Java, I'm having a total blast building code. An Awesome Sauce Spreadsheet Today's been a lot of fun because I just put tog...

Testing Goes On: JDBC

JDBC a Go-Go Today I tested Awesome Sauce Java with JDBC.  It works well! There are opportunities to develop new tools and functions for the purpose of making the install, configuration, and use easier, but I'm always happy to find another feature works.  Not that it isn't supposed to.  It means that I can validate, test, then learn how to extend the feature. Here's the code I used to connect to the Derby database in NetBeans: (setf dbp (new Properties)) (put dbp "user" "app") (put dbp "password" "app") (setf cs (new String "jdbc:derby://localhost:1527/sample;create=true")) (setf conn (DriverManager.getConnection cs dbp)) (setf stmt (createStatement conn)) (setf rs (executeQuery stmt "SELECT * from CUSTOMER")) (while (next rs)    (println (getString rs 4))) ; print the company name. Results in the following detail printing: "New Enterprises" "Wren Computers" "Sma...

Awesome Sauce Java: Not Just Another Language

What is Awesome Sauce Java? It's a programming language.  But it's not like any other programming language. I can hear you now, saying, "Yeah, right." I know.  It's hard to believe any programming language is better than any other.  We're so used to the marketing checklists, and the modern features, different syntax, more expressive, concurrency(!) and all the academic arguments for or against language blah-blah-blah, that we forget that languages are tools that empower us to do work. I see Awesome Sauce Java as a programming language that is demanding I use it as the basis of an Operating System.  Why?  It's crazy fast, dynamic, insanely stable, and provides scads of Java libraries, from within the JDK and third party libraries, that empower programmers to build tools that don't blink, but stay running while they're editing them. It's surreal to me, and I'm building it.  Notice I'm not crowing about how I wrote it, just how f...