Spelling suggestions: "subject:"llm programming"" "subject:"mlm programming""
1 |
ElmSr: A Structure Editor for ElmOsmani, Narges January 2024 (has links)
Structure editors have been available for many decades, and for multiple programming languages. Historically, they have been recommended for teaching new programmers. Currently, they are recommended by advocates of Model Driven Development. However, they are not widely used, except for the special case of graphical structure editors commonly referred to as "block-based editors" such as Scratch. Although structure editors were first introduced for procedural languages, and they could be used for any type of language, current structure editors target object-oriented languages, almost exclusively, and build in many assumptions related to object orientation. The notable exception, Hazel, targets a functional language, exploits the strong typing typical of functional languages and emphasizes the use of typed holes. This thesis introduces ElmSr, a structure editor developed for teaching the Elm programming language to novice programmers. As with most structure editors, ElmSr allows the developer to directly edit the Abstract Syntax Tree, without the intermediary of a compiler. As with Hazel, ElmSr's AST is typed, and transformations preserve types. Also typical of tree editors written in functional languages, ElmSr uses a zipper data structure to encode both the tree and a cursor position, making for efficient tree edits. Like other structure editors, ElmSr is designed to make common tasks simple and efficient. In our case, common tasks match the steps students are taught in the "Algebraic Thinking" curriculum developed at McMaster University. Some steps are common to almost all programming, such as arithmetic expression entry and modification (which has been previously identified as a weak point for structure editors). Other steps, like definition integration, and support for function calls and control structures are specific to our curriculum. This aspect of usability was evaluated by comparing the number of keystrokes necessary for a benchmark task, using ElmSr, using VS Code following our structured development approach, and using VS Code solely for text entry. ElmSr was much more efficient than VS Code for structured editing, and still more efficient than linear code entry. / Thesis / Master of Science (MSc)
|
2 |
Do Widget Libraries Need Mutable Data?Arumugasamy, Akshay Kumar 11 1900 (has links)
This thesis examines trends in the academic and professional literature around immutable
data and its relationship with declarative User Interfaces (UIs). Immutable
data types are preferred by academic authors due to their increased safety, and commercial
languages are increasing their support for them over time. More recently,
declarative UIs are an exploding topic in industry, and these are related, although
not as closely as one would expect. Declarative programming tries to focus on highlevel
requirements, not low-level details. It is easier to do this if functions have no
side effects, and immutable data is a guaranteed way of achieving this. To highlight
this property, the declarative UI framework Flutter advertises “stateless widgets”,
but their existence puts in highlights the lack of this property in most widgets. Consequently,
we ask whether it is feasible to build a Graphical User Interface (GUI)
toolkit using purely immutable data structures. To accomplish this objective, a
purely immutable GUI toolkit is sketched and partially developed using Elm, a purely
functional language in which all data structures are immutable. To understand the
requirements of a GUI toolkit, we categorize and put in historical context, different
design paradigms for UIs and relate them to core software-design principles. Leading
toolkits allow developers to visualize and manage multiple views of their interfaces, including the view hierarchy, layout, interface to business logic, and focus management.
By creating a concrete example, the research aims to provide insight into the
limitations of utilizing purely immutable data within a GUI framework and suggests
future work to mitigate these. / Thesis / Master of Science (MSc)
|
Page generated in 0.0708 seconds