Top-down: Difference between revisions

278 bytes added ,  1 year ago
→‎External links: +Inside-Out Apps <https://www.sicpers.info/2014/03/inside-out-apps/>
m (s/xxx/code/g)
(→‎External links: +Inside-Out Apps <https://www.sicpers.info/2014/03/inside-out-apps/>)
 
(4 intermediate revisions by the same user not shown)
Line 1:
The triple script ecosystem benefits from programs that are written top-down. That is, it should be possible to open up a triple script, starting reading at the top of the file, and read down to the bottom in a more-or-less linear order, just like the pages in a book, and have a good understanding of the program. This is in contrast to languages like C where it's difficult to ascertain the program entry point, and even once it's found, the conventions and constraints of the language practically require a reader start at the bottom of the file and read to the top. In contrast to that paradigm, triple scripts more closely resemble [[literate]] programs.
 
The top-down philosophy is on display in [[trplkt]], triplescripts.org's reference compiler, where the first thing that a reader sees upon viewing the source is the primary class (<code>TripleKit</code>) that is the heart of the program. We advocate that other triple scripts be written the same way. If your Build.app.htm is just a copy of trplkt, then this can be achieved in one of two ways.
Line 5:
The first approach is to write in your project README your build instructions as:
 
build -t Foo.codesrc -m main.codesrc
 
This will ensure that <code>Foo</code> appears first in the resulting triple script. (This example assumes that this is the module that you <em>want</em> to appear first, because it best corresponds with the heart of your program.)
 
Alternatively, you can make <code>Foo</code> the first import in your <tt>main.codesrc</tt> shunting block, and simply give your instructions as:
 
build -tm main.codesrc
 
When implementing a class, we also advocate for keeping the top-down philosophy in mind whenwith writingrespect orderingto methodsclass method ordering within the file. If a method <code>collate</code> calls a method <code>seed</code> and <code>collate</code> is <code>seed</code>'s only caller, then the former should appear nearer to the top of the file than the latter. When reading a triple script, it should seem like a picture that gets clearer, or a concept that gets more specific, where it originally starts out as a general outline of all that follows.
 
Program authors can even take advantage of function hoisting to get the same effect. Suppose you wanted to write the <code>collate</code> method but didn't want to create a separate <code>seed</code> method (or even a quasi-private <code>_code_seed</code>). You might instead write:
 
collate(collection) {
Line 36:
== External links ==
 
* [https://www.teamten.com/lawrence/programming/write-code-top-down.html Write code top-down — Lawrence Kesteloot]
* [https://www.sicpers.info/2014/03/inside-out-apps/ Inside-Out Apps]