Remember Marvin? the paranoid android from The Hitchhiker's Guide to the Galaxy? Well, we dedicate this language to that robot. And we named it after it.
- M.A.R.V.I.N is not a general purpose language
- It has most of the features any normal language would have along with the physics sandbox functions
- No its not like a game engine. Maybe right now it seems like one but that's not our aim, we want to create a set of computational chemistry functions and methods in the future.
- To really get to know our language check out the docs, they are fun to read (Or atleast I hope so)
- The purpose of this lang is to get people tinkering and playing around with science without having to go to the lab or get any special equipment. We aim to let you simulate anything from an atom to a chair.
Aim of the language
Most people around my age that I see everyday don't seem to be interested in sciences any more. I don't know about the real numbers but in my own class less than a quarter of the people take even one science as a subject. However, somehow, the majority of the class takes computers(the subject).
Why do people like computers so much? is this because of parental pressure? is this because the computers subject is just easier? I don't really know. But I know that I like computers because of that instant validation I get when I write programs.
I get the results of my hard work with the click of a button. This is different for science, since you have to wait for the results of what you do. In short - science requires patience that we don't really have.
Even if you are a patient person you cant actually see what you learn a lot of the times, especially right now with the pandemic since we don't have access to labs.
I don't like this situation and nor does my team mate and that is why we made a programming language called M.A.R.V.I.N with the goal of being able to simulate certain experiments and play around with science on your computer.
Marvin isn't nearly completed yet, we have so much work left to do with it like make it faster and add more features to it to let our users play around with chemistry too or make entire universes and simulate them. What we present here is merely a prototype.
We started out knowing nothing about creating programming languages and we made this project by mostly looking at the PLY documentation and a lot of the examples. A lot of the methods we used to make this language we had to think up ourselves, since there wasn't any proper way to learn how to use this library. Yes,we used python and yes, it is slow. To people who don't like that we say "Patience is virtue". Just kidding. We are extremely impatient people and we too hate the fact that our language is this slow. We actually have plans to move this over to Julia so it can be faster.
There is a github repo for this language as well, but I cant really link it yet, since it is private for the time being. The documentation is in the readme file and I will soon write few tutorials on how to use this language as well.
As of right now with this language you can do anything from simulating the spread of an infection, to Brownian motion and even writing out peoples names.
That is it for the language and take a look at the docs to find out more on how to use it. This is our first ever language, so if you know any ways of improving on it please tell us how and once that repo is public I do hope we see many pull requests from all of you reading this.
Goodbye and happy coding (in marvin or any other language but really, do try marvin)
try it out...
edit - wow, you guys are really nice in the comments section :) I am so proud of the marvin community
github repo - https://github.com/SentientVirtualFire/M.A.R.V.I.N
Before rewriting in Julia, you should check out PyPy https://www.pypy.org/ and GraalVM https://www.graalvm.org/why-graalvm/#for-ruby-r-python-or-webassembly. They both use JIT compilation to speed up Python and may give you the performance boost you need without rewriting in Julia.
Wow I really didnt expect this sort of a reaction I am amazed. Thanks for being so supportive and remember I'll release the tutorials soon so if you havent or dont want to read the docs, you'll still be able to play around with physics and if any of you here are really good at game physics and all, I'll invite you to the multiplayer and we can add some more fun stuff to the language