view website/src/why.html.luan @ 1999:dd9696f18b62 default tip

improve why.html
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 12 Jul 2025 23:54:22 -0600
parents 828d0c292987
children
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local Io = require "luan:Io.luan"
local Site_translator = require "luan:ai/Site_translator.luan"
local get_lang = Site_translator.get_lang or error()
local text_writer = Site_translator.text_writer or error()
local Shared = require "site:/lib/Shared.luan"
local head = Shared.head or error()
local header = Shared.header or error()


return function()
	Io.stdout = text_writer()
%>
<!doctype html>
<html lang="<%=get_lang()%>">
	<head>
<%		head() %>
		<title>Why Luan?</title>
	</head>
	<body>
<%		header() %>
		<div content>

		<h1>Why Luan?</h1>

		<p>Luan is designed for reliability, simplicity, and readability.  What makes its extreme simplicity possible is that it is a pure scripting language as Ousterhout envisioned in his paper <a href="scripting.html">Scripting: Higher Level Programming for the 21st Century</a> (1998).  Luan is tightly coupled with Java, with Luan for scripting (writing applications) and Java for writing libraries.  Compare this to a language like Python.  While Python is a nice language, it is optimal neither for scripting nor for writing libraries.  Python sits in the middle as a compromise.  Ousterhout's vision is to use the optimal tool for each task.  Luan is an uncompromising scripting language while Java is ideal for writing libraries.</p>

		<p>Ousterhout implemented his vision in <a href="https://en.wikipedia.org/wiki/Tcl">Tcl</a>.  <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> followed this idea as an embedded scripting language.  But both Tcl and Lua script C, and both need "glue" code to access C functions.  Luan allows direct access to Java without any glue code.  And since Luan runs on the Java JVM, Luan is portable.  In other words, with Luan, you can use a JAR file (JVM file) containing whatever functionality you need directly, and this will be portable.</p>

		<p>Luan rejects the complexity of modern software.  It is mature software that has been used in many projects including <a href="https://linkmy.style/source.html">Link My Style</a>, <a href="https://www.super-resume.com/">Super Resume</a>, <a href="https://www.lovepaperwork.com/">lovepaperwork</a>, <a href="https://chat.luan.software/about.html">Luan Chat</a>, and <a href="https://editor.luan.software/">Luan Editor</a>.  Whether Luan will appeal to you depends on who you are.  Members of modern culture will not like Luan because they hate simplicity.  Luan will only appeal to good cultures that value simplicity, so I will address the two good cultures that I know of.</p>

		<h2>For Mennonites</h2>

		<p>Here I am addressing Mennonites who reject modern culture, and so are not part of modern culture.</p>

		<p>Mennonites describe themselves as <a href="https://en.wikipedia.org/wiki/Plain_people">plain people</a> reflecting their preference for plain and simple dress, and plain and simple churches.  I have also noticed that Mennonites prefer plain and simple tools for their work.  Luan is a plain and simple programming language, so it should appeal to Mennonites.</p>

		<p>As a follower of the Old Testament, I learned a little Hebrew, and I was struck by how plain and simple the Hebrew of the Old Testament is.  I love this writing style.  Profound ideas are expressed in simple and direct language.  Luan is designed to enable this style in programming.  In addition, I have <a href="https://mikraite.arkian.net/The-Old-Testament-on-Programming-tp1923.html">applied</a> the wisdom of the Old Testament to my programming and to Luan's design.</p>

		<h2>For Japanese</h2>

		<p>Japan is the only remaining country that I know of that values quality.  The Japanese understand that quality is the result of keeping things clean and simple, and of continuous improvement.  I have applied these things to Luan.  I discussed how Japanese ideas apply to my programming <a href="https://mikraite.arkian.net/Core-Programming-Principles-tp1237.html">here</a>.  I think you can see all of these principles in my code.</p>

		<p>Luan's style of programming can be compared to the Japanese arts of Kumiki and Kintsugi.  Just like how in Kumiki the Japanese take pieces of wood and make strong structures without any need for nails and such, Luan uses simple but effective and strong Java libraries and makes strong programs without any unnecessary parts that modern programmers like to use.  This idea of assembling Java libraries into an application is the scripting idea described above.  In Kintsugi you take broken objects and fix them up using something visually pleasing such as gold or silver.  This is done instead of throwing an old and broken object away.  Once again Luan does the same thing.  When Luan needs new functionality, I look for an old Java library that was written when Western culture was still good.  If it has bugs or is incomplete, I fix it by adding my code.  So tying these together, use a Kintsugi approach to fix broken Java libraries.  Then treat these as components, like with Kumiki, and use Luan to assemble them into an application.</p>

		<p>Western software does not follow these ideas.  Instead it just continuously gets more complicated and unreliable.  In contrast, Luan has been getting simpler and more reliable over the years as a result of continuous improvement.  You cannot expect to achieve Japanese standards of quality and reliability if you use modern western software.  So use Luan instead.  To see how, read <a href="learn.html">Learning Luan</a>. Or if you just want to see some Luan, see the <a href="tutorial.html">Luan Tutorial</a>.</p>

		</div>
	</body>
</html>
<%
end