Instead of using the high-level languages, programmers will start using the more higher-level programming languages or human language level programming languages?


(Man_Hobby) #1

Hi,

It is written in book Java How to Program ninth edition that instead of using the strings of numbers that computers could directly understand, programmers began using English-like abbreviations to represent elementary
operations:

1.5 Machine Languages, Assembly Languages and High-Level Languages

Programmers write instructions in various programming languages, some directly understandable by computers and others requiring intermediate translation steps. Hundreds of such languages are in use today. These may be divided into three general types:

  1. Machine languages
  2. Assembly languages
  3. High-level languages

Any computer can directly understand only its own machine language, defined by its hardware design. Machine languages generally consist of strings of numbers (ultimately reduced to 1s and 0s) that instruct computers to perform their most elementary operations one at a time. Machine languages are machine dependent (a particular machine language can be used on only one type of computer). Such languages are cumbersome for humans. For example, here’s a section of an early machine-language program that adds overtime pay to base pay and stores the result in gross pay:

+1300042774
+1400593419
+1200274027

Programming in machine language was simply too slow and tedious for most programmers. Instead of using the strings of numbers that computers could directly understand, programmers began using English-like abbreviations to represent elementary
operations. These abbreviations formed the basis of assembly languages. Translator programs called assemblers were developed to convert early assembly-language programs to machine language at computer speeds. The following section of an assembly-language program also adds overtime pay to base pay and stores the result in gross pay:

load basepay
add overpay
store grosspay

Although such code is clearer to humans, it’s incomprehensible to computers until translated to machine language. Computer usage increased rapidly with the advent of assembly languages, but programmers still had to use many instructions to accomplish even the simplest tasks. To speed the programming process, high-level languages were developed in which single statements could be written to accomplish substantial tasks. Translator programs called compilers convert high-level language programs into machine language. High-level languages allow you to write instructions that look almost like everyday English and contain commonly used mathematical notations. A payroll program written in a high-level language might contain a single statement such as

grossPay = basePay + overTimePay

Instead of using the high-level languages, programmers will start using the more higher-level programming languages or human language level programming languages?

I probably will create the more higher-level programming, in other words, I probably will create the human language level programming.


(Johan Dahl) #2

The problem and beauty of human language is that it is quite ambiguous. To make it less so you would have to strictly allow only certain well defined kinds of constructs. I don’t think a computer at least not in the near future would be able to make a program out of a specification or a design.

Before the algebra was invented did people write formulas in natural language but it was hard to understand and ambiguous. So natural language isn’t always the best mean of communication.

Just my two pennies and sorry about the crappy English.


(Man_Hobby) #3

An intelligent compiler will ask for clarification whenever there’s an ambiguity and may suggest improved wordings to resolve the issue. Writing a program will end up being a conversation with an intelligent machine which anyone could handle even if they know nothing about programming - it will be a collaboration with an intelligent system which is in itself an expert programmer. The error messages will be comments and questions just like the ones you’d get if you were co-writing a program with a human programmer. (“When you say “print the result of that part”, do you mean this part [a section of the code is highlighted], and do you want it printed to the screen or the printer?”)

None of that will stop you putting in a line of C or any other programming language if you want to, but most of the work will simply be done in natural language, typically at a much higher level with the compiler working out how to carry out the tasks asked of it. The end user will also become a programmer, telling the machine how (s)he would prefer things to be done, and the machine will comply. That will rarely be done through anything other than natural language.


(Ignacio GĂłmez) #4

Excuse me if I wait sitting for that to happen.


(Man_Hobby) #5

Programming languages will end up being increasingly high-level until they become identical to natural language. You will eventually be able to write all your programs in English, Portuguese, or any other natural language, although you will also be able to mix that with instructions of the kind used in today’s programming languages whenever you think that’s more efficient or clearer.


(Man_Hobby) #6

@johandalabacka,

Where natural language is ambiguous, the machine can simply ask for clarification to make sure it has understood the instruction the right way, and if it hasn’t, it can help the programmer improve the wording of the instruction.

Please, see the Plain English Programming site so that you can see a language that looks close to natural language. That would let you see that using normal language would be a practical way to write code.


(Oleg Zaytsev) #7

As you say, the machine can simply ask for clarification if it finds an ambiguity, but it is not such an easy task to detect the ambiguity for a human, and we all write programs for humans to read and evolve them.

It is very easy to write a program that a machine understands, the complexity of programming is to write programs that other humans understand and can easily evolve, and that’s where human language fails, because it may hide ambiguities that a human doesn’t even see.

I think that strictness and limited ambiguity of Golang with its 25 keywords and absence of macros, DSLs, etc. is what makes it useful after all.


(Taavi Kivisik) #8

Given that any code could be generated from program specification or a design generated by a human, I believe it would run into the same problem as Artificial Neural Networks (ANN) has.

ANN can and will produce an output (42?) given an input, but what goes on in the middle is to a large degree a black box and not explainable. Even after training a computer vision classification model to be fairly accurate, changing a small number of pixels can make the model classify the content of the image to something different. A program generated by such instructions will largely remain a black box, not transparent, and therefore will have limited use cases.

How would you test such a system?
How would you debug such a system?
Where to start looking for a lost $ 10 million from the system? :slight_smile:
Who is going to be responsible?


(Curtis Allyn Green) #9

Along the same vein as what you are discussing, this video is something everyone that aspires to employ AI strategies into a working product should at least be familiar with.

There is a lot we can do reliably with narrow AI, perhaps even products that help design specific kinds of software for narrow domains.

A universal problem solver takes a lot of sophistication that requires the cross communication of many narrow systems, and as yet there is no design that I have seen for a decision making layer between narrow domains.

Again, who’s responsible for the output of these systems when they get it wrong. The more likely situation for a long time to come is human developers that can design narrow solutions for specific problems using libraries of code (even common AI solutions) as we have been doing for decades.

Anything creative will be a human domain for a long time. Another thing to think of is the reason people develop software in the first place, to solve problems for humans. Humans have problems that machines aren’t likely to have a human understanding of regardless of the sophistication of the machine.

So at any rate we will always have that advantage over machine minds.


(system) closed #10

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.