Čisté OP Smalltalk, Objective-C

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Čisté OP Smalltalk, Objective-C
« Odpověď #45 kdy: 06. 09. 2018, 14:35:19 »

Jo, a ještě jedna věc: Implementrace Pharo má výborný debugger, ve kterém je možno rovnou doplňovat metody (což jde skvěle dohromady s TDD, kdy při testu vyletí chyba na neexistující metodu), nebo "jen" opravovat chybu, vyčíslovat výrazy, opakovaně znovuspouštět metodu, dokud to nejede. Někdo možná řekne: "To je zbytečné." Ale když podvacáté v nějakém jazyku opravujete chybu, pořád to není ono, a vy musíte 20krát znovu aplikaci (nebo alespoň její kus) přeložit a dolézt znovu na místo chyby, tak vás to začne PĚKNĚ SRÁT. Nevím o jiném jazyku/implementaci (to neznamená, že neexistuje), který by tohle uměl.

Smalltalk ani Pharo neznam takze si nejsem uplne jisty jestli je to totez, ale podle me tohle umi kazdy jazyk kde je REPL.
Takze nejspis vetsina dialektu lispu, s jistymi ustupky asi python, javascript, haskell a kdyz budu mit hodne fantazie tak i shell. Ostatne od Java 9 mame i jshell takze i tam by se o tom dalo mluvit.
Prakticky to pouzivam jen v clojure a emacs lispu takze u ostatnich si nejsem jisty jaky tooling je k dispozici a jak pohodlne se s tim pracuje, ale kdyz musim nekdy pracovat bez REPLu tak se mi chce brecet.

Obávám se, že REPL na to stačit nebude - REPL je pouze přeložení nějakého výrazu a spuštění v kontextu zastaveného debuggeru, to má dnes kdejaká implementace. Pharo umí v debuggeru přeložit a nahradit stávající metodu (nebo třeba taky vytvořit novou třídu!) a případně ji znovu spustit. Ukončení aplikace není třeba vůbec používat!
U Pythonu jsem tohoto chování (v PyCharms) nedosáhnul, v Javascriptu (v Eclipse?) mi šlo za blíže neurčených podmínek překládat jednotlivé soubory, ale nějak se změny neprojevovaly, nebo se to všelijak skládalo. O Jávce či C# nemůže být ani řeč, tam jsem k ladění běžně používal spuštění laděného kódu dočasnou úpravou po spuštění aplikace. Jiné jazyky nepoužívám.

jde to v pythonu i v javascriptu. v pythonu reloadnete změněný modul funkcí importlib.reload, v javascriptu require, obojí můžete volat z debugeru.


BoneFlute

  • *****
  • 1 776
    • Zobrazit profil
Re:čisté OP smalltalk, objective C
« Odpověď #46 kdy: 06. 09. 2018, 15:53:41 »
- A typy samotné jsou i vcelku obstojná dokumentace. Rozumné typy dost redukují potřebné množství okolního textu. A na rozdíl od názvů nebo komentářů vždycky odpovídají aktuálnímu chování kódu.

Mimoto názvy mají být v pořádku vždy, typované jazyky nejsou žádnou výjimkou (jak si mnozí myslejí).

Zde bych se odpíchnul já. Typy, a bavím se o statickém typování, vychází z předpokladu, že vše se zkontroluje předem (haskell). Zatímco netypové jazyky chtějí možnost opravovat to až za běhu (erlang). A pak jsou různé mezistupně, které pomáhají ke zmatení nepřítele.

SB

Re:Čisté OP Smalltalk, Objective-C
« Odpověď #47 kdy: 07. 09. 2018, 09:08:57 »
jde to v pythonu i v javascriptu. v pythonu reloadnete změněný modul funkcí importlib.reload, v javascriptu require, obojí můžete volat z debugeru.

Jste si jistý, že mluvíme o tom samém?
Ve kterém vývojovém IDE to můžu vyzkoušet?

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Čisté OP Smalltalk, Objective-C
« Odpověď #48 kdy: 07. 09. 2018, 10:31:18 »
jde to v pythonu i v javascriptu. v pythonu reloadnete změněný modul funkcí importlib.reload, v javascriptu require, obojí můžete volat z debugeru.

Jste si jistý, že mluvíme o tom samém?
Ve kterém vývojovém IDE to můžu vyzkoušet?

ve všech. V konzoli debuggeru můžete spustit libovolný kód jako v replu.