DEV Community

Cover image for Could I speak to a machine please?
Thomas Hansen for AINIRO.IO

Posted on • Updated on

Could I speak to a machine please?

Yesterday I was one of the speakers at BlockChain-Fest in Limassol/Cyprus, apparently with 3,500 viewers, including those watching it being streamed online, and I got to talk about Magic, Aista, and of course software development automation - A subject I'm obviously extremely passionate about.

As I pondered the philosophical implications of this, I started asking myself what my original motivations for creating Magic really was, and I remembered back some 20+ years ago how I was "searching for perfect code".

20 years ago, regardless of how hard I tried, I could never create "perfect code". This became almost like an OCD obsession for me, wanting to improve myself, and what I produced, to the point where I'd mercilessly refactor everything, over and over again, looking for "perfect code". It almost felt like a mission from God for me.

Today of course I can create 100% perfect code, and I can produce millions of lines of perfect code, in one second. Simply because I'm no longer creating the code, but I've outsourced the actual coding to the machine through Aista Magic Cloud. This made me realise that today one of the most common phrases a chat bot is hearing from the other party is as follows ...

Could I speak to a human?

My bet is that 5 years from now the roles will be reversed, and the most common question a human being on the other side of a chat module will hear is ...

Could I speak to a machine please?

Hyperlambda fundamentally changes the way we as a specie interact with the machine, simply for no other reasons than the fact of that it becomes a "bridge for transferring logos" between the homo sapiens in one end, and the silicon based machine in the other end. To realise why and how is to realise that Hyperlambda is the only programming language on the planet that the machine can understand, transform, and semantically edit - Also after its initial inception. This results in self evolutionary iterations, where the program can by itself enter self sustained evolution, modifying itself, based upon input from its environment. Of course, explaining this to a humanoid, still searching for a method to (manually) create "perfect code" is really quite futile ...

Anyways, if you want to see my talk from yesterday, I've included it below.

Top comments (5)

Collapse
 
guitarino profile image
Kirill Shestakov

Very interesting ideas, though it seems to promise way too much. It definitely can't guarantee 100% bug free code or generating millions of LOCs for you. It's ridiculous to even entertain that this would be possible, definitely not with a language like this. It's not a direction I personally like languages to go towards, because when code can change or reinterpret itself, it will necessarily lead to messiness. I prefer languages to be simple in terms of consistency, predictability and readability. Not to mention, if you write code in such a way that millions of LOCs can be generated for you, you're not writing code correctly. Every language has an ability to split code into smaller functions and reuse them - and you don't need any sort of hyper meta programming to achieve a lot of code reusability. Those are just my 2 cents after a first look at the language.

Collapse
 
polterguy profile image
Thomas Hansen

Your comment really deserves more than the time I can show to you here in a small reply, but as to millions of LOC - I've ran it through a database with 650 tables. It produced some 300,000-400,000 LOC of backend code, and some roughly 1.8 million lines of Angular LOC. I ran it on a desktop computer with 8GB of RAM and 4 cores if I remember correctly. It spent some 5 minutes. Interestingly, it takes 2-3 orders of magnitudes longer to transpile/compile the Angular code the system generates than it takes to assemble the code.

All code obeys perfectly by TS Lint standards, and contains extension points, is heavily commented, and can easily be modified.

You can check out the Angular result here for a small database.

 
polterguy profile image
Thomas Hansen

Well, Magic is open source, with permissive licensing. We'll be making a living out of hosting, starting probably at either 29 or 49 EUROs per month, but there's nothing preventing you from downloading it yourself, and install it on your own VPS. It'll require some "fiddling" with Docker ++ - But you can probably figure it out easily by checking out magic.deploy

It's not YAML for the record, it's just "similar to YAML". Yaml is a key/value format. Hyperlambda is a name/value/children format. the former making it much simpler to create a Turing complete execution model, since the same name can be repeated multiple times in the same scope ... ;)

If you test it out, I'd love to hear your feedback. You can find our "corporate email address" (leading to my personal inbox) on our website somewhere ^_^

Collapse
 
polterguy profile image
Thomas Hansen

Thx Leonid, it's a Turing complete programming language, so at least in theory you can do whatever you wish with it - However, it is ultra super high level to the point where it arguably turns traditional programming languages such as PHP and Python into the equivalent of "machine code". Hence, the language is not suited for algorithm intensive things, but more practical for "orchestration" code, such as accessing your database, reading files, invoking HTTP endpoints, validation logic, etc.

Its purpose is to create a communication model between human software developers and the machine, resulting in that the machine creates most of your code. Currently, its focus and primary implementation is to automatically generate HTTP Web APIs wrapping your existing database.

I have a playlist here where I go through most parts of Magic. If you skip to the 3rd video, you'll see how I automatically create a REST API using Hyperlambda's low-code and automation features.

 
polterguy profile image
Thomas Hansen

Definitely, it's purpose is "gluing stuff together" in fact :)