让我们举一个Java的例子。目前从未找到富文本IDE,纯文本IDE是主流。
我已经多次阅读IDE中的Latex公式,其代码来自github,并且在没有任何类似TeX的软件的帮助下很难理解这些符号。
我想象一下这样一个可以集成Word,OneNote等的IDE的诞生,其中类似于类的代码可以突出显示,复制粘贴像图片一样编辑像普通/丰富的html,多媒体对象可以用作解释,就像matlab帮助器不是普通的javadoc一样,可以在一个文件中同时与多列中的2个或更多类进行比较,这是Java类层次结构的一个很好的视图,就像OneNote可以做的那样,所以我可以摆脱代码只能在纯文本编辑器中的一列中写入的限制。坦率地说,OneNote不是一个IDE,而是一个真正的富文本IDE原型,其中包含编写/订购代码但运行代码等所有内容的直观性。但是,这些功能就像专利一样,只能在OneNote中看到,并且在任何着名或较少的编程环境中都找不到。我不禁回想起,从历史上看,轨道宽度的发展限制了想象力的大小,每次我使用OneNote时都会在脑中重复这种想象。
更重要的是,虽然许多IDE包含高亮语法,但它仍然是纯文本代码,只需删除解释区域,就可以通过富文本生成非常快的代码。
类似Mathtype的公式比普通文本IDE中的计划文本公式好得多,我可以通过将代码和公式粘贴在一起来在OneNote中感受到,特别是当它是分数或生根公式时。真可惜,这个公式不能直接运行。实际上,它们可以用相同的格式生成,即类似xml的富文本。
我刚从Unicode网站的PDF文件中找到了一段有趣的代码,这样可以更好地捕获程序功能的实际功能:
void IHBMWM(void)
{
gammap = gamma*sqrt(1 + I2);
upsilon = cmplx(gamma+gamma1, Delta);
alphainc = alpha0*(1-(gamma*gamma*I2/gammap)/(gammap + upsilon));
if (!gamma1 && fabs(Delta*T1) < 0.01)
alphacoh = -half*alpha0*I2*pow(gamma/gammap, 3);
else
{
Gamma = 1/T1 + gamma1;
I2sF = (I2/T1)/cmplx(Gamma, Delta);
betap2 = upsilon*(upsilon + gamma*I2sF);
beta = sqrt(betap2);
alphacoh = 0.5*gamma*alpha0*(I2sF*(gamma + upsilon)/(gammap*gammap – betap2))*((1+gamma/beta)*(beta – upsilon)/(beta + upsilon)- (1+gamma/gammap)*(gammap – upsilon)/(gammap + upsilon));
}
alpha1 = alphainc + alphacoh;
}
&#13;
void IHBMWM(void)
{
= • (1 + 2);
= + 1 + • Δ ;
_inc = 0 • (1 − ( • • 2/ ’ )/( ’ + ));
if (! 1|| fabs(Δ • 1) < 0.01)
_coh = − .5 • 0 • 2 • pow( / ’ , 3);
else
{
= 1/ 1+ 1;
2ℱ = ( 2/ 1)/(Γ + • Δ );
2= • ( + • 2ℱ );
= 2;
coh= .5 • • 0 • ( 2ℱ ( + )/( ’ • ’ − 2))× ((1 + / ) • ( − )/( + ) − (1 + / ’ ) • ( ’ − )/( ’ + ));
}
1= inc+ coh;
}
&#13;
上述两个长度显然比第三个长。
如果您无法看到第3张图片,请访问第33至35页的Original Pdf here。
一个小问题是 ,在这样的IDE诞生之后,这样的纯文本编程习惯是否仍然被认为是一个好习惯?当帮助者是多媒体时,高级编程语言坚持这种对纯文本编码满意的偏见。变量/常量都是类似ASCII的,而Unicode集只是部分支持。在类似Mathtype的公式中,它在大脑中读取和使用是如此的优秀,而不可能像我们在IDE中的教科书中读到的那样索引索引,而像Java这样的编程语言仍然需要括号。
最后一个问题是 是否存在可以运行类似Mathtype的公式或类似Math的代码的IDE或编程语言?
PS :我知道Mathtype公式中的执行顺序会导致循环存在时效率低,但是,它不是问题,作为程序员,我可以手动将这些多项式分成片段并将它们添加到循环中,但机器也可以为它们提供便利。
PS2 :Mathematica非常适合科学界的数学研究人员,他们的价格高昂。我尝试下载并使用它,我真的被其简单的界面和符号系统所吸引,例如许多游戏可以用更少的行实现,帮助器非常人性化和智能化,就像输入法一样!帮助者也可以运行代码,这对于这一代和下一代学习编程是一种明确的改进,也许不仅仅是Mathematica语言。
首先,概念&#34;笔记本电脑&#34;在Mathematica中,我现在可以找到终极代码编辑器,它可以在代表算法中使用类似Mathtype的组件,将这样的概念应用到其他编程语言或其纯文本IDE中是非常有价值的,因为Mathematica有它的自己的限制,例如在其他语言中缺乏某些重要的现存特征。
我不禁回想起上个世纪Windows或Linux中传统的命令行编程方式,这与目前的纯文本IDE编程没有多大区别。顺便说一句,Mathematica工作台是Eclipse IDE的指定版本,它无法在Mathematica&#34; Notebook&#34;中编写代码。方式,现在真可惜。
读别人&#39;代码比编写代码困难得多,尤其是算法代码,如果没有办法在富文本IDE中显示像Mathhematica那样的类似Mathtype的符号,我写的代码将来很难读取。可以做,运行符号是另一回事。
其次,即使在&#34; Notebook&#34;中,组件也不能以OneNote方式自由排列,宽度为无穷大意味着OneNote中的真实无限,您可以将任何东西粘贴到远离第一列填充了OneNote中的富文本等内容,可以使用水平滚动条查看。这个功能的明显好处是可以比较来自相同父类或算法变体的2个或更多代码,我想它对版本控制也很有用,就像在BeyondCompare中水平比较10个文件的连续滚动而没有垂直滚动条除了最后一个之外的每一个,就像一个1 * N的类矩阵,而不是一列。
也许几年之后,我所用的那些功能也可以在Mathematica中实现。
我听说过&#34;源代码是文档&#34;就像古老的谚语一样,这根本不是现实。
答案 0 :(得分:1)
可能不是MathType,但Mathematica及其IDE允许您使用所有那些奇特的数学符号执行符号编程。它的继任者&#34;,Wolfram Language应该能够做到这一点以及更多。
唯一的问题是它相当昂贵。但是有一个30天的试用版,所以你可能会检查这是否符合你的需求。