diff --git a/README.md b/README.md index e07e8ff..4b89d06 100644 --- a/README.md +++ b/README.md @@ -4,94 +4,6 @@ *Snow College* *SE 3250 Survey of Languages Final Project* -Language Code Name: YREA **SLS** (*Stack Language Specification*) -Language Specifications: [sls.purplecello.org](https://sls.purplecello.org) -Language Specification Repository (Private): [git.purplecello.org](https://git.purplecello.org/KylerOlsen/LangsFinalPlaning) -Language Implementation Repository (Private): [git.purplecello.org](https://git.purplecello.org/KylerOlsen/YREA-SLS) -Language Implementation Repository (Mirror on GitHub) (Private): [github.com](https://github.com/SnowSE/final-project-KylerOlsen) -Assignment Page (Private): [snow.instructure.com](https://snow.instructure.com/courses/1154808/assignments/16233203) - -## Assignment Description - -**Overview** - -In your final project for this course, you will do the following: - -- Decide on a modest personal project to complete in a new-to-you -programming language (during class time, we will randomize the list of -people in the class and allow languages to be selected uniquely on a -first-come, first-served basis; be prepared to pick the language you want -and to advocate for the languages that you don't want). -- Without using AI generated or suggested code, complete your project in -your assigned language including automated testing. Find a way to make your -useful implementation concise and elegant enough that you would be able to -recreate it reasonably quickly without AI assistance (be prepared to -demonstrate this ability during a one-on-one interview to ensure credit). -- Using AI help as desired, create a faithful port of your implementation -(including tests) to: - - Rust - - Python - - Java (optional, but it might be interesting and userful for your - resume) - - C# (optional, but it might be interesting) - - typescript (optional, but it might be interesting) -- For each ported implementation, add one addition feature (not present in -the original or other ports). -- Prepare a report that describes: - - the problem that your project solves and why you are interested in it - - a brief description of how the language that you chose and the port - languages were or were not each a good fit for the project - - three examples of ideas you learned in the course that you leveraged - to the implementation in your assigned language elegant, efficient, and - concise/maintainable (at least one idea should specifically come from - functional programming) -- make sure to be specific and teach the reader - something valuable for each of these - - at least one struggle that you faced (or that you imagine that others - would likely face) for each language implementation, and what you - learned from working with the port languages during the porting process. -- Prepare slides that help you teach the key ideas from your report to the -class. -- In a 5-8 minute presentation during the final exam slot, use your slides -to teach the class and demonstrate your running project including the -addition port features. - -Project Scope - -- Please do something that will be fun and interesting for you! -- Make sure that the project actually solves a problem that you care about. -(Entertainment counts, but if that is the problem you care about, then make -sure that you can make something that actually is entertaining!) -- I'm expecting you to dedicate about 15-30 hours to the entire project -(including all three implementations and the report/presentation -preparation). I'm expecting that your initial implmentation should feel -like about twice the scope of implementing the game of life in PostScript -or K. - -**Languages** - -For what it is worth, here are a few resources that rank or compare different -programming languages in terms of popularity or jobs (but they don't equally -capture how programming in the languages will give you tools for thinking -about and solving problems): - -- https://spectrum.ieee.org/top-programming-languages-2025 -- https://www.tiobe.com/tiobe-index/ -- https://survey.stackoverflow.co/2025/technology#admired-and-desired -- https://survey.stackoverflow.co/2025/technology#most-popular-technologies-language-prof -- https://tjpalmer.github.io/languish/ -- https://www.geeksforgeeks.org/blogs/top-programming-languages/ -- https://github.com/breck7/pldb - -Here is the list of programming languages that you will be able to choose from -for your initial implementation (each language will be chosen by at most one -student; we will choose during class time on Oct 27): - -- **C** Kyler - -**Submission** - -Submit all material (including report and slides) via github classrooms repo. -Also, submit your github repo link and the path to the report and slides file -in the canvas text box for this assignment. The grace period for submission -ends at 3pm on Monday, Dec 8. Presentations will be 3:30pm - 5:30pm. For full -credit, you must present and watch the presentations of your classmates. +SLS is a statically-typed, stack-based language with pure postfix notation +combining the execution model of HP's RPL, the type system of C and Rust, and +modern array operations from Uiua. diff --git a/REPORT.md b/REPORT.md new file mode 100644 index 0000000..133d261 --- /dev/null +++ b/REPORT.md @@ -0,0 +1,27 @@ +# YREA SLS +*Kyler Olsen* +*October 2025* +*Snow College* +*SE 3250 Survey of Languages Final Project* + +Language Code Name: YREA **SLS** (*Stack Language Specification*) +Language Webpage: [sls.purplecello.org](https://sls.purplecello.org) +Language Specification Repository (Private): [git.purplecello.org](https://git.purplecello.org/KylerOlsen/LangsFinalPlaning) +Language Implementation Repository: [git.purplecello.org](https://git.purplecello.org/KylerOlsen/YREA-SLS) +Language Implementation Repository (Mirror on GitHub) (Private): [github.com](https://github.com/SnowSE/final-project-KylerOlsen) +Assignment Page (Private): [snow.instructure.com](https://snow.instructure.com/courses/1154808/assignments/16233203) + +In 1986, Hewlett-Packard released their HP-18C and HP-24C calculators, which +introduced their new RPL operating system and programming language. The language +was based on LISP and Forth (a stack-oriented language). RPL, aka Reverse Polish +Lisp, was used by HP in several of their calculators through the 1990s and +2000s, most famously on the HP-48 series of calculators. HP calculators have +been a favorite among engineers because of their post-fix notation. + +When in my journeyings on the internet a few years ago, I discovered Uiua, a +pre-fix, stack-based, array-oriented language, which inspired me to create my +own, except more largely inspired by HP's RPL. I started planning out an idea, +but never made it far. This semester I was again inspired by looking at the +various programming languages to again make my own, this time throwing in C to +the mix. What resulted is my *Stack Language Specification*. Having difficulty +coming up with a name for the language, I went with SLS.