mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 14:54:47 +08:00
Rewrite the history part
This commit is contained in:
@@ -3,36 +3,6 @@
|
|||||||
History & Acknowledgements
|
History & Acknowledgements
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
A Little Bit of History
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
The Star Wars Jedi are awesome. My Jedi software tries to imitate a little bit
|
|
||||||
of the precognition the Jedi have. There's even an awesome `scene
|
|
||||||
<https://youtu.be/yHRJLIf7wMU>`_ of Monty Python Jedis :-).
|
|
||||||
|
|
||||||
But actually the name has not much to do with Star Wars. It's part of my
|
|
||||||
second name.
|
|
||||||
|
|
||||||
After I explained Guido van Rossum, how some parts of my auto-completion work,
|
|
||||||
he said (we drank a beer or two):
|
|
||||||
|
|
||||||
*"Oh, that worries me..."*
|
|
||||||
|
|
||||||
Now that it is finished, I hope he likes it :-)
|
|
||||||
|
|
||||||
I actually started Jedi back in 2012, because there were no good solutions
|
|
||||||
available for VIM. Most auto-completions just didn't work well. The only good
|
|
||||||
solution was PyCharm. But I like my good old VIM. Rope was never really
|
|
||||||
intended to be an auto-completion (and also I really hate project folders for
|
|
||||||
my Python scripts). It's more of a refactoring suite. So I decided to do my
|
|
||||||
own version of a completion, which would execute non-dangerous code. But I soon
|
|
||||||
realized, that this would not work. So I started working with a lot of
|
|
||||||
recursion to to understands many of Python's key features.
|
|
||||||
|
|
||||||
By the way, I really tried to program it as understandable as possible. But I
|
|
||||||
think understanding it might need quite some time, because of its recursive
|
|
||||||
nature.
|
|
||||||
|
|
||||||
Acknowledgements
|
Acknowledgements
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
@@ -42,4 +12,52 @@ Acknowledgements
|
|||||||
- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2
|
- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2
|
||||||
(originally used in lib2to3).
|
(originally used in lib2to3).
|
||||||
|
|
||||||
|
A Little Bit of History
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Written by Dave.
|
||||||
|
|
||||||
|
The Star Wars Jedi are awesome. My Jedi software tries to imitate a little bit
|
||||||
|
of the precognition the Jedi have. There's even an awesome `scene
|
||||||
|
<https://youtu.be/yHRJLIf7wMU>`_ of Monty Python Jedis :-).
|
||||||
|
|
||||||
|
But actually the name has not much to do with Star Wars. It's part of my
|
||||||
|
second name Jedidjah.
|
||||||
|
|
||||||
|
I actually started Jedi back in 2012, because there were no good solutions
|
||||||
|
available for VIM. Most auto-completion solutions just did not work well. The
|
||||||
|
only good solution was PyCharm. But I liked my good old VIM very much. There
|
||||||
|
was also a solution called Rope that did not work at all for me. So I decided
|
||||||
|
to write my own version of a completion engine.
|
||||||
|
|
||||||
|
The first idea was to execute non-dangerous code. But I soon realized, that
|
||||||
|
this would not work. So I started to build a static analysis tool.
|
||||||
|
The biggest problem that I had at the time was that I did not know a thing
|
||||||
|
about parsers.I did not did not even know the word static analysis. It turns
|
||||||
|
out they are the foundation of a good static analysis tool. I of course did not
|
||||||
|
know that and tried to write my own poor version of a parser that I ended up
|
||||||
|
throwing away two years later.
|
||||||
|
|
||||||
|
Because of my lack of knowledge, everything after 2012 and before 2020 was
|
||||||
|
basically refactoring. I rewrote the core parts of Jedi probably like 5-10
|
||||||
|
times. The last big rewrite (that I did twice) was the inclusion of
|
||||||
|
gradual typing and stubs.
|
||||||
|
|
||||||
|
I learned during that time that it is crucial to have a good understanding of
|
||||||
|
your problem. Otherwise you just end up doing it again. I only wrote features
|
||||||
|
in the beginning and in the end. Everything else was bugfixing and refactoring.
|
||||||
|
However now I am really happy with the result. It works well, bugfixes can be
|
||||||
|
quick and is pretty much feature complete.
|
||||||
|
|
||||||
|
--------
|
||||||
|
|
||||||
|
I will leave you with a small annectote that happend in 2012, if I remember
|
||||||
|
correctly. After I explained Guido van Rossum, how some parts of my
|
||||||
|
auto-completion work, he said:
|
||||||
|
|
||||||
|
*"Oh, that worries me..."*
|
||||||
|
|
||||||
|
Now that it is finished, I hope he likes it :-).
|
||||||
|
|
||||||
|
|
||||||
.. include:: ../../AUTHORS.txt
|
.. include:: ../../AUTHORS.txt
|
||||||
|
|||||||
Reference in New Issue
Block a user