Natural Language Programming

Page 13 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.
Status
Not open for further replies.

Spungo

Diamond Member
Jul 22, 2012
3,217
2
81
100% incorrect. Code is logic. All logic in SIRI, Google, etc. has already been created by other people. SIRI and Google attempt to parse data and apply it to pre-written code as variables. A programmer should know the difference between data and code.
Code is data and corporation are people

Coding in English seems like a simple idea, but it's bound to get complicated when it tries to include more things. Perl started as one guy's attempt to simplify things, and it evolved into something huge. The guy who made Perl is a linguist, so he tried to make it more like spoken English, and that included things like context. A variable in Perl can be a string and a number at the same time depending on how it's called. That small feature changes some of the syntax. Since strings can be numbers, writing "variable1 + variable2" doesn't work anymore because it's ambiguous. Are you adding them as strings or adding them as numbers? The solution is to use a period to join strings, "variable1 . variable2" creates "variable1variable2". This creates another new problem. Other languages use periods to separate classes and methods, so how can Perl have those features? Let's use an arrow instead, class->method. That probably screws up some other thing done by other languages, so it gets even more complicated. Another thing is that languages like C# use => for lambda expressions. You can't do that in Perl because => is the same as a comma; one can be swapped for the other and the code will work. At some point, someone said it would make Perl easier to read if certain things had arrows, such as hash tables:
Code:
%hash = (
key1 => value1,
key2 => value2,
);
So how do you lambdas in Perl? I'm not sure. I think you just make the subroutine inline.
Well then what happens if other languages start adopting that kind of syntax for some other feature? Then it gets even more crazy.

My point is that every language starts simple and becomes more complicated. The only way to keep English as simple as possible is to not include new features, and that's ok. There's nothing wrong with having languages that can only do a small number of things. Sometimes limited functionality is a good thing if it makes things easier to use. A calculator is a good example. A $5 calculator is easy to use. A $100 calculator can do all kinds of crazy things including graphing and calculus. Which one should a professional engineer have? The $100 calculator because it does more things. Which one should be given to someone who just wants to add some numbers on a bar tab? The $5 calculator because it's easier to use for that particular task.

As others have stated, English is a very wordy language. If English is to be used for programming, it needs to be kept as simple as possible. No classes, no inheritance. Put emphasis on encapsulation and breaking things down into small pieces.
 
Last edited:

crashtech

Lifer
Jan 4, 2013
10,556
2,139
146
That painted whore thing really threw me off, actually. If Windows is really that nasty, write your own damn OS or borrow a DOS or Linux distro and distribute the whole shebang as a bootable image.
 

BoberFett

Lifer
Oct 9, 1999
37,563
9
81
That painted whore thing really threw me off, actually. If Windows is really that nasty, write your own damn OS or borrow a DOS or Linux distro and distribute the whole shebang as a bootable image.

He can't, because his language doesn't have that capability. He's created a somewhat fancy scripting language that still relies on all of that painted whore's magic to get any real work done. The natural language is just a wrapper around real programming. Any attempt to do your own real work that isn't something that he's already thought of will require you to use that painted whore magic too, leaving that natural language programming in the dust. You'll still have to understand the Windows API. How do his ODBC connectors work? How's his OpenGL support?

The OP is befuddled old man who may have once been a respected professional, but is past his prime and now has no business being allowed near anything resembling important code.

Just read through his examples in that PDF. The "natural language" he uses is just as complex as any programming language and outputs a primitive looking application. I'm not sure what the benefit is, other than for an aging ideologue to rant about these new fangled devices and operatin' systems painted up like whores! Now get off his lawn, whippersnapper!
 
Last edited:

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
The OP is befuddled old man who may have once been a respected professional, but is past his prime and now has no business being allowed near anything resembling important code.

I don't know if I would agree with befuddled. I might even go so far as to say that like a lot of people who fit this type, he suffers from a razor-sharp clarity of delusion. Gerry also has a long and easy-to-locate history of taking these iconoclastic positions and then shoving them right into the faces of any iconophiles that will listen. I think he might actually be a highly evolved troll. Unless I am grossly mistaken he is the same Gerry Rzeppa who once tried to pay Richard Dawkins $64k if the scientist would publicly meet him and answer a single, mysterious, all-revealing question. I don't think Dawkins ever accepted.

So, ultimately, I think befuddled is not correct. I also think, based on his Internet history, he will never a) see anyone else's side of this, or b) give it up as long as there is one person willing to disagree with him. So here you have the possibility of an actual perpetual motion machine, in the form of a thread that is guaranteed never to die unless all of its participants do, or I lock it.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
A programmer should know the difference between data and code.

Agreed. Nouns (data) and verbs (code). That's the essential reason we're against the object-oriented paradigm, which makes the latter, verbs (code), subordinate to the former nouns (data) -- when in fact they should be on the same level, independent of each other, as they are in every natural language.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Hyperbole [that the Windows/Intel combo is a kludge].

50 million lines of code to do what, say, Oberon does with 25 thousand. With multiple ways of doing the same thing (like GDI and GDI+). Developed by hundreds of people, in hundreds of different styles, over decades. How could it be anything but a kludge?

Riiiiight. [That no CAL-4000 series compiler has ever made an error or distorted information.]

That's a humorous allusion to something the HAL-9000 said in 2001: A Space Odyssey.

Painted whore of an interface? Now you just sound like an nutjob.

The background of an interface should be simple and bland so the foreground (ie, the user's data) will stand out. Window's desktops are so varied and colorful that it is sometimes hard to even find one's data in the visual circus that surrounds it. Hence the "painted" adjective. The "whore" part is based on the notion that such people will bend to the customer's wishes whether they are good ideas or not; the Windows interface is similarly full of "features" that were requested by customers, and implemented by programmers, who should have known better.

To you maybe. [Regarding the "plain and honest face" presented by our interface.]

Yes, we think it is "plain and honest". Simple and obvious:



Menus, messages, and tabs. In black, white, and gray. No unnecessary widgets or controls. Ready to display the user's data without distraction. Simple enough for school kids, yet powerful enough for experienced professional programmers like ourselves. Suitable for writing "Hello, World!" or an entire development systems including a native-code-generating compiler.

Scroll bars aren't distracting, they serve a purpose beyond scrolling. They indicate position with a document.

Anything on the screen that is not necessary is a distraction. There are better ways of scrolling. And better ways of indicating position in a document.

UI conventions such as scrollbars, radio buttons and checkboxes weren't pulled from somebody's sphincter on a whim, they came to solve a problem that wasn't handled previously.

But they can be misused (and often are). And they can improved upon, as well: the greatest kind of improvement, of course, being the elimination of the need.

You throw out all conventions when it suits you because they don't make logical sense in your mind, but apparently CTRL+C and CTRL+V still work for you, because V so clearly stands for Paste.

We don't operate in a vacuum; we have to maintain some connection to "tradition" simply for the convenience of our users, and because some of the problems we face are similar to the problems faced by former interface developers. CTRL+V is used for Paste because (a) "P" is already used for "Print"; (b) it is inline with the keys used for Cut and Copy and can thus be conveniently accessed with the same hand and fine-motor skills; and (c) because many people are used to the convention and there isn't an obviously better alternative. Note that last phrase. We throw out conventions when a better way can be found; we keep them otherwise.

There are so many things wrong with your instructions, I'm not even sure where to begin.

I think you've started in the right place: the first page. Now if you could only approach the thing with an unbiased and open mind...
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
He can't [write an operating system], because his language doesn't have that capability. He's created a somewhat fancy scripting language that still relies on all of that painted whore's magic to get any real work done. The natural language is just a wrapper around real programming.

That's simply not true. Our compiler translates directly from Plain English into machine language. Sure, we make use of operating system subroutines when they're handy, but it would be no harder to write a complete operating system in Plain English than in any other language.

Any attempt to do your own real work that isn't something that he's already thought of will require you to use that painted whore magic too, leaving that natural language programming in the dust. You'll still have to understand the Windows API. How do his ODBC connectors work? How's his OpenGL support?

Every programming language makes use of operating system facilities. How do ODBC and OpenGL interface with the C language? The same as they do with any other: everybody calls operating system functions via interface libraries.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Unless I am grossly mistaken he is the same Gerry Rzeppa who once tried to pay Richard Dawkins $64k if the scientist would publicly meet him and answer a single, mysterious, all-revealing question. I don't think Dawkins ever accepted.

I don't know what it has to do with programming, but yes, that's me. And interesting discussion of the various issues can be found here:

http://pleiotropy.fieldofscience.com/2009/04/rzeppa-game-show.html

The book in question can be read here (though the hardcover version is much nicer):

www.someofthepartsbook.com

And the question I wanted to ask Dawkins was, "What would you say to the boy in my book?" You're right to suspect that he didn't accept my offer, though his office did politely respond to the request.

But again, what does any of this have to do with programming? Why bring it up here?
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
That's simply not true. Our compiler translates directly from Plain English into machine language. Sure, we make use of operating system subroutines when they're handy, but it would be no harder to write a complete operating system in Plain English than in any other language.

...Wow. I can't even pretend to take you seriously anymore.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
But again, what does any of this have to do with programming? Why bring it up here?

I brought it up to support my point that you often engage in conversations like this one, where you are throwing yourself against a granite mountain of settled opposition. And you can hardly complain if issuing public challenges to public figures makes you a public figure.
 

BoberFett

Lifer
Oct 9, 1999
37,563
9
81
I've been rather harsh in my assessment of Gerry's project, so I'll add this:

It is an interesting experiment into the simplification of programming languages into something that appears to be English. I'm not going to say it is English, because even in his own documentation the examples are most definitely a specific programming language with it's own requirements for keywords and syntax. Until there's a compiler that can divine intent based on what it's pretty sure you wanted it to do, code requires exact language, whether it's English or machine code. It's very possible one could write an operating system with this language. It's also possible to clean the deck of an aircraft carrier with a toothbrush, but I wouldn't recommend it. There are better tools for the job.
 

Spungo

Diamond Member
Jul 22, 2012
3,217
2
81
To access to the internet:
Start up.
Launch Firefox.
Shut down.


That's pretty much all an operating system does, right?
Start up.
Refuse to install Google Chrome.
Say a dependency is missing even though it's impossible to get the 32-bit dependency in 64-bit Ubuntu.
Shut down.

/Linux
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
To access to the internet:
Start up.
Launch Firefox.
Shut down.

Yes, that would work once the proper supporting routine -- "Launch an application", also written in Plain English -- was in place. And that would be an easy routine to write because we already do a similar thing whenever a programmer runs his program from inside our IDE.

As our system stands now, you can easily access any page on the web for further processing. Here are some of the instructions from page 87 of our manual (www.osmosian.com/instructions.pdf):

---

These are the types you'll be needing to get files from the internet:

A url is a string.
A query string is a string.


A URL is a Universal Resource Locator, like "http://www.osmosian.com", which
you can see is just a string that follows an obscure naming convention based
on parsing technology that was state-of-the-art a mere 50 years ago.

A "query string" is a string with some of the bytes converted to nonsense
encodings consistent with internet standards. A space, for example, becomes
a cross, and a comma becomes "%2C".

You can convert a normal string to a query string like this:

CONVERT a string TO A query string.

And you can read a file off the internet this way:

READ a url INTO a string.

Here is some code from our sample program (described on pages 13-54) to remind you how we used these facilities to get images from Google for our painting routines ("the text" is a parameter passed to the routine containing these sentences):

Put "http://images.google.com/images?q=" into a url.
Convert the text's string to a query string.
Append the query string to the url.
Read the url into a string.


The file from the internet is now in the string, waiting for further processing.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
A URL is a Universal Resource Locator, like "http://www.osmosian.com", which you can see is just a string that follows an obscure naming convention based on parsing technology that was state-of-the-art a mere 50 years ago. A "query string" is a string with some of the bytes converted to nonsense encodings consistent with internet standards. A space, for example, becomes a cross, and a comma becomes "%2C".

Lol, you're nothing if not true to type, Gerry. URL encoding is nonsense. The evolution of program structure stopped with Nicklaus Wirth. The Windows interface is a nasty kluge that needs to be replaced by your "M'Kay" button.

What is it with you missionary zealot types that you unavoidably treat the people you're trying to convert like stupid little children? Oh, if only we got it. How happy we'd all be. You don't have a tin ear: it's solid iron.

But please, do continue the lecture on what a URL is and why URL-encoding is nonsense.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
What is it with you missionary zealot types that you unavoidably treat the people you're trying to convert like stupid little children? But please, do continue the lecture on what a URL is...

The "lecture" on URLs was part of a quote from our instruction manual that was designed for beginner and professional alike. It is assumed that the experienced reader will simply gloss over stuff he already knows. I thought it appropriate on this forum since it's clear, from this thread and others, that both kinds of programmers view these posts.

...and why URL-encoding is nonsense....

The whole URL standard is an anachronism and worse: not only is the syntax a hold-over from last century, URLs are also hard to read, hard to programmatically manipulate, and definitely out of place on an interface intended for the average user.

Picture a mom looking for a pair of shoes for her kid on the Walmart website. Which principle of good user interface design suggests she should see, at the top of the screen, something like this:

http://www.walmart.com/search/?query=boy%27s%20shoes%20striker%20size%2010
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
I've been rather harsh in my assessment of Gerry's project, so I'll add this: It is an interesting experiment into the simplification of programming languages into something that appears to be English.

Thank you.

I'm not going to say it is English, because even in his own documentation the examples are most definitely a specific programming language with it's own requirements for keywords and syntax.

True. But it's getting closer to English all the time. And almost all of the sentences in our code would even now be taken for English by any English-speaking person because the sentences actually are typical English sentences. I just ran 100 lines of our page editor, selected at random, through an English-language grammar and style checker. Here are the results:

Potential Problems: 0

Passive voice sentences: 0% (should be <5%)
Wordiness: 0 (should be fewer than 5 instances)
Sentences with Transitions: 0% (should be less than 25%)
And/But/Or sentences: 0 (should be <7 in sample)
Grammar issues: 0 (should be 0)
Spelling: 0 (should be 0)
Nominalized word forms: 0% (should be <50%)


Until there's a compiler that can divine intent based on what it's pretty sure you wanted it to do, code requires exact language, whether it's English or machine code.

Not quite. In fact that was one of the original questions we set out to answer -- Can natural languages be parsed in a relatively “sloppy” manner (as humans apparently parse them) and still provide a stable enough environment for productive programming?" Consider, for example, the following Plain English sentence:

Draw the top line with the blue pen.

Our compiler will recognize either "top line" or the nickname "top" for the variable; either "with" or "given" or "using" for the preposition; and either "the blue pen" or just "blue" for the color. Thus all the following statements will be considered intent-identical:

Draw the top line with the blue pen.
Draw the top line with blue.
Draw the top line given the blue pen.
Draw the top line given blue.
Draw the top line using the blue pen.
Draw the top line using blue.
Draw the top with the blue pen.
Draw the top with blue.
Draw the top given the blue pen.
Draw the top given blue.
Draw the top using the blue pen.
Draw the top using blue.


And the version under development will allow the clauses to appear in any order, thus allowing things like this:

Draw, with the blue pen, the top line.
Draw, with blue, the top.


Etc. Note also that if "the top line" was defined as, say, a border, and a border was defined as a line, the compiler would first search for a routine specifically coded for the drawing of borders; if one wasn't found, it would reduce the type (border) to the underlying type (line) and would then search for a routine for drawing lines.

In any case, we can now answer the question -- Can natural languages be parsed in a relatively "sloppy" manner (as humans apparently parse them) and still provide a stable enough environment for productive programming? -- in the affirmative.

It's very possible one could write an operating system with this language. It's also possible to clean the deck of an aircraft carrier with a toothbrush, but I wouldn't recommend it. There are better tools for the job.

That was another of our original questions -- Can low-level programs (like compilers) be conveniently and efficiently written in high level languages (like English)? And our answer, from direct experiences, is again, yes: both conveniently and efficiently. And having written both operating systems and compilers, I know -- again, first hand -- that there isn't any significant difference in difficulty between the two.
 

BoberFett

Lifer
Oct 9, 1999
37,563
9
81
Yes, that would work once the proper supporting routine -- "Launch an application", also written in Plain English -- was in place. And that would be an easy routine to write because we already do a similar thing whenever a programmer runs his program from inside our IDE.

As our system stands now, you can easily access any page on the web for further processing. Here are some of the instructions from page 87 of our manual (www.osmosian.com/instructions.pdf):

---

These are the types you'll be needing to get files from the internet:

A url is a string.
A query string is a string.


A URL is a Universal Resource Locator, like "http://www.osmosian.com", which
you can see is just a string that follows an obscure naming convention based
on parsing technology that was state-of-the-art a mere 50 years ago.

A "query string" is a string with some of the bytes converted to nonsense
encodings consistent with internet standards. A space, for example, becomes
a cross, and a comma becomes "%2C".

You can convert a normal string to a query string like this:

CONVERT a string TO A query string.

And you can read a file off the internet this way:

READ a url INTO a string.

Here is some code from our sample program (described on pages 13-54) to remind you how we used these facilities to get images from Google for our painting routines ("the text" is a parameter passed to the routine containing these sentences):

Put "http://images.google.com/images?q=" into a url.
Convert the text's string to a query string.
Append the query string to the url.
Read the url into a string.


The file from the internet is now in the string, waiting for further processing.

Except you haven't written a network stack, you're using all the functionality provided by the "painted whore", which is why I refer to your work as a scripting language, not a real programming language. The real programming to interface with the "painted whore" is arcane language hidden away in a resource file. So anybody that wants to real work that you haven't already thought of, they still have to know how to interface with other software, whether it's COM, DLL, etc.
 
Last edited:

Squeetard

Senior member
Nov 13, 2004
815
7
76
Write us an operating system with your natural language and post the source code and the compiler source code. Everything we've said will be true and nothing you've said will be right.

You've created a macro scripting language and nothing more. And it will fail at that too.

"Draw me a blue line, not too thick, at the top of the page and make it angle slightly downward to the left".
"Can you put a line near the top of the page, on a bit of a tilt. Blue would be a nice color. That's too fat, can you make it a bit less gaudy."

You will never have enough ifs ands or buts in your command parser to deal with the ways people will express their wishes. And if by some miracle you do, congrats, you've drawn a simple line on a screen. And created a command interpreter THAT NO ONE WILL EVER USE.
Your intended user is the equivalent of a techo dweeb and why would your intended user even want to try and write a program your way? No one will use this! Do you think that if this ever works (which it won't) you are going to revolutionize the computer industry? Everyone will now just spew out programs left right and center? No, never. Your target user is someone who will never ever attempt to use your product or any programming language period. They have zero interest in making a program.

This is why we have programming languages, THEY WERE INVENTED TO SOLVE THE SAME PROBLEM YOU ARE TRYING TO NOW, they have an exact syntax that you need to learn. And once learned, your input returns the exact result you wanted. I could spend hours talking to your interpreter until it returned the result I wanted. Or I could look up the line function online or in a book. Once. Very easy to remember this function once you use it a few times.

line(starting point, ending point, color, thickness)

Done. How friking hard was that? Why in the hell should you be allowed to express that any way you want? Lazy and stupid people might, but they will never ever want to write a program.

This entire project of yours is just a whimsical exercise that will never amount to anything.
 

Squeetard

Senior member
Nov 13, 2004
815
7
76
1. Is it easier to program when you don’t have to translate your natural-language thoughts into an alternate syntax?

2. Can natural languages be parsed in a relatively “sloppy” manner (as humans apparently parse them) and still provide a stable enough environment for productive programming?

3. Can low-level programs (like compilers) be conveniently and efficiently written in high level languages (like English)?

And so we set about developing a "plain english" compiler in the interest of answering those questions. And we are happy to report that we can now answer each of those three questions, from direct experience, with a resounding “Yes!” Here are some details:

A resounding NO to all 3 of those.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
This is why we have programming languages, THEY WERE INVENTED TO SOLVE THE SAME PROBLEM YOU ARE TRYING TO NOW

I'll take exception to this specific point, because the evolution of programming languages actually proceeded from the bottom up, whereas Gerry is coming at it from the top down. In other words, initially we had machine language, and this wasn't driven by a need to solve some higher level problem of interpretation. It was what the simple devices were capable of manipulating: an instruction set. Everything we use today has been built up on top of those instruction sets by adding layers of abstraction intended to make the instructions easier to use.

Gerry's approach is to start with no sense of the machine's limitations, and using an existing language map the symbols and expressions onto things the machine can do.

The problem isn't with this idea, which is very much a live thing that is being worked on in many projects. If Gerry put his time and energy into creating an interpreter that could turn plain english statements into code in high level languages that could interoperate with existing components he'd probably make a lot more progress.

But he is disdainful of all that underlying stuff. He not only wants people to write statements in plain english, but also to throw everything else away: years of developed ideas of interface design, run time architectures, interoperability standards, the 'OK' on the 'OK' button. You name it: if it has anything to do with computing then the world would have been better off if it had listened to Gerry in the first place.

Like I said before: this is what he does. His behavior is essentially that of a leader of a cult. He holds firmly to a set of beliefs that a large majority of people find irrational, and proselytizes single-mindedly in the search for anyone who will join him in those beliefs. Even a moderate amount of compromise would lead to wider opportunities and more fruitful relationships, but he won't do it because evangelicals never compromise. And cult leaders are never successful. I don't even think they really want to be, in terms of having goals that can be achieved. Anyone who stops and thinks things through knows a strategy like this can't be successful. The enjoyment has to come in the conflict, and manipulation. In other words: mega trolls.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
So anybody that wants to [do] real work that you haven't already thought of, they still have to know how to interface with other software, whether it's COM, DLL, etc.

Not necessarily. If the appropriate interface libraries already exist, the Plain English programmer can simply "build on top," as it were, entirely in Plain English. Our page-layout program, for example, simply uses the standard graphical stuff provided by our Noodle library; we did not need to write any new interface routines to make that program a reality.

But even in cases where a new library needs to be written, how does this differ from any other programming language?
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
This entire project of yours is just a whimsical exercise that will never amount to anything.

On the contrary, it's already amounted to a stand-alone program that's able to reproduce itself (and improved versions of itself). It's already amounted to a complete integrated development environment that is used to teach kids and adults about programming -- from "Hello, World!" to "Fundamentals of Graphical User Interfaces" to "Event-Driven Programs" to "How to Write a Native-Code Generating Compiler". It's already amounted to an elegant page-layout facility that has been used, in turn, to produce the documentation for our system itself, and for a wide variety of other page-based projects (like www.rhymingreader.com and www.someofthepartsbook.com and the schematic diagrams and documentation for https://www.kickstarter.com/projects/1335354839/banana-jack-amps-no-solder-all-tube-guitar-amp-kit).
 
Status
Not open for further replies.
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |