J'ai eu l'idée de cette question de nombreuses situations où je ne comprends pas ce que la personne parle et quand d'autres ne me comprennent pas.
Donc, une solution "intelligente" serait de parler une langue d'ordinateur. :)
Je suis intéressé à quel point un langage de programmation peut aller proche de la langue naturelle (anglais). Quand je dis à proximité, je veux dire non seulement à utiliser des mots et des phrases, mais pour être capable de "faire" des choses une langue naturelle peut "faire" et par "faire", je veux dire que cela peut être utilisé (de manière très limitée) comme remplacement pour la langue naturelle.
Je sais que c'est impossible (est-ce?) Mais je pense que cela peut être intéressant.
Il y a une langue de programmation appelée informer que, dans sa dernière incarnation, informer 7, a l'air a lot comme une langue naturelle ... en particulier, une langue écrite.
Information est très spécifiquement pour la création de jeux d'aventure de texte, mais il n'y a pas de raison inhérente à ce que les concepts ne puissent pas être étendus à d'autres domaines.
Voici un petit extrait d'infos 7 Code, pris de la vitre de jeu, par Emily Short.
Stage is a room.
The old lady is a woman in the Stage. Understand "mother" or
"stepmother" as the old lady. The old lady is active. The description
of the lady is "She looks plucked: thin neck with folds of skin
exposed, nose beaky, lips white. Perhaps when her fortunes are mended
her cosmetics too will improve."
The Prince is a man in the Stage. The description of the prince is
"He's tolerably attractive, in his flightless way. It's hard not to
pity him a little." The prince carries a glass slipper. The glass
slipper is wearable. Understand "shoe" or "heel" or "toe" or "foot"
as the slipper. The description of the slipper is "It is very small
for an adult woman's foot."
Le code complet peut être trouvé ICI .
C'est un petit exemple simple ... il peut réellement gérer un ensemble d'idées étonnamment robustes.
Il convient de souligner que le code n'est pas vraiment un chiffre étrange où les constructions ont des significations cachées ... Ce code fait plus ou moins ce que vous attendez. Par exemple:
The old lady is a woman in the Stage. Understand "mother" or
"stepmother" as the old lady.
crée un objet qui se trouve être une personne féminine, des noms qui font l'objet "vieille dame", et des lieux cet objet dans l'objet de la pièce appelé "Stade". Ensuite, deux alias ("mère" et "belle-mère" sont créés qui font également référence à l'objet "vieille dame".
Bien sûr, comme les exemples deviennent de plus en plus complexes, les cerceaux nécessaires à la saut à travers deviennent également plus complexes. L'anglais est, de par sa nature même, ambigu, tandis que le code informatique n'est pas définitivement pas. Nous n'obtiendrons donc jamais un "mariage parfait".
Dépend de quels cercles vous roulez, mais [~ # ~ # ~] lolcode [~ # ~] Pourriez être considéré comme une langue naturelle;)
Exemple de boucle:
HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE
Sur une note sérieuse, VB est une langue jolie naturelle. Il est facile pour les types non programmeurs à apprendre, la syntaxe doit donc être assez facile à comprendre.
La langue Richard Pryor utilisait des millions de dollars à Superman III était très proche:
> TRANSFER $1,000,000 DOLLARS TO WEBSTER'S ACCOUNT.... NOW
;-)
EDIT: Les caractères corrigés ;-)
Lisp (bien sûr (si vous savez ce que je veux dire (lol))))
Si vous êtes un connaisseur, le langage de programmation Shakespeare est assez naturel;)
Il y a une limite à la façon dont vous pouvez faire la programmation. Les langues humaines sont trop ouvertes à l'interprétation - Un langage de programmation doit être spécifique et précis, je ne pense pas que cela maille bien avec un langage de programmation "naturel".
Bon 'ol Applecript sonne sa ressemblance à l'anglais comme l'une de ses forces. Cependant, ce n'est pas très amusant de travailler avec.
Hypertalk - la langue derrière l'hypercard d'Apple.
on mouseUp
put "100,100" into pos
repeat with x = 1 to the number of card buttons
set the location of card button x to pos
add 15 to item 1 of pos
end repeat
end mouseUp
Je ne sais pas que j'irais aussi loin que Vb.Net est proche de la langue anglaise, mais je pense que c'est aussi proche que vous vraiment obtenir. Bien sûr, une fois que vous l'avez programmée depuis un moment, cela semble être anglais ---D Lire comme un livre à un fichier assaisonné VB programmeur, mais si vous arrêtez et Pensez au vrai monde anglais:
For i As Integer = 1 To 10
Console.WriteLine("Hello World")
Next
Est un long chemin de:
Ecrivez "Hello World" et passez à la ligne suivante de la console 10 fois.
Bien sûr, l'anglais est ambigu - veut-il que vous fassiez le tout 10 fois, ou écrivez simplement "Hello World" une fois et passez à la ligne suivante 10 fois?
Je suppose que nous devons apprendre à parler de manière moins ambiguë:
Faites cela 10 fois: dans la console, écrivez "Hello World" et passez à la ligne suivante.
Mais je doute beaucoup, il y a un langage de programmation qui vraiment se lit comme l'anglais. Même ces fanatiques de Cobol qui disent que c'est comme une langue naturelle - ce n'est vraiment pas si vous vous arrêtez et pensez à la façon dont vous pensez de choses dans une manière réelle place au lieu de la manière définie par le langage de programmation.
Même dans VB Vous êtes limité à la manière dont le cadre dicte la façon dont vous faites des choses ...
Eh bien, en anglais , bien sûr!
To sing the beer song:
Put 99 into a number.
Loop.
If the number is 0, break.
Format a string given the number and "bottle" and "bottles".
Write the string then " of beer on the wall, " then the string then " of beer.".
Format another string given the number minus 1 and "bottle" and "bottles".
Write "Take one down and pass it around, " then the other string then " of beer on the wall.".
Skip a line.
Subtract 1 from the number.
Repeat.
Write "No more bottles of beer on the wall, no more bottles of beer.".
Write "Go to the store and buy some more, 99 bottles of beer on the wall.".
To format a string given a number and a singular string and a plural string:
If the number is 0, put "no more " then the plural into the string; exit.
If the number is 1, put "1 " then the singular into the string; exit.
Put the number then " " then the plural into the string.
Je n'ai pas vraiment utilisé cela - je l'ai trouvé ici .
gherkin est une langue spécifique de domaine pour décrire l'exécutable BDD - Spécifications. Il est utilisé entre autres par concombre (RUBY) et SPECFLOW (DotNet).
Exemple
Feature: Browsing
In order to see who's been on the site
As a user
I want to be able to view the list of posts
Scenario: Navigation to homepage
When I navigate to /Guestbook
Then I should be on the guestbook page
Scenario: Viewing existing entries
Given I am on the guestbook page
Then I should see a list of guestbook entries
And guestbook entries have an author
And guestbook entries have a posted date
And guestbook entries have a comment
Scenario: Most recent entries are displayed first
Given we have the following existing entries
| Name | Comment | Posted date |
| Mr. A | I like A | 2008-10-01 09:20 |
| Mrs. B | I like B | 2010-03-05 02:15 |
| Dr. C | I like C | 2010-02-20 12:21 |
And I am on the guestbook page
Then the guestbook entries includes the following, in this order
| Name | Comment | Posted date |
| Mrs. B | I like B | 2010-03-05 02:15 |
| Dr. C | I like C | 2010-02-20 12:21 |
| Mr. A | I like A | 2008-10-01 09:20 |
Perl possède des principes de conception basés sur la manière dont les humains traitent les langues naturelles (voir http://www.wall.org/~larry/natural.html ).
C'est une chose différente de hacks syntaxiques pour rendre le code lu comme des phrases en anglais ou dans une autre langue. Je ne suis pas entièrement convaincu que ce sont utiles. Comme analogie, je peux aussi faire ASCII art avec mon code, mais cela ne signifie pas que ma langue repose sur des principes de composition visuelle.
Pour donner un exemple de là où il peut ne pas être utile, supposons que cela fait ce à quoi il ressemble à une langue rubish/smalltalky:
3.times say "hello!"
C'est bien, cela rend mon code un peu plus lisible, et il y a une sorte de plaisir similaire à avoir un perroquet qui peut parler, mais ce n'est utile que si je connais les règles sous-jacentes de la langue d'ordinateur. Le fait qu'il arrive à ressembler à l'anglais ne me donne aucun effet de levier supplémentaire ni aperçu. Je ne peux pas utiliser le moteur de traitement de la grammaire anglais dans mon cerveau pour générer des phrases comme les suivantes:
// The dot looks like misplaced punctuation
// in the "English" above, but it's essential in
// the computer language
3 times say "hello!" // syntax error
// In a natural language, a reordering might make
// sense, but it's impossible here because the Word
// order was essential to carrying the parameters
// to the method invocation in the right order.
say "hello" 3 times // syntax error
Eh bien, Ruby et Python sont censés être assez proches. Ruby passe même à la durée de l'ajout de mots-clés spéciaux qui simuler la vie réelle. Telle que le mot clé, etc.
Bien sûr, vous tapez le code réel dans l'une de ces 2 langues, ce n'est pas vraiment comme la langue naturelle, mais encore une fois quoi?
Je dirais SQL ou COBOL.
Est basé sur l'inverse-polonais et fonctionnerait naturellement pour certaines personnes.
"Apprenez vite je vais" - Yoda.
la syntaxe de vb.net est très proche de la langue anglaise
Une langue bien naturelle est équivoque et prend un peu plus qu'une lecture linéaire littérale à comprendre. Mais cela étant accordé, vb.net se rapproche de certaines constructions. Le plus proche que j'ai vu.
Pour boucle dans vb.net
For i = 0 To 2
'loop time!
Next i
C'est à peu près aussi "naturel" que j'ai vu sans être trop verbeux.
Qui s'appelle "pseudocode". Vous utilisez les moyens nécessaires pour communiquer l'intention du code (vous avez écrit ou écrirez ultérieurement).
Tout langage de programmation a certaines fonctionnalités qui sont ambiguës aux étrangers.
Je crois que William Shakespeare était le meilleur programmeur du monde ...
AppleScript ressemble à une langue naturelle.
Je crois que votre question est basée sur une erreur. La programmation ne concerne pas principalement la traduction de l'homme à l'informatique. C'est la compréhension des problèmes techniques et la conception de programmes difficiles, la frappe dans le code est une partie mineure. Apprendre qu'un langage de programmation ne fera que quelqu'un un programmeur plus que l'apprentissage de la notation musicale leur fera un compositeur.
Cela dit, si vous écrivez à un niveau assez élevé dans presque toutes les langues et passez quelques minutes à expliquer la syntaxe, vous pouvez communiquer l'essentiel d'un morceau de code à un non-programmateur dédié. Inversement, une spécification de langage naturelle suffisamment précise peut parfois être traduite en fonctions de haut niveau (bien que les gens soient rarement disposés à mettre en œuvre pour écrire une telle spécification.)
Sanskrit s'approche de ce que vous décrivez. Il n'a pas de licenciement, c'était la première langue à suivre BNF qui constitue la base de tous les programmes modernes. Grammaire de langue, et il partage une descente indo-européenne commune avec l'anglais
Avec Ruby et Oslo (et éventuellement F #), vous pouvez construire une DSL très conviviale par la langue. C'est au moins la promesse d'Oslo. Vous pouvez trouver un exemple de grammaire Oslo pour BDD - ici .
J'ai pensé à Eiffel. Devis de ici :
Raphael Simon, ingénieur logiciel principal pour le logiciel Eiffel, a déclaré que la langue était conçue pour que l'on puisse utiliser une langue naturelle pour écrire le programme.
Voir par exemple les 99 bouteilles de bière programme.
Je ne dirais pas que c'est le "le plus" naturel, mais je le trouve plutôt naturel.
Ce que nous appelons normalement "pseudo-code" est très proche de Pascal . Cela ne le rend probablement pas particulièrement proche de l'anglais naturel, mais s'il n'était pas plus simple que la plupart des langauges, nous n'écririons pas du tout de pseudo-code (nous allions écrire du code).
Cobol est proche de l'anglais comme il devient
Je crois que le logo n'est pas aussi pas loin de la langue anglaise
Je souhaite qu'il y ait un [~ # ~ # ~] CO [~ # ~] Mmon [~ # ~ # ~] B [~ # ~] ussayage [~ # ~] O [~ # ~] riented [~ # ~ # ~] L [~ # ~] Angeuge qui a lu comme anglais, même les non-programmeurs Peut-on déformer ... Peut-être que nous devrions en créer un! ( volé d'ici )