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

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

Войти
Регистрация
Восстановить пароль
 
 
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
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
18.09.2015, 08:47  [ТС] #31
Цитата Сообщение от VLK Посмотреть сообщение
т.к. учить 2 языка это накладно, а тут всего один, это бы имело успех.
Это может Котлин. Но он на JVM на серверной стороне, что имеет свои минусы.

Добавлено через 7 минут
Цитата Сообщение от VLK Посмотреть сообщение
а что за фичи? можно пример.
Автоматический вывод типов всего и вся. Шаблоны и анонимные типы.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
sdfsdfs
<?; 
If a==1:{
    *НоваяПеременная="Привет мир!!!";
    *="Привет мир!!!".Print;
     *ЕщеОдна=Box("asdasd", 1, 0.1);
     *Список=ЕщеОдна.ВСписок;
     @Элемент,Индекс++ Список:
           Print("Элемент["+Индекс.AsString+"]="+Элемент._1);
     .
}
?>;
ваываыаыв
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
22.09.2015, 14:45 #32
Вот еще какую штуку я придумал, не знаю как оно будет вписываться в твой язык, смотри есть проблема - метод / функция должны возвращать набор данных допустим - int,string,bool, есть несколько решений этой проблемы:
Первый это создать под эти типы данных отдельный класс - громоздко, отдельный класс под пару переменных (свойств) что то внутри подсказывает что это не правильно.
Второй вариант из C#, там есть такая штука - Tuple ( http://msdn.microsoft.com/ru-ru/library/system.tuple(v=vs.110).aspx ) решает от части проблему, но все же не то.
Третий вариант который предлагает в будущем C# - http://habrahabr.ru/post/256825/ не знаю что сказать, как бы это не превратило код в не пойми что.

я вижу такой решение проблемы, нам нужен контейнер (специальный объект, ну или как в некоторых языках анонимный объект, без методов и конструкторов) для хранения данных, в C# мы можем создавать события, нам надо сначала объявить делегат, а потом под этот делегат объявить событие:

C#
1
2
3
delegate void DelegateToEvent(int rhs); 
 
public static event DelegateToEvent Alarm;
вот примерно по тому же принципу сделать, мы объявляем контейнер с данными так же как и делегат:

C#
1
2
public container MyContainer = { Name: "Vova", Age: 20, IsActive: true };
// со свойствами которые будут заданы по умолчанию
это будет означать что мы можем создавать контейнеры (объекты) с следующеми параметрами, ну а потом когда нам надо возвратить набор данных мы просто пишем:
C#
1
2
3
4
5
6
MyContainer a = new MyContainer { Name: "Zorro", Age: 500, IsActive: false };
// или можно убрать допустим IsActive и оно будет задано из свойств по умолчанию
 
MyContainer b = new MyContainer {}; // все параметры по умолчанию
 
return a;
какая то такая хрень.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
24.09.2015, 07:58  [ТС] #33
Все это есть.
И анонимные типы и генераторы.
PHP
1
2
3
4
5
*lList=Box(1, "2", 3.0).ToList;
lList+=Box(2, "3", 4.0);
*lList2=?Box(Name: "Zorro", Age: 500, IsActive: false).ToList;
lList2+=?Box(Name: "Zorro2", Age: 5002, IsActive: false);
);
Но все это нужно по библиотекам собрать, но синтаксис уже есть и работает.

Добавлено через 10 часов 15 минут
Цитата Сообщение от vic_one Посмотреть сообщение
lList2+=?Box(Name: "Zorro2", Age: 5002, IsActive: false);
должно выглядеть:
PHP
1
lList2+=lList2.NewItem?Set(Name: "Zorro2", Age: 5002, IsActive: false);
Добавлено через 5 минут
или
PHP
1
lList2+=lList2.NewItem.SetName "Zorro2" .SetAge 5002 .SetIsActive false;
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
26.09.2015, 09:58  [ТС] #34
Вот конкретная реализация:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
?Транслятор Box("comp.exe box.vsc");
?Транслятор Set("comp.exe set.vsc");
 
_Counter Print(_String) <- _ОтобразитьСтроку;
_String ToString(_Text) <- _ВСтрокуТекст;
_String ToString(_Counter) <- _СчетчикВСтроку;
 
Program Prog(): // начало исполнения
    *true=1;
    *false=0;
 
    *lB=?Box(Name: ToString"Zorro2", Age: 5002, IsActive: false, Box: ?Box(Name: ToString"Zorro2", Age: 5002, IsActive: false));
    If lB.IsActive==false:
        *=lB.?Set(Name: ToString"Привет мир!!!", IsActive: true, Box.IsActive: true);
        Print(__inString(lB)+"\n");
    .
 
    End 0; // возврат кода завершения
.
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
26.09.2015, 13:07 #35
vic_one, зная C++ на начальном уровне, C# более менее, а так же PHP и JS на нормально уровне (по крайне мере PHP), я вот не понимаю что там написано в этом коде.
Зачем такое делать?
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
26.09.2015, 14:46  [ТС] #36
Цитата Сообщение от VLK Посмотреть сообщение
зная C++ на начальном уровне, C# более менее, а так же PHP и JS на нормально уровне (по крайне мере PHP), я вот не понимаю что там написано в этом коде.
Зачем такое делать?
Что не понятно?
Будьте откровенны до конца.
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
26.09.2015, 14:55 #37
Цитата Сообщение от vic_one Посмотреть сообщение
Что не понятно?
Будьте откровенны до конца.
ну можно сказать все, я же не буду выделять все строчки по отдельности и писать что вот эта.

PS кстати я смотрел язык Rust, там как раз новомодный укороченный синтаксис, так вот там все понятно, в отличии от этого.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
26.09.2015, 15:15  [ТС] #38
Цитата Сообщение от VLK Посмотреть сообщение
ну можно сказать все, я же не буду выделять все строчки по отдельности и писать что вот эта.
многие не будут. но я именно вас не понял опять. если хочется вам написать собственное мнение - это хорошо. Повлияет ли, что ваш пассаж будет понят и одобрен - "50/50"
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
14.10.2015, 16:36  [ТС] #39
Все пользуются шаблоном "опционально"?
Применяя последние технологии в ЯП - такие как анонимные интерфейсы и встраивание интерфейса в существующие типы. Получил самый легковесный шаблон "опционально" - без обертования:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function GetIOptT1(_Counter val):
    *lRes=IOpt(New::T1(val));
    If val%2:
        =lRes;
    .
    =lRes.Error(777);
.
 
Function Get2IOptT1(_Counter val):
    *lRes=IOpt(GetIOptT1(val));
    *lInnerType=lRes.InnerType;
    lRes._lInnerType_:
// тут полезный код
    .
    Else:
        =lRes.Error(999);
    .
    =lRes;
.
0
castorsky
1971 / 1074 / 79
Регистрация: 29.11.2013
Сообщений: 3,354
17.10.2015, 21:04 #40
Цитата Сообщение от vic_one Посмотреть сообщение
Все пользуются шаблоном "опционально"?
Конечно не все, если я не ошибаюсь такое понятие как "шаблон" есть только в c++. Т.е. тот кто имеет счастье не писать на этом языке конечно не пользуется шаблонами вовсе. Это по сути костыль, добавляющий в язык абстракцию полиморфизма времени компиляции по той причине что таких абстракций изначально не предусмотрено. Если я правильно понял что Ваши шаблоны чем-то повторяют суть плюсовых шаблонов.
0
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
19.10.2015, 10:26  [ТС] #41
Цитата Сообщение от castorsky Посмотреть сообщение
Если я правильно понял что Ваши шаблоны чем-то повторяют суть плюсовых шаблонов.
Это просто текст с параметрами для замещения на конкретные типы. Это точно не жабадженерики.
но в прежнем моем посте "шаблон" - это заменитель слово pattern. и IOpt идейный аналог Optional из Java.
1
vic_one
47 / 7 / 0
Регистрация: 20.03.2015
Сообщений: 55
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
Сообщений: 55
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
Сообщений: 55
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
Сообщений: 55
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
22.10.2016, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2016, 19:18
Привет! Вот еще темы с ответами:

Синтаксис языка с++ - 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; и т.п. Допустим в...


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

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

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