我正在设计一种编程语言,纯粹是为了好玩,并且想要添加尽可能多的实验性功能,只是为了让其中的编程完全不同,而不是像Brainf * ck或Malbolge那样的糟糕方式。有什么理论和/或实验编程语言功能?
但是,我似乎很难为它提出新的东西,但我确信有很多东西在那里被讨论过,但从未真正尝试过。
- 目前还没有在主流语言中实现哪些实验语言功能或概念?
例如:如果我问这个问题,比方说1960年,答案可能是“面向对象的编程”。我敢肯定,计算机科学家们(最近)提出了很多未实现的想法,至少我被告知如此。
我正在设计一种编程语言,纯粹是为了好玩,并且想要添加尽可能多的实验性功能,只是为了让其中的编程完全不同,而不是像Brainf * ck或Malbolge那样的糟糕方式。有什么理论和/或实验编程语言功能?
但是,我似乎很难为它提出新的东西,但我确信有很多东西在那里被讨论过,但从未真正尝试过。
例如:如果我问这个问题,比方说1960年,答案可能是“面向对象的编程”。我敢肯定,计算机科学家们(最近)提出了很多未实现的想法,至少我被告知如此。
DWIMNWIS(做我的意思,不是我说的)。
更严重的是,一个绝对很棒的功能(这将是非常难以实现的)将是语言程序可证明不包含并发问题的能力。
至于必须具备的功能,我会说lambdas和First-class functions。不完全是新的或理论上的(Lisp今年有多大年纪),但是来自多种语言的强大和缺失。
目前的一个研究领域是dependent types。还有很多事情可以用这些做,那还没有完成。
完全依赖类型系统有两个主要问题:类型推断和类型检查都是不可判定的,因此可能不会停止。 – 2012-03-19 00:33:29
@JonPurdy:Coq和Agda都有依赖类型,但是你没有提到的问题。 – Blaisorblade 2013-10-26 03:58:59
阅读ACM和IEEE出版物的研究思路
这是一个想法;如果有人写它,他们必须给我版权信贷!自动构建在任意矩阵模板中,这些矩阵不是数学类型,而是更多的存储或结构类型。根据模板参数的不同,这些矩阵可以像标量值一样简单,理论上如同近似无限维实体一样复杂,如果计算机可以允许它而不会耗尽内存,但实际上这将仅限于体系结构,操作系统和编译器的整数或整型的大小的内在细节。因此,可以有一个尺寸较小但体积不足的低维体积矩阵,因为它可能看起来像这样: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
由于对矩阵是如何的性能才是决定什么是可以做给他们,让数学运算的类型这必须在外部完成。
他们已经这么做了,在COBOL中我认为是吗?哦..从来没有想过 – 2010-06-01 15:05:25
现在没有多少种语言不具备lambda表达式和更高阶的功能。 – sepp2k 2010-06-01 16:02:49
+1对于DWIMNWIS – 2010-06-01 16:10:35