3 ms·
Erm...Copilot still writes procedures and data types, most of which I have to describe one by one. And I still have to review all of them. How is that "4th le
by usrbinbash 5y ago
Erm...Copilot still writes procedures and data types, most of which I have to describe one by one.
And I still have to review all of them.
How is that "4th level abstraction" whatever the current usage of the term?
- drran 5y ago3rd 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.
- usrbinbash 5y ago>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
- drran 5y agoSuch 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.
- usrbinbash 5y agoHow 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"
- drran 5y ago> 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.