If you wish to read more, my website can be accessed from my user page at -- DavidClarkd
I have a system overview and a page with over 2 dozen reasons that explain about my design decisions. There is also variable types, syntax, structure commands, function lists etc.
{Caution: the name MAX will, if it ever becomes widely successful, enter a trademark battle with the Max software suite.}
[Rename it "MUX" then.]
How does MAX differ from other programming languages?
4 BIG Differences!
- Handle BIG data directly.
- Distributed computing, concurrent programming and multi-user access.
- Security.
- User interface(UI).
Most programming languages(PL) would say, use a RDBMS (Relational Data Management System) for your data. This puts local and direct access to your data outside of your programmer's hands. Your code and data would then normally be on different computers and only accessed over a local area network. Any PL that requires a RDBMS to implement an average system is only partly complete.
With most PCs having more than 1 Core, code that isn't concurrent just isn't useful or scalable. Most PLs provide some library access to routines that can implement concurrency but your programmer must know all the pitfalls and program accordingly.
Most PLs leave the "security" problem up to the RDBMS, operating system or some other custom solution. Security is a big problem for an in-house system but isn't optional if your system is exposed to the Internet as all systems will be eventually.
Most PLs leave the user interface up to a huge set of library functions. These functions are specific to the operating system they are designed for and another interface to the web must be provided. The PL itself, usually doesn't say anything about the UI which is a huge percentage of the work of the average programmer.
How does MAX solve the above problems?
- Think of MAX as a distributed data manager (including SQL commands) that allows you triggers and stored procedures in a package where your programmer has all the flexibility of a PL and full access to the database, from the inside.
- All aspects of the programming and data can be changed and updated while the system continues to run.
- MAX implements a version of the Actor model which means that programming can be done as if it was single user.
- The implementation, however, allows unlimited multi-user access, concurrent use of multiple tables and an easy way to distribute programming and data over multiple computers if necessary.
- Switching from 1 Core to multiple Cores requires no program changes at all and concurrency is totally automatic.
- MAX implements user, module and capability security.
- Security can be very simple right out of the box or very complex, depending on your need.
- Access to concurrently running servers can be given based on department, security level, group etc.
- Multiple different interfaces to the data can have different security access.
- Time of day, static ip address and local area network access can also be used to limit security access.
- MAX contains a Content Management System(CMS) that provides a high level way of producing HTML that can be used in any standard Web browser.
- The UI for MAX is a browser which means that any web accessible device regardless of operating system or size, can use the MAX system without any end user installed code at all.
What else makes MAX different?
- In most PLs, you have a directory tree of source code and all development is done while the system is not running.
- MAX can only be developed or changed while it runs. MAX needs no separate test site and the time from program changes to test is normally instantaneous.
- All source code, data structure and even the requirements documents are contained within the MAX system.
- All access to everything in MAX (including the program code) is through MAX and it's security system as MAX implements it's own file manager.
- MAX automatically provides (without any programming) all memory management, disk access, communications, concurrency, security and session control.
- MAX provides ^bno direct access^ to memory, disk files, sockets, ports, printers, databases, Email, the Web or any other normal programming "make work".
- All of these facilities are provided automatically or through a high level interface.
- MAX includes an Interactive Development Environment(IDE) through which a programmer can develop, maintain and change your system from any Web browser from anywhere (with proper security clearance of course).
- Absolutely everything a programmer can do in MAX, a computer program can also do from inside a running MAX system.
- If you know about the flexibility of Lisp macros or want Domain Specific Language(DSL) capability, then MAX was made for you.
- MAX is a full multi-user/multi-core/distributed programming language that also has most (if not all) of the features of a RDMS except that it is Object Oriented rather than Relational.
- MAX provides database facilities like SQL, triggers, stored procedures, views, update-able views, transactions, replication, hash-indexes etc as well as a full high level programming language while the system continues to service end users.
- Although MAX has the ability to create huge non-memory tables, most database work is done in memory and disk writing can be offloaded to other computers, put in a log file or optionally written to the disk when the system isn't busy. Think auto-persisted in-memory database that can also create and work with huge disk based tables.
Some Reasons NOT to Use MAX
If you can't stand to live with the following features then please, do us both a favor and don't try or use MAX.
- The user interface for MAX is a browser over the Web, local area network or the same machine.
- If your user interface can't be created in a browser using HTML then this product isn't for you.
- A Content Management System has been incorporated so that the programmer doesn't have to manually code HTML.
- Although not without many deficiencies, HTML has the advantages of being installed on almost all computer devices everywhere. (No install is required for an end user to use a system created in MAX.)
- HTML comes complete with a user side programming language (Javascript) that can be used to make the user interface better than just providing fixed functionality.
- MAX has no language API other than using sockets with a "http" or Websocket interface.
- MAX includes it's own database.
- MAX has no direct access to any third party database product as it contains it own database.
- You can think of MAX as being a kind of database that you can program and use from the inside.
- You can use SQL to query your tables and lists, and program your system with object oriented code and data.
- MAX provides a user interface, security, web server, database, multi-user access, automatic multi-core use, an IDE for programming and a full programming language in one integrated package.
- Accessing third party databases and programs written in other languages is possible with additional code to communicate with MAX using sockets and/or Websockets.
- MAX has no libraries of functions or the capability of adding any written in C, Java or a language other than MAX.
- MAX has many variable types that have many built in functions which would be the equivalent of a well stocked "standard library".
- Some third party programs and modules could be used if they were written in MAX. (Source code doesn't have to be distributed like with PHP.)
- All variable, function, server, class, procedure and names in general can be no more than 15 characters and I recommend not more than 10.
- In MAX variables are local to a function, list or Server variable.
- Servers are stored in a hierarchical structure and are only required to have unique names for the children of a specific parent.
- All function calls are local to a Server.
- Comments make a better description of a variable than it's multi-word variable name ever could.
- MAX formats all programming code automatically.
- If you require a different format for your source code then you are out of luck.
- Instead of having code that is formatted in many equally good but different ways, I have provided a good but standard and automatic format for all code.
- Memory management is automatic with no manual control.
- MAX does not use a GC (garbage collector).
- MAX has automatic memory management which means that there are no pauses in program execution to perform GC.
- MAX uses not less than 4 different memory managers and many local memory managers to solve the many memory problems that are inherent in running many small tasks concurrently on multi-core computers.
- MAX was designed to run continuously so many strategies are used to recover and reuse memory.
- Persistent storage of Server Objects to disk is automatic.
- Retrieving data and programs from the disk is done automatically.
- Writing changes to the disk is optimized with replication etc so no programmer control is needed.
- Sending a message to a Server will automatically load it if it is not already in memory.
- Timeouts can be changed to keep some objects in memory longer than default timeouts might provide.
- MAX requires everything that is available to a programmer, to also be available to a program that has the proper security.
- MAX can't be created or changed unless it is running.
- Documentation is a part of your MAX system everywhere.
- Documentation isn't an old dusty paper copy on the shelf. It is part of the system everywhere and available from any browser that has a user with the proper security.
- MAX creates and maintains it's own filing system.
- The MAX system is contained within a single (or few files optionally) operating system file.
- This design enforces security standards.
- It also makes outside access for good or ill quite difficult.
- While MAX runs, the operating system file is opened with exclusive access.
- MAX isn't a standards compliant system.
- MAX syntax was designed to be as much like simple pseudo code as possible. (By definition, it isn't directly compatible with any other programming language.)
- MAX was designed to be simple where ever simple could be implemented.
- MAX has made improvements in almost all areas where the change makes the language better than other languages.
- MAX doesn't just slavishly duplicate other languages features just because they have them.
- On the other hand, MAX doesn't create hard to understand syntax for the sake of being different.
- MAX was designed to have continuous, small updates. Data is automatically updated if that data structure was changed. Updates to your data structures can occur even on a daily basis.
- If structures within MAX change, anything you have saved to disk will be updated the next time that data is written to the disk. All complicated built-in data structures have their own version control.
- Application data structures can be changed while end users continue to use the same data. No shutdowns or program restarts are needed.
- Back button in browser doesn't work.
I have more than 2 dozen responses as to "Why" I designed this language/system the way I have. Please feel free to debate any of those "mistakes" here. -- DavidClarkd