Description
Podľa môjho názoru vývojové prostredia (IDE) zanedbávaju runtime aspekt programov, ktoré v nich píšeme. Historicky sa tieto prostredia asi vyvinuli z textových editorov a postupne dostávaju viac a viac funkcií a umožňujú viacero pohľadov na zdrojový kód a jeho všakovaké aspekty. Vývojové prostredia dokážu zázraky so zdrojovými súbormi, ktoré nám ležia na disku.
Avšak zdrojáky nepíšeme aby ležali na disku ale kvôli tomu aby nám bežali ako programy. Pri behu môže vznikať kopec zaujímavých informácií spätne využiteľných pri programovaní. Dôraz vývojových prostredí na statické zdrojové kódy škodí najmä dynamickým programovacím jazykom ako je Python. Chcel by som odprezentovať a získať spätnú väzbu na 3-5 nápadov ktoré majú za cieľ práve preniesť rôzne informácie z behu Python programu naspäť do prostredia v ktorom sa píše zdrojový kód. V ideálnom prípade presne na riadok alebo dokonca na výraz, ktorý programátor práve píše alebo sa s ním dokonca trápi.
Príklady týchto nápadov:
- prezentácia stack trace informácie v IDE, na konkrétnych riadkoch kde tento stack trace vznikol, intuitívna navigácia po framoch stacktrace, hint na hodnoty lokálnych premenných jednotlivých framov
- prenos a výpis log hlášok v IDE na konkrétmych riadkoch, ktoré tento výpis vygenerovali
- coverage informácia na riadku, ale vrátane informácie Who Tests What (ktorý, test vykonal tento riadok, pozri napr. https://bitbucket.org/ned/coveragepy/issues/170/show-who-tests-what )
- použiteľnejšia reprezentácia spustených/úspešných/zlyhaných testov ako momentálne používaný rozbaľovací strom. Doklikať sa ku konkrétnemu výsledku testu v Pycharm test runneri často trvá minútu a po každom spustení testov sa táto manuálna práca zahodí a treba začať klikať odznova. Navrhnem intuitívnejší spôsob prezentácie.
- meta nápad: implementovať prezentované nápady bude stáť nezanedbateľné úsilie. Kedže vývojových prostredí je veľké množstvo, a každé ma rozdielne API ideálne je navrhnúť všeobecný protokol, ktorý by oddeľoval IDE a zdroje runtime informácií podobne ako to robí Language Server Protocol (https://microsoft.github.io/language-server-protocol/)