7
votes

Quelles fonctionnalités théoriques et / ou expérimentales en langage de programmation sont là?

Je concevons 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 que pas de mauvaise manière comme cerveau * ck ou malbolge .

Cependant, je semble être assez mauvais pour que ce soit de nouvelles choses, mais je suis sûr qu'il y a des tonnes de choses qui ont été parlées mais jamais vraiment essayées.

  • Quelles caractéristiques ou concepts de langue expérimentale non implémentées dans les langues traditionnelles sont là pour le moment?

    E.g: Si je leur ai demandé cela, disons, 1960, une réponse pourrait être "Programmation orientée objet".

    Je suis sûr qu'il y a beaucoup d'idées non imprimées, des scientifiques informatiques ont (récemment) montent, au moins on m'a dit alors.


0 commentaires

5 Réponses :


2
votes

Dwimnwis (fais ce que je veux dire, pas ce que je dis).

Plus sérieusement, une caractéristique absolument grande (qui serait très difficile à mettre en œuvre) serait la capacité du programme d'une langue d'être prouvable de ne pas contenir de problèmes de concurrence.

En ce qui concerne les fonctionnalités incorrectes, je dirais Lambdas et Fonctions de première classe . Pas exactement neuf ou théorique (quel âge a Lisp cette année) mais puissant et disparu de nombreuses langues.


2 commentaires

Ils ont déjà fait cela, à Cobol, je pense, était-ce? Oh peu importe


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



4
votes

Un domaine de recherche actuel est Types dépendants . Il y a encore beaucoup de choses que vous pouvez faire avec ceux qui n'ont pas encore été faits.


2 commentaires

Un système de type dépendant complet comporte deux problèmes majeurs: la vérification des types de type et de type ne sont pas indéformables et peuvent donc ne pas arrêter.


@Jonpurdy: Coq et AGDA ont des types dépendants, mais aucun problème n'est mentionné.



0
votes

Lire les publications ACM et IEEE pour les idées de recherche


0 commentaires

0
votes

Voici une idée; Et si quelqu'un écrit, ils doivent me donner crédit de droit d'auteur! Modèles de matrice arbitraires automatiques construits de manière à ce que ces matrices ne soient pas les types mathématiques mais plus d'un type de stockage ou de structure. Selon les paramètres de modèle, ces matrices peuvent être aussi simples qu'une valeur scalaire à la fois complexe qu'une entité dimensionnelle presque infinie en théorie si l'ordinateur pourrait le permettre sans manquer de mémoire mais dans la pratique, cela serait limité à l'architecture, au système d'exploitation et compilers détaillés intrinsèques de la taille de leur entier ou de leur type intégré. Donc, on peut avoir une matrice volumétrique dimensionnelle basse de 3 dimensions et qui est à l'écoute de la mémoire, car elle pourrait ressembler à ceci: matrice MAOUTOFBounds code> avant une matrice dimensionnelle beaucoup plus élevée telle Comme matrice code> une matrice volumétrique 8D serait. La simplification peut être faite si elles sont des "matrices parfaites". C'est là que chaque dimension a la même quantité exacte d'éléments indépendamment du nombre de dimensions qu'ils ont. Par exemple: code> code> code> sont toutes des matrices parfaites. La simplification serait matrice code> même que matrice code> donnant une matrice volumétrique 4D 4D avec 96 éléments dans une structure 4D. Lorsque `matrice serait une matrice volumétrique 3D avec de nombreux éléments mais comporte une structure volumétrique 3D que nos horloges et boussoles actuelles fonctionnent à 360 degrés au cercle complet, 60 minutes, 60 secondes, à l'exception de nombreux éléments de stockage de flotteurs. Ceci ci-dessous ressemblera à une éventuelle bibliothèque C ++ que quelqu'un inclue dans leurs projets; Mais l'idée ici est en train de le faire un type de langue intégré. Ensuite, n'importe lequel avec votre langue et votre compilateur peut les utiliser à volonté. Ils peuvent les utiliser avec n'importe quel nombre de dimensions telles que ce que ce modèle représente: p> xxx pré>

maintenant ce que j'ai montré est la syntaxe C ++ actuelle pour les modèles variadiques. L'idée serait ici que ces types de conteneurs matriciels soient intégrés à des types! P>

veulent les faire mathématiques? Bien sûr, c'est bien, mais l'utilisateur devrait définir leurs propres "algorithmes, méthodes, fonctions, fonctions ou routines" pour le faire. P>

La raison pour laquelle ils devraient être définis indépendamment sont à cette raison: P>

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 


0 commentaires

1
votes

Non séquentiellement (une idée provenant de la programmation Dataflow), de telles expressions sont évaluées lorsque leurs dépendances sont remplies. De sorte que: xxx pré>

est un programme valide. Toutes les variables s'appelleraient aux cellules dans une feuille de calcul. P>

    print i
    range(1..100) => i
    # prints 1 to 100


0 commentaires