Copyright Jasm
Technology 2019-2026. All rights reserved.
admin
(at) Jasm Tech (dot) com
![]() |
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.
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.
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.
Creating simplicity is not
simple, it has been my life’s work.
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
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.
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.
A graphical Integrated
Development Environment is something new, only one other
language has it.
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.
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.
No other language has the
combination of simplicity and bug prevention that Jasm does.
These things reduce development time and cost significantly.
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.
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.
Jasm has native support for
reactive programming.
Jasm will benefit from artificial
intelligence more than any other language.
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.
//
Water temperature may only be 0 to 100C
typedef float as water_temperature_in_c( 0.0 to 100.0 )

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
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