资料内容:
1.1 Research Background and Significance
Writing programs/scripts are easier when the right tools are used. Typically, source
codes are written using lightweight code editors or full-blown integrated development
environments (IDE). IDEs, in comparison to lightweight code editors, are much more
sophisticated applications since they are feature-complete in a way that they provide not
only a development environment for various programming languages, but also support
popular frameworks for a certain programming language. On the other hand, code editors
are lightweight and much more simple making them appear fast and responsive. Although
code editors do not provide many features out of the box, they can also support programming
languages and frameworks through their extensible plugin system. Nevertheless,
both programs let developers write, test, and build/compile their programs.
One key must-have feature modern code editors/IDEs provide is code completion.
Code completion allows developers to write a starting code fragment and suggests the
most probable code completions in an attempt to “complete” the developers’ code. By
having a handy feature like this, developers can save a lot of time. Most editors include a
language server for a certain programming language as part of its code completion feature.
Language servers are responsible for taking in code and giving out suggestions. They
work best if the target programming language is strongly-typed
O1 since types need not be
inferred manually but can be made known by scanning the appropriate type definition files.
However, when the target programming language is loosely-typed
O2, language servers will start to struggle since types could not be directly inferred and can only be known duringruntime. One example of a loosely-typed programming language is Python. According to
StackOverflow insights, Python is one of the top loved programming languages and since