Форум программистов, компьютерный форум, киберфорум
Наши страницы

Другие языки программирования

Войти
Регистрация
Восстановить пароль
 
 
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
#1

Новый язык программирования SPL - Программирование

20.05.2017, 16:30. Просмотров 2630. Ответов 83
Метки нет (Все метки)

Всем привет!

Я сейчас делаю новый язык программирования, называется SPL (Simple Programming Language).
Это высокоуровневый интерпретируемый язык, который реализован в виде UWP приложения для Windows 10.
Основное ядро языка уже готово. Желающие протестировать, поделиться своими соображениями и пожеланиями - добро пожаловать!

Для тех, кто знает английский язык - у меня уже написана книга про SPL, подробно описывающая структуру языка и снабженная примерами. На русский я ее еще не перевел, потому что пока это рабочий документ, книга постоянно дорабатывается и обновляется. А на английском она потому, что с английского языка ее потом будет проще перевести на русский, чем с русского на английский.

Также я готов обсуждать и отвечать на вопросы здесь, на форуме.

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

#.output("Hello, world!")

Печатает текст "Hello, world!". Символ "#" показывает, что функция принадлежит группе системных функций. Приведенная ниже программа печатает то же самое:

текст="Hello, world!"
печать=#.output
печать(текст)

Это пример условия, в котором если "a" больше 5, то в "b" заносится 1, иначе в "b" заносится 0:

? a>5
b=1
!
b=0
.

Это пример перехода на метку, где "->" это команда перехода, а метка указывается после символа ":":

-> метка
:метка

или так:

->1
:1

Это пример цикла, который печатает цифры от 1 до 10:

a=0
> a<10
a+=1
#.output(a)
<

Это пример определения и использования функции пользователя "diag". Программа в результате печатает число 5 (диагональ катетов длиной 3 и 4):

diag(x,y)<=#.sqrt(x^2+y^2)
#.output(diag(3,4))

Вот более сложный пример определения и рекурсивного вызова функции "f", которая рассчитывает факториал числа. Программа в результате печатает число 120 (факториал числа 5):

f(k)=
?k=1;<=1;.
<=k*f(k-1)
.
#.output(f(5))

В SPL очень много особенностей, некоторые из которых вы не найдете в других языках программирования.
Поскольку SPL я делаю в виде UWP приложения, то программа работает на любом типе устройства под управлением Windows 10, а программы пользователя автоматически синхронизируются между вашими устройствами. Программа пока в самом начале развития, в стадии альфа-версии. Но там уже работает редактор кода и есть что тестировать в самом языке.

Если кто-нибудь захочет принять участие в бета-тестировании и поближе ознакомиться с SPL - пишите, я поделюсь линком для установки из магазина Microsoft Store.

Спасибо за внимание!

Добавлено через 50 минут
Линк на мою книгу по SPL (англ. яз.): http://kibernetik.pro/forum/viewtopic.php?f=71&t=1717
Текст постоянно дописывается и переписывается, пока язык в процессе разработки.
Все, что описано в книге, уже сделано и работает в альфа-версии. Все примеры программ - рабочие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2017, 16:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Новый язык программирования SPL (Программирование):

Новый язык программирования LUX - Программирование
*** Новый язык программирования LUX - особенности программирования. Язык программирования LUX 11-го мая 2006 года, на...

Язык программирования РС/Б - Программирование
На страничке http://www.rs-b.nm.ru можно скачить компилятор (написаный полностью на асм), примеры, и почитать доки. Мне интересно ваше...

Язык программирования Яр - Программирование
Разрабатываю полностью русскоязычный язык программирования для профессионального применения (не учебный). Основные достоинства: -...

Символьный язык программирования - Программирование
Символьный язык программирования. Преамбула. В этом маленьком тексте я попробую описать идею, которая у меня родилась ...

Язык программирования Kotlin - Программирование
Достаточно интересный новый (2011г.) язык Kotlin, предлагающийся компанией JetBrains (как? вы не слышали про JetBrains?:p:rtfm:) на замену...

Icon язык программирования - Программирование
кто знает, где скачать учебник по icon на русском?

83
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
16.08.2017, 17:03  [ТС] #76
Классическая задача - треугольник Флойда:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
floyd(5)
floyd(14)
 
floyd(n)=
  k = 0
  > r, 1..n
    s = ""
    > j, 1..r
      k += 1
      f = ">"+#.upper(#.log10((n-1)*n/2+j+1)+1)+">"
      s += #.str(k,f)
    <
    #.output(s)
  <
.
Результат работы:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  1
  2  3
  4  5  6
  7  8  9 10
 11 12 13 14 15
  1
  2  3
  4  5  6
  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31 32 33 34 35 36
 37 38 39 40 41 42 43 44  45
 46 47 48 49 50 51 52 53  54  55
 56 57 58 59 60 61 62 63  64  65  66
 67 68 69 70 71 72 73 74  75  76  77  78
 79 80 81 82 83 84 85 86  87  88  89  90  91
 92 93 94 95 96 97 98 99 100 101 102 103 104 105
0
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
19.08.2017, 16:49  [ТС] #77
Анимация кривой дракона:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
levels = 16
level = 0
step = 1
>
  draw(level)
  level += step
  ? level>levels
    step = -1
    level += step*2
  .
  ? level=0, step = 1
  #.delay(1)
<
 
draw(level)=
  mx,my = #.scrsize()
  fs = #.min(mx,my)/2
  r = fs/2^((level-1)/2)
  x = mx/2+fs*#.sqrt(2)/2
  y = my/2+fs/4
  a = #.pi/4*(level-2)
  #.scroff()
  #.scrclear()
  #.drawline(x,y,x,y)
  ss = 2^level-1
  > i, 0..ss
    ? #.and(#.and(i,-i)*2,i)
      a += #.pi/2
    !
      a -= #.pi/2
    .
    x += r*#.cos(a)
    y += r*#.sin(a)
    #.drawcolor(#.hsv2rgb(i/(ss+1)*360,1,1):3)
    #.drawline(x,y)
  <
  #.scr()
.
Новый язык программирования SPL
Новый язык программирования SPL
Новый язык программирования SPL
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
19.08.2017, 23:26  [ТС] #78
Пример создания массива массивов в SPL.
В данном примере сначала создаются массивы A, B и C.
Потом из этих массивов создается массив X и печатается его содержимое.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
a = [10]
b = [2,"Текст"]
c = [8.5,"Строка",3]
 
x = [a,b,c]
 
> i, 1..#.size(x,1)
  > j, 1..#.size(x[i],1)
    #.output("x[",i,"]","[",j,"]=", x[i][j])
  <
<
Содержимое консоли:

Objective-C
1
2
3
4
5
6
x[1][1]=10
x[2][1]=2
x[2][2]=Текст
x[3][1]=8.5
x[3][2]=Строка
x[3][3]=3
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
10.09.2017, 02:29  [ТС] #79
Пример универсальности переменных в SPL:

Objective-C
1
2
3
4
n = 1/3
#.output("n=",n)
n = 2^1000
#.output("n=",n)
Результат:

Objective-C
1
2
n=0.333333333333333
n=10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
13.09.2017, 01:30  [ТС] #80
Папоротник Барнсли:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
w,h = #.scrsize()
x,y = 0
>
  r = #.rnd(100)
  ? r<85, x,y = f2(x,y)
  ? r!<85 & r<92, x,y = f3(x,y)
  ? r!<92 & r<99, x,y = f4(x,y)
  ? r!<99, x,y = f1(y)
  #.drawpoint(x/10*w+w/2,h-y/10*h,0,0.5,0,0.1)
<
f1(y) <= 0, 0.16*y
f2(x,y) <= 0.85*x+0.04*y, -0.04*x+0.85*y+1.6
f3(x,y) <= 0.2*x-0.26*y, 0.23*x+0.22*y+1.6
f4(x,y) <= -0.15*x+0.28*y, 0.26*x+0.24*y+0.44
Новый язык программирования SPL
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
19.09.2017, 03:33  [ТС] #81
Анимация фрактала hopalong. Благодаря такой раскраске цвета переливаются подобно калейдоскопу.
Objective-C
1
2
3
4
5
6
7
8
9
10
11
a = 1 ; b = 3 ; c = 36 'change me
w,h = #.scrsize()
x,y = 0
i = 0
#.drawrotate(w/2,h/2,#.pi/4)
>
  x,y = f(x,y)
  #.drawpoint(x+w/2,y+h/2,#.hsv2rgb(i,1,1):3)
  i += 0.0001
<
f(x,y) <= y+#.sign(x)*#.sqrt(#.abs(.b*x-.c)), .a-x
Новый язык программирования SPL
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
21.09.2017, 09:10  [ТС] #82
Фрактальный генератор деревьев:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#.scrclear(0.7,0.8,1)
w,h = #.scrsize()
tree(w/2,h,#.pi*1.5,h*0.27)
 
tree(x,y,a,b)=
  ? b<1, <=
  x1 = x+b*#.cos(a)
  y1 = y+b*#.sin(a)
  p = b*(#.rnd(0.15)+0.85)
  ? p<.h*0.1 'leaf
    #.drawcolor(#.hsv2rgb(120,#.rnd(.5)+.5,#.rnd(.6)+.3):3,.5)
    #.drawsize(.h/80)
    #.drawline(x,y,x1,y1)
  ! 'branch
    #.drawcolor(0.6,0.25,0)
    #.drawsize(p/6)
    #.drawline(x,y,x1,y1)
    #.drawcolor(0.5,0.2,0)
    #.drawsize(p/18)
    #.drawline(x-p/18,y,x1-p/18,y1)
  .
  > i, 0..9-#.rnd(7)
    s = #.rnd(b*0.85)+b*.15
    da = 1-#.rnd(1)*2
    a1 = a+0.75*da
    x1 = x+s*#.cos(a)
    y1 = y+s*#.sin(a)
    db = 1-#.abs(da)*0.05
    tree(x1,y1,a1,(p-.h*0.01-#.rnd(.h*0.06))*db)
  <
.
Новый язык программирования SPL
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
12.10.2017, 17:48  [ТС] #83
Фрактал Снежинка
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
levels = 5
w,h = #.scrsize()
flake(w/2,h/2,#.min(w,h)/4,0)
flake(x,y,r,n)=
  > i, 1..12,2
    a = #.pi/6*i
    x1 = x+r*#.cos(a)
    y1 = y-r*#.sin(a)
    #.drawline(x,y,x1,y1)
    ? n<.levels, flake(x1,y1,r/3,n+1)
  <
.
Новый язык программирования SPL
1
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
05.01.2018, 01:02  [ТС] #84
Приложение опубликовано в общем доступе в Microsoft Store: https://www.microsoft.com/ru-ru/store/p/spl/9nf9tncg82p1?rtc=1
0
05.01.2018, 01:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2018, 01:02
Привет! Вот еще темы с ответами:

Что за язык программирования? - Программирование
что за язык программирования &gt; restart:with(networks): &gt; new(G):V:=$1..14:addvertex(,G): &gt; v1:=1:#источник &gt;...

Определить язык программирования - Программирование
:umnik: #!/usr/bin/env python # -*- coding: utf-8 -*- def Cord ( char ) : num = ord(char) if num &lt; 32 : ...

Язык программирования GRASS - Программирование
У кого-нибуть есть информация по этому языку программирования? Поисковые системы выдают информацию что что это какой-то бейсико-подобный...

Язык программирования Pike - Программирование
Пайк (англ. Pike — «щука») — динамический интерпретируемый объектно-ориентированный язык программирования с C/C++-подобным синтаксисом. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
84
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru