Pergunta

Eu tenho jogado com vários modos de fazer programação alfabetizada em Python. I como noweb , mas eu tenho dois problemas principais com isso: primeiro, é duro para construir no Windows, onde eu gastar cerca de metade do meu tempo de desenvolvimento; e, segundo, que me obriga a recuar cada pedaço de código, pois será no programa final --- que eu não necessariamente sei quando eu escrevê-lo. Eu não quero usar Leo, porque eu estou muito ligado a Emacs.

Existe uma boa ferramenta de programação alfabetizada que:

  1. Funciona em Windows
  2. Permite-me para definir o recuo dos pedaços quando eles são usados, não quando eles são escritos
  3. Ainda me permite trabalhar em Emacs

Obrigado!


Correção: noweb faz , permita-me recuar mais tarde --- Eu descaracterizou o papel que encontrei nele.

Por padrão, conservas notangle espaços em branco e mantém recuo ao expandir pedaços. Pode, portanto, ser usado com linguagens como Miranda e Haskell, em que o recuo é significativo

que me deixa com apenas os "Funciona em Windows" problema.

Foi útil?

Solução

Eu fiz isso:

http://sourceforge.net/projects/pywebtool/

Você pode obter qualquer número de web / produtos tecer que o ajudarão a construir um documento e código de uma só vez.

Você pode - muito facilmente - escrever o seu próprio. Não é ciência de foguetes para puxar os blocos de código Python para fora da fonte RST e montá-lo. Na verdade, eu sugiro que você escreva suas próprias diretrizes dos docutils para montar o código Python a partir de um documento de origem RST.

Você corre o RST através docutils rst2html (ou Esfinge) para produzir o seu relatório de HTML final.

Você executar o seu próprio utilitário na mesma fonte RST para extrair os blocos de código Python e produzir os módulos finais.

Outras dicas

Eu escrevi Pweave http://mpastell.com/pweave , que é voltado para geração e relatório dinâmico usos noweb sintaxe. É um script python puro para que ele também roda em Windows. Ele não resolver o seu problema travessão, mas talvez você possa modificá-lo para que, o código é realmente muito simples.

O padrão de fato na comunidade é cadernos ipython.

Excelente exemplo em que Peter Norvig demonstra algoritmos para resolver o Problema do Caixeiro Viajante: http: // nbviewer.ipython.org/url/norvig.com/ipython/TSPv3.ipynb

Mais exemplos listados em https://github.com/ipython/ipython / wiki / A-gallery-of-interessante-IPython-Notebooks

Você pode usar org-mode e babel enredamento.

Isso funciona muito bem, desde que você pode dar:. Noweb-ref para blocos de origem

Aqui está um exemplo mínimo: Ativar org-babel-emaranhado , em seguida, colocar isso em noweb-test.org arquivo:

#+begin_src python :exports none :noweb-ref c
abc = "abc"
#+end_src

#+begin_src python :noweb yes :tangle noweb-test.py
def x():
  <<c>>
  return abc

print(x())
#+end_src

Você também pode usar as propriedades de manchetes para dar o noweb-ref. Ele pode, então, até mesmo automaticamente concatenar vários blocos de código em referência um noweb.

Adicionar :results output à linha #+begin_src do segundo bloco para ver os resultados de impressão sob esse bloco quando você bate C-c C-c no bloco.

Você pode achar noweb 3 mais fácil construir no Windows. Ele foi projetado para ser mais portátil do que noweb padrão.

Veja também minha última ferramenta LP: http://code.google.com/p/nano -lp . Ele não requer formato de entrada especial, suporta Markdown / MultiMarkdown, reStructuredText, OpenOffice / BrOffice, crioulo, TeX / LaTeX e tem super leve e limpo sintaxe -. Programas alfabetizados não mais enigmáticas

Encontrado esta ferramenta para ser útil: https://github.com/bslatkin/pyliterate

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top