有没有可以直接执行MathType公式的编程语言?

时间:2014-10-15 05:46:49

标签: java ide programming-languages rich-text-editor mathtype

让我们举一个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;
&#13;
&#13;

&#13;
&#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;
&#13;
&#13;

For the layout reason, the final version is in image.

上述两个长度显然比第三个长。

如果您无法看到第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;就像古老的谚语一样,这根本不是现实。

1 个答案:

答案 0 :(得分:1)

可能不是MathType,但Mathematica及其IDE允许您使用所有那些奇特的数学符号执行符号编程。它的继任者&#34;,Wolfram Language应该能够做到这一点以及更多。

唯一的问题是它相当昂贵。但是有一个30天的试用版,所以你可能会检查这是否符合你的需求。