Files
logseq/pages/hls__Hirzel_2022_Low-Code Programming Models.md
2025-06-05 22:07:12 +02:00

11 KiB
Raw Permalink Blame History

file:: [Hirzel_2022_Low-Code Programming Models.pdf](file://C:/Users/david/Zotero/storage/JGDXBIXM/Hirzel_2022_Low-Code Programming Models.pdf) file-path:: file://C:/Users/david/Zotero/storage/JGDXBIXM/Hirzel_2022_Low-Code Programming Models.pdf

  • Low-code programming promises an alternative: letting citizen developers create programs using visual abstractions, demonstrations, or natural language ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464b288-5d89-4b29-bd9d-eb6c88f1371e
  • Low-code has the potential to empower more people to automate tasks by creating computer programs, making them more productive and less dependent on scarce professional software developers ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464e5e9-a147-4747-8c6f-2c907d728754
  • Programming means developing computer programs, which comprise instructions for a computer to execute ls-type:: annotation hl-page:: 1 hl-color:: yellow id:: 6464e636-296e-44cd-9030-8f8f418de4a2
  • low-code programming minimizes the use of a textual programming language. Instead, it aims to use alternative techniques that are closer to how users naturally think about their task. ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464e648-e4c8-496f-b66f-bb14f860170a
  • A citizen developer is an amateur programmer with little professional programming education. Citizen developers, having chosen a career different from programming, tend to have more domain expertise. Lowcode enables domain experts to become citizen developers. At the same time, low-code platforms should also strive to make pro-developers (professionals with an education or career in software development) more productive. ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464e67a-e0da-4289-a819-ba114dd6c3ac
  • No-code programming is more purist, with zero handwritten code in a textual programming language ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464e6c2-476a-4106-bed9-c00c456ec273
  • Another gap between EUP and low-code is that the latter aims to serve not just end users but also pro-developers [7, 32]. ls-type:: annotation hl-page:: 1 hl-color:: green id:: 6464e6f9-07ce-4bcc-b118-5c2f006d8535
  • VPLs (visual programming languages), PBD (programming by demonstration), PBE (programming by example), RPA (robotic process automation), PBNL (programming by natural language), ls-type:: annotation hl-page:: 1 hl-color:: green id:: 64749b53-54f4-41d9-9964-3bfafa6894fc
  • Programming is to low-code what computing is to serverless ls-type:: annotation hl-page:: 2 hl-color:: green id:: 64749ca9-1f4b-45b1-a4d2-64ee0d72a020
  • low-code can break barriers between developers across the spectrum and help them collaborate on common ground. ls-type:: annotation hl-page:: 2 hl-color:: green id:: 64749d41-31ca-4ad9-bcad-25124814ef56
  • , while low-code typically targets a DSL, that DSL may not be exposed, or if it is, may only be exposed to pro-developers. ls-type:: annotation hl-page:: 2 hl-color:: green id:: 64749ddc-ace8-4465-8990-8459e873611e
  • draw upon seeing ls-type:: annotation hl-page:: 3 hl-color:: green id:: 64749ee3-1687-4934-9d20-9b270b4b035e
  • draws upon the ability to use a computer application ls-type:: annotation hl-page:: 3 hl-color:: green id:: 64749ef6-8ac8-492a-9cd3-7cdd74dca04f
  • draws upon speakin ls-type:: annotation hl-page:: 3 hl-color:: green id:: 64749f03-ede6-4593-8c72-a7e9161b60a7
  • the following blocks recur enough ls-type:: annotation hl-page:: 3 hl-color:: green id:: 64749f39-a19a-4413-a34c-090643359fad
  • code canvas: renders code, e.g., visually as a flow graph• palette: offers components for drag-and-drop selection• text box: holds natural-language text used for code search, description, or generation• player: has buttons for capture, replay, pause, or step• stage: shows the effect of code execution• configuration pane: lets the user customize components, e.g., via graphical controls such as check-boxes or sliders, or textually by typing small formulas ls-type:: annotation hl-page:: 3 hl-color:: green id:: 64749f79-4b86-4aaf-813a-8e7bc61c0ef3
  • users write programs by directly manipulating their visual representation. ls-type:: annotation hl-page:: 3 hl-color:: green id:: 6474a19c-2150-4576-954b-f32de65c6359
  • boxes-and-arrows ls-type:: annotation hl-page:: 3 hl-color:: green id:: 6474a1e0-7373-4e47-a10a-62fdc1dbd6df
  • dragging components from the palette to the canvas and possibly configuring them in a separate configuration pan ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474a207-fe6f-493d-819c-2192178d00d2
  • Scratch ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b79f-2da0-4993-8b66-d631de779458
  • The visual notation can take up a lot of screen real estate; the mitigation for this is to elide detail, e.g., by requiring a configuration pane or via modular language constructs [3 , 27]. Even the palette can get too full, hindering discoverability, which can be mitigated by search facilities. A drawback of visual languages compared to textual languages is that they tend to be co-dependent on their visual programming environment, hindering the use of basic tools such as diffing or search, or of third-party tools such as linters or code generators ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b841-a7a5-45f3-bea7-8e8100036715
  • Programming by demonstration ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b8fb-4530-40f1-84c0-92e79c2cb9d5
  • ser demonstrates how to perform a task by hand via the mouse and keyboard, and the PBD system records a program that can perform the same task automaticall ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b97f-ecb5-4ce7-8dc0-11812a5ffddc
  • mapping pixel coordinates to a user-interface widge ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b9db-32c6-4727-bf5c-c5593b7a25e5
  • useful if executing it does not yield exactly the same behavior as the initial demonstration, but rather, generalizes to different data. ls-type:: annotation hl-page:: 4 hl-color:: green id:: 6474b9eb-4b4d-4427-8f51-4c2e7e062987
  • PBD can result in programs that are hard to understand because they include spurious steps or are too fine-grained, which is of course a problem in low-code programming ls-type:: annotation hl-page:: 5 hl-color:: green id:: 6474badb-22d3-4792-a807-df517f86a03d
  • https://doi.org/10.1145/1926385.1926423 ls-type:: annotation hl-page:: 9 hl-color:: green id:: 6474bb69-d875-4e4a-907c-7156a99bf7c9
  • Programming by Natural Language ls-type:: annotation hl-page:: 5 hl-color:: green id:: 6474bbdd-979d-4a47-a0da-954dbd3e41d8
  • user enters natural language text via keyboard or voice, and the system synthesizes a program ls-type:: annotation hl-page:: 5 hl-color:: green id:: 6474bc69-b7b7-4b4f-aaab-42f2bf6b9a14
  • The PBNL system can execute the program immediately or save it for later, and the user may choose to execute the program multiple times, e.g., after changes to the programs input data. The system can also optionally show the effect of the programs execution on a stage. For example, if the program is a query in a spreadsheet, the spreadsheet is the stage, and the result can be shown as a new table. ls-type:: annotation hl-page:: 5 hl-color:: green id:: 6474bc9c-e48a-415a-ae35-84b1a6a6ff63
  • BNL makes creating programs trivial, those programs are often wrong ls-type:: annotation hl-page:: 6 hl-color:: green id:: 6474be2e-9dad-4fc9-b636-284d48ad6010
  • natural language processing (NLP) technologies are imperfect. ls-type:: annotation hl-page:: 6 hl-color:: green id:: 6474be52-8071-4823-befd-04c55f4d3d76
  • they often require an aligned corpus of utterances and programs to train machine-learning models, and obtaining such a corpus is expensive ls-type:: annotation hl-page:: 6 hl-color:: green id:: 6474be76-0e9b-4579-92c3-f59a7fbce760
  • little difference in the Read and Execute columns: users read programs on a code canvas (if provided), and watch them executing on the stage (if visible). That hints at an opportunity for reusing building blocks across tools for different techniques. ls-type:: annotation hl-page:: 6 hl-color:: green id:: 6474bf96-99c8-42d1-be92-11ac5a3f0ce4
  • A core goal of low-code programming is to reduce the need to learn a programming language. Citizen developers can demonstrate a program or describe it in natural language without having been taught how to do so. Visual programming, on the other hand, is often not quite as selfexplanatory, which is why Figure 1 associates it more with semi-developers. On the other hand, depending on the users attitude, the need-to-learn can also be a positive aspect, since it grows computational thinking skills. ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c050-3883-44a7-8e40-db229874141d
  • We expect PBNL to grow along with relevant advances in AI. ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c0c5-0bd8-4fb7-8f4b-38e422d285f5
  • All three low-code techniques from Section 3 are intrinsically related to domainspecific languages (DSLs ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c1a9-0e10-4e4f-8691-405f42335dc9
  • most visual programming languages are DSLs ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c1c0-1a27-4eac-a8f7-cc9828a4c171
  • by demonstration and programming by natural language usually target DSLs ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c1da-3052-475b-bf94-9af02a7e4315
  • those DSLs are not always exposed to the user ls-type:: annotation hl-page:: 7 hl-color:: green id:: 6474c20d-32ed-4c99-a946-49ef3bbfd01c
  • Low-code programming tools provide one or more views of the program. Some of these views, or projections, are read-only, while others are read-write views ls-type:: annotation hl-page:: 8 hl-color:: green id:: 6474c345-66e3-4c30-b881-311f74787a6f
  • When multiple views are present, the system keeps them in synch with a single joint model, and through that, with each other. Edits in one view are projected live to all other views. The model is a program in a domain-specific language (DSL). As discussed previously, the DSL may or may not be exposed to the user, and may or may not be embedded in a host programming language. Optionally, the system may even expose the textual DSL as another view, for instance, in a structure editor [37]. Besides the model and the view, the third part of the MVC pattern is the controller, which, for low-code, can contain a player and/or a configuration pane ls-type:: annotation hl-page:: 8 hl-color:: green id:: 6474c351-3410-494b-98bc-f51aaf6f253d
  • domain-specific languages and the model-view-controller pattern constitute a common backbone and unifying principle across low-code techniques ls-type:: annotation hl-page:: 8 hl-color:: green id:: 64750a95-c15c-43e8-b72b-2e70f477a33b