Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

3rd level languages are compiled into 2nd level languages (assembler, or byte code, or intermediate representation), then into machine code.

Transpilers are compiling from one 3rd level language into another 3rd level language.

Code generators or macros are receiving data and producing code in a 3rd level language.

4th level language receives plain text explanation of a goal and produces code in a 3rd level language. AI based tool is the only tool which is capable to do that, because such process requires understanding of the goal, not a mechanical transformation of input into output. It's possible to implement such AI in Lisp, Prolog, or using ML. Copilot is an example of such AI.



>4th level language receives plain text explanation of a goal and produces code in a 3rd level language.

Such an explanation would read like this:

    I require some glue code so the system our company uses to pass messages between our services, can talk to the system of the company we talked to 2 days ago. Also, there should be a web interface or something to monitor it.
Not like this:

    A function that queries the user from the database by its surname


Such explanation can be like this:

  apt-get install foo bar baz
Just few words, but they can generate very complex ready to run systems.

Unfortunately, this is not a general-purpose language, but apt + shell is.


How is this the "explanation of a goal"?

I issue an imperative command to apt-get, and it tries to execute it.

It has no knowledge of why I want foo bar and baz installed, nor can it decide if these 3 programs make sense for what I am trying to do, or if there is a better way to do it (maybe there is a package "bazinga", that can replace the foo-bar-baz stack?).

A goal-aware package manager would look like this:

   super-apt "i need the system ready to function as a webserver, with a high availability database and backup capabilities"


> A goal-aware package manager would look like this:

A typical package manager is already goal-aware, like `make`. It's input DSL is far from English, but it's not hard to translate your English sentence into «apache postgress rsync» by matching text to package descriptions.

Package manager requires a solver for dependencies, constraints, and conflicts, which is far from trivial. For example, Fedora(RedHat) switched from in-house solver for yum/dnf to zypper SAT solver (libzypp) developed by SuSE/Ximian/Novell.

Unfortunately, package managers are DSL, not a general purpose language.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: