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 programming of more high-level or human language level programming?

New Answer
New Comment
7 comments, sorted by Click to highlight new comments since: Today at 1:34 PM

Hey, welcome to LessWrong.

I think it would be useful for me to understand why you are interested in this question, and why you asked it on this forum. It feels like a relatively general technology question, and the answer seems pretty obviously "Yes" in a way that I don't know how to really expand on.

Hi habryka,

I asked it on this forum because I probably will create the programming of more high-level or human language level programming.

What is the correct forum to ask this question?

You wrote things about the history of programming that everybodies knows and then ask a question that seems naive without explaining your motivations.

load basepay add overpay store grosspay feels to me much harder to understand then grossPay = basePay + overTimePay

One hypnothesis would be that you are someone without much experience in programming who thinks that "load basepay add overpay store grosspay " is easier.

Is that's not the case that you are simply naive, it would help if you would write about how you imagine a " more high-level " programming language would work to let people engage with your ideas at a substantive level.

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.

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.

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.

English is a language that's subject to natural evolution over thousands of years over a domain of communicating information that's not very abstract.

It would be very surprising if that process leads to a language that's high-level in any meaningful sense of the term. English lacks basics like an unambigious or.

(“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?”)

That sounds like it would radically increase the work to write the "print" function in the first place if you have to think about all the possible meanings that someone might have in mind. That will make programming a lot harder.

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.

The machine understanding the instruction isn't the only problem that's exists. Good code is written so that a human who reads the code understands what it does. Ambigious language that gets interpreted that way is going to be opague to the reader of the code which makes debugging harder.

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.

To me it looks like it's evidence of the opposite. The code is a lot harder to read then python code.