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

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

Войти
Регистрация
Восстановить пароль
 
 
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
#1

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

24.03.2015, 08:17. Просмотров 6036. Ответов 76

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

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

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

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

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

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

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

76
castorsky
1971 / 1074 / 79
Регистрация: 29.11.2013
Сообщений: 3,354
30.03.2015, 21:40 #16
forth, scheme, ml (ocaml объектно ориентированный наследник)
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
31.03.2015, 08:02  [ТС] #17
Цитата Сообщение от castorsky Посмотреть сообщение
forth, scheme, ml (ocaml объектно ориентированный наследник)
Это для меня альтернативная вселенная. Я предпочитаю императивный подход с элементами функциональшины. Даже ООП в полной мере не использую - только базовые полезные свойства (наследование и интерфейсы).
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
15.05.2015, 20:34  [ТС] #18
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
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
?Использовать("include.vsc") // присоединяет файл с кодом, исключает дублирование
 
Тип ТА(_0 А):
    "=" Скопировать;
.
* НовыйТА(_0 А):
    ТА лТА;
    лТА.А=А;
    =лТА;
.
*Скопировать(ТА Л,П):
    Л.А=П.А;
    =Л.А;
.
 
?Шаблон ВСписок - Тип1(
    * ВСписок(Тип1 *Эл):
        *лСписок={
 
        Тип Сп___[Тип1]:    
        .
 
        ():
            Сп___ лСп___;
            =лСп___
        }();
        лСписок+=Эл;
        =лСписок;
    .
)
 
?Шаблон Примешать - Тип1 Тип2 Фн1(
    Тип1 Примешать(Тип1 Эл, Тип2 Зн, (Фн1) Фн):
        ={
 
        Тип _Примесь Тип1+(Тип2 _ЗнПримесь, (Фн1) _ФнПримесь):  
        .
 
        * _ПримесьВыполнить(Тип1 Эл, Тип2 Зн):
            Тип2 ЗнР;
            Эл._Примесь:
                Эл._ЗнПримесь=Эл._ФнПримесь(Эл.Тип1, Эл._ЗнПримесь, Зн);
                ЗнР=Эл._ЗнПримесь;
            .
            =ЗнР;
        .
        * _ПримесьДля(Тип1 Эл, Тип2 Зн):
            Эл._Примесь:
                =1;
            .
            =0;
        .
 
        (Тип1 Эл, Тип2 Зн, (Фн1) Фн):
            _Примесь лТ___;
            *лА=лТ___.Тип1;
            лА=Эл;
            лТ___._ЗнПримесь=Зн;
            лТ___._ФнПримесь=Фн;
            =лТ___;
        }(Эл, Зн, Фн);
    .
)
 
-> Примеси(): // начало исполнения
    *лСписок=ВСписок(НовыйТА(127));
    лСписок+=НовыйТА(999).Примешать(1){(ТА А, _0 Зн1, Зн2):=А.А+Зн1+Зн2};
    лСписок+=НовыйТА(1).Примешать("А"){(ТА А, _Строка Зн1, Зн2):=(А.А)+Зн1+Зн2};
    Повторить 10:
        @ лЭл++ лСписок:
            Если лЭл._ПримесьДля(0):
                отображение("лЭл.А="+(лЭл.А)+" Примесь="+_ПримесьВыполнить(лЭл, 1)._С+"\н");
            ,Иначе если лЭл._ПримесьДля(""):
                отображение("лЭл.А="+(лЭл.А)+" Примесь="+_ПримесьВыполнить(лЭл, _С"_")+"\н");
            .
        .
    .
    
    <-0; // возврат кода завершения
.
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
15.06.2015, 07:49  [ТС] #19
Еще 1 пример.
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
81
?Use("include.vsc") // присоединяет файл с кодом, исключает дублирование
 
?Template ToList - Type1(
Function ToList(Type1 rval_ret D1):
     *lres={
        List List__[Type1]:
            "+" Add;
        .
 
        Function List__Add(List__ rval_ret L, Type1 rval_ret R):
            L+=R;
            Return L;
        .
 
        Function List__Add(List__ lval L, Type1 rval_ret R):
            L+=R;
            Return L;
        .
 
        (): List__ lRes; Return lRes;
    }();
    lres+=D1;
    Return lres;
.
)
 
?Template Box - Type1(
Function Box(Type1 D1):
    Return {
        Type Box__(Type1 D1):
            "=" Set;
        .
 
        Function Box__Set(Box__ L, Box__ R):
            L.D1=R.D1;
            Return 1;
        .
 
        (Type1 D1):
            Box__ lRes; lRes.D1=D1;
            Return lRes;
    }(D1);
.
)
 
?Template Box - Type1 Type2(
Function Box(Type1 D1, Type2 D2):
    *lRes= {
        Type Box__(Type1 D1, Type2 D2):
            "=" Set;
        .
 
        Function Box__Set(Box__ L, Box__ R):
            L.D1=R.D1; L.D2=R.D2;
            Return 1;
        .
 
        (): Box__ lRes; Return lRes;
    }();
    lRes.D1=D1; lRes.D2=D2; 
    Return lRes;
.
)
 
 
Program НовыйСинтаксис(): // начало исполнения
    *fnPrint={(_String S):=отображение S}; // лямбда!!!
 
    *lList=Box(1).ToList+Box(2)+Box(3);
    *lListP1=lList+Box(4)+Box(5);
    @ lBox, lInd++ lListP1:
        fnPrint("lBox["+(lInd)+"].D1 = "+(lBox.D1)+"\n");
    .
 
    *lList2=Box(1, "первый").ToList+Box(2, "второй")+Box(3, "третий");
    @ lBox, lInd-- lList2:
        fnPrint("lBox["+(lInd)+"].D1 = "+(lBox.D1)+" D2="+lBox.D2+"\n");
    .
    
    End 0; // возврат кода завершения
.
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
28.07.2015, 09:18  [ТС] #20
F#
1
2
*fnPrint={(_String S):=отображение S}; // лямбда!!!
*fnPrint2={_String S:=отображение S}; // теперь и без скобок вокруг параметров
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
02.08.2015, 14:15  [ТС] #21
Теперь можно использовать {}
Fortran
1
2
3
4
Function List__Add(List__ rval_ret L, Type1 rval_ret R):{
            L+=R;
            Return L;
        }
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
16.08.2015, 07:42  [ТС] #22
Фунция как результат вызова функции:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function TFn1(_Counter F):
    Return F+1;
.
 
Function TFn2(_Counter F):
    Return F+2;
.
 
Function TFn1_TFn1(_Counter Cond, (TFn1) fn1, (TFn1) fn2):
    If Cond:
        Return fn1;
    .
    Return fn2;
.
 
Function CallIf(_Counter Cond, F):
    Return TFn1_TFn1(Cond, TFn1, TFn2)(F);
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
17.08.2015, 18:14  [ТС] #23
Начал реализацию eval:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*fn_StringIn_String={_String S:=S+"\н"};
    _String lParam="!!!!!!!!!!!!!!!!!!";
    _String lStr_=
<<  
_String S:
    Return S+" lStr_lParam\н";
.
>> (lParam);
    *lNewFn=FnGen(fn_StringIn_String, lStr_);
    If lNewFn==fn_StringIn_String:
        ("Не удалось\n".ToString).Print;
    .
    Else:
        lNewFn("Привет мир!!!".ToString).Print;
    .
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
30.08.2015, 15:33  [ТС] #24
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Type T1(_Counter F):
.
 
_Counter Set(T1 it, _Counter F):
    *lOld=it.F;
    it.F=F;
    Return lOld;
.
 
Program Prog(): // начало исполнения
    T1 lT1;
    *lOld3=ret_Set(lT1, 2).ret_print_Set(3).print_Set(4);
// у функций появились префиксы вида "ret_" "print_"
    Print("lOld3="+lOld3.ToString+"\n");
    Print("lT1.F(4)="+lT1.F.ToString+"\n");
 
    End 0; // возврат кода завершения
.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
14.09.2015, 07:19  [ТС] #25
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
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
106
107
_Counter Print(_String) <- _ОтобразитьСтроку;
_String ToString(_Text) <- _ВСтрокуТекст;
_String ToString(_Counter) <- _СчетчикВСтроку;
 
Type TFnBaseT(_String name):{
}
 
?Template TFnBaseExtT - Type1 FnType1(
    Function TFnBaseExtT(_String name, (FnType1) fn):{
        Return {
            Type TFnBaseExtT__ TFnBaseT+((FnType1) fn):{
            }
 
            (_String name, (FnType1) fn):
                TFnBaseExtT__ lTFnBaseExt__; 
                lTFnBaseExt__.name=name; lTFnBaseExt__.fn=fn;
                Return lTFnBaseExt__;
        }(name, fn);
    }
)
 
List LFnBaseT[TFnBaseT]:{
}
Var LFnBaseT gLFnBaseT;
 
?Template GetFn - Type2 FnType1(
    Function GetFn(_String name, (FnType1) fn)(gLFnBaseT):{
        *lForT=TFnBaseExtT(name, fn);
        @el,ind++ gLFnBaseT:
            If el.name==name:
                el._lForT_:
                    Print("Попалась "+name+"\n");
                    Return el.fn;
                .
            .
        .
        gLFnBaseT+=TFnBaseExtT(name, fn);
        Return fn;
    }
    Function GetFn(_Text name, (FnType1) fn):{
        Return GetFn(name.ToString, fn);
    }
)
 
?Template SetFn - Type2 FnType1(
    Function SetFn(_String name, (FnType1) fn)(gLFnBaseT):{
        *lForT=TFnBaseExtT(name, fn);
        @el,ind++ gLFnBaseT:
            If el.name==name:
                el._lForT_:
                    el.fn=fn;
                    Print("Попалась "+name+"\n");
                    Return 1;
                .
            .
        .
        gLFnBaseT+=TFnBaseExtT(name, fn);
        Return 0;
    }
    Function SetFn(_Text name, (FnType1) fn):{
        Return SetFn(name.ToString, fn);
    }
)
 
?Template CreateList - Type2(
    Function CreateList(Type2 t2):{
        Return {
            List List__[Type2]:.
 
            ():
                List__ lList__;
                =lList__;
        }();
    }
);
 
?Template GetFns - FnType1(
    Function GetFns((FnType1) fn)(gLFnBaseT):{
        _String name;
        *lForT=TFnBaseExtT(name, fn);
        *lRes=CreateList(lForT);
        @el,ind++ gLFnBaseT:
            el._lForT_:
                lRes+=TFnBaseExtT(el.name, el.fn);
                Print("Нашлась "+el.name+"\n");
            .
        .
        Return lRes;
    }
)
 
Program Prog(): // начало исполнения
 
    *fn1=GetFn"A2"{_Counter A:=A+A};
    *fn2=GetFn"A3"{_Counter A:=A+A};
    Print(fn1(10).ToString+"==20\n");
    SetFn"A2"{_Counter A:=A*A};
    fn1=GetFn"A2"{_Counter A:=A+A};
    Print(fn1(10).ToString+"==100\n");
    Print(GetFn("A2",fn1)(11).ToString+"==121\n");
 
    @lel,ind++ GetFns{_Counter A:=A}:
        Print(ind.ToString+") "+lel.name+"(3)="+lel.fn(3).ToString+"\n");
    .
 
    End 0; // возврат кода завершения
.
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
16.09.2015, 22:40 #26
Можно вопрос, этот язык он будет кого заменять, РНР? ну в смысле что на нем в основном планируется программировать?
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
17.09.2015, 09:46  [ТС] #27
VLK, Можно вопрос, этот язык он будет кого заменять, РНР?
да - есть
PHP
1
2
3
4
5
6
7
sdfsdfs
<?; 
If a==1:{
    Print "Привет мир!!!"
}
?>;
ваываыаыв
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.09.2015, 15:15 #28
а в чем юмор, в чем его преимущество перед допустим тем же РНР?
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
17.09.2015, 19:20  [ТС] #29
Цитата Сообщение от VLK Посмотреть сообщение
а в чем юмор, в чем его преимущество перед допустим тем же РНР?
Строгая типизация переменных и компиляция в машинный код.
Много фичей для возможности "пережить" строгую типизацию.
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.09.2015, 20:07 #30
Цитата Сообщение от vic_one Посмотреть сообщение
Много фичей для возможности "пережить" строгую типизацию.
а что за фичи? можно пример.

Вообще для веба мне кажется есть потребность в языке который бы мог работать на стороне клиента (т.е. заменять JS) и при этом на стороне сервера (заменять РНР) с простотой работы как у РНР, но при этом желательно полностью объект-ориентированный, как C#.

т.к. учить 2 языка это накладно, а тут всего один, это бы имело успех.
0
17.09.2015, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2015, 20:07
Привет! Вот еще темы с ответами:

Синтаксис языка с++ - C++
указать порядок вычислений и расставить скобки если нужно: х=7, b=5, c=7, d=2 1) a=b+c*d&lt;&lt;2&amp;8 2) a&amp;077!=3 3)...

Синтаксис языка - HTML, CSS
Здравствуйте. Преподаватель задал вопрос - почему конкретно в этом случае можно написать так: content=&quot;text/html; charset=utf-8&quot; хотя...

1C 8.x Синтаксис языка 1с - 1С
Добрый вечер, недавно начал изучать 1с. Хотелось бы спросить. Есть ли у кого нибудь какой нибудь, файл где были бы изложены основы...

Синтаксис языка - C++
Добрый день,хочу научиться языку C++,но все время у меня в голове весят вопросы по типу &quot;Что означает это&quot;,&quot;А что это&quot; и т.п. Допустим в...


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

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

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