Esiste un IDE per python che crea lo stesso tipo di ambiente riflettente fornito da Smalltalk?

5

Come sa chiunque abbia usato Smalltalk, uno dei principali vantaggi (a parte un linguaggio tardivo che scoraggia molte pratiche scorrette) è che il sistema è totalmente trasparente e riflessivo, il che rende facile la comprensione delle API e del codice esistente, e individuare le funzionalità è piuttosto facile.

C'è qualcosa che crea un ambiente simile per Python?

Alcuni esempi di funzionalità di un ambiente di sviluppo smalltalk, non trovati in modo nativo in python sono:

  • ricerca classe / metodo / nomi etc,
  • esamina le gerarchie di ereditarietà
  • funzionalità per mostrare l'interfaccia completa di una data classe / oggetto, e dove le proprietà al suo interno hanno origine
  • un debugger grafico integrato che consente di esaminare lo stato completo di tutto nel sistema e vedere ogni istanza di un determinato tipo, nonché tutti i thread.

Nota che uso Windows, quindi tutto ciò che funziona bene su Windows sarebbe particolarmente utile.

    
posta Marcin 26.12.2011 - 20:06
fonte

5 risposte

8

Avendo lavorato con Smalltalk per due anni, posso dirti che non ho visto nessun IDE Python disponibile che ti dia il livello di espressività che stai cercando in IDE Smalltalk come VisualWorks o Squeak.

La cosa fondamentale della maggior parte degli IDE Smalltalk è che il codice + gli strumenti di sviluppo sono archiviati nello stesso posto. Quindi, piuttosto che programmare in un editor di testo, quindi compilarlo / interpretarlo su una VM, è tutto fatto sullo stesso binario. Ciò ha evidenti vantaggi in quanto è possibile connettersi a un'immagine Smalltalk in un ambiente di produzione e iniziare a codificare / eseguire il debug sull'immagine stessa piuttosto che dover cambiare, quindi pubblicare una nuova copia poiché tutto è già presente. Lo svantaggio principale che ho riscontrato con questo approccio è la quantità di memoria che consuma. Ovviamente puoi rimuovere l'immagine per rimediare a questo, ma ci vuole tempo.

Dirò che non è impossibile avere un IDE Python che faccia questo, ma semplicemente non ce n'è uno disponibile per quello che ho visto. Nonostante la natura dinamica di entrambi i linguaggi, l'approccio allo sviluppo tra i due linguaggi è diverso, dato che Python è basato su file e Smalltalk è basato su immagini.

    
risposta data 05.01.2012 - 11:45
fonte
3

ipython aggiunge molto zucchero sintattico al predefinito REPL di Python. In particolare, ottieni il completamento delle schede, un bel "?" scorciatoia per la funzione help() e tutto è ben colorato e facile da leggere.

Non proprio un ambiente Smalltalk ma lo trovo molto utile.

    
risposta data 26.12.2011 - 22:08
fonte
2

A volte mi trovo a usare l'IDE PythonWin solo per il gui disponibile durante il debug (esegui usando 'Step-through in il debugger 'quindi mostra la vista dello stack). Non ho mai toccato il smalltalk, però, quindi potrei essere fuori di testa ...

    
risposta data 05.01.2012 - 01:45
fonte
0

Non puoi davvero aspettarti un IDE Python simile a Smalltalk. In Smalltalk, l'IDE è parte integrante del runtime (o "immagine").

    
risposta data 04.01.2012 - 22:19
fonte
0

C'è una differenza fondamentale tra il mondo Smalltalk e il mondo Python. In Smalltalk, si lavora con un'immagine , mentre in Python c'è una distinta vista statica e dinamica del programma / progetto.

Il solito modo di colmare questa differenza sul lato Python consiste nel migliorare gli strumenti di analisi statica e nel rendere più semplice l'interazione con un programma in esecuzione, essendo in grado di eseguire spesso piccoli blocchi di un programma ed esaminando il programma in esecuzione in un debugger o strumento come Jupyter Notebook.

Fammi parlare di PyCharm ( link ) come IDE di tua scelta.

Static

PyCharm ha capacità di analisi statiche decenti e uno può inserire suggerimenti di tipo statico per aiutarlo link

  • ricerca classe / metodo / nomi etc --- link
  • esamina le gerarchie di ereditarietà --- ci sono le icone di grondaia, e anche link

Dinamico

La strada per riuscire a eseguire piccoli pezzi del tuo programma spesso sono test unitari, naturalmente. Se hai questi, dovresti sempre essere in grado di trovare / scrivere un test che ricreerà lo stato del programma che ti interessa ispezionare.

  • funzionalità per mostrare l'interfaccia completa di una data classe / oggetto, e dove le proprietà sono originate --- ottenere un punto di interruzione con un'istanza in ambito, e ispezionarlo valutando l'istanza. chiamando help(instance) . link . C'è una richiesta di funzionalità aperta link .
  • un debugger grafico integrato che
    • consente di esaminare lo stato completo di tutto il sistema - puoi valutare espressioni arbitrarie link
    • e vedi ogni istanza di un determinato tipo --- puoi, ma non c'è una GUI "heap explorer" per esso link
      • Non ho mai voluto farlo da solo. Presumo questo perché non ho un'immagine a lunga corsa e ricreare il processo ad ogni esecuzione. Se avessi un server di applicazioni a lungo funzionante, potrei volerlo. Mi sembra una funzione di admin / ops, più della funzionalità di sviluppo.
    • così come tutti i thread --- nessun problema, e c'è anche link

In Python, raramente (mai?) pensiamo in termini di "stato completo di tutto nel sistema". Questo è probabilmente un Smalltalkism.

Combinazione dei due

C'è una funzione PyCharm che arricchisce la vista statica del programma dalle informazioni raccolte in fase di esecuzione durante le sessioni di debug link

    
risposta data 12.11.2018 - 00:31
fonte

Leggi altre domande sui tag