1
0
Fork 0
cl-sites/guile.html_node/Interactive-Programming.html
2024-12-17 12:49:28 +01:00

87 lines
4.1 KiB
HTML

<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This manual documents Guile version 3.0.10.
Copyright (C) 1996-1997, 2000-2005, 2009-2023 Free Software Foundation,
Inc.
Copyright (C) 2021 Maxime Devos
Copyright (C) 2024 Tomas Volf
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled "GNU Free
Documentation License." -->
<title>Interactive Programming (Guile Reference Manual)</title>
<meta name="description" content="Interactive Programming (Guile Reference Manual)">
<meta name="keywords" content="Interactive Programming (Guile Reference Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content=".texi2any-real">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Introduction.html" rel="up" title="Introduction">
<link href="Supporting-Multiple-Languages.html" rel="next" title="Supporting Multiple Languages">
<link href="Guile-and-the-GNU-Project.html" rel="prev" title="Guile and the GNU Project">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
span:hover a.copiable-link {visibility: visible}
-->
</style>
<link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css">
</head>
<body lang="en">
<div class="section-level-extent" id="Interactive-Programming">
<div class="nav-panel">
<p>
Next: <a href="Supporting-Multiple-Languages.html" accesskey="n" rel="next">Supporting Multiple Languages</a>, Previous: <a href="Guile-and-the-GNU-Project.html" accesskey="p" rel="prev">Guile and the GNU Project</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Interactive-Programming-1"><span>1.4 Interactive Programming<a class="copiable-link" href="#Interactive-Programming-1"> &para;</a></span></h3>
<p>Non-free software has no interest in its users being able to see how it works.
They are supposed to just accept it, or to report problems and hope that the
source code owners will choose to work on them.
</p>
<p>Free software aims to work reliably just as much as non-free software does, but
it should also empower its users by making its workings available. This is
useful for many reasons, including education, auditing and enhancements, as well
as for debugging problems.
</p>
<p>The ideal free software system achieves this by making it easy for interested
users to see the source code for a feature that they are using, and to follow
through that source code step-by-step, as it runs. In Emacs, good examples of
this are the source code hyperlinks in the help system, and <code class="code">edebug</code>.
Then, for bonus points and maximising the ability for the user to experiment
quickly with code changes, the system should allow parts of the source code to
be modified and reloaded into the running program, to take immediate effect.
</p>
<p>Guile is designed for this kind of interactive programming, and this
distinguishes it from many Scheme implementations that instead prioritise
running a fixed Scheme program as fast as possible&mdash;because there are
tradeoffs between performance and the ability to modify parts of an already
running program. There are faster Schemes than Guile, but Guile is a GNU
project and so prioritises the GNU vision of programming freedom and
experimentation.
</p>
</div>
</body>
</html>