An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development.
The boundary between an IDE and other parts of the broader software development environment is not well-defined; sometimes a version control system or various tools to simplify the construction of a graphical user interface (GUI) are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram for use in object-oriented software development.
Using an IDE for q/kdb+ development has the following advantages (over CLI based development):
A permanent 'notepad' for writing code (without needing to execute it)
Multi-line code execution.
Ability to execute specific parts of code, specific lines, etc.
Nicely formatted results
Save process details and easily switch between processes
History of executed commands
Charting/graphing and exporting of data
Function/namespace indexing and search
Debugger
(In the case of VSCode and IntelliJ) - access to full codebase including ability to edit source files, git commit, etc.
The following q/kdb+ IDEs exist:
Pros
Excellent for running Q code
Results are displayed in table format and can be popped out into separate windows
Excellent process connection and management capabilities
All queries are stored in a text file so can be retrieved at any time
Some abilities for charting
Cons
The free version is only available on short licenses, which the developer renews every so often. This used to be renewed like clockwork, but it is now months between renewals (and the application is unusable without it)
Pros
Excellent for running Q code
Results are displayed in table format and can be popped out into separate windows
Within the same app you can connect to other databases e.g. SQL
Tabs are (sometimes) kept on restart/crash
Some abilities for charting
Cons
Process management could be better - you have to manually 'add' a connection rather than being able to just connect directly to a host+port. Not great when you just want to quickly connect to a process you just started up on a random port.
Connection management could be better - the application can hang for long periods trying to connect to a running process. And it can hang for long periods trying to connect to host/port with nothing running on it.
Open tabs are not always retrieved on restart/crash. This functionality also seems to break down when you have multiple instances of the application running at the same time. The code does not appear to be stored anywhere else
VSCode q/kdb+ extension (Jo Shinonome)
Pros
Allows you to run a Q IDE within VSCode - code management and IDE all in one place
Excellent ability for searching codebase for existing functions
Ability to hover over keywords etc to get a description
Cons
The free version is no longer being updated
You have to use a '.q' file in VSCode to run your code rather than a tab like in other IDEs. This usually leads to running and updating code directly from the q script - the author's preference would be to keep these separate. Which is possible of course but it never seems to end up that way!