📜 ⬆️ ⬇️

IDE do it yourself: design

I have long wanted to talk about how to do complex projects from design to release. It is believed that IDE is a rather complex system. It is very good. There is scope for designing, applying patterns, building class hierarchies.

Examples of successful IDEs:I can't wait to start ...

Design


If we want to bring the project to the end - it must be designed. What for?
  1. In order to think over the project in advance, its structure and prevent critical errors in the early stages.
  2. To see the whole amount of work and not to do more than planned in the future (interesting projects die in this way).
  3. That the project was agreed.
The design does not necessarily have a written form. All programmers design code in thought as it is written. Thus, they design at a low level. To simplify and improve the low-level design it is necessary to prepare the ground - the high-level part.

Design stages:
  1. Target definition
  2. Development of requirements
  3. Architecture definition
  4. Writing a high-level project
Each next stage is based on the results of the previous one and clarifies them.
')

Designing an IDE


purpose


Learn to design and develop complex projects.
Design and develop an IDE for web development.

Requirements


Are common
Cross-platform (+ use of the native interface in each of the selected operating systems)
Multilingual
Extensibility

Editor
Syntax Highlighting (+ indication of syntax errors)
Tooltips when hovering over entities in code
Code Completion
Snipples
Work with several documents at the same time

Supported programming languages ​​/ markup
HTML
Choosing a standard for tips
CSS
Using CSS2, CSS3 standards (optional) for hints
Javascript
Using JsDoc for hints

Architecture


Very interesting part of the design. There are no clear requirements for its design. Very often it contains various diagrams.

Programming language: C # (meets the requirements and I know him quite well)
Runtime: .net (Windows), mono (Mac OS X, * nix)

Target platforms:
  • Mac OS X (since version 10.5.0)
  • * nix (the list of distributors in the future should be clarified)
  • Windows (since version 2000)
Spread:
  • Mac OS X - dmg
  • * nix - in packages specific to each distribution.
  • Windows - as an installer
Project structure:
  • Editor
    • Syntax highlighter (with easily extensible list of languages)
    • Document structure analyzers: HTML, CSS, JavaScript
    • Snippets Manager
  • Wednesday
    • Settings Manager
    • Hot Key Manager
    • Interface manager
      • Toolbars
      • Data fields (file structure, document object model, ...)
  • Extensibility
    • Extensions in the form of full libraries
    • Scripting JavaScript extensions
  • Interface
    • Implementations
      • WinForms (Windows)
      • Gtk # (* nix)
      • Cocoa # (Mac OS X)

This is the first step in the design. Further there will be a much more difficult stage - drawing up a high-level project. Soon I will try to write an article on this topic. Thanks for attention.

Source: https://habr.com/ru/post/39537/


All Articles