A couple of weeks ago, I suggested the use of Nim in parallel with other languages for teaching Software Engineering and Data Structures. I decided to write a book about macros in Nim to help the students. However, in response to requests from students, I asked their teachers to add introductory material about Nim, bash/zsh and text editors to the tutorial. You will find the new material here:
https://github.com/FemtoEmacs/nimacros
By the way, I don't like traditional Software Engineering, UML, etc. However, many students asked for material about domain modeling in Nim. For instance, a Canadian student sent the following email to Marcus Tolentino:
"Just wanted to thank you for posting this. It's really exciting, especially the ability to write really high-level code and have it compile to C!
Do you happen to have more good resources on how to jump into domain modeling in Nim?"
Another thing that many people ask is a library to access tensorflow. Finally, medical students need an interface to MUMPS, since this old language is heavily used in the Epic EHR. By the way, according to Epic System Corporation, hospitals and clinics that use its sofware keep medical records of 54% of patients from the United States. All these records are accessed through scripts in MUMPS. Therefore, an interface to MUMPS would be welcome by the healthcare community, since it would make possible to process the records through a more modern, more friendly and safer language.
[rant=on]
UML is not traditional software engineering, it's a big business approach to software, often associated with waterfall design<https://en.wikipedia.org/wiki/Waterfall_model>_. Unfortunately it implies a lot of human overhead (useless meetings) even though software and its requirements are a living beast and may change week by week (say a website for a news company) or at least month by month.
What happens is that the software ends up organized like the company that developed it with all its benefits but also all its inefficiencies especially arbitrary business rules, access controls, validation workflows and bypasses that everyone knows (the CEO can do anything) but no one bothers to voice or specify. I.e. implicit social contracts are hard to translate into code.
I think the essay "The Cathedral and the bazaar" is a must read for software engineering: http://pld.cs.luc.edu/courses/412/mnotes/cathedral-bazaar.pdf. There is also a book.
[rant=off]
The easiest would be to wrap a C or C++ library, or maybe there are some tutorial for another language (Python) that you can follow with Nim.
Regarding Mumps, it's seems like an ever hard language to search for than Go, Nim and Rust congrats! Anyway the only thing I found related to it besides the wikipedia page is a code pretifier: https://github.com/google/code-prettify/blob/master/src/lang-mumps.js. It seems like it's standardized by ISO but if there is not even public "Hello World" it's hard to test against. It seems like it would be possible to write an interpreter for it so that could be a student project.
Hi, mratsin. I am not talking about writing a MUMPS interpreter in Nim. Every physician has access to the official MUMPS. In fact, every physician in the United States starts his/her medical residency with MUMPS and CCL. Besides, the physician needs to take a high stakes test, USMLE step 2 Clinical Skills, where s/he feeds many EHR and EMR into a Cerner or Epic database. The problem is that MUMPS is a computer language that appeared in 1966. It is very old. Basically, MUMPS is a database language, i.e., a MUMPS program insert records into an Epic database, or retrieve information from the Epic database. What I am proposing is to use Nim to retrieve records from Epic database. In fewer words, I would like to liberate physicians from this very old language that is MUMPS. I am not proposing to scrap MUMPS either, since this is impossible, there are millions of records in MUMPS. However, the American Veterans Affairs Office decided to replace MUMPS with something else. This move will cost the VA 16 billion dollars. You can get information about this decision from the Internet. I suppose that Epic Systems itself would be interested in such a project, since it is losing ground to Cerner due to the use of an obsolete language. I also think that the Nim community should contact Epic System (they campus in Verona, Wisconsin, is wonderful) and ask a grant to create a Nim option for doctors. Here are two articles about the VA project:
https://www.fiercehealthcare.com/tech/va-plans-to-go-live-cerner-ehr-pilot-by-march-2020
https://www.politico.com/story/2019/08/23/veterans-health-project-1673379
Hi, mikra, I know the Thinking Forth book, by Leo Brodie. I agree with you, it is very good indeed. However, young people want to follow the trend, things that don't work, as mratsin hinted. I guess you know the following article:
http://www.flownet.com/gat/papers/lisp-java.pdf
The article show how modern software engineering tools that are favored by Java programmers fail miserably in practice.
By the way, I don't like traditional Software Engineering, UML, etc. However, many students asked for material about domain modeling in Nim.
I started experimenting with that here: https://github.com/eterps/designing-with-nim-types (feedback or additions welcome, I am relatively new to Nim)
I can recommend the book https://pragprog.com/book/swdddf/domain-modeling-made-functional even though the examples are in F#, most of it can be directly applied to Nim with little changes.
See also https://v4.chriskrycho.com/four-languages/index.html to see how this applies to Elm, ReasonML and Rust.
UML is not traditional software engineering, it's a big business approach to software, often associated with waterfall design.
Not true. UML is just a notation. How you use it is up to you. It's used successfully in agile/scrum cycles to illustrate a design or a solution in commonly understood language.