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

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

24.03.2015, 08:17. Просмотров 9887. Ответов 77

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

http://www.cyberforum.ru/other-lang/thread2035331.html


Пример:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2015, 08:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос [V] Хорош ли синтаксис языка программирования V? (Программирование):

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

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

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

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

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

77
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
19.10.2015, 10:26  [ТС] #41
Цитата Сообщение от castorsky Посмотреть сообщение
Если я правильно понял что Ваши шаблоны чем-то повторяют суть плюсовых шаблонов.
Это просто текст с параметрами для замещения на конкретные типы. Это точно не жабадженерики.
но в прежнем моем посте "шаблон" - это заменитель слово pattern. и IOpt идейный аналог Optional из Java.
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
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
Сообщений: 56
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
Сообщений: 56
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
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
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
Сообщений: 56
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
Сообщений: 56
30.12.2016, 07:59  [ТС] #47
C
1
2
3
4
5
отображение(
            (Ас_ТестФн("1\н").КАК "А")
            (Ас_ТестФн(НовыйТАААА("Привет мир 121321123123!!!\н")).КАК "Б")       
            =>{_Строка А, ТАААА Б:=А+Б.Стр}
        );
0
__py__
80 / 116 / 12
Регистрация: 29.02.2016
Сообщений: 735
30.12.2016, 22:20 #48
Признаю только язык программирования с английскими операторами. Дико видеть всё на русском. Детям наверно понравится.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
02.01.2017, 08:36  [ТС] #49
Цитата Сообщение от __py__ Посмотреть сообщение
Дико видеть всё на русском
Не дичитесь - это вредно для кругозора.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
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
Сообщений: 56
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
Сообщений: 56
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
Сообщений: 56
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С
682 / 495 / 168
Регистрация: 24.07.2013
Сообщений: 1,724
16.05.2017, 19:12 #54
Цитата Сообщение от vic_one Посмотреть сообщение
Создаю язык программирования для CGI и текстовых терминалов. Ищу конструктивную критику синтаксиса языка.
Конструктива никакого не выдам. Но выглядит ужасно, сплошные скобки, точки, вопросики, звездочки, подчеркивания, и т.д.
Brainfuck какой-то.
Прошу прощения, что вторгся в Ваш монолог.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 56
17.05.2017, 20:06  [ТС] #55
Tklwegsd, Но выглядит ужасно, сплошные скобки, точки, вопросики, звездочки, подчеркивания, и т.д.
Где иначе?
0
__py__
80 / 116 / 12
Регистрация: 29.02.2016
Сообщений: 735
22.05.2017, 11:16 #56
Любой программист создавший свой язык может считать себя лучшим среди программистов. Но хороший язык делает его в 1000 раз лучшим. Попробуйте, удачи!

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

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

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

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

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

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

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

По русскому названию языка программирования присвоить переменной английское название этого языка
Дан перечень названий языков програм. на русском и англ. языках.По русскому...

Выбор языка программирования для разработки среды программирования
Возникла мысль о создании ЯПа. Ныне популярные ЯПы не универсальны, либо...

Синтаксис языка с++
указать порядок вычислений и расставить скобки если нужно: х=7, b=5, c=7, d=2...

Синтаксис языка
Здравствуйте. Преподаватель задал вопрос - почему конкретно в этом случае можно...


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

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

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