Take the 2-minute tour ×

This is my very first question so I am a bit nervous about it because I am not sure whether I get the meaning across well enough. Anyhow, here we go....

Whenever new milestones in programming have been reached it seems they always have had one goal in common: to make it easier for programmers, well, to program.

Machine language, opcodes/mnemonics, procedures/functions, structs, classes (OOP) etc. always helped, in their time, to plan, structure and code programs in a more natural, understandable and better maintainable way.

Of course functional programming is by no means a novelty but it seems that it has experienced a sort of renaissance in recent years. I also believe that FP will get an enormous boost when Microsoft will add F# to their mainstream programming languages.

Returning to my original question, I believe that ultimately programming will be done in a natural language (English) with very few restrictions or rules. The compiler will be part of an AI/NLP system that extracts information from the code or should I say text and transforms it into an intermediate language which the compiler can compile.

So, does FP take programming closer to natural-language programming or is it rather an obstacle and mainstream OOP will lead us faster to natural-language programming?

This question should not be used to discuss the useability or feasability of natural-language programming because only the future will tell.

share|improve this question

closed as off topic by markus, Kyle, Trevor Burnham, p.campbell, Ian Ringrose Nov 15 '11 at 17:01


IMHO, functional does not necessarily bring us any closer to NLP, and that's just as well - natural language is fairly useless when you want precision and consistency. –  Shog9 Nov 12 '08 at 23:47
Ok, I will add the subjective tag once I find out how :). However, as I mentioned in my question I don't want to discuss usefulness of NLP. Nowhere did I mention I advocate NLP at all. I was just curious where the next generations of programming languages will take us and if FP is a milestone or not –  RB. Nov 12 '08 at 23:57
You cant explain intermediary phases if you don't see the end phase as being even remotely plausible ;) –  Kent Fredric Nov 13 '08 at 0:06
Functional programming has been around since the very beginning (LISP was specified in 1958 and implemented almost immediately afterward (compare to fortran in 1957)), and was heavily used for AI reaserach in the '70s and '80s. If it was a step in some kind of progression, don't you think we'd have moved on by now? –  dmckee Aug 6 '09 at 12:52
This question is more appropriate to programmers.stackexchange.com –  Trevor Burnham Nov 15 '11 at 16:00

9 Answers 9

up vote 28 down vote accepted

Sorry, I don't agree at all. Code is ultimately a blueprint for making things (objects), so it has to be very precise and rule-governed in order to function reliably. Natural language won't take over programming any sooner than sketching ideas on napkins will take over mechanical engineering.

share|improve this answer
But if those skeches could be part of a tool for design they could get your started on the path to the final product. I like sketching up ideas for robotics, applications, and networks on my Tablet. Help with design and implmentation. Best part is on a tablet you get more than just the one drawing layer from the napkin. –  Matthew Whited May 19 '09 at 20:47
I never meant to disparage napkinology. It has its place in engineering, just like natural language has its place in programming (it's for hitting on the receptionist). –  MusiGenesis May 20 '09 at 1:51
+1 for hitting on the receptionist. Everyone should take programming lessons from Ross Jeffries :) ... oh, wait, different NLP sigh. –  Charles Jun 4 '09 at 17:28

I personally have come to the conclusion natural language programming is somewhat crack.

English is not exactly suited to be used fully as a programming language, too many abstract words that have no-correlation in programming, such as emotive terms and other abstract notions that have no place in programming, so to say programming could ever be "natural language" would follow, that "natural language" could be programming, but it isn't.

Now while I get what you're saying here, the problem is the english language has too many scrap terms and repeated names for the same things, so we'd be using something that isn't even specific to the domain of programming, for the task of programming.

I think its more suited that people understand that programming is in fact a highly specialized language, and use their brains and learn to code in a language, which is simple, declarative, and has a consistent definition, unlike English, where definition is highly subjective.

Once you learn the ins and outs of a language, and learn its schematics and behaviors, you can combine them to do new things.

Take Perl, everyone lambasts it for being line noise, but when you know many programming languages, once you get past the initial hurdles of "OMG LINE NOISE", there is a degree of intuitiveness about it where you can make stuff up you never read about and then see it magically works just as you expected.

And IMHO, domain specific languages trump spoken ones for targeted problem solving.

share|improve this answer
@Bill the Lizard: heh, proof of concept, humans understand typos. ;) Computers... will fail bad. –  Kent Fredric Nov 13 '08 at 0:00
Could not agree more –  da5id Nov 13 '08 at 0:02
I agree that English is not an easy language to interpret but I suppose this is true for most modern languages. –  RB. Nov 13 '08 at 0:04
@Kent: Actually, the spellchecker should have alerted you to those. :) –  Bill the Lizard Nov 13 '08 at 0:31
@Bill: I have a spell checker. Its part of firefox. ;). Should != did. Software fails. Often it gets wrong suggestions too when it detects inaccuracy ( which a human can easily solve ) –  Kent Fredric Nov 13 '08 at 0:34


Neither. Both operate on the same principle that you have to be specific about what you want the computer to do. There must be no room for uncertainty, and neither paradigm has anything to do with natural languages. They tackle an entirely different problem: That of managing and structuring complex code and large codebases.

The big obstacle in natural languages is the parsing. It is impossible to unambiguously parse natural language. Even humans can't do it without a lot of context information (facial expressions, tone of voice), and even then, we still get it wrong quite often.

OOP and FP are only about what happens after parsing. Which meaning is assigned to each semantic element, once it's been identified and parsed.

Perhaps we'll one day be able to program in natural language. I doubt it'll happen within the next couple of decades, but it may happen one day. But today's programming paradigms will neither speed up this process or delay it. They simply have nothing to do with it, and won't help solving the parsing problem.

share|improve this answer

I don't think that functional programming is any closer to natural language programming than OO programming. Functional programming has a very verb-oriented syntax. When you program in Lisp or Scheme, you spend a lot of time thinking about functions and what actions you want to take on your data. In OO programming, you spend most of your time thinking about objects, hence it seems very noun-oriented. However, in Smalltalk, C++, and Java, you also have methods, which allow you to apply verbs to all of your nouns (so to speak).

I don't think that OO programming will necessarily lead us to natural language programming, but from my point of view it's a little bit closer than functional programming. Functional programming, to me, seems a little bit closer to math than to natural language. That's not such a bad thing, since maybe math is the language we should be thinking in when we program anyway.

share|improve this answer
Honoring the request of the questioner to avoid debates about the prospects and merits of natural language programming, I agree mainly with this comment that Functional programming (which is actually older than OOP) is not a step closer to whatever that is. –  orcmid Nov 13 '08 at 3:49
I'm also not clear to me that OOP is any closer to natural language programming, despite the sometimes-heard magical belief that programming-language Objects have some intimate relationship to "real objects." That magical thinking is, for me, demonstration that OOP is not on any road to NLP. –  orcmid Nov 13 '08 at 3:54
OOP objects don't inherently have a relationship to real world objects, but you can model them that way if you need to. I use and create plenty of objects that don't. –  Bill the Lizard Nov 14 '08 at 13:33

Just FYI, Inform 7 is probably the closest anyone has gotten to natural-language programming. It is a language for a very specific domain: writing interactive fiction, the kind of software that began with "adventure games".

share|improve this answer

The current spurt of interest in Functional Programming result primarily of C# 3.0's cool new features is basically to enable parallelism and denotes a shift towards multi-core computing. IMHO, I don't think we can consider this a next step towards 'natural language programming'

share|improve this answer
I wouldn't say C# 3.0 in general or LINQ are primarily about parallelism. To me, LINQ is about a declarative and consistent method of data access across data sources, to whatever extent is feasible. Being able to use a functional style is handy for much more than just parallelism. –  Jon Skeet Nov 13 '08 at 7:14
Jon... I feel the FP shift in C# is more of an enabler of parallelism... Perhaps Lamda expressions make my case? :) I agree with you that functional style is much more. Why wasn't C# functional from the word go then? Why now when multi-cores are the norm? ParallelFx not builds on these features? –  Vyas Bharghava Nov 13 '08 at 18:12

If you are looking for the next evolution in programming languages, I would look to DSLs. DSL allows for highly customized languages that enable sophisticated biz users to configure a system without having to worry about coding details such as datatypes, threads and UI widgets.

Functional languages will have their place in "highly parallel processing" space.

share|improve this answer

Do you think subjective questions will get this here order for "Windows Internals the 5th Element" added to the database and shipped to my address? If so, natural language programming will be very close to functional programming, since I asked my question in a somewhat functional manner. If not, then natural language programming won't get my order shipped, will it? Functional programming can work because it still has nothing to do with natural languages.

share|improve this answer

No. Functional programming will take us closer to proving compilers. That is compilers that prove more assertions about your code. The more compilers can prove for us, the closer software development comes to be engineering rather than art.

A NLP programming language is probably more of a "do what I mean not what I say" style language. That is probably the opposite of the direction functional languages go.

"All programming languages are converging towards LISP."

share|improve this answer
