I recently started working on the YASS to Python transcompiler. It's worked well over the last few weeks, and I've decided it needs a proper name.
Without further ado, let me introduce ZenPy.
ZPETypes were first introduced to ZPE a few years back when the move to 'everything as a function or object' concept evolved. This paradigm shift made it impossible for ZPE to encounter data types such as BufferedImages as it had previously, restricting such data only to ZPE structures (and, indeed, ZPEObject instances). This tidied up the core of ZPE, improved performance, and caused fewer crashes.
Now, I embark upon perhaps the most exciting yet ambitious project in ZPE's history: shifting away from generic values to ZPETypes for all return values. This is not going to be a quick job either, and it could take several days of development. But it's necessary to make ZPE feel more solid and improve performance even further.
ZPE is close to its 100,000th download as of this year, so it is time for this change to come around. I seek to have it done by the end of the summer.
ZPE plugins are now available to download from my website straight from my Download Center. All plugins are open-source and can be compiled, modified, forked, etc., from my GitHub.
Currently, the only existing plugins are the libZPE-MySQL, libZPE-MQTT, and libZPE-Serial plugins, which were three of my original plugins. libZPE-Windows, libZPE-Mac, and libZPE-Linux are all underway now, too.
As you'll notice, if you are interested in making plugins for ZPE, they must follow the naming convention of libZPE at the start.
The plugin system, known as the ZIP System, is now working. It's replaced the older plugin manager with a more efficient and reliable system. I recreated the ZPE MySQL plugin yesterday and got it working again. Part of my plans for this include removing some of the features in ZPE, including the MQTT features and potentially the GUI features in ZPE, and moving them to a plugin.
However, there is currently a drawback to these: instead of working like libraries, these simply add the built-in library functions to the general function list. That means you do not have to call libmysql->mysql_connect but instead just write mysql_connect. I am not entirely sure this is how I feel that these plugins should be accessed.
However, it now means that creating ZPE plugins is now possible again.
My new transpiler for YASS to Python is coming along very well. After only about 3 hours of development, I have managed to get a program like this:
function doIt($x) for($i = $x to 100) print("Running in a function") end for end function doIt(10) for ($i = 0; $i < 2 * 3; 2) print("Hello", "world") end for $z = 9 if($z > 10 || $z < 20) print("Yes") else print("No") end if $x = 10 + 5 / 3 print($x)
To transpile to:
def doIt(x): for i in range(x, 100): print ("Running in a function") doIt(10) for i in range(0, 2 * 3, 2): print ("Hello", "world") z = 9 if z > 10 or z < 20: print ("Yes") else: print("No") x = 10 + 5 / 3 print (x)
This is the first big announcement related to this new transpiler, which will be available very soon at this rate.
A few days ago, I spoke to a friend who showed me his CV and what he had done. It was stunning in its design, something I had done a few years ago when I used Microsoft Publisher to make my CV. I moved away from Publisher due to the incompatibility with macOS and because I like to make my things using code rather than rely on software like that. I also wanted to host a native version of my website and add some of the themes from my website to it.
I eventually caved in and came up with the idea of making it with HTML and CSS and hosting it on my website. It worked well, and over the years, significant changes have been applied, such as making it more interactive and powered by a database.
Over the last few days, I have made even more extensive (and beautiful) changes. These changes are especially prominent when printed to either a PDF or paper.
Take a look by going to the About section on my website.
It was slightly disappointing when I went into teacher training to discover that the course had been named Computing Science rather than Computer Science. The two have different meanings, and what we teach is called Computing Science, but it is actually Computer Science.
Computing science is generally associated with computer science's theoretical and mathematical underpinnings, where logic gates and formal specification are prominent. On the other hand, computer science is more related to designing and developing algorithms and using and creating data structures, computational thinking, computer programming, computer architecture, databases and data storage, HCI/UX and much more.
So, to answer the question I was asked the other day about whether Computer Science (at the university) is the same thing as Computing Science (in school), I answered yes, but knowing that this was only in this context. I am absolutely not being pernickety here as I genuinely think that the difference between these two disciplines is essential to distinguish.
I am working on fixing unbound variables in ZPE that will hopefully solve a long-standing issue with their use when not declared first. This bug fix will hopefully be available in ZPE 1.12.5.
ZIDE or ZPE IDE is a powerful new IDE that I have been planning for a few months. It's built entirely on the editor built into ZPE just now, but it will offer a much more powerful and feature-rich platform for development than ZPE's editor provides. Additionally, ZPE will introduce a new step-by-step interpreter to allow concise communication.
ZIDE will be available on GitHub and will be fully open source.
ZPE has continually improved to the point where LAME X2 has improved what I had always aimed to improve in the evaluator. As a result of this new improvement, I don't foresee any easy way to improve performance on the same level as I have recently. This has meant that over the last few years, performance improvements have always been minor (bar the latest update), and I foresee this being the future.
There are plans for more compiler optimisations, and many of the improvements focus on this and more efficient variable declaration and function calling. If you have any suggestions for improving the performance of ZPE, please let me know.