2015-04-01 160 views
3

我有一個庫項目,它需要C與其他語言的互操作性和合理的性能,但必須非常清晰地記錄文檔編程,其文檔可能從功能方法中受益,如Haskell ,甚至Idris「的特點。多種語言的文字編程

因此,我有興趣將這個庫作爲一個識字程序,首先編寫文檔和工作Idris原型代碼,然後編寫與Idris代碼非常類似的C代碼以解決任何性能問題,並且可以輕鬆地與其他代碼鏈接語言。

我需要什麼文學編程工具?

NuWeb是專爲多語言編程書籍,但他們的@符號,或任何轉義字符的使用,是有問題的像伊德里斯,哈斯克爾等

伊德里斯wants功能性語言literate programming tool到我可以貢獻。我喜歡他們的首選方法,只使用由\begin{code} .. \end{code}塊分隔的.tex文件。

伊德里斯,哈斯克爾等不需要像C那樣糾結,所以這樣做會增加複雜性,我寧願我在這裏使用的任何工具都存在。

,最大限度地減少工裝庫的消費者可能會提取使用一個簡單的Perl腳本的C和伊德里斯代碼像cat_latex_env的一種方法:

#!/usr/bin/perl 
use strict; 
use warnings; 

sub usage { die "Usage: cat_latex_env enviroment_name [filename]\n"; } 
usage if ($#ARGV < 0); 

my $env = shift; 
my $begin = quotemeta "\\begin{$env}"; 
my $end = quotemeta "\\end{$env}"; 
while (<>) { 
     if (/$begin/../$end/) { 
       next if /$begin/ || /$end/; 
       print; 
     } 
} 

此時伊德里斯應該編譯罰款。我可以嵌入C語言編程工具(如CWEB或NuWeb)所需的糾結指令。

想法?

+0

我不會創建答案,因爲我的選擇是有偏見的。就個人而言,我反對任何形式的文學編程,它使得程序維護和調試非常困難。我建議你看看其他方式,使用程序內的文檔工具。像C的doxygen和Haskell的http://en.wikipedia.org/wiki/Haddock_(software)等。 – qunying 2015-05-05 17:43:36

+0

@Cœur這個問題似乎脫離主題,因爲它要求提供軟件建議。你的編輯只是糾正了一個拼寫錯誤。你會投票結束這個問題,以更好地服務Stack Overflow嗎? – AdrianHHH 2017-04-03 08:14:58

+0

@Cœur補充說AdrianHHH說:問題主要是這個問題碰到了首頁,沒有明顯的改進(我沒有把一個拼寫糾正算作重要的),現在這個OT問題重新受到關注,因爲它再次位於首頁。我已經看到你編輯這樣的微不足道的編輯問題,只是稍後關閉;請在編輯時考慮問題,並考慮是否接近投票不是更好的選擇。 – Adriaan 2017-04-03 08:22:59

回答

1

如果文檔是最重要的,並且您有一些emacs關聯,那麼您可能會比在org-mode中查看文檔編程支持更糟糕。 Babel是一種組織模式的擴展,允許與許多編程環境集成,包括糾纏編織編譯語言,執行代碼塊,...

它是徹底的語言不可知的,因爲它有一個大綱的DNA,它允許以結構化的方式管理文檔。當然,它會生成語法高亮的HTML/LateX/PDF/...來源。

查看更多信息http://orgmode.org/worg/org-contrib/babel/intro.html

樣本:

** Compiles libpq library for iOS 

copy this script as *build-ios.sh* in the root of the postgresql 
source tree. 

#+BEGIN_SRC sh tangle:build-ios.sh 
mkdir -p build 
rm -rf build/* #*/ 

function build_libpq() 
{ 
    make distclean 

    ./configure \ 
...snip... 
lipo -create -output libpq.a build/* 

#+END_SRC 

Run it and it will create a universal library and separate arm 
library in the root folder. 

我希望這給一個想法,做什麼用組織模式/巴布爾組合創建文檔/代碼。當然,一個堆棧交換答案不能開始刮擦這個系統的表面。