11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
1 | |
Новый язык программирования SPL20.05.2017, 16:30. Показов 7309. Ответов 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/vi... =71&t=1717 Текст постоянно дописывается и переписывается, пока язык в процессе разработки. Все, что описано в книге, уже сделано и работает в альфа-версии. Все примеры программ - рабочие.
0
|
20.05.2017, 16:30 | |
Ответы с готовыми решениями:
83
Новый язык программирования Новый язык программирования LUX Язык программирования Яр Язык программирования РС/Б |
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
21.05.2017, 19:01 [ТС] | 21 |
Я вроде нигде не писал, что стремлюсь создать самую распространенную в мире реализацию языка.
Я писал, что я не знаю такого приложения по программированию, которое бы одинаково легко работало и на компьютере, и на планшете, и на смартфоне. Поэтому я и делаю SPL - он одинаково просто и удобно работает на любом устройстве. Ну а поскольку пока существует только одна операционная система, которая это позволяет - то SPL пишется под нее. Сколько у Windows 10 пользователей меня вообще-то мало волнует, потому что мне вполне достаточно одного такого пользователя - меня - чтобы сделать эту программу. Если это окажется еще кому-то полезным - замечательно, для того и пост на этом форуме. Если же нет - то кто мешает просто пройти мимо и пользоваться тем, что вы перечислили? Теперь вернемся к тому, что вы написали: С# работает везде. У меня на смартфоне он не работает. Я же пишу приложение для программирования, которое работает на любом устройстве. Более того, SPL позволит публиковать программы, написанные на SPL, в магазине Microsoft как самостоятельные приложения. Это тоже довольно важный момент.
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
24.05.2017, 23:43 [ТС] | 22 |
Это ссылка на документацию к языку SPL на русском языке.
Документированы те возможности языка, которые уже реализованы в приложении. Документация пополняется по мере добавления новых функций.
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
25.05.2017, 18:45 | 23 |
Не по теме:
А-а-а, меню сверху… Как-то не интуитивно, может, лучше расположить всё на одной странице? Так искать по тексту удобней. А в начало поместить оглавление с перемоткой на нужный раздел. Добавлено через 8 минут
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|||||||||||
25.05.2017, 23:58 [ТС] | 24 | ||||||||||
Просто это документация из приложения, а там это меню сверху хорошо видно.
Сразу при первом открытии Справки никакая конкретно страница не открывается, потому что это будет либо дублирование того же меню сверху, или скорее всего ненужная пользователю информация, поскольку неясно за чем именно зашел пользователь. Как вы совершенно верно заметили, нельзя продублировать стек, приравняв ему объект. Но можно приравнять или передать в функцию линк на стек, что обеспечит использование именно этого стека. Если это будет нужно, то можно будет сделать функцию, дублирующую стек. Добавлено через 13 минут В качестве примера передачи стека в функцию, вот пример программы, которая описывает функцию, заносит в стек пару чисел и печатает результат работы этой функции при передаче в нее линка на стек - число "3": f(x)<=x+x s<=1;s<=2 #.output(f(~s)) Добавлено через 4 часа 7 минут В качестве примера привожу сравнение одного и того же кода на языке D, взятого из книги Андрея Александреску, и на языке SPL. В варианте кода на SPL я максимально сохранил стиль и орфографию оригинала, чтобы сравнение было наиболее адекватным. На языке D:
0
|
Модератор
|
|
27.05.2017, 18:07 | 25 |
Mr_K, в Ваш адрес было высказано много критики... По собственному опыту знаю - это не очень приятно. Тем не менее, рекомендую не обижаться, проанализировать то, что Вам написали, отбросить несущественное и сделать нужные выводы. И - главное - не бросайте проект, работайте!
1
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|||||||||||||||||||||||||||||||||||||||||
29.05.2017, 22:12 [ТС] | 26 | ||||||||||||||||||||||||||||||||||||||||
Я добавил новый вид цикла, и с учетом этого последнее сравнение будет выглядеть так:
D:
В SPL появились словари. Вот выдержка из документации: Если в качестве индекса одномерного массива используется текст, то такой массив работает как словарь.
В SPL объект может быть чем угодно - числом, текстом, функцией и т.д., поэтому если в объект еще ничего не занесли, то там ничего и нет. Это может быть правильно с точки зрения работы программы, но все же не очень удобно. Например в этом случае программа
Поэтому я сделал в SPL неявную инициализацию объекта. Это значит, что если исходя из контекста выражения можно понять, какой тип требуется от еще пока неопределенного объекта, то этот объект автоопределяется до 0 если это число или до "" если это текст. Таким образом, в приведенном выше примере программа не даст ошибки, определит объект "а" как число и в результате "а" станет 1. А следующая программа напечатает "2:0"
Для сравнения
Добавлено через 14 часов 3 минуты Линк на книгу в первом посте больше не действителен. Это теперь не актуально, потому что вся документация уже систематизирована и есть на русском языке (линк указан в теме выше). Добавлено через 17 часов 21 минуту На данный момент набор функций позволил написать программу подсчета и отображения самых часто встречаемых слов в Гамлете Шекспира. Текст программы на SPL:
32885 слов; 4634 уникальных слов 1 : the = 1091 2 : and = 969 3 : to = 767 4 : of = 675 5 : i = 633 6 : a = 571 7 : you = 558 8 : my = 520 9 : in = 451 10 : it = 421 11 : that = 405 12 : is = 363 13 : ham = 358 14 : not = 315 15 : d = 305 16 : his = 304 17 : this = 299 18 : with = 277 19 : but = 274 20 : for = 252
0
|
05.06.2017, 00:11 | 28 |
На смартфонах обычно андроид...
SPL будет работать под управлением андроида? Для мобильных платформ есть B4A, для компа PureBasic и другие диалекты. Тогда и на нулевой малине должно работать. Только для нее нет Windows 10... Каким методом? Сшиванием интерпретатора и кода программы? Или предполагается полноценная компиляция? Добавлено через 15 секунд На смартфонах обычно андроид... SPL будет работать под управлением андроида? Для мобильных платформ есть B4A, для компа PureBasic и другие диалекты. Тогда и на нулевой малине должно работать. Только для нее нет Windows 10... Каким методом? Сшиванием интерпретатора и кода программы? Или предполагается полноценная компиляция?
0
|
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 59
|
|
05.06.2017, 08:23 | 29 |
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
05.06.2017, 17:00 [ТС] | 30 |
Нет, пока планируется только для Windows 10.
СДК, представляющий собой работающий интерпретатор, в который копируются файлы SPL. Добавлено через 1 минуту На моем ноутбуке 7-летней давности время работы программы 0.4 секунды.
0
|
05.06.2017, 17:02 | 31 |
Т. е. защиты исходника никакой? Любой сможет вытащить исходник программы?
Скорость интерпретации надеюсь на приличном уровне? Заложена ли в интерпретатор поддержка многопоточности в программе? Тогда на большинстве смартфонов, планшетов и т. д. работать не будет.
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
05.06.2017, 17:20 [ТС] | 32 |
В СДК будет загружаться не исходник, а бинарный промежуточный код. Вытащить оттуда исходник не получится.
Тут сказать сложно, разве что сравнивать с какими-нибудь другими интерпретаторами. Насчет многопоточности пока вопрос открытый. Возможно в перспективе многопоточность будет, я это держу в уме. На моем смартфоне работает А за "большинством" я, как уже говорил, не гонюсь. Меня больше волнует универсальность платформы в принципе, чем у кого сейчас сколько андроидов.
0
|
05.06.2017, 19:07 | 33 |
Нужно предусмотреть ее поддержку, потому что потом придется много чего переделывать.
Если приложение работает на 1% смартфонов, то про универсальность лучше промолчать.
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
05.06.2017, 19:17 [ТС] | 34 |
Универсальность - это не мое личное определение. Это определение Microsoft. Поэтому советы подобного рода оставьте для них.
К тому же под универсальностью понимается не только поддержка смартфонов, но и устройств 2-в-1, которые пока есть только на Windows 10. А это на сегодняшний день перспективный рынок.
0
|
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 59
|
|
05.06.2017, 20:28 | 35 |
Mr_K, Где качнуть твой компилятор или что там у тебя есть?
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
|
05.06.2017, 20:45 [ТС] | 36 |
0
|
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 59
|
|
05.06.2017, 20:47 | 37 |
Mr_K, понятно - ничё у тебя нет. Я вот не стесняюсь и отдал компилятор на растерзание. http://www.vlang.ru/files/test20170525.zip
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
||||||||||||||||
06.06.2017, 00:11 [ТС] | 38 | |||||||||||||||
Пример функции, считающей факториал:
Хотя и так все понятно, но не удержался 印=#.output 阶乘(号)= ? 号!>1;<=1;. <= 号 * 阶乘(号-1) . 印(阶乘(5)) Поскольку все языковые замены встроенных системных функций можно сделать в отдельном файле и потом просто включать в любую программу с помощью команды $, то например при таком содержимом файла с именем 中文: 印=#.output текст программы будет выглядеть так: $中文 阶乘(号)= ? 号!>1;<=1;. <= 号 * 阶乘(号-1) . 印(阶乘(5))
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
06.06.2017, 08:49 | 39 |
Microsoft понятия не имеет, что такое универсальность.
Это что за устройства?
0
|
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
|
||||||
07.06.2017, 01:58 [ТС] | 40 | |||||
Пример работы графических функций.
Эта программа рисует график в виде случайной линии:
0
|
07.06.2017, 01:58 | |
07.06.2017, 01:58 | |
Помогаю со студенческими работами здесь
40
Язык программирования Pike Символьный язык программирования Icon язык программирования Что за язык программирования? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |