WO2017142546A1 - Natural language programming tool - Google Patents

Natural language programming tool Download PDF

Info

Publication number
WO2017142546A1
WO2017142546A1 PCT/US2016/018611 US2016018611W WO2017142546A1 WO 2017142546 A1 WO2017142546 A1 WO 2017142546A1 US 2016018611 W US2016018611 W US 2016018611W WO 2017142546 A1 WO2017142546 A1 WO 2017142546A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
input
synonyms
programming language
code blocks
Prior art date
Application number
PCT/US2016/018611
Other languages
French (fr)
Inventor
Jesse D. Olsen
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2016/018611 priority Critical patent/WO2017142546A1/en
Publication of WO2017142546A1 publication Critical patent/WO2017142546A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/247Thesauruses; Synonyms

Definitions

  • FIG. 1 illustrates an overview of a system to generate a natural language programming tool according to an example.
  • FIGS. 2-3 illustrate code devices to generate a natural language programming tool according to examples.
  • FIG. 4 illustrates a flow diagram of a method to generate a natural language programming tool according to an example.
  • FIGS. 5-6 illustrate code blocks detected based on natural language search inputs according to examples.
  • FIG. 7 illustrates a template that maintains a code block according to an example.
  • the system populates a database with a set of code blocks.
  • the system associates each code block of the set of code blocks with a programming language and a set of natural language synonyms.
  • the system also determines at least one code block of the set of code blocks corresponding to the input.
  • Each natural language synonym may be a single word or a phrase.
  • the system also receives input in a natural language, and uses it to search the database for synonyms and their associated code blocks.
  • At least one code block is determined based on the set of natural language synonyms and the programming language.
  • the at least one code block provides code for at least one programming action in the programming language.
  • FIG. 1 illustrates an overview of a system to generate a natural language programming tool according to an example.
  • System 100 may be implemented in a number of different configurations without departing from the scope of the disclosed examples.
  • system 100 may include a code device 120, an input device 140, a database 160, and a network 180 for connecting code device 120 with database 160 and/or input device 140.
  • Code device 120 may be a computing system that performs various functions consistent with disclosed examples, such as generating a natural language tool.
  • the natural language tool may provide programmers with a tool that allows a developer to type an input in a natural language that is synonymous with a programming action, provides a list of options that are synonymous with the input, and then replaces the input with a block of code corresponding to a selected action in the appropriate programming language.
  • Examples of code device 120 include a desktop computer, a laptop computer, a tablet computing device, a mobile phone, a server, and/or any other type of computing device.
  • Code device 120 may populate a database with a set of code blocks in one or a plurality of programming languages.
  • the set of templates may include a first programming language with a plurality of templates with code blocks for the first
  • the plurality of templates may include, for example, hundreds to thousands of templates and may also include templates translated into a plurality of natural languages, such as English, Spanish, and French, which would enable a user to select templates in multiple languages.
  • the set of templates may be stored in database 160.
  • the code device 120 may also enable generation of new code blocks and editing of the set of code blocks. For example, after input is received, such as "print a word," code device 120 looks at a list of templates. Examples of templates that may be found include: T1 : open file,
  • T3 say TEXT.
  • templates T1 -T3 may be expanded to include templates synonymous with the input word, "print,” such as:
  • T5 print TEXT
  • T6 write TEXT.
  • the generation of the expanded templates may be completed before the code device 120 is shipped and distributed with templates T1 -T6 as separate templates.
  • the expansion may be performed using synonyms "just-in-time" (i.e., in memory), or the template may contain the list of synonyms in the template sentences such as,
  • T7 (print, say, output, write) TEXT.
  • Code device 120 may also associate each code block of the set of code blocks with a programming language and a set of natural language synonyms.
  • an association engine may associate each code block of the set of code blocks with a programming language using e.g., a programming language identifier, and a set of natural language synonyms.
  • the programming language identifier may be a flag or symbol in the template that identifies the programming language for that template. It could alternatively indicate that the template and associated code block is instead of a programming language actually a specific file format or configuration file format.
  • the programming language identifier may include a flag that the integrated development environment (IDE) provides to the code device 120 to indicate the current programming language, such as through a plug-in.
  • IDE integrated development environment
  • a programming language identifier and the set of natural language synonyms may be stored in database 160.
  • Code device 120 may determine at least one code block of the set of code blocks corresponding to the input based on the set of natural language synonyms and the programming language identifier. For example a code engine may determine at least one code block of the set of code blocks corresponding to the input by filtering the set of code blocks to provide the at least one code block based on the set of natural language synonyms.
  • the synonym may be a word or group of words.
  • code device 120 will provide a replacement option. For example, the input may be "print" a line of code or "output" a line of code. Both inputs may be associated with the same code block in the programming language.
  • Code device 120 may include a list of synonyms, like a thesaurus. For example, “say line,” “write line,” “output line,” and “print line” may be synonyms for the action of printing a line of text. Whenever one of the words is found in an input (e.g., "print” or "write"), the tool may provide a list of the entries that match the word. The tool may also provide an option to select an entry, which will replace the original input with a block of code. In order to replace the word, code device 120 may then make copies of the input and replace each synonym with another synonym.
  • synonyms like a thesaurus. For example, “say line,” “write line,” “output line,” and “print line” may be synonyms for the action of printing a line of text.
  • the tool may provide a list of the entries that match the word. The tool may also provide an option to select an entry, which will replace the original input with a block of code. In order to replace the word, code device 120 may then make copies of the input and replace each
  • an input of "print line” may be expanded to the following synonyms: “say line,” “write line,” “output line,” and “print line.”
  • the list of synonyms may be generated and stored in-memory, in database 160 external to the code device 120, or integrated into code device 120.
  • synonyms may be generated before an input is received and code device 120 may have a template with synonyms listed for "print” and "output.”
  • the synonyms may be stored in a template, as illustrated in the template of FIG. 7.
  • the code device 120 may also insert a word or phrase received with the input into the at least one code block. For example, when using dynamic templates, system 100 assigns a portion of the input as a variable and swaps the variable in the code for input.
  • a template may use capital letters in a word to indicate the use of dynamic text that is replaced with text from the input.
  • code device 120 detects that the template includes a word synonymous with a word in the input, such as code block "print.” When the text in the template after the action command is in all capital letters, "TEXT", the word with capital letters is a variable and the variable is replaced with input from the user, e.g., with the pattern print TEXT.
  • code device 120 After a user types print (or "say” or “output"), code device 120 will detect if the next portion of the code block is all capital letters and represents a variable for anything received as input, i.e., by input device 140. If the code block includes a variable and the input is "print hello,” then the code device 120 replaces the TEXT variable with the text "hello" from the input. Multiple variables may also be used in templates, such as template: write TEXT to FILE. The input may be "write Hello to Welcome.txt.” The code device 120 may identify synonyms of "write,” such as write, say, output, and print. Next, the template would insert the input "Hello” into the first variable position, and then, identify synonyms of "to,” such as to or into. Finally, the second variable position is populated with the input "Welcome.txt.” In the example, the code block would write Hello into the
  • FIG. 6 illustrates detection of a code block from a dynamic template according to an example. Examples of code device 120 and certain functions that may be performed by code device 120 are described in greater detail below with respect to, for example, FIGS. 2-4.
  • Input device 140 may be any device that maintains, receives, or transfers data from a user or client device.
  • input device 140 may be a computing device, such as a desktop computer, a laptop computer, a tablet computing device, a mobile phone, a server, or any other type of computing device.
  • Input device 140 may receive, transfer, or otherwise access input data, such as input from a user, used to identify code blocks for the code device 120.
  • input device 140 may receive an input and the code device 120 may be connected to the input device 140.
  • Input device 140 may provide the input to the code device 120 or the code device 120 may obtain the input from the input device 140.
  • Input device 140 may include a processor, and may access, via the processor, an input from a user.
  • Input device 140 may include files that run the program that a programmer is using to code, such as an I DE.
  • input device 140 may be connected to a processor, for example a processor of code device 120, that includes files that run a program that the programmer is using to code, such as an IDE.
  • input device 140 may be a computing device and/or a peripheral device such as via a keyboard, a mouse, voice recognition device, or display device. Input from input device 140 may be stored in database 160. Examples of the input is discussed in greater detail below with respect to, for example, FIGS. 5-7.
  • Database 160 may be any type of storage system configuration that facilitates the storage of data.
  • database 160 may facilitate the locating, accessing, and retrieving of data (e.g., SaaS, SQL, Access, etc. databases, XML files, etc.).
  • Code device 120 may populate database 160 with database entries generated by code device 120, and store the database entries in database 160.
  • Database 160 can be populated by a number of methods.
  • database 160 may be populated with templates by reading the web pages and parsing code documentation using manual and/or automated methods. Another way of populating templates could be to read the code for different languages and extract information, including comments in the code to generate the templates. In both cases human intervention may be used to finalize templates.
  • code device 120 may populate database 160 by receiving a set of database entries from another component, a wireless network operator, and/or a user input device 140, and storing the database entries in database 160.
  • input device 140 may populate database 160, for example, by obtaining data from an input device 140, such as through use of a scanner or scanning device connected to input device 140.
  • the database entries can contain a plurality of fields, which may include information related to code blocks, such as set of code blocks, synonyms, and
  • database 160 is a single component external to components 120 and 140, database 160 may comprise separate databases and/or may be part of devices 120, 140, and/or another device. In some implementations, database 160 may be managed by components of devices 120 and/or 140 that are capable of accessing, creating, controlling and/or otherwise managing data remotely through network.
  • Network 180 may be any type of network that facilitates communication between remote components, such as code device 120 and input device 140.
  • network 180 may be a local area network (LAN), a wide area network (WAN), a virtual private network, a dedicated intranet, the Internet, and/or a wireless network.
  • system 100 may be implemented in a number of different configurations.
  • FIG. 1 shows one code device 120, input device 140, database 160, and network 180
  • system 100 may include any number of components 120, 140, 160, and 180, as well as other components not depicted in FIG. 1 .
  • System 100 may also omit any of components 120, 140, 160, and 180.
  • code device 120 and input device 140 may be directly connected instead of being connected via network 180.
  • FIGS. 2-3 illustrate code devices to generate a natural language programming tool according to examples.
  • a code device 120 is illustrated.
  • code device 120 may correspond to multiple code devices 120 of FIG. 1 .
  • Code device 120 may be implemented in various ways.
  • code device 120 may be a special purpose computer, a server, a mainframe computer, a computing device executing instructions that receive and process information and provide responses, and/or any other type of computing device.
  • code device 120 may include a machine-readable storage medium 250, a processor 270, and an interface 280.
  • Processor 270 may be at least one processing unit (CPU), microprocessor, and/or another hardware device to execute instructions to perform operations.
  • processor 270 may fetch, decode, and execute natural language instructions 260 (e.g., instructions 262, 264, and/or 266) stored in machine-readable storage medium 250 to perform operations related to examples provided herein.
  • natural language instructions 260 e.g., instructions 262, 264, and/or 266
  • Interface 280 may be any device that facilitates the transfer of information between code device 120 and other components, such as input device 140 and/or database 160.
  • interface 280 may include a network interface device that allows code device 120 to receive and send data to and from network 180.
  • interface 280 may retrieve and process data related to generate a natural language programming tool from database 160 via network 180.
  • Machine-readable storage medium 250 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions.
  • machine-readable storage medium 250 may be, for example, memory, a storage drive, an optical disc, and/or the like.
  • machine-readable storage medium 250 may be non-transitory, such as a non-transitory computer-readable storage medium, where the term "non-transitory" does not encompass transitory propagating signals.
  • Machine- readable storage medium 250 may be encoded with instructions that, when executed by processor 270, perform operations consistent with the examples herein.
  • machine-readable storage medium 250 may include instructions that perform operations that generate a natural language programming tool. In the example shown in FIG.
  • the machine-readable storage medium 250 may be a memory resource that stores instructions that when executed cause a processing resource, such as processor 270 to implement a system to generate a natural language programming tool.
  • the instructions include natural language instructions 260, such as template instructions 262, association instructions 264, and code instructions 266.
  • Template instructions 262 may function to populate a database with a set of code blocks. For example, when template instructions 262 are executed by processor 270, template instructions 262 may cause processor 270 of code device 120, and/or another processor to generate a set of code blocks in one or a plurality of programming languages. Examples of the code blocks and templates used to generate the code blocks are illustrated in FIGS. 5-7.
  • Association instructions 264 may function to associate each code block of a set of code blocks with a programming language and a set of natural language synonyms. For example, when association instructions 264 are executed by processor 270, association instructions 264 may cause processor 270 of code device 120, and/or another processor to associate each code block of a set of code blocks with a programming language and a set of synonyms based in natural language terms. The association instructions 264 may also use a programming language identifier to associate each block with the programming language.
  • Code instructions 266 may function to link an input to a set of natural language synonyms. For example, when code instructions 266 are executed by processor 270, code instructions 266 may cause processor 270 of code device 120, and/or another processor to link the input to a programming language using the programming language identifier. In particular, the code instructions 266 may determine at least one code block corresponding to the input based on the set of natural language synonyms and a programming language, e.g., programming language identifier. The code instructions 266 may also process a help command and provide a user access to a template resource that manages the set of code blocks. The code instructions 266 may process an action command, the system to execute the action command when instructed by the input.
  • code device 120 is illustrated to include a template engine 362, an association engine 364, and a code engine 366.
  • code device 120 may correspond to code device 120 of FIGS. 1-2.
  • Code device 120 may be implemented in various ways.
  • code device 120 may be a computing system and/or any other suitable component or collection of components that generate a natural language
  • Interface 280 may be any device that facilitates the transfer of information between code device 120 and external components.
  • interface 280 may include a network interface device that allows code device 120 to receive and send data to and from a network.
  • interface 280 may retrieve and process data related to generating a natural language programming tool to obtain code blocks from database 160.
  • Engines 362, 364, and 366 include hardware and/or combinations of hardware and programming to perform functions provided herein.
  • the modules can include programing functions and/or combinations of programming functions to be executed by hardware as provided herein.
  • the instructions for the engines may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processor to execute those instructions.
  • the functionality of engines 362, 364, and 366 may correspond to operations performed by code device 120 of FIGS. 1 -2, such as operations performed when natural language instructions 260 are executed by processor 270.
  • functionality attributed to an engine can also be attributed to the corresponding module and vice versa.
  • functionality attributed to a particular module and/or engine may also be implemented using another module and/or engine.
  • template engine 362 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes template instructions 262.
  • association engine 364 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes association instructions 264
  • code engine 366 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes code instructions 266.
  • FIG. 4 illustrates a flow diagram 400 of a method to generate a natural language programming tool according to an example.
  • execution of process 400 is described below with reference to system 100, other suitable systems and/or devices for execution of at least one step of process 400 may be used.
  • processes described below as being performed by system 100 may be performed by code device 120, input device 140, and/or any other suitable device or system.
  • Process 400 may be implemented in the form of executable instructions stored on a storage device, such as a machine-readable storage medium, and/or in the form of electronic circuitry.
  • Process 400 may start by receiving an input in a natural language describing a programming action (step 402).
  • code device 120 may receive an input in a natural language.
  • the input may describe a programming action, such as print a line.
  • the execution of the template instructions 262 may also cause processor 270 of code device 120, and/or another processor to receive the input.
  • the input may also include a programming language identifier.
  • FIG. 5 illustrates an example of an input in a natural language describing a programming action. Code device 120 or input device 140 of system 100 may receive the input.
  • Process 400 may also include searching a database for a set of code blocks associated with synonyms of the input. Each block of the set of code blocks are associated with a set of natural language synonyms (step 404). For example, code device 120 and/or input device 140 may search the database for code blocks that are associated with a synonym of the input. The searching may include filtering the database by a programming language identifier and synonyms of the natural language input received. The programming language identifier and synonyms may be stored in a storage device, such as database 160, and code device 120 and/or input device 140 may query database 160 to obtain programming language identifiers and synonyms of the input.
  • Process 400 may also include providing the set of code blocks determined to be associated with synonyms of the input (step 406).
  • code device 120 may provide code blocks that are associated with synonyms of the input (e.g. , natural language input).
  • the set of code blocks may also be associated with a programming language identifier. An example of the set of code blocks are illustrated in FIGS. 5-6.
  • the process 400 may further include editing the set of code blocks.
  • the code device 120 may be used to access the code blocks stored in the database 160 and the code device 120 and/or input device 140 provide the ability to modify or edit the code and save the modifications.
  • FIGS. 5-6 illustrate code blocks detected based on natural language search inputs according to examples.
  • the database 160 includes two templates to select for printing a line of text using a static template with no variables in the code blocks. Referring to FIG. 5, first input 502 entered by a user is "say a line.” Using the natural language input 502, two templates are determined to be synonyms with input 502 and may be provided as options.
  • the first option is to say a line of text and not go to a next line 504 using a natural language description of a first code block with the input word, say.
  • the first option also includes a description 506 of the first code block in the programming language the user is using to program in, such as the Java programming language or in another format to provide a context for the code that will replace the input.
  • the second option is to say a line of text and go to the next line 508 using a natural language description of a second code block with the input word, say.
  • the second option also includes a description 510 of the second code block in the programming language that the user is using to program or in another format to provide a context for the code that will replace the input.
  • the first code block description 506 and the second code block descriptions 510 are both associated with first input 502 "say a line" and the first and second code block descriptions 506, 510 are both associated with the programming language that the user is using to program.
  • the first and second code block descriptions 506, 510 include code with a string "text" in quotes that may be substituted with a variable or with a specific string of text that the user may insert into the code block that replaces the input.
  • the code block produced by a template may be,
  • the input may contain text to be printed and the text may be dynamically added to the code blocks, i.e., a dynamic code block.
  • FIG. 6 illustrates second input 602 entered by a user as "yell 'Hello World.'"
  • the input includes the specific text "Hello World” that is to be printed three times by the code.
  • the database 160 includes a template for printing a line of text three times using text provided in the input. An option for the template to yell "Hello World" 604 is provided to the user.
  • the option 604 may be displayed to the user in various forms, including showing the text for that template, followed by an arrow pointing to a one-line description 606 of the replacement text.
  • the description 606 is provided to describe that the code block will print "Hello World” three times.
  • the text "Hello World” will be dynamically added to the code block when it replaces the input 602.
  • the code option 604 for the code block includes the input text "Hello World” embedded in the code block option 604. Both the code block option 604 and the code block description 606 are provided and selectable to the user.
  • FIGS. 5-6 the arrangement of the input and selection of code blocks based on descriptions are illustrative examples, and the manner in which they may be presented may vary.
  • code block descriptions 506, 510, 606 may be listed for selection, populated via a pop-up window with options selectable through a drop down menu, populated via a drop down list with selectable options, provided using auto complete, and/or provided as a replacement of the input.
  • FIG. 7 illustrates a template that maintains a code block according to an example.
  • the template is a simplified example of a template with multiple fields.
  • Replacement text 726 is the code block and the other fields contain a code completion entries 722, completion hint 724, help documentation 728, and tool tip 730.
  • the fields may be one line or multiple lines.
  • Templates are customized to the specific language and programming environment. Examples of programming environments that may be used include an integrated development environment (IDE), such as, a word processor, or a command line prompt, as using in a disk operating system (DOS), Linux®, or UNIX®.
  • IDE integrated development environment
  • DOS disk operating system
  • Linux® Linux®
  • UNIX® UNIX®
  • a sample template 720 includes code completion entries 722 that may be received.
  • the code completion entries 722 are synonymous entries that may be compared to an input received.
  • the code completion entries 722 that are determined to be synonymous with the input received are provided as the completion hint 724 portion of the template 720.
  • the code completion entries 722 may be provided to the user along with the completion hint 724, which give the user an idea of what the command does, such as "print a line of text 3 times."
  • a user may be provided with the completion hint 724 as a popup window or in a programming environment after the input is entered or typed.
  • the system will go through all the templates to see which template's "code completion entries" 722 match or are synonymous with the natural language the user types thus far. For each match, an entry is added, for example, to the drop-down list of selections that a user may choose. After a code completion entry is selected for a specific template, using for example the completion hint 724, the replacement text 726 replaces the input. For example, code blocks in the template are referred to as "replacement text" in FIG. 7.
  • the user may input: yell, shout, scream, holler, or cry which would be associated with the print a line of "text" three times template and the words yell, shout, scream, holler, and cry would be defined by the system and in the template as synonymous commands, i.e., code completion entries 722.
  • the completion hint 724 displays a description of the print command and the replacement text 726 replaces the input with three print commands, e.g. , print X, print X, and print X.
  • the X values will be replaced with text from the input. For example, if a user types "cry help," the replacement would be: “print help, print help, print help.”
  • the template 720 may also include help documentation 728 that may provide options to a user after the input is received and prior to selection of replacement text 726.
  • the help documentation 728 may be provided with the completion hint 724 to help a user identify the replacement text 726 that corresponds to the code block or replacement text 726 that will provide commands to accomplish the user's task and provide more context as to how the code block may be used.
  • the next portion of the template 720 includes the tool tip 730 that provides a tip for how the code block may be modified for specific purposes, such as the type of variables or data that may be typed in the code block, for example, to print a string or print a variable.
  • the tool tip 730 may be provided to a user after the replacement text 726, i.e., code block is inserted.
  • the template 720 may also include template location or path information 732.
  • the template 720 may further include additional details regarding the use of static or dynamic text or variables for the code block. For example, a comment may describe a logic with variables and the code that may be used to implement the logic, e.g., logic code if X then Y (else
  • the disclosed examples may include systems, devices, computer-readable storage media, and methods for generating a natural language programming tool. For purposes of explanation, certain examples are described with reference to the components illustrated in FIGS. 1-3. The functionality of the illustrated components may overlap and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

Some examples provide a system to generate a natural language programming tool. The system populates a database with a set of code blocks. The system associates each code block of the set of code blocks with a programming language and a set of synonyms. The system also determines at least one code block of the set of code blocks corresponding to the input. The at least one code block is determined based on the set of synonyms and the programming language.

Description

NATURAL LANGUAGE PROGRAMMING TOOL
BACKGROUND
[0001] Programmers strive to generate good code and shorten the time it takes to generate the code. The proliferation of programming languages has given developers the challenge of having to learn several languages to be productive. When developers need to learn new languages or work with several languages they may be less proficient and productivity may decrease.
DRAWINGS
[0002] FIG. 1 illustrates an overview of a system to generate a natural language programming tool according to an example.
[0003] FIGS. 2-3 illustrate code devices to generate a natural language programming tool according to examples.
[0004] FIG. 4 illustrates a flow diagram of a method to generate a natural language programming tool according to an example.
[0005] FIGS. 5-6 illustrate code blocks detected based on natural language search inputs according to examples.
[0006] FIG. 7 illustrates a template that maintains a code block according to an example. DETAILED DESCRIPTION
[0007] Many different programming languages are in use today, including Java, JavaScript, Python, Perl, C++, C#, Ruby, and PHP to name a few. Typically, it takes a programmer a few years of training to become proficient in an initial programming language and several additional months or years to become proficient in each additional
programming language. Even if a programmer is proficient in a language, he or she may struggle with reduced development time to meet ever tightening deployment schedules. Therefore, the time it takes to become proficient in programming languages can have an impact on business as the programmers take time away from generating code to become more proficient in programming languages.
[0008] Examples of systems to generate a natural language programming tool are provided herein. The system populates a database with a set of code blocks. The system associates each code block of the set of code blocks with a programming language and a set of natural language synonyms. The system also determines at least one code block of the set of code blocks corresponding to the input. Each natural language synonym may be a single word or a phrase. The system also receives input in a natural language, and uses it to search the database for synonyms and their associated code blocks. At least one code block is determined based on the set of natural language synonyms and the programming language. The at least one code block provides code for at least one programming action in the programming language.
[0009] FIG. 1 illustrates an overview of a system to generate a natural language programming tool according to an example. System 100 may be implemented in a number of different configurations without departing from the scope of the disclosed examples. In FIG. 1 , system 100 may include a code device 120, an input device 140, a database 160, and a network 180 for connecting code device 120 with database 160 and/or input device 140.
[0010] Code device 120 may be a computing system that performs various functions consistent with disclosed examples, such as generating a natural language tool. The natural language tool may provide programmers with a tool that allows a developer to type an input in a natural language that is synonymous with a programming action, provides a list of options that are synonymous with the input, and then replaces the input with a block of code corresponding to a selected action in the appropriate programming language. Examples of code device 120 include a desktop computer, a laptop computer, a tablet computing device, a mobile phone, a server, and/or any other type of computing device.
[0011] Code device 120 may populate a database with a set of code blocks in one or a plurality of programming languages. For example, the set of templates may include a first programming language with a plurality of templates with code blocks for the first
programming language; a second programming language with a plurality of templates with code blocks for the second programming language; a third programming language with a plurality of templates with code blocks for the third programming language; and so on. The plurality of templates may include, for example, hundreds to thousands of templates and may also include templates translated into a plurality of natural languages, such as English, Spanish, and French, which would enable a user to select templates in multiple languages. The set of templates may be stored in database 160.
[0012] The code device 120 may also enable generation of new code blocks and editing of the set of code blocks. For example, after input is received, such as "print a word," code device 120 looks at a list of templates. Examples of templates that may be found include: T1 : open file,
T2: close file, and
T3: say TEXT.
In addition to templates T1 -T3, templates may be expanded to include templates synonymous with the input word, "print," such as:
T4: output TEXT,
T5: print TEXT, and
T6: write TEXT.
The generation of the expanded templates may be completed before the code device 120 is shipped and distributed with templates T1 -T6 as separate templates. As alternatives, the expansion may be performed using synonyms "just-in-time" (i.e., in memory), or the template may contain the list of synonyms in the template sentences such as,
T7: (print, say, output, write) TEXT.
[0013] Code device 120 may also associate each code block of the set of code blocks with a programming language and a set of natural language synonyms. For example, an association engine may associate each code block of the set of code blocks with a programming language using e.g., a programming language identifier, and a set of natural language synonyms. The programming language identifier may be a flag or symbol in the template that identifies the programming language for that template. It could alternatively indicate that the template and associated code block is instead of a programming language actually a specific file format or configuration file format. For example, the programming language identifier may include a flag that the integrated development environment (IDE) provides to the code device 120 to indicate the current programming language, such as through a plug-in. A programming language identifier and the set of natural language synonyms may be stored in database 160.
[0014] Code device 120 may determine at least one code block of the set of code blocks corresponding to the input based on the set of natural language synonyms and the programming language identifier. For example a code engine may determine at least one code block of the set of code blocks corresponding to the input by filtering the set of code blocks to provide the at least one code block based on the set of natural language synonyms. The synonym may be a word or group of words. When an input includes a synonym, code device 120 will provide a replacement option. For example, the input may be "print" a line of code or "output" a line of code. Both inputs may be associated with the same code block in the programming language.
[0015] Code device 120 may include a list of synonyms, like a thesaurus. For example, "say line," "write line," "output line," and "print line" may be synonyms for the action of printing a line of text. Whenever one of the words is found in an input (e.g., "print" or "write"), the tool may provide a list of the entries that match the word. The tool may also provide an option to select an entry, which will replace the original input with a block of code. In order to replace the word, code device 120 may then make copies of the input and replace each synonym with another synonym. For example, an input of "print line" may be expanded to the following synonyms: "say line," "write line," "output line," and "print line." The list of synonyms may be generated and stored in-memory, in database 160 external to the code device 120, or integrated into code device 120. Alternatively, synonyms may be generated before an input is received and code device 120 may have a template with synonyms listed for "print" and "output." The synonyms may be stored in a template, as illustrated in the template of FIG. 7.
[0016] In addition to replacing input with code blocks based on synonyms, the code device 120 may also insert a word or phrase received with the input into the at least one code block. For example, when using dynamic templates, system 100 assigns a portion of the input as a variable and swaps the variable in the code for input. In examples, a template may use capital letters in a word to indicate the use of dynamic text that is replaced with text from the input. In particular, code device 120 detects that the template includes a word synonymous with a word in the input, such as code block "print." When the text in the template after the action command is in all capital letters, "TEXT", the word with capital letters is a variable and the variable is replaced with input from the user, e.g., with the pattern print TEXT. After a user types print (or "say" or "output"), code device 120 will detect if the next portion of the code block is all capital letters and represents a variable for anything received as input, i.e., by input device 140. If the code block includes a variable and the input is "print hello," then the code device 120 replaces the TEXT variable with the text "hello" from the input. Multiple variables may also be used in templates, such as template: write TEXT to FILE. The input may be "write Hello to Welcome.txt." The code device 120 may identify synonyms of "write," such as write, say, output, and print. Next, the template would insert the input "Hello" into the first variable position, and then, identify synonyms of "to," such as to or into. Finally, the second variable position is populated with the input "Welcome.txt." In the example, the code block would write Hello into the
Welcome.txt file and other code blocks may generate instructions to open and access the Welcome.txt file and see Hello written in the file. FIG. 6 illustrates detection of a code block from a dynamic template according to an example. Examples of code device 120 and certain functions that may be performed by code device 120 are described in greater detail below with respect to, for example, FIGS. 2-4.
[0017] Input device 140 may be any device that maintains, receives, or transfers data from a user or client device. For example, input device 140 may be a computing device, such as a desktop computer, a laptop computer, a tablet computing device, a mobile phone, a server, or any other type of computing device. Input device 140 may receive, transfer, or otherwise access input data, such as input from a user, used to identify code blocks for the code device 120. For example, input device 140 may receive an input and the code device 120 may be connected to the input device 140. Input device 140 may provide the input to the code device 120 or the code device 120 may obtain the input from the input device 140. Input device 140 may include a processor, and may access, via the processor, an input from a user. Input device 140 may include files that run the program that a programmer is using to code, such as an I DE. Alternatively, input device 140 may be connected to a processor, for example a processor of code device 120, that includes files that run a program that the programmer is using to code, such as an IDE. Accordingly, input device 140 may be a computing device and/or a peripheral device such as via a keyboard, a mouse, voice recognition device, or display device. Input from input device 140 may be stored in database 160. Examples of the input is discussed in greater detail below with respect to, for example, FIGS. 5-7.
[0018] Database 160 may be any type of storage system configuration that facilitates the storage of data. For example, database 160 may facilitate the locating, accessing, and retrieving of data (e.g., SaaS, SQL, Access, etc. databases, XML files, etc.). Code device 120 may populate database 160 with database entries generated by code device 120, and store the database entries in database 160. Database 160 can be populated by a number of methods. For example, database 160 may be populated with templates by reading the web pages and parsing code documentation using manual and/or automated methods. Another way of populating templates could be to read the code for different languages and extract information, including comments in the code to generate the templates. In both cases human intervention may be used to finalize templates.
[0019] As another example, code device 120 may populate database 160 by receiving a set of database entries from another component, a wireless network operator, and/or a user input device 140, and storing the database entries in database 160. In yet another example, input device 140 may populate database 160, for example, by obtaining data from an input device 140, such as through use of a scanner or scanning device connected to input device 140. The database entries can contain a plurality of fields, which may include information related to code blocks, such as set of code blocks, synonyms, and
programming language identifiers. While in the example shown in FIG. 1 database 160 is a single component external to components 120 and 140, database 160 may comprise separate databases and/or may be part of devices 120, 140, and/or another device. In some implementations, database 160 may be managed by components of devices 120 and/or 140 that are capable of accessing, creating, controlling and/or otherwise managing data remotely through network.
[0020] Network 180 may be any type of network that facilitates communication between remote components, such as code device 120 and input device 140. For example, network 180 may be a local area network (LAN), a wide area network (WAN), a virtual private network, a dedicated intranet, the Internet, and/or a wireless network.
[0021] The arrangement illustrated in FIG. 1 is simply an example, and system 100 may be implemented in a number of different configurations. For example, while FIG. 1 , shows one code device 120, input device 140, database 160, and network 180, system 100 may include any number of components 120, 140, 160, and 180, as well as other components not depicted in FIG. 1 . System 100 may also omit any of components 120, 140, 160, and 180. For example, code device 120 and input device 140 may be directly connected instead of being connected via network 180.
[0022] FIGS. 2-3 illustrate code devices to generate a natural language programming tool according to examples. Referring to FIG. 2, a code device 120 is illustrated. In certain aspects, code device 120 may correspond to multiple code devices 120 of FIG. 1 . Code device 120 may be implemented in various ways. For example, code device 120 may be a special purpose computer, a server, a mainframe computer, a computing device executing instructions that receive and process information and provide responses, and/or any other type of computing device. In the example shown in FIG. 2, code device 120 may include a machine-readable storage medium 250, a processor 270, and an interface 280.
[0023] Processor 270 may be at least one processing unit (CPU), microprocessor, and/or another hardware device to execute instructions to perform operations. For example, processor 270 may fetch, decode, and execute natural language instructions 260 (e.g., instructions 262, 264, and/or 266) stored in machine-readable storage medium 250 to perform operations related to examples provided herein.
[0024] Interface 280 may be any device that facilitates the transfer of information between code device 120 and other components, such as input device 140 and/or database 160. In some examples, interface 280 may include a network interface device that allows code device 120 to receive and send data to and from network 180. For example, interface 280 may retrieve and process data related to generate a natural language programming tool from database 160 via network 180.
[0025] Machine-readable storage medium 250 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine- readable storage medium 250 may be, for example, memory, a storage drive, an optical disc, and/or the like. In some implementations, machine-readable storage medium 250 may be non-transitory, such as a non-transitory computer-readable storage medium, where the term "non-transitory" does not encompass transitory propagating signals. Machine- readable storage medium 250 may be encoded with instructions that, when executed by processor 270, perform operations consistent with the examples herein. For example, machine-readable storage medium 250 may include instructions that perform operations that generate a natural language programming tool. In the example shown in FIG. 2, the machine-readable storage medium 250 may be a memory resource that stores instructions that when executed cause a processing resource, such as processor 270 to implement a system to generate a natural language programming tool. The instructions include natural language instructions 260, such as template instructions 262, association instructions 264, and code instructions 266.
[0026] Template instructions 262 may function to populate a database with a set of code blocks. For example, when template instructions 262 are executed by processor 270, template instructions 262 may cause processor 270 of code device 120, and/or another processor to generate a set of code blocks in one or a plurality of programming languages. Examples of the code blocks and templates used to generate the code blocks are illustrated in FIGS. 5-7.
[0027] Association instructions 264 may function to associate each code block of a set of code blocks with a programming language and a set of natural language synonyms. For example, when association instructions 264 are executed by processor 270, association instructions 264 may cause processor 270 of code device 120, and/or another processor to associate each code block of a set of code blocks with a programming language and a set of synonyms based in natural language terms. The association instructions 264 may also use a programming language identifier to associate each block with the programming language.
[0028] Code instructions 266 may function to link an input to a set of natural language synonyms. For example, when code instructions 266 are executed by processor 270, code instructions 266 may cause processor 270 of code device 120, and/or another processor to link the input to a programming language using the programming language identifier. In particular, the code instructions 266 may determine at least one code block corresponding to the input based on the set of natural language synonyms and a programming language, e.g., programming language identifier. The code instructions 266 may also process a help command and provide a user access to a template resource that manages the set of code blocks. The code instructions 266 may process an action command, the system to execute the action command when instructed by the input. Examples of the steps involved in linking the input to the set of natural language synonyms are described in further detail below with respect to, for example, FIGS. 4-7. [0029] Referring to FIG. 3, code device 120 is illustrated to include a template engine 362, an association engine 364, and a code engine 366. In certain aspects, code device 120 may correspond to code device 120 of FIGS. 1-2. Code device 120 may be implemented in various ways. For example, code device 120 may be a computing system and/or any other suitable component or collection of components that generate a natural language
programming tool.
[0030] Interface 280 may be any device that facilitates the transfer of information between code device 120 and external components. In some examples, interface 280 may include a network interface device that allows code device 120 to receive and send data to and from a network. For example, interface 280 may retrieve and process data related to generating a natural language programming tool to obtain code blocks from database 160.
[0031] Engines 362, 364, and 366 include hardware and/or combinations of hardware and programming to perform functions provided herein. Moreover, the modules (not shown) can include programing functions and/or combinations of programming functions to be executed by hardware as provided herein. For example, the instructions for the engines may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processor to execute those instructions. In some examples, the functionality of engines 362, 364, and 366 may correspond to operations performed by code device 120 of FIGS. 1 -2, such as operations performed when natural language instructions 260 are executed by processor 270. When discussing the engines and modules, it is noted that functionality attributed to an engine can also be attributed to the corresponding module and vice versa. Moreover, functionality attributed to a particular module and/or engine may also be implemented using another module and/or engine.
[0032] In FIG. 3, template engine 362 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes template instructions 262. Similarly, association engine 364 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes association instructions 264, and code engine 366 may represent a combination of hardware and instructions that perform operations similar to those performed when processor 270 executes code instructions 266.
[0033] FIG. 4 illustrates a flow diagram 400 of a method to generate a natural language programming tool according to an example. Although execution of process 400 is described below with reference to system 100, other suitable systems and/or devices for execution of at least one step of process 400 may be used. For example, processes described below as being performed by system 100 may be performed by code device 120, input device 140, and/or any other suitable device or system. Process 400 may be implemented in the form of executable instructions stored on a storage device, such as a machine-readable storage medium, and/or in the form of electronic circuitry.
[0034] Process 400 may start by receiving an input in a natural language describing a programming action (step 402). For example, code device 120 may receive an input in a natural language. The input may describe a programming action, such as print a line. The execution of the template instructions 262 may also cause processor 270 of code device 120, and/or another processor to receive the input. The input may also include a programming language identifier. FIG. 5 illustrates an example of an input in a natural language describing a programming action. Code device 120 or input device 140 of system 100 may receive the input.
[0035] Process 400 may also include searching a database for a set of code blocks associated with synonyms of the input. Each block of the set of code blocks are associated with a set of natural language synonyms (step 404). For example, code device 120 and/or input device 140 may search the database for code blocks that are associated with a synonym of the input. The searching may include filtering the database by a programming language identifier and synonyms of the natural language input received. The programming language identifier and synonyms may be stored in a storage device, such as database 160, and code device 120 and/or input device 140 may query database 160 to obtain programming language identifiers and synonyms of the input.
[0036] Process 400 may also include providing the set of code blocks determined to be associated with synonyms of the input (step 406). For example, code device 120 may provide code blocks that are associated with synonyms of the input (e.g. , natural language input). The set of code blocks may also be associated with a programming language identifier. An example of the set of code blocks are illustrated in FIGS. 5-6.
[0037] The process 400 may further include editing the set of code blocks. The code device 120 may be used to access the code blocks stored in the database 160 and the code device 120 and/or input device 140 provide the ability to modify or edit the code and save the modifications. [0038] FIGS. 5-6 illustrate code blocks detected based on natural language search inputs according to examples. In a first example 500, the database 160 includes two templates to select for printing a line of text using a static template with no variables in the code blocks. Referring to FIG. 5, first input 502 entered by a user is "say a line." Using the natural language input 502, two templates are determined to be synonyms with input 502 and may be provided as options. The first option is to say a line of text and not go to a next line 504 using a natural language description of a first code block with the input word, say. The first option also includes a description 506 of the first code block in the programming language the user is using to program in, such as the Java programming language or in another format to provide a context for the code that will replace the input. The second option is to say a line of text and go to the next line 508 using a natural language description of a second code block with the input word, say. The second option also includes a description 510 of the second code block in the programming language that the user is using to program or in another format to provide a context for the code that will replace the input. The first code block description 506 and the second code block descriptions 510 are both associated with first input 502 "say a line" and the first and second code block descriptions 506, 510 are both associated with the programming language that the user is using to program. The first and second code block descriptions 506, 510 include code with a string "text" in quotes that may be substituted with a variable or with a specific string of text that the user may insert into the code block that replaces the input. For example, the code block produced by a template may be,
"System. out.println("text");". The user could then change the produced code block to anything they wanted, such as, "System. out.println("Hello World");" when the code block replaces a natural language input.
[0039] In contrast to FIG. 5, the input may contain text to be printed and the text may be dynamically added to the code blocks, i.e., a dynamic code block. In a second example 600, FIG. 6 illustrates second input 602 entered by a user as "yell 'Hello World.'" In this example, the input includes the specific text "Hello World" that is to be printed three times by the code. In FIG. 6, the database 160 includes a template for printing a line of text three times using text provided in the input. An option for the template to yell "Hello World" 604 is provided to the user. The option 604 may be displayed to the user in various forms, including showing the text for that template, followed by an arrow pointing to a one-line description 606 of the replacement text. The description 606 is provided to describe that the code block will print "Hello World" three times. The text "Hello World" will be dynamically added to the code block when it replaces the input 602. As illustrated in the second example 600, the code option 604 for the code block includes the input text "Hello World" embedded in the code block option 604. Both the code block option 604 and the code block description 606 are provided and selectable to the user. In FIGS. 5-6, the arrangement of the input and selection of code blocks based on descriptions are illustrative examples, and the manner in which they may be presented may vary. For example, the code block descriptions 506, 510, 606 may be listed for selection, populated via a pop-up window with options selectable through a drop down menu, populated via a drop down list with selectable options, provided using auto complete, and/or provided as a replacement of the input.
[0040] FIG. 7 illustrates a template that maintains a code block according to an example. The template is a simplified example of a template with multiple fields. Replacement text 726 is the code block and the other fields contain a code completion entries 722, completion hint 724, help documentation 728, and tool tip 730. The fields may be one line or multiple lines. Templates are customized to the specific language and programming environment. Examples of programming environments that may be used include an integrated development environment (IDE), such as, a word processor, or a command line prompt, as using in a disk operating system (DOS), Linux®, or UNIX®.
[0041] Referring to FIG. 7, a sample template 720 includes code completion entries 722 that may be received. The code completion entries 722 are synonymous entries that may be compared to an input received. The code completion entries 722 that are determined to be synonymous with the input received are provided as the completion hint 724 portion of the template 720. The code completion entries 722 may be provided to the user along with the completion hint 724, which give the user an idea of what the command does, such as "print a line of text 3 times." A user may be provided with the completion hint 724 as a popup window or in a programming environment after the input is entered or typed. As the user types words, the system will go through all the templates to see which template's "code completion entries" 722 match or are synonymous with the natural language the user types thus far. For each match, an entry is added, for example, to the drop-down list of selections that a user may choose. After a code completion entry is selected for a specific template, using for example the completion hint 724, the replacement text 726 replaces the input. For example, code blocks in the template are referred to as "replacement text" in FIG. 7. For example, the user may input: yell, shout, scream, holler, or cry which would be associated with the print a line of "text" three times template and the words yell, shout, scream, holler, and cry would be defined by the system and in the template as synonymous commands, i.e., code completion entries 722. The completion hint 724 displays a description of the print command and the replacement text 726 replaces the input with three print commands, e.g. , print X, print X, and print X. The X values will be replaced with text from the input. For example, if a user types "cry help," the replacement would be: "print help, print help, print help."
[0042] The template 720 may also include help documentation 728 that may provide options to a user after the input is received and prior to selection of replacement text 726. The help documentation 728 may be provided with the completion hint 724 to help a user identify the replacement text 726 that corresponds to the code block or replacement text 726 that will provide commands to accomplish the user's task and provide more context as to how the code block may be used. The next portion of the template 720 includes the tool tip 730 that provides a tip for how the code block may be modified for specific purposes, such as the type of variables or data that may be typed in the code block, for example, to print a string or print a variable. The tool tip 730 may be provided to a user after the replacement text 726, i.e., code block is inserted. The template 720 may also include template location or path information 732. The template 720 may further include additional details regarding the use of static or dynamic text or variables for the code block. For example, a comment may describe a logic with variables and the code that may be used to implement the logic, e.g., logic code if X then Y (else|otherwise) Z, may be provided in the template 720 and displayed to the user after the replacement text 726 is selected.
[0043] The disclosed examples may include systems, devices, computer-readable storage media, and methods for generating a natural language programming tool. For purposes of explanation, certain examples are described with reference to the components illustrated in FIGS. 1-3. The functionality of the illustrated components may overlap and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
[0044] Moreover, as used in the specification and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context indicates otherwise. Additionally, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by this terms. Instead, these terms are used to distinguish one element from another.
[0045] Further, the sequence of operations described in connection with FIGS. 1 -7 are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Thus, the present disclosure merely sets forth possible examples of
implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.

Claims

CLAIMS What is claimed is:
1 . A method comprising:
receiving an input in a natural language describing a programming action;
searching a database for a set of code blocks associated with synonyms of the input, each block of the set of code blocks are associated with a set of synonyms; and
providing the set of code blocks determined to be associated with synonyms of the input.
2. The method of claim 1 , comprising receiving a programming language identifier and a file format identifier with the input.
3. The method of claim 2, wherein searching the database comprises filtering the database by the programming language identifier and synonyms of the input in the natural language.
4. The method of claim 1 , wherein each block of the set of code blocks are associated with a programming language identifier.
5. The method of claim 1 , comprising editing the set of code blocks.
6. A memory resource storing instructions that when executed cause a processing resource to implement a system to generate a natural language programming tool, the instructions comprising:
a template module executable to populate a database with a set of code blocks; an association module executable to associate each code block of a set of code blocks with a programming language and a set of synonyms; and
a code module executable to link an input to a set of synonyms.
7. The memory resource of claim 6, wherein the code module determines at least one code block corresponding to the input based on the set of synonyms and a programming language.
8. The memory resource of claim 6, wherein the association module uses a
programming language identifier to associate each block with the programming language.
9. The memory resource of claim 8, wherein the code module links the input to a programming language using the programming language identifier.
10. A system comprising:
a template engine to populate a database with a set of code blocks;
an association engine to associate each code block of the set of code blocks with a programming language identifier and a set of synonyms; and
a code engine to determine at least one code block of the set of code blocks corresponding to the input based on the set of synonyms and the programming language identifier.
1 1 . The system of claim 10, wherein the code engine filters the set of code blocks to provide the at least one code block.
12. The system of claim 10, comprising a help engine to enable the system to process a help command.
13. The system of claim 10 wherein the template engine enables generation of new code blocks.
14. The system of claim 13, wherein the template engine enables editing of the set of code blocks.
15. The system of claim 10, comprising a command engine to enable the system to process an action command, the system to execute the action command when instructed by the input.
PCT/US2016/018611 2016-02-19 2016-02-19 Natural language programming tool WO2017142546A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2016/018611 WO2017142546A1 (en) 2016-02-19 2016-02-19 Natural language programming tool

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/018611 WO2017142546A1 (en) 2016-02-19 2016-02-19 Natural language programming tool

Publications (1)

Publication Number Publication Date
WO2017142546A1 true WO2017142546A1 (en) 2017-08-24

Family

ID=59625316

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/018611 WO2017142546A1 (en) 2016-02-19 2016-02-19 Natural language programming tool

Country Status (1)

Country Link
WO (1) WO2017142546A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413847A1 (en) * 2021-06-25 2022-12-29 International Business Machines Corporation Compliance content generation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169871A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Structured search in source code
US20140013304A1 (en) * 2012-07-03 2014-01-09 Microsoft Corporation Source code analytics platform using program analysis and information retrieval
WO2014115189A1 (en) * 2013-01-28 2014-07-31 Nec Corporation Method and system for transforming specification scripts to program code
US20150242396A1 (en) * 2014-02-21 2015-08-27 Jun-Huai Su Translating method for translating a natural-language description into a computer-language description

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169871A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Structured search in source code
US20140013304A1 (en) * 2012-07-03 2014-01-09 Microsoft Corporation Source code analytics platform using program analysis and information retrieval
WO2014115189A1 (en) * 2013-01-28 2014-07-31 Nec Corporation Method and system for transforming specification scripts to program code
US20150242396A1 (en) * 2014-02-21 2015-08-27 Jun-Huai Su Translating method for translating a natural-language description into a computer-language description

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MARKUS KIMMIG ET AL.: "Querying Source Code with Natural Language", 26TH IEEE /ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, 6 November 2011 (2011-11-06), pages 376 - 379, XP032071950, Retrieved from the Internet <URL:http://arxiv.org/pdf/1205.6361v1.pdf> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413847A1 (en) * 2021-06-25 2022-12-29 International Business Machines Corporation Compliance content generation
US11972255B2 (en) * 2021-06-25 2024-04-30 International Business Machines Corporation Compliance content generation

Similar Documents

Publication Publication Date Title
Karsai et al. Design guidelines for domain specific languages
US10691584B2 (en) Behavior driven development integration with test tool
CN108762743B (en) Data table operation code generation method and device
WO2009007181A1 (en) A method, system and computer program for intelligent text annotation
Spaanjaars Beginning asp. net 4: in c# and vb
US11372637B2 (en) Method and system for software application optimization using natural language-based queries
CN102375746A (en) Method and device for enabling input method to self-adapt to application program
US20140298290A1 (en) Identification of code changes using language syntax and changeset data
CN108170661B (en) Method and system for managing rule text
US20140189642A1 (en) Native Language IDE Code Assistance
US8739146B2 (en) Systems and methods for generating and distributing executable procedures for technical desk-side support
JP6176389B2 (en) Source code generation apparatus, source code generation method, and recording medium
US20210042097A1 (en) Automated determination of transformation objects
WO2017142546A1 (en) Natural language programming tool
EP3425510B1 (en) Automated testing method for application program user interface, electronic device, system, and storage medium
CN115033436A (en) Page testing method and device, electronic equipment and storage medium
US20140372878A1 (en) Text editing system and method
CN111898762B (en) Deep learning model catalog creation
Bramer Web Programming with PHP and MySQL
CN114676155A (en) Code prompt information determining method, data set determining method and electronic equipment
Sweigart Beyond the basic stuff with python: Best practices for writing clean code
Aksoy et al. MATAWS: A multimodal approach for automatic WS semantic annotation
De Lucia et al. Coconut: Code comprehension nurturant using traceability
CN110968591A (en) Query statement generation method and device, storage medium and processor
Rouleau Beginning Entity Framework Core 2.0: Database Access from. NET

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16890843

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16890843

Country of ref document: EP

Kind code of ref document: A1