2010-06-01 3 views
7

Je suis en train de concevoir un langage de programmation, purement amusant, et je veux ajouter autant de fonctionnalités expérimentales que possible, juste pour faire de la programmation quelque chose de complètement différent, et pas mal comme Brainf * ck ou Malbolge.Quelles sont les fonctionnalités théoriques et/ou expérimentales du langage de programmation?

Cependant, je semble être assez mauvais pour trouver de nouvelles choses pour cela, mais je suis sûr qu'il y a beaucoup de choses qui ont été discutées mais jamais vraiment essayées. Quelles caractéristiques expérimentales du langage ou concepts non implémentés dans les langages grand public existent actuellement? E.g: Si je demandais cela dans 1960, par exemple, une réponse pourrait être "Programmation orientée objet". Je suis sûr qu'il y a beaucoup d'idées inexpliquées que les informaticiens ont (récemment) inventées, du moins on me l'a dit.

Répondre

2

DWIMNWIS (Faites ce que je veux dire, pas ce que je dis). Plus sérieusement, une caractéristique absolument géniale (qui serait très difficile à implémenter) serait la capacité du programme d'une langue à prouver qu'elle ne contient pas de problèmes de simultanéité. En ce qui concerne les fonctionnalités MUST-HAVE, je dirais lambdas et First-class functions Pas vraiment nouveau ou théorique (quel âge a Lisp cette année) mais puissant et manquant de beaucoup de langues.

+0

Ils l'ont déjà fait, dans COBOL je pense, était-ce? Oh .. nevermind –

+0

De nos jours, il n'y a plus beaucoup de langues qui n'ont pas de fonctions lambda et d'ordre supérieur. – sepp2k

+0

+1 pour DWIMNWIS –

4

Un domaine de recherche actuel est dependent types. Il y a encore beaucoup de choses que vous pouvez faire avec celles-ci, cela n'a pas encore été fait.

+0

Un système de type dépendant complet a deux problèmes majeurs: l'inférence de type et la vérification de type sont indécidables et ne peuvent donc pas s'arrêter. –

+0

@JonPurdy: à la fois Coq et Agda ont des types dépendants mais aucun des problèmes que vous mentionnez. – Blaisorblade

0

lire les publications ACM et IEEE pour des idées de recherche

0

est ici une idée; et si quelqu'un l'écrit, ils doivent me donner un crédit de droits d'auteur! Automatique intégré dans des modèles matriciels arbitraires tels que ces matrices ne sont pas les types mathématiques mais plutôt d'un type de stockage ou de structure. Selon les paramètres du modèle, ces matrices peuvent être aussi simples qu'une valeur scalaire aussi complexe qu'une entité quasi infinie en théorie si l'ordinateur pouvait le permettre sans manquer de mémoire, mais dans la pratique cela se limiterait à l'architecture, au système d'exploitation et compilateurs détails intrinsèques de la taille de leur type entier ou intégral. On peut donc avoir une matrice volumétrique de faible dimension qui a 3 dimensions mais qui manque de mémoire car elle pourrait ressembler à ceci: Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds avant une matrice dimensionnelle beaucoup plus élevée telle que Matrix<type, 2,2,2,2,2,2,2,2> qui serait une matrice volumétrique 8D. La simplification peut être faite si ce sont des «matrices parfaites». C'est là que chaque dimension a exactement le même nombre d'éléments, quel que soit le nombre de dimensions. Par exemple: <3,3><3,3,3><3,3,3,3> sont toutes des matrices parfaites. Simplification serait Matrix<type, 4^4> même que Matrix<type, 4,4,4,4> donnant une matrice volumétrique 4D 4x4x4x4 avec 96 éléments dans une structure 4D. Où `Matrix serait 3D Matrix Volumetric avec beaucoup d'éléments mais a une structure volumétrique 3D comme nos horloges et compas actuels fonctionnent de telle sorte que 360 ​​degrés à cercle complet, 60 minutes, 60 secondes, sauf qu'il y a autant d'éléments de stockage de flotteurs.

Ce qui suit ressemble à une bibliothèque C++ que quelqu'un pourrait inclure dans ses projets; mais l'idée ici est de faire un type de langage intégré. Alors n'importe qui avec votre langue et compilateur peut les utiliser à volonté.Ils peuvent utiliser ces indicateurs avec un certain nombre de dimensions telles que ce que ce modèle représente:

// 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. 

Maintenant que je l'ai montré est la syntaxe actuelle C++ pour les modèles variadique. L'idée ici serait que ces types de conteneurs matriciels seraient construits en types!

Voulez-vous les rendre mathématiques? Bien sûr, c'est bien, mais l'utilisateur devrait définir ses propres "algorithmes, méthodes, fonctions ou routines" pour le faire.

La raison pour laquelle ils devraient être définis indépendamment est fait pour cette raison:

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 

En raison des propriétés de la façon dont les matrices sont est ce qui détermine ce que le type d'opérations mathématiques qui peut être fait pour eux afin Cela doit être fait de l'extérieur.

Questions connexes