2010-06-01 45 views
7

我正在设计一种编程语言,纯粹是为了好玩,并且想要添加尽可能多的实验性功能,只是为了让其中的编程完全不同,而不是像Brainf * ck或Malbolge那样的糟糕方式。有什么理论和/或实验编程语言功能?

但是,我似乎很难为它提出新的东西,但我确信有很多东西在那里被讨论过,但从未真正尝试过。

  • 目前还没有在主流语言中实现哪些实验语言功能或概念?

例如:如果我问这个问题,比方说1960年,答案可能是“面向对象的编程”。我敢肯定,计算机科学家们(最近)提出了很多未实现的想法,至少我被告知如此。

回答

2

DWIMNWIS(做我的意思,不是我说的)。

更严重的是,一个绝对很棒的功能(这将是非常难以实现的)将是语言程序可证明不包含并发问题的能力。

至于必须具备的功能,我会说lambdasFirst-class functions。不完全是新的或理论上的(Lisp今年有多大年纪),但是来自多种语言的强大和缺失。

+0

他们已经这么做了,在COBOL中我认为是吗?哦..从来没有想过 – 2010-06-01 15:05:25

+0

现在没有多少种语言不具备lambda表达式和更高阶的功能。 – sepp2k 2010-06-01 16:02:49

+0

+1对于DWIMNWIS – 2010-06-01 16:10:35

4

目前的一个研究领域是dependent types。还有很多事情可以用这些做,那还没有完成。

+0

完全依赖类型系统有两个主要问题:类型推断和类型检查都是不可判定的,因此可能不会停止。 – 2012-03-19 00:33:29

+0

@JonPurdy:Coq和Agda都有依赖类型,但是你没有提到的问题。 – Blaisorblade 2013-10-26 03:58:59

0

阅读ACM和IEEE出版物的研究思路

0

这是一个想法;如果有人写它,他们必须给我版权信贷!自动构建在任意矩阵模板中,这些矩阵不是数学类型,而是更多的存储或结构类型。根据模板参数的不同,这些矩阵可以像标量值一样简单,理论上如同近似无限维实体一样复杂,如果计算机可以允许它而不会耗尽内存,但实际上这将仅限于体系结构,操作系统和编译器的整数或整型的大小的内在细节。因此,可以有一个尺寸较小但体积不足的低维体积矩阵,因为它可能看起来像这样:Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds之前有一个更高维的矩阵,例如是8D体积矩阵的Matrix<type, 2,2,2,2,2,2,2,2>。如果他们是“完美的矩阵”,简化就可以完成。这就是每个维度都有相同的精确数量的元素,而不管他们拥有多少维度。例如:<3,3><3,3,3><3,3,3,3>都是完美的矩阵。简化为Matrix<type, 4^4>Matrix<type, 4,4,4,4>相同,在4D结构中给出4x4x4x4 4D体积矩阵和 96个元素。凡矩阵将是三维体积矩阵与许多元素,但有一个三维体积结构,因为我们的当前时钟和指南针运行在360度到整圆60分钟60秒,除了有很多存储元素的浮点数。

下面这个目前看起来像某人可能会在他们的项目中包含的C++库;但这里的想法是使它成为一种内置的语言类型。然后任何一个有你的语言和编译器的人都可以随意使用它们。他们可以用任何数量的维度使用这些诸如什么这个模板描绘:

// Header Declaration 
template<typename ClassType, unsigned int...> 
matrix{ 
}; // No need to show body just declaration for concept 

// User Code Would Be 
matrix<float,2,3,4,5,7> mat; // This would create a 2x3x4x5x7 matrix that is a 5th dimensional volumetric matrix 

// Default type 
matrix<int> mat2; // This creates a 1x1 matrix that would in essence be a scalar. 

现在我已经展示了什么是可变参数模板当前的C++语法。这里的想法是,这些矩阵容器将被构建为类型!

想让他们成为数学吗?当然这很好,但用户必须定义​​他们自己的“算法,方法,函数或例程”才能这样做。

,他们将不得不单独定义的原因是做这个原因:

mat<float, 3,3,3> mat1; 3x3x3 3D Volumetric Matrix - 27 elements 
mat<float, 5,5> mat2; 5x5 2D Linear-Quadratic (Area) Matrix - 25 elements 
mat<int, 6,7,8> mat3; 6x7x8 3D Volumetric Matrix - 336 elements 

mat<bool, 8>  mat4; 1x8 1D Linear Matrix (Array); transpose? 
        mat4::transpose; // built in - now 8x1 matrix 
        mat4::transpose; // back to 1x8. 

class TheMotherLoad {// Many members and methods }; 
// ... 
mat<TheMotherLoad*, 9,9,9,9,9,9,9,9,9> mat9; 
// simplified version 
mat<TheMotherLoad*, 9^9> mat9 
// A 9 Dimensional Volumetric container So the first the would be a Cube 
// with its sides having a length of 9 cells where the Volume 9^3 is the 
// First Order of what a Volumetric Matrix is. 
// Anything less is linear or quadratic either it being a scalar, 
// translation, an array, a line, a point, a vector, rotation, quadratic and area) 
// Now that we have a cube that has 729 elements and the next 
// three 9s which are the 4th, 5th & 6th dimensions would act as another 
// 9x9x9 matrix surrounding the first 3 dimensions respectively. 
// Finally the 7th, 8th & 9th dimensions defines the "outer matrix" 
// that also has "9x9x9" elements. So in total the number of elements 
// in this matrix would be 729^3 and for every 

由于对矩阵是如何的性能才是决定什么是可以做给他们,让数学运算的类型这必须在外部完成。