Hi there folks, this is my first time ever posting an entry on a online programming forum, please excuse my posting format if it is not up to the standart. While reading this topic, please consider the following: altough I am currently an undergraduate student in some area of science I really don’t like to study but I have to push through somehow, I have no formal education in software engineering, I am all the way self thaught solo learner, my terminology might be technically off, I do not state any facts, all opinions are my own, I just want to learn more, that is my only motivation here, besides going to school I basically do nothing but think of code most of the time, and I like experimenting with code. Please do not request code, I can only publish when I finish development, hopefully it will continue to work on the browser, then I will directly upload on the web editor as public access. So when I started to learn programming, I used to do more mathematical and statistical kind of modeling and simulations, they were mostly kind of abstract models, for an example as to give an idea I used to do exprimenting on topology optimization by appying affine transformations to randomly iterated function systems, which has a big name but fundamentally very very basic math actually. I told this only to explain my background as I learned programming by doing these kind of stuff. I still like these stuff but I don’t actively work on them anymore, sometimes as side quests here and there. I am well accustommed to oop, func. programming, various design patterns, this is okay, so my problem is since almost always I am the only person that sees my code, and I just programmed mathematical models for a significant period of time, I kinda developed this really weird programming style, and it kind of stuck with me, like I use multiple programming languages, my program structure is basically always same, I think except Assembly which I’m not particularly good at, yet that is. In my personal opinion it is true that oop is a management solution, I don’t understand how it is supposed to increase individual programmer efficiency. As to functional programming, I think it depends a lot in language specifics, I mean you now Javascript is a very weird language but very practical for me so I use it all the time, and I actually really like Javascript with all the strangeness, and you know it p5.js ecosystem is the cherry on the top. So both oop and functional programming are very good for certain task and I use them both to do various task like oop for creating data or func. programming for combining parsers as an example. However what my code boils down to essentially is like a lame and weird version of procedural programming. I don’t really know how to explain, for an example, I don’t like mutability so I tend to create copies of instances and operate on them. Okay so, this is actually not important, the important thing is my weird programming style is creating problems for me and I need to fix this. My problem is very specific. I’m trying to write a compiler, which is the most amount of code in a single project I ever attemted to, I am constantly messing up the scope. This might sound like a very stupid problem to specifically have but what can I say, it is what it is, I guess I am just extremely bad at adjusting the environment scope of all things. This is not a JS specific problem I’m having by the way, the scope issue happens all the time. What this tell me is that I don’t understand what happens during runtime well enough, or like the information my input code creates that leads to a scope error on the output. So I pushed the breakes on the compiler and decided to properly sort this out and then I can continue. As I said I prefer learning with an experimentation kind of aproach sometimes, figuring things out this way is very good for me. So here is my little side quest project; I am building a very simple python like programming language by writing an abstract syntax tree interpreter, it will have all the fundamental oop and fp properties, right now I’m just using vanilla JS and p5.js, that’s it, I wish to keep this project zero dependancy other than these two, let’s see how it goes. The purpose of this interpreter is the ability to visually examine how does the information changes when I change the state of the system. I can chart, graph, arrows, maps, diagrams, all these things. I think if you can parse it you can interpret it, therefore you can emulate it, so I think I can emulate different kinds of memory management, maybe try to implement garbage collection. It may be pretty slow but this will be like a experimental setup therfore we just want to visualize a shell that imitates computation so I can think of strategies to simplify and structurize my coding. I think visual representations are very good learning resources for these kind of stuff. Here is an example I like very much ( https://www.youtube.com/watch?v=OG_AZnPokGw&ab_channel=JSHeroes ) I think this is very good for understanding better. Also lately I found out about something that really caught my attention called Data Oriented Programming(Not the same thing with data oriented design they use in game development, these two are seperate things), I’m thinking on experimenting with the pradigm too on the interpreter. What do you guys think about this? If you have any insights about this or any other programming paradigm I should check out and try to impement, or any tips on how to better visualise, I try to follow somewhat of a test my way of driven development approach on this project, maybe any insigts on that or, is there anything you want to visually see how it works, I don’t know maybe a regex engine or something else. Any feedback would be much appreciated. Thank you.
Note: Right know the build is like a regular programming language, should I make it a funny language or continue as normal language. What I mean by funny language is not like strange operations or weird binding behaviours, I wrote some JavaScript jokes that I think are funny, so should I add some JavaScript humor to the language syntax, or just don’t complicate things, humor or vanilla, you decide?