Какие теоретические и / или экспериментальные особенности языка программирования существуют? - PullRequest
7 голосов
/ 01 июня 2010

Я разрабатываю язык программирования, просто для удовольствия, и хочу добавить как можно больше экспериментальных функций, просто чтобы сделать программирование в нем чем-то совершенно другим, и это не так уж плохо, как Brainf * ck или Malbolge.

Тем не менее, я, кажется, очень плохо придумываю для этого новые вещи, но я уверен, что есть множество вещей, о которых говорили, но никогда не пробовали.

  • Какие возможности или концепции экспериментального языка не реализованы в основных языках в настоящее время?

Например: если бы я спросил об этом, скажем, в 1960 году, ответ мог бы быть "Объектно-ориентированное программирование ".

Я уверен, что есть много неосуществленных идей, которые компьютерные ученые (недавно) выдвинули, по крайней мере, мне так сказали.

Ответы [ 5 ]

4 голосов
/ 01 июня 2010

Одной из текущих областей исследований являются зависимые типы . Есть еще много вещей, которые вы можете сделать с тем, что еще не было сделано.

2 голосов
/ 01 июня 2010

DWIMNWIS (Делай, что я имею в виду, а не то, что я говорю).

А если серьезно, то отличной особенностью (которую было бы очень трудно реализовать) было бы наличие способности языковой программы быть доказуемой, не содержащей проблем параллелизма.

Что касается функций MUST-HAVE, я бы сказал, лямбды и Функции первого класса . Не совсем новый или теоретический (сколько лет Лиспу в этом году), но мощный и отсутствующий во многих языках.

0 голосов
/ 13 апреля 2018

не последовательно (идея, исходящая из программирования потока данных), так что выражения оцениваются, когда выполняются их зависимости. Так что:

print(msg)
msg = "Hello World" 

является действительной программой. Все переменные будут сродни ячейкам в электронной таблице.

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

Было бы интересно изучить значение свойства распространения изменений такой парадигмы. Однако создание такого языка - сложная задача, он начинает становиться беспорядочным, думая об условных выражениях, итерации и т. Д., А также о проблемах синхронизации, которые могут возникнуть.

0 голосов
/ 14 февраля 2017

Вот идея;и если кто-то напишет это, он должен отдать мне должное!Автоматически встроенные шаблоны произвольных матриц, так что эти матрицы являются не математическими типами, а скорее типом хранилища или структуры.В зависимости от параметров шаблона эти матрицы могут быть такими же простыми, как скалярное значение, и такими же сложными, как и почти бесконечномерный объект в теории, если компьютер может разрешить это без нехватки памяти, но на практике это будет ограничено архитектурой, ОС иКомпиляторы присваивают детали размера их целочисленного или целочисленного типа.Таким образом, можно иметь объемную матрицу низкого измерения, которая равна 3 измерениям, но при этом не хватает памяти, потому что она может выглядеть следующим образом: Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds перед гораздо более высокой размерной матрицей, такой как Matrix<type, 2,2,2,2,2,2,2,2>, то есть объемная матрица 8D.Упрощение можно сделать, если они являются «идеальными матрицами».Вот где каждое измерение имеет одинаковое количество элементов независимо от того, сколько у них измерений.Например: <3,3> <3,3,3> <3,3,3,3> - все идеальные матрицы.Упрощение будет Matrix<type, 4^4> таким же, как и Matrix<type, 4,4,4,4>, получая 4x4x4x4 4D объемную матрицу с 96 элементами в 4D структуре.Где `Матрица была бы трехмерной объемной матрицей со многими элементами, но имеет трехмерную объемную структуру, поскольку наши текущие часы и компасы работают с такой скоростью, что 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 

Из-за свойств матриц определяется тип математических операций, которые могут быть с ними выполнены, так что это должно быть выполнено извне.

0 голосов
/ 01 июня 2010

прочитайте публикации ACM и IEEE для исследовательских идей

...