A few years ago, after tossing 2 draft languages, I began my personal project pinnacle. MSN2 was (and still is) what I consider to be a mock programming language, mostly due to its unconventional, deoptimized interpretation methods that can result in language integrity issues.
But then again I ask myself, why would I keep coming back to this project over the years? Why hadn't I tossed it with the other drafts in fear of developers embarrassment? I kept it because of how far I exceeded my expectations for a programming language having a single contributor, even though I'm still miles short of the vision I have.
Early in development, there was no real intention to release it to the public as it was merely a learning exercise, thus there's no real reason to introduce a new language. Regardless, as a functional tool and a main source of my Python studies, the benefits of building a programming language on top of Python equips us with the not only the complete capabilities of Python itself, but new features for:
Because of the ease of implementing new features, it could serve as the foundation for a more community-oriented language that continuously progresses through community feedback and contributions. With these the current and future contributions, we create opportunity to:
and how much more...?
It's easy to say the language is very capable, and in certain situations, I'd argue it's more capable with less code. It’s also becoming more and more enjoyable to use as a developer as updates are released. Unfortunately its not as easy to say using the language is a cakewalk. I've released an msn2 syntax highlighting extension for VSCode, basic documentation, and many tutorials and code examples. Though it becomes difficult without auto-completion of keywords or tokens and understanding implications when writing code certain ways. These issues are addressed in the issues tab of the MSN2 repository.
(None of these examples have extra code out of frame)
simplifying simple operations
starting an API endpoint and querying
creating a personalized macro
running inline JavaScript (also possible with Java and C)
The above sounds great! I'm entirely invested in making the steps to build on what I've created. But as much as I wish there weren't issues in such a large, overly complex, maintenance-demanding codebase, there are XD.
As of MSN2 2.0.403, there are several, fixable integrity issues potentially producing incorrect results at runtime. Luckily integrity issues are temporary, but its important they're addressed quickly.
With Python as a backend, speed becomes a brutal drawback, and that's speed. Speed will always be an issue with MSN2, and unfortunately we can only make attempts to make the base language match a speed close to Python's own.
So what can we do?
This project has been an ambitious journey, what started as a learning exercise quickly grew into a playground for exploring language design and new, creative proof of concepts. MSN2 has serves as a learning experience that continuously challenges my programming capabilities. It's far from acceptable, and much farther than perfect, but that's part of what makes it exciting - it's full of opportunities to grow and improve.
While the majority of the language is not entirely production ready, and testing hasn't reached 100% coverage, MSN2 represents the potential of unconventional thinking and freedom to experiment without the pressure of perfection. Whether it becomes a useful tool in projects or remains a personal endeavor is up to myself and the community, but its future depends on continued development, feedback and refinement. For now, I see it as a stepping stone, one with rough edges and plenty of cracks, but still solid enough to stand on.
helpful links
MSN2 on GitHub
MSN2[2.0.401] documentation
my website / portfolio
The banner of this post is unformatted, yet runnable MSN2 code incorporating inline mixes of JavaScript, Java, C, all interacting with an API endpoint spun up in the same line.
The above is the detailed content of MSNAn Experimental Programming Language for the Bold Developer. For more information, please follow other related articles on the PHP Chinese website!