Форум программистов, компьютерный форум, киберфорум
Наши страницы
Другие языки программирования
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/214: Рейтинг темы: голосов - 214, средняя оценка - 4.64
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
1

[V] Хорош ли синтаксис языка программирования V?

24.03.2015, 08:17. Просмотров 38783. Ответов 79

Создаю язык программирования для CGI и текстовых терминалов. Сайт www.vlang.ru. Ищу конструктивную критику синтаксиса языка.

Пример:
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
?Use("include.vsc") // присоединяет файл с кодом, исключает дублирование
_Счетчик Отобразить(_Строка) импорт _ОтобразитьСтроку;
 
?Шаблон Клон-Тип1(
    Тип1 Клон(Тип1 пА):
        Тип1 лРез;
        __ИзСтроки(лРез, пА.__ВСтроку, 0);
        =лРез;
    .
)
?Шаблон на-Тип1(
    Тип1 на(Тип1 *пА):
        =пА;
    .
    Тип1 на(Тип1 !пА):
        =пА;
    .
)
~ТРезультат(_0 А, Б, И):
.
~ТРезультат2(_0 А):
.
 
-> АвтоШаблоны(): // начало исполнения
    ТРезультат лТРезультат; лТРезультат.А=123; лТРезультат.Б=777; лТРезультат.И=100500;
    Отобразить(лТРезультат.Клон.на.__ВСтроку+"\н"); // "Клон" и "на" автоматически создаются
    ТРезультат2 лТРезультат2; лТРезультат2=999;
    Отобразить(Клон(на лТРезультат2).__ВСтроку+"\н"); // "Клон" и "на" автоматически создаются
    <-0; // возврат кода завершения
.
2
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2015, 08:17
Ответы с готовыми решениями:

Выбор языка программирования
Добрый день, посетители форума. Мой путь в программирование начался 2 года назад, но учить начал...

Ребят, презентация нового языка программирования ObjectScript
Сколько же существует всяких языков программирования, еще один? Ну можно и так сказать, а можно...

Что мне может дать знание языка Perl и чем он хорош?
Думаю начать изучать язык Perl. Чем то он мне понравился. Но думаю - стоит или нет? Поэтому решил...

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

Google выпустил первую версию своего языка программирования Go
Cостоялся официальный релиз первой стабильной версии экспериментального открытого языка...

79
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
19.10.2015, 10:26  [ТС] 41
Цитата Сообщение от castorsky Посмотреть сообщение
Если я правильно понял что Ваши шаблоны чем-то повторяют суть плюсовых шаблонов.
Это просто текст с параметрами для замещения на конкретные типы. Это точно не жабадженерики.
но в прежнем моем посте "шаблон" - это заменитель слово pattern. и IOpt идейный аналог Optional из Java.
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
28.11.2015, 16:33  [ТС] 42
пример CGI скрипта для загрузки картинок:
Fortran
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
#!vcomp.exe -td:"TEMP" -tdms:1000000000
* СохранитьЗагруженныйФайл(_Стр8 ИмяФайла):
    Если Длина(ИмяФайла):
        *лИмяФайла=ИмяФайла ВСтроку;
        *лСтрКуда="Upload\\"+лИмяФайла;
        *лРес=СВФ(лИмяФайла, лСтрКуда);
        Если лРес:
            Цикл 10:
                *лФ=Открыть("Upload\\Index.txt", _С"ab+");
                Если лФ:
                    ЗаписатьСтрокуUTF8(лФ, ВСтр8("./Upload/"+лИмяФайла+13+10));
                    Закрыть лФ;
                    Прервать цикл;
                , Иначе:
                    приостановка(10);
                .
            .
        .
        =лРес; 
    .
    = 0;
.
 
*ВывестиПростойЗаголовок(_Стр8 Куки):
<<Content-type: text/html
$Куки
 
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
>> $(Куки);
=0;
.
 
->CGI(_Стр8 СобственноеИмяФайла_Стр8, _Стр8 name, _Стр8 file_1):
    *лКМС=КМССР 0;
    
    ВывестиПростойЗаголовок(ВСтр8(ВСтроку ""));
    
    Если Длина file_1 > 0:
        "Имя файла $file_1.<br>" $(file_1);
        Если СохранитьЗагруженныйФайл file_1:
            "Файл $file_1 сохранен!!!<br>" $(file_1);
        .
    .
    
<<Имя скрипта:"$СобственноеИмяФайла_Стр8"<br>
>> $(СобственноеИмяФайла_Стр8);
 
<<  <form action="./start3.vsc" method="post" enctype="multipart/form-data">
        Имя:  <INPUT NAME= "name" VALUE= "$name"> <BR> 
        SELECT FILE NUMBER 1: <input type="file" name="file_1" value="$file_1"> <br>
        <input type="submit" value="Upload Files">
    </form>
>> $(name, file_1);
 
    Цикл 10:
        *лФ=Открыть("\\Upload\\Index.txt", _С"rb");
        Если лФ:
            @лСтр8 ПолучитьСтрокуUTF8(лФ):
<<<div>
    <img src="$лСтр8" alt="Удалён."  width="100px" style="float: left;">
</div>
>> $(лСтр8);
            .
            Закрыть лФ;
            Прервать цикл;
        , Иначе:
            приостановка(10);
        .
    .
 
    *лКМС_Стр8=ВСтр8("Время от старта = "+лКМС.ВСтроку+" мс.");
    *лКМС2=КМССР лКМС;
    *лКМС2_Стр8=ВСтр8("Время исполнения = "+лКМС2.ВСтроку+" мс.");
    
<<$лКМС_Стр8<br>
$лКМС2_Стр8<br>
>> $(лКМС_Стр8, лКМС2_Стр8);
 
    <-0;
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
14.08.2016, 17:43  [ТС] 43
1C
1
2
3
4
*лРез=СписокИз(Пара(9, 5)).Добавить(Пара(3, 4)).Добавить(Пара(3, 2)).{Сп.__сортировать{_Сп::_ Л,П:=Л._1>П._1 || (Л._1==П._1 && Л._2>П._2)}};
    @Эл,лИнд++ лРез:
        отображение("Эл["+(лИнд)+"]={_1:"+Эл._1.+", _2:"+Эл._2.+"}");
    .
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
04.09.2016, 14:53  [ТС] 44
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
?Шаблон Клон - Тип1(
Функция Клон(Тип1 Т):
    Тип1 лРез;
    ?Для Тип1.НомерПоля (
        ?Если Тип1.НомерПоля не * (
            лРез.?Имя поля Тип1.НомерПоля = (Т.?Имя поля Тип1.НомерПоля);
        )
        ?Если Тип1.НомерПоля = * (
            :{
                *лА=(Т.?Имя поля Тип1.НомерПоля);
                {Тип1 лРез, _лА_ *П: лРез.?Имя поля Тип1.НомерПоля >< П; =1}(лРез, Клон(Т.?Имя поля Тип1.НомерПоля));
            } 
        )
    )
    =лРез;
.
)
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
?Шаблон ЗаполнитьИз - Тип1 Тип2(
Функция ЗаполнитьИз(Тип1 Л, Тип2 П):
    *лРез=0;
    ?Для Тип1.НП1 (
        ?Для Тип2.НП2 (
            ?Если имена Тип1.НП1 и Тип2.НП2 равны (
                ?Если типы Тип1.НП1 и Тип2.НП2 равны (
                    ?Если Тип1.НП1 не пользовательский (
                        Л.?Имя поля Тип1.НП1 = (П.?Имя поля Тип2.НП2);
                        лРез=лРез+1;
                    )
                    ?Если Тип1.НП1 это пользовательский (
                        :{
                            *лА=(Л.?Имя поля Тип1.НП1);
                            {Тип1 Л, _лА_ *П: Л.?Имя поля Тип1.НП1 >< П; =1}(Л, Клон(П.?Имя поля Тип2.НП2));
                            лРез=лРез+1;
                        } 
                    )
                )
            )
        )
    )
    =лРез;
.
)
0
04.09.2016, 14:53
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
22.10.2016, 19:18  [ТС] 45
C
1
2
3
4
5
6
7
8
9
10
11
12
:{
        *=глТСоСписокКЗ("А"=>1)("Б"=>2)("Т"=>"Привет ")("Б"=>"Пока ");
        *лФн={_0 А,Б, _Текст Т:="Т=\"" + Т + "\" А="+ _С А + " Б="+ _С Б};
        *лП=("А"=>777)("Б"=>128)("Т"=>"Привет ");
        отображение(лП.Выполнить лФн ._С+"\н");
        *выаыв=("Т"=>"Пока ")("А"=>33)=>лФн;
        отображение((("Т"=>"Пока ")("А"=>33)=>лФн)+"\н");
        отображение((("Б"=>22)=>лФн)+"\н");
        отображение(Выполнить лФн ._С+"\н");
        *лФн2={_0 Сч, _Текст Б,Т:="Т=\"" + Т + "\" Сч="+ _С Сч + " Б="+Б};
        отображение(Выполнить лФн2 ._С+"\н");
    }
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
29.10.2016, 12:37  [ТС] 46
Определены 2 функции:
C
1
2
3
4
5
6
7
8
9
Функция ТестФн(_Строка *Стр):
    приостановка(1000);
    =Стр.КопияСоКЗ;
.
 
Функция ТестФн(ТАААА *Стр):
    приостановка(500);
    =Стр.КопияСоКЗ;
.
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
39
40
41
42
43
44
45
46
47
48
?Шаблон Ас_ - Тип1 (
Функция Ас_(Тип1 *Д):
    *лРез={
        Тип ТАс____(_0 Выполнена, {(Тип1 *Д):=Ас__(КопияСоКЗ Д)} Р, Тип1 Д):
            +(СоДляАс_);
        .
        Функция _Т(ТАс____ А):
            =0;
        .
        Функция Запустить(ТАс____ А):
            *лРез=0;
            -->{
                (ТАс____ А):
                    ?Если Тип1.0 не пользовательский (
                        А.Р=Ас__(А.Д.КопияСоКЗ);
                    )
                    ?Если Тип1.0 это пользовательский (
                        ЗаполнитьИзСоКЗ(А.Р, Ас__(А.Д.КопияСоКЗ));
                    )
                    А.Выполнена=1;
                    =0;
            }(А):
                лРез=1;
            .
            Если лРез==0:
                А.Выполнена=1;
            .
            =лРез;
        .
        Функция Результат(ТАс____ А):
            Пока А.Выполнена==0:
                приостановка 1;
            .
            =А.Р.КопияСоКЗ;
        .
        ():
            ТАс____ лРез; =лРез;
    }();
    ?Если Тип1.0 не пользовательский (
        лРез.Д=Д;
    )
    ?Если Тип1.0 это пользовательский (
        лРез.Д><Д;
    )
    Запустить лРез;
    =лРез;
.
)
и теперь можно:
C
1
2
3
4
5
6
7
Программа НовыеГоризонты(): // начало исполнения
    *лАс1=Ас_ТестФн("Привет мир 121321123123!!!\н"); // запуск функции в отдельном потоке
    *лАс2=Ас_ТестФн(НовыйТАААА("Привет мир 121321123123!!!\н"));
    отображение(лАс1.Результат+лАс2.Результат.Стр); // лАс1.Результат - ожидание возвращения результата
 
    Конец 0; // возврат кода завершения
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
30.12.2016, 07:59  [ТС] 47
C
1
2
3
4
5
отображение(
            (Ас_ТестФн("1\н").КАК "А")
            (Ас_ТестФн(НовыйТАААА("Привет мир 121321123123!!!\н")).КАК "Б")      
            =>{_Строка А, ТАААА Б:=А+Б.Стр}
        );
0
__py__
82 / 153 / 12
Регистрация: 29.02.2016
Сообщений: 859
30.12.2016, 22:20 48
Признаю только язык программирования с английскими операторами. Дико видеть всё на русском. Детям наверно понравится.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
02.01.2017, 08:36  [ТС] 49
Цитата Сообщение от __py__ Посмотреть сообщение
Дико видеть всё на русском
Не дичитесь - это вредно для кругозора.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
25.02.2017, 18:49  [ТС] 50
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*лА=НовыйТА(1, "Привет");
лА.(_Счетчик):
    лА._1=лА._1+1;
.
лА.(_Счетчик А, _Текст Б):
    лА.А=лА.А+1;
    отобразить(лА.Б);
.
лА.(_Счетчик !Сч, _Текст !Т):
    лА.Сч=лА.Сч+1;
    отобразить(лА.Т);
.
лА.(,_Текст):
    отобразить(лА._2);
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
07.04.2017, 19:35  [ТС] 51
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
39
?Оператор является("=")
Список ТСп(_Строка):
    Оператор "является" _является;
.
!ТСп пустым;
!ТСп заполненным;
Функция ТСп_является(ТСп сп1, сп2)(заполненным):
    Если __размер заполненным == 0:
        заполненным+="";
    .
    Если __размер сп1 && __размер сп2:
        =1;
    .
    Если __размер сп1 == 0 && __размер сп2 == 0:
        =1;
    .
    =0;
.
Функция не(ТСп сп1):
    ТСп лРез;
    Если __размер сп1 == 0:
        лРез+="";
    .
    =лРез;
.
Функция ТестЯвляется()(пустым,заполненным):
    ТСп лСписок;
    Если лСписок является пустым:
        отображение "лСписок пуст\н";
    .
    лСписок+="";
    Если лСписок является не пустым:
        отображение "лСписок не пуст\н";
    .
    Если лСписок является заполненным:
        отображение "лСписок заполнен\н";
    .
    =0;
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
15.04.2017, 20:17  [ТС] 52
Вышла новая версия: http://www.vlang.ru/files/test20170415.zip

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Тип ТА(_Строка А,Б):
.
Функция НовыйТА(_Строка А,Б):
    ТА лРез; лРез.А=А; лРез.Б=Б; =лРез;
.
Функция НовоеПрисвоение(): 
    :{
        *лА(А,Б)=НовыйТА("А","Б");
        *(А,Б)=НовыйТА("А","Б");
        *лЮ(А,Б)=НовыйТА("А","Б");
        отображение(лАА+лАБ+А+Б+"\н");
    }
    =0;
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
16.05.2017, 08:16  [ТС] 53
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
39
40
41
42
43
44
45
46
47
48
49
50
51
ТФФ FFF; FFF.F=5;
 
    отображение("Начало\н");
    *lF1=?CL(
        _Строка:
            *лА={{{FFF}}};
            @А++ лА.F:
                @Б++ лА.F:
                    @В++ лА.F:
                        ;{{=(А)+" "+(Б)+" "+(В)+"."}}
                    .
                .
            .
            {{=""}}
    );
    
    
    *лС2=?CL(
        _Строка:
            *лС={{{lF1}}};
            Цикл:
                *лСтр=Результат лС;
                Если лСтр=="":
                    Прервать цикл;
                .
                {{=лСтр+" ..."}}
            .
            {{=""}}
    );
 
    *лС3=?CL(
        _Строка:
            *лС={{{лС2}}};
            Цикл:
                *лСтр=Результат лС;
                Если лСтр=="":
                    Прервать цикл;
                .
                {{=лСтр+" !!!"}}
            .
            {{=""}}
    );
 
    Цикл:
        *лСтр=Результат лС3;
        Если лСтр=="":
            Прервать цикл;
        .
        отображение лСтр;
        отображение "\н";
    .
0
Tklwegsd
Эксперт 1С
795 / 570 / 197
Регистрация: 24.07.2013
Сообщений: 1,987
16.05.2017, 19:12 54
Цитата Сообщение от vic_one Посмотреть сообщение
Создаю язык программирования для CGI и текстовых терминалов. Ищу конструктивную критику синтаксиса языка.
Конструктива никакого не выдам. Но выглядит ужасно, сплошные скобки, точки, вопросики, звездочки, подчеркивания, и т.д.
Brainfuck какой-то.
Прошу прощения, что вторгся в Ваш монолог.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
17.05.2017, 20:06  [ТС] 55
Tklwegsd, Но выглядит ужасно, сплошные скобки, точки, вопросики, звездочки, подчеркивания, и т.д.
Где иначе?
0
__py__
82 / 153 / 12
Регистрация: 29.02.2016
Сообщений: 859
22.05.2017, 11:16 56
Любой программист создавший свой язык может считать себя лучшим среди программистов. Но хороший язык делает его в 1000 раз лучшим. Попробуйте, удачи!

Добавлено через 6 минут
Для обычного человека хороший язык тот, которому может научиться даже обезьяна. К примеру мне уже хочется что-то поинтереснее и посложнее. Необычного и непохожего на python с javascript (haskell).
А у других другой подход. Не хотят изучать языки отличающиеся сильно от привычного синтаксиса.
А вообще новый язык изучают, чтобы научиться чему-то новому. Чему у Вашего языка можно научиться будет?
Изучаю haskell потому, что это язык для настоящих исследователей функционального программирования и написан учёными.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
24.05.2017, 18:50  [ТС] 57
Цитата Сообщение от __py__ Посмотреть сообщение
Но хороший язык делает его в 1000 раз лучшим. Попробуйте, удачи!
Что попробовать?

Цитата Сообщение от __py__ Посмотреть сообщение
Не хотят изучать языки отличающиеся сильно от привычного синтаксиса.
не могут. Устали и хотят продолжать без изменений.

Цитата Сообщение от __py__ Посмотреть сообщение
Чему у Вашего языка можно научиться будет?
Встроенная многопоточность и мощные макросы, что может быть прекраснее.

Цитата Сообщение от __py__ Посмотреть сообщение
А вообще новый язык изучают, чтобы научиться чему-то новому.
всё новое - это хорошо распиаренное старое.

Когда появился "реакт". Я таки вспомнил начало своего пути - там тоже были подобные трюки. А теперь вот у каждой обезъяны на это есть свой взгляд. Жрёт данный подход ресурсы, а профит есть только при минимальном использовании, но они ещё не нашли такой вывод. А в дальнейшем придут и разоблачат.

Цитата Сообщение от __py__ Посмотреть сообщение
Изучаю haskell потому, что это язык для настоящих исследователей функционального программирования и написан учёными.
Это конечно забавно, но с практической стороны лучше уж Ерланг.

Приводил выше примеры - 0 вопросов по примерам. Уровень у читателей низкий.
0
Dmitriy_M
1435 / 1315 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
28.05.2017, 19:42 58
Цитата Сообщение от vic_one Посмотреть сообщение
Встроенная многопоточность и мощные макросы, что может быть прекраснее.
Теперь знаем, что это язык для говнокода
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 58
28.05.2017, 19:58  [ТС] 59
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Теперь знаем, что это язык для говнокода
Вы видимо знаток данного стиля. И вероятно сможете привести лишённый данного стиля ЯП.
0
Dmitriy_M
1435 / 1315 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
29.05.2017, 11:37 60
vic_one, мне достаточно посмотреть на ваши примеры, а именно как вы именуете переменные.
CGI+Apache было актуально в двухтысячные.
0
29.05.2017, 11:37
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2017, 11:37

Синтаксис какого языка программирования наиболее читабелен?
Здравия всем! Пытаюсь тут ЯП пилить, но вот проблема, не могу подобрать синтаксис. Скажите,...

По русскому названию языка программирования определить английское название этого языка
Задача на перечисляемый тип P=(ада, бейсик, модула2, лисп, паскаль, пл2, фортран); A=(ada, basic,...

С какого языка стоит начать обучение? С языка программирования Pascal?
Здравствуйте. Хотелось бы больше знать о компьютерной безопасности, в частности, о...


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

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

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