Jasm technical overview

Copyright Jasm Technology 2019-2026. All rights reserved.

admin (at) Jasm Tech (dot) com

 

Jasm logo
Back to home page

Jasm (noun): Take thunder & lightning, a steamship & a buzz-saw; mix them together, and put them in a woman. “She has jasm”. The term originated in 1842. Synonyms: Spirit, energy, spunk, zest.

 

 

Introduction

I have made a career-long project of finding the best tools, structures, and practices for preventing bugs and making code easier to understand. Making a language designed for this simplifies things greatly.

 

We write computer programs by typing text into an editor and trying to imagine what it will do. It is hard to program this way, and it is easy to make errors. This next generation language describes a better way.

 

The need for this product is great. The largest and most complex structures ever built by man are all software. Anything that makes big software easier to write and understand will generate tremendous savings.

 

The details of the language are about implementing best practices automatically and making the programmers job easier. The language is a vehicle for doing that in a way that is easy to write, read, and understand.

 

 

What is Jasm

Jasm is a proposed general-purpose programming language based on these principles:

Simplicity: Simplicity means easy to learn, easy to read, easy to program, easy to debug, and less complex.

Integrity: High integrity languages prevent bugs by performing data checks and disallowing dangerous practices.

Multitasking: Jasm simplifies multitasking & distributed programming.

Graphical IDE: Visualization tools and a graphical IDE make the programmers job easier (the Jasm Studio). You never edit a text file.

Powerful: Jasm has powerful high-level objects and operations.

Portable: Maximum portability.

Productivity: The end goal is more code done better in less time.

 

It does not look like any existing programming language, but all of the parts are well known and understood. Jasm is easy to understand.

Jasm invents some new things out of necessity, but mostly it combines existing concepts in new ways to do things better. That makes it easier to adopt.

Programmers want a language like the ones they already use, but better, gets it done twice as fast, and makes their lives easier. That is Jasm in a nutshell.

 

Jasm will allow large project completion in half the time of a hypothetical average language.

 

 

 

Jasm falls into these categories

 

 


The key is simplicity

Creating simplicity is not simple, it has been my life’s work.

 

High-integrity saves you debugging

Programmers spend more than half their time debugging, anything that reduces that is a big time-saver.

Jasm uses strictness, checking, and other high-integrity techniques because human error always happens.

High-integrity languages ensure that data will always be within range.

More than 50% of common bugs will not happen with Jasm, and more than 80% of the serious bugs will also be prevented.

High-integrity languages reduce the cost of development by 50% because there are 70% fewer fixes and 90% fewer bugs seen by the customer.

 

The most common bugs

 

The most difficult types of bugs to solve

These can cause project-killing quagmires.

 

Other bug prevention

 

Designed for debug

Programmers spend half their time debugging; yet no language has been designed for debug before.

Most languages can debug, but you have to write code in special ways to do it effectively. Jasm does this for you.

 

Multi-tasking done right

The four types of multi-tasking are single-threaded, multi-threaded, multi-process, and distributed. Each is different from the other.

Jasm provides a seamless multitasking interface to all four, so the same code can run single-threaded, or use any type of multi-tasking in a blocking or non-blocking way.

Remote interfaces (TCP/IP, VXI, etc) of every type are virtualized, so your code handles all of them without any changes.

All of this is done in a simple and straightforward way.

 


Graphical IDE

A graphical Integrated Development Environment is something new, only one other language has it.

 

Powerful

Provides high-level productivity-increasing commands and objects.

Half of the programming languages do not implement enumerations, and those that do implement them incompletely. Enumerations must be partially or completely hand-coded in all other languages.

No programming language implements symbol lists, state machines, binary search trees, language localization, or relational file managers. They must be hand-coded.

Jasm implements all of these things, and allows them to be extended to reduce program complexity.

 

Portable

The compiler & tools will be written in C++ for performance and portability. With two easy ports it will run on Windows, Linux/Unix, and Mac. This covers most compile platforms in use today.

Output can be set to one of several standard byte-code engines or transpilers. This will allow execution just about everywhere.

 

Productivity

 

Languages with similarities

No other language has the combination of simplicity and bug prevention that Jasm does. These things reduce development time and cost significantly.

 

What about functional programming?

Jasm has a functional programming mode. Use it whenever possible. You can cut back and forth between functional and imperative programming.

Jasm makes functional code easy to write & understand, and allows it to be used in most types of programming; This alone is worth making a new language.

 

What about purely functional languages?

FP uses a different programming paradigm. FP is simple, good at multitasking, and prevents most bugs. It’s great if you can use it. Unfortunately, pure FP has these limitations:

I have been programming for over 40 years and did many types of programming. Every project I have been on did lots of I/O, had to fit into available memory, and was fundamentally a state machine. Functional programming has never been an option. This is largely why only one functional language has caught on, and only in its niche.

The best way to make money in pure FP seems to be to teach it; the ratio of jobs to practitioners is not good.

 

What about reactive programming?

Jasm has native support for reactive programming.

 


What about AI?

Jasm will benefit from artificial intelligence more than any other language.

 

Pick one thing

If we had to pick only one thing to do well, it should be making a large multitasking/distributed application. Whatever the future of programming brings, it will probably be heavily parallel and/or distributed. Jasm pays a lot of attention to this target.

 

 


Syntax summary

 




Example definition file (temperature.jd)

 

 

// Water temperature may only be 0 to 100C

typedef float as water_temperature_in_c( 0.0 to 100.0 )


Temperature enumeration


proc <err_ret> ConvertWaterTemperatureToC(

    temperatureInC is ref to water_temperature_in_c,

    value is float,

    units is TemperatureUnits.sym_type) ; e

 

#test

 

// Element test

proc <err_ret> Temperature_ElementTest( args is list of const text ) ; e

 


 


Example code file (temperature.jc)

 

proc <err_ret> ConvertWaterTemperatureToC(

    temperatureInC is ref to water_temperature_in_c,

    value is float,

    units is TemperatureUnits.sym_type):

    // Hidden checking for all arguments autogenerated here

 

    if (units == TemperatureUnits.CELSIUS):

          temperatureInC := value

    else: // (units == TemperatureUnits.FAHRENHEIT):

          temperatureInC := (value-32) * 5.0 / 9.0

 

    // Hidden checking for temperatureInC autogenerated here

    return ERROR_NONE

 

 

#test

 

// Element test

// Autogenerated element test code goes here

// Not included in this example