Русские вычислители

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Язык V (онже ЯЗЧЩ)

Сообщений 1 страница 66 из 66

1

Сочиняю свой ЯП - подробности на www.vlang.ru.
Есть лямбды!!!

На сайте внизу есть ссылки.

0

2

Было бы здорово, чтобы на сайте убрали жёлтый цвет, сделали текст крупнее и без жирности. Читать очень тяжело.

0

3

Поясните, пожалуйста, Ваш язык, это просто перевод языка с добавлением своих конструкций? То есть, Ваш компилятор, это интерпретатор или реальный компилятор? Или это например, компилятор Си, Вы пишите по-русски код, Ваша программа переводит на Си и компилятор Си уже собирает программу?

Не нашёл где скачать под Линукс, чтобы протестировать.

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

0

4

Знаете, большой минус даже не в том, что нужно без конца переключать раскладку для написания V кода. А то, что дальше всё равно многое нужно писать не на Русском языке. Получается каша. Да, конечно плюс огромные, что CGI + Apache. И даже, предположу, что ваш сайт может быть Вы написали на V.

0

5

Знаете, мне всегда интересен ход мыслей автора языка. Смотрю, и сразу вопросы: в почему типы _Строка , _Стр8, _Стр8Б, _Байты носят именно такие названия? Я готов с этим согласиться, но при условии, что автор убедительно обоснует своё видение.

0

6

Infum написал(а):

Было бы здорово, чтобы на сайте убрали жёлтый цвет, сделали текст крупнее и без жирности. Читать очень тяжело.

Сделал.

Infum написал(а):

Поясните, пожалуйста, Ваш язык, это просто перевод языка с добавлением своих конструкций?

не понял

Infum написал(а):

То есть, Ваш компилятор, это интерпретатор или реальный компилятор?

все реально - это в x86 компилер.

Infum написал(а):

Или это например, компилятор Си, Вы пишите по-русски код, Ваша программа переводит на Си и компилятор Си уже собирает программу?

не - все своё

Infum написал(а):

Не нашёл где скачать под Линукс, чтобы протестировать.

под линуха нет, но возможно пойдет под Винсом.

Infum написал(а):

Если честно, немного складывается ощущение, что язык сложный, перегруженный.

он проще С++

Infum написал(а):

Знаете, большой минус даже не в том, что нужно без конца переключать раскладку для написания V кода.

есть пару символов "<" и ">", но существуют 3 синтаксиса 1) для кириллицы, 2) для латинян и 3) для математиков.

Юрий написал(а):

_Строка , _Стр8, _Стр8Б, _Байты

Это _$16, _$8, _$8_ и _01 только на кириллице

0

7

Infum написал(а):

И даже, предположу, что ваш сайт может быть Вы написали на V.

К сожалению ни единой строчки на серверной стороне данного сайта нет и не будет. В дальнейшем планируется еще 1 для динамики

0

8

Это _$16, _$8, _$8_ и _01 только на кириллице

Я в своём русификаторе C++ применил такие замены:

Код:
typedef    char                _7;
typedef    unsigned  char      _8;
typedef    short               _15;
typedef    unsigned  short     _16;
typedef    int                 _31;
typedef    unsigned  int       _32;

Я могу обосновать свой выбор. Цифра, фигурирующая в наименовании типа, описывает число битов, отведённое под значение. В unsigned  char  под значение отведено 8 битов, в char - 7 (один бит - под знак). Все логично, не правда ли? Что там делает знак подчёркивания? Имя типа должно быть идентификатором, т.е. начинаться или с буквы, или со знака "_". Выбрано последнее, поскольку оно не зависит от раскладки - так удобнее.

0

9

С "_" начинаются базовые типы, а они имеют иную природу нежели пользовательские.

Код:
~КакСтрока: // интерфейс
    _Строка В_Строку(КакСтрока);
.
~Строка(_Строка Стр): +(КакСтрока);
.
_Строка В_Строку(Строка Стр):
    _Строка лРез="";
    лРез=Стр.Стр;
    =лРез;
.
Строка Копия(Строка Стр):
    Строка лРез;
    лРез.Стр=Стр.В_Строку;
    =лРез;
.

Интерфейсы не работают с "_" типами.

0

10

С "_" начинаются базовые типы, а они имеют иную природу нежели пользовательские... Интерфейсы не работают с "_" типами.

Может, вопрос прозвучит глупо. Но почему нельзя отличить базовые типы, начинающиеся с "_", от небазовых, которые тоже можно начинать с "_"? В чём проблема-то?

0

11

Юрий написал(а):

Может, вопрос прозвучит глупо.

Все так все так

0

12

Мне тяжело читать исходник на этом языке. Но возможно, что это с непривычки просто.
Есть иностранные слова — это определённо недостаток для РЯПа. Также заметил непереведённые слова («If» и «Use», может быть, есть и ещё).

0

13

Сергей написал(а):

Также заметил непереведённые слова («If» и «Use», может быть, есть и ещё).

Есть 3 варианта ключевых слов и 2 варианта для базовых типов.

0

14

Код:
?Использовать("include.vsc") // присоединяет файл с кодом, исключает дублирование
_Счетчик Отобразить(_Строка) импорт _ОтобразитьСтроку;

?Шаблон Поток - ТипДляПотока ФнДляПотока(
*Поток(ТипДляПотока !ДП, (ФнДляПотока) ВП):
	={
	~ТОбертка__(_ ДП, (ФнДляПотока) ВП, _Счетчик Завершен, ФнДляПотока Результат):
                 // (ФнДляПотока) ВП - поле функционального типа
                // ФнДляПотока Результат - поле тип которого аналогичный типу возвращаемому функцией с именем ФнДляПотока
	.
	*Выполнить(ТОбертка__ Об):
                 Отобразить(_С"Начало выполнения потока"+"\н");
                 *лДП=Об.ДП;
                 лДП.ТипДляПотока:
                       Об.Результат=Об.ВП(лДП);
                       Отобразить(_С"Функция вычислена"+"\н");    
                 .
                 Об.Завершен=1;
                =0; // возврат результата
	.
	*Запустить(ТОбертка__ Об):
                *лРез=0;
                 -->Выполнить(Об):
                        Отобразить(_С"Поток запущен"+"\н");
                        лРез=1;
                .
                =лРез; // возврат результата
	.
	*Подождать(ТОбертка__ Об):
                 Пока Об.Завершен==0:
                        Отобразить(_С"Поток ожидается"+"\н");
                        приостановка 1;
                 .
                =0;
	.

	(ТипДляПотока !ДП, (ФнДляПотока) ВП):
                ТОбертка__ лТОбертка;
                лТОбертка.ДП=ДП._;
                лТОбертка.ВП=ВП;
                =лТОбертка;
	}(ДП, ВП);
.
)

~ТДанныеДляПотока2(_Счетчик А, Б, Ц):
.
*НовыеТДанныеДляПотока2(_Счетчик А, Б, Ц):
        ТДанныеДляПотока2 лТДанныеДляПотока;
         лТДанныеДляПотока.А=А; лТДанныеДляПотока.Б=Б; лТДанныеДляПотока.Ц=Ц;
         =лТДанныеДляПотока;
.

-> ПотокИсполнения(): // начало исполнения
	*лДанные2=НовыеТДанныеДляПотока2(1, 2, 3);
	*лПоток2=Поток(лДанные2) {(ТДанныеДляПотока2 !ДП):="Привет мир!!!"};
	Если Запустить лПоток2:
                Подождать лПоток2;
                Отобразить(_С"Результат: "+_С(лПоток2.Результат)+"\н");
	.
	<-0; // возврат кода завершения
.

Задавайте вопросы.

Отредактировано vic_one (01.03.2015 09:51:04)

0

15

После того как я вижу данную пакость так и хочется написать. Клавиатуру у автора отобрать к компьютеру не допускать. ;-)
Советую прочитать книгу - "Совершенный код". И исправить замечания.

1) Пример следует писать предмет ориентированным языком, а не обще-структурным. Т.е. надо использовать слова из той области которую решает задача, а не чисто программистские, общие термины. Т.е надо использовать термины у которых более узкий смысл, а не термины с широким смыслом. Т.е более конкретные термины.
2) Код должен быть осмысленным или как ещё говорят самодокументированным. Такой код не требует комментариев.
У вас присутствую комментарии что говорит о плохой продуманности названий.
3) Комментарии мне тоже не понравились. Комментарии должны пояснять суть написанного, его глубинный смысл. А не повторять то что и так следует из грамматики языка, т.е. а не дублировать код.
4) Избавится от стоп слов таких как "Для" и тп.
5) Уровень вложенности не должен превышать 3-х. 1 отлично 2- хорошо 3-удовлетворительно всё что больше плохо.
НовыеТДанныеДляПотока2 тут 5 что плохо.
1.  Новые
2.  Т
3.  Данные
4.  Поток
5. "2"
6)  Что означает в тексте кода смайлик "=0;" ?

Отредактировано Павиа (28.02.2015 17:09:07)

0

16

Павиа написал(а):

Пример следует писать предмет ориентированным языком, а не обще-структурным.

Очень предметно описано - возможно вы просто не смогли понять пример?

Павиа написал(а):

У вас присутствую комментарии что говорит о плохой продуманности названий.

судя по тому, что вы не поняли к чему я написал комментарии - вы еще не готовы к такому уровню обобщенного программирования.

Павиа написал(а):

Избавится от стоп слов таких как "Для" и тп.

Это о чем?

Павиа написал(а):

Уровень вложенности не должен превышать 3-х. 1 отлично 2- хорошо 3-удовлетворительно всё что больше плохо.

Где 4?

Павиа написал(а):

НовыеТДанныеДляПотока2

Это название функции - но раз это не ясно то можете не продолжать.

Павиа написал(а):

Что означает в тексте кода смайлик "=0;" ?

Это возврат значения из функции.
Общий совет - если не понятна суть примера, то свой монастырь не рекламировать - а то получается, что неучи учат мастеров.

0

17

vic_one
Вроде бы вы адекватный человек. Не будем переходить на личности и выяснять кто мастер, а кто неуч.  Если у меня и есть недочёты в моей стилистики, так они от того что я начитанный человек. А большинство не обладают достаточными знаниями для понимают того о чём я пишу. Поэтому и приходиться спускаться на уровень собеседника, чтобы они могли меня понять. Что порой для меня затруднительно. 

Так, вот Вам советую как сделать лучше.

Общий совет - если не понятна суть примера, то свой монастырь не рекламировать - а то получается, что неучи учат мастеров.


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

Сергей

Мне тяжело читать исходник на этом языке.

Видите, не я один пишу. Что читать ваш текст тяжело. А дело в чем я к примеру не считаю что язык ваш плохой. Но вот способ изложения текста у вас плохой. Как говорится за деревьями не видать леса.
Дело в том что у вас текст раздутый и смысл его теряется. От повторения слов ваш текст становиться трудно читать.
Согласитесь с тем что повторения одного и того же смысла не добавляет.

Очень предметно описано - возможно вы просто не смогли понять пример?

Считаю что недостаточно. Можно конкретизировать.

судя по тому, что вы не поняли к чему я написал комментарии - вы еще не готовы к такому уровню обобщенного программирования.

Нет, я не понял к чему пример.

Павиа написал(а):

Избавится от стоп слов таких как "Для" и тп.

Это о чем?

Это о русском языке. Не знаю как вам, а мне это режет слух. Если построить выборку по всем текстовым произведениям русского языка.
Корпус русского языка То можно видеть что в таком сочетании это слово не употребляется.
Да и если выкинуть его то смысл не меняется.
- НовыеТДанныеДляПотока2
- НовыеТДанныеПотока2

Я уже писал про бревна и лес. Эта имена функций и переменных можно сократить и дальше.
НовыеДанные2
или ещё короче
Данные2

Но всё равно это как-то похоже на "Татары не мы".
Как известно человек "думает словами" или фразами, а ещё иногда говорят образами. Так вот что-бы новый человек понял то что вы написали он должен видеть простые и известные конструкции. В данном случае их не видно.
Подумайте как надо переписать текст! Я думаю достаточно поменять названия переменных и функций и тогда всё будет понятно.

Где 4?

В группе всё что больше 3-х - плохо.

Что означает в тексте кода смайлик "=0;" ?

Это возврат значения из функции.

Хорошо я так и думал.
Тогда вопрос:

=0; // возврат результата
<-0; // возврат кода завершения

Зачем два разных знака препинания для двух одинаковых операций?
0 - это удачное завершение или неудачное?

Код:
*Выполнить(ТОбертка__ Об):
                 Отобразить(_С"Начало выполнения потока"+"\н");
Код:
-> ПотокИсполнения(): 
                // начало исполнения
Код:
*Запустить(ТОбертка__ Об):
                        Отобразить(_С"Поток запущен"+"\н");

В чём смысл использовать разные имена функций для одного действия?
И почему комментарий и константы отображения разные? Почему нет единообразия:
1) Я бы сделал везде протоколирования. А тут во втором участке кода идет комментарий.
2) И почему все таки протокол отличается? По идее событие одно, одно действие а значит и протокол должен быть однотипным.

Отредактировано Павиа (04.03.2015 22:05:55)

0

18

Давайте уважать друг друга, не переходить на личности. В вашей дискуссии увидел как правоту, так и неправоту с обеих сторон.

С одной стороны, обширные комментарии говорят о непродуманности изложения; в данном случае изложением является собственно текст программы. С другой стороны, комментарии предназначены для читателей, не слишком знакомыми с языком – им надо разжёвывать поподробнее. Поэтому в данном случае длинные комментарии вполне уместны. В учебниках тоже ведь не стесняются комментировать, и правильно делают.

Программу же и вправду надо излагать в более дружелюбном стиле, «_Строка В_Строку(КакСтрока)» - это масло масляное. Для именования функций можно активнее использовать глагольные формы. Впрочем, у автора есть право не прислушиваться.

"Татары не мы"

Можно вспомнить притчу о том, кто без греха и первым должен кинуть камень в грешницу:

Поэтому и приходиться спускаться на уровень собеседника что-бы они могли меня понять.  Где запятая? Почему "чтобы" через чёрточку?
Видите не я один пишу Где запятая?
я не понял к чему пример Где запятая?
Подумай-те Почему "подумайте" через чёрточку?
По идеи Неправильное падежное окончание: "по идее"?

Пишу не раздора ради, а справедливости для.

0

19

Павиа написал(а):

А большинство не обладают достаточными знаниями для понимают того о чём я пишу. Поэтому и приходиться спускаться на уровень собеседника что-бы они могли меня понять. Что порой для меня затруднительно.

Павиа написал(а):

Зачем два разных знака препинания для двух одинаковых операций?

Не утруждайтесь - это не ваш уровень. Вы как мифический мастер, но только вежливый.

Юрий написал(а):

«_Строка В_Строку(КакСтрока)» - это масло масляное. Для именования функций можно активнее использовать глагольные формы

"обстрОчить" всесто "В_Строку"?

В языке мощный подточечный синтаксис :
*=лНечто.В_Строку.Отобразить;

имена переменных, функций и типов произвольные.

0

20

Не утруждайтесь - это не ваш уровень

А не могли бы Вы вести себя повежливее? Если Вам не нравится критика, Вы не разделяете чьё-то мнение, то опровергайте критику, анализируйте тезисы оппонента. Нападайте на критику, но не на человека, который её высказал!

А что делает «_Строка В_Строку(КакСтрока)»? Если это strcpy(), то "копировать", если strcat(), то "соединить", если itoa(), то преобразовать.

0

21

Юрий написал(а):

то опровергайте критику, анализируйте тезисы оппонента

Да вы надо мной смеётесь? Бред анализировать?

Юрий написал(а):

А что делает «_Строка В_Строку(КакСтрока)»? Если это strcpy(), то "копировать", если strcat(), то "соединить", если itoa(), то преобразовать.

точно смеётесь.
strcpy - это как минимум КопироватьВ_Строку, strcat() - СоединитьВ_Строку, но нужно 2 параметра,  itoa() - ПреобразоватьВХЗЧто.

Отредактировано vic_one (04.03.2015 19:16:23)

0

22

vic_one

Да вы надо мной смеётесь? Бред анализировать?

Вообще-то это обще признанные советы.  Но вы даже не хотите учиться. Что печально.

Юрий
Всё гораздо проще и банальнее. Если по русскому языку и литературе мне ставили за сочинение двойную оценку. Так почему по программированию, я не должен делать так же? Так вот это мой путь учить людей тому как надо. 

По поводу грамматических ошибок в моих текстах. Это моё проклятье, от которых никак не получается избавится. Но если вы будете о них сообщать то я их исправлю.

0

23

Юрий

Юрий написал(а):

А что делает «_Строка В_Строку(КакСтрока)»? Если это strcpy(), то "копировать", если strcat(), то "соединить", если itoa(), то преобразовать.

Тут проблема. Не все языки поддерживают перегрузку функций. Когда под одним именем могут скрываться разные реализации.
Копировать строку,
Копировать массив.

Один из вариантов решения - это использовать сокращения. В английском языке сокращения очень распространены. И что меня удивляет как у них получается звуковые сокращения. А в Русском языке сплошь аббревиатуры из шипящих букв.

И плюс ещё наследство от первых вычислительных машин. В них было мало памяти и поэтому переменные не могли превышать 4- символа.
4 знака - первый фортран
6 или 8 знаков - в последующих версиях фортрана,  и куча языков 80-тых годов
от 16 до 32 знаков - в компиляторах 90-тых

Как итог думаю надо двигаться в сторону изобретения слов. Но новые слова отпугивают читателя.  Поэтому и приходиться использую "монотонные" длинные имена функций.

Отредактировано Павиа (04.03.2015 23:00:08)

0

24

Павиа написал(а):

Тут проблема. Не все языки поддерживают перегрузку функций. Когда под одним именем могут скрываться разные реализации.

Даже если поддерживают, то необходимо в имени функции указывать тип результата.

Павиа написал(а):

Что печально.

:crazy:

0

25

Да вы надо мной смеётесь? Бред анализировать?

Вы придумали новый язык и написали компилятор? Вы, вероятно, хотите пользоваться им не в одиночку, не правда ли? Тогда будьте терпеливы ко всем: и к тем, кто Вам кажется тупым, и к тем, кто кажется острым (именно кажется – по одной фразе нельзя судить о человеке целиком). Не важно на самом деле, понял ли человек Ваши идеи или нет – важно человеческое к нему  отношение. Если его не будет – значит Вы будете пользоваться своим языком в одиночку.

Точно смеётесь

Да нет, просто не совсем очевидная запись. Нет такого, что кинул один взгляд – и всё понятно. Вам, может, и понятно, потому что Вы – автор. Остальным – не совсем.

Всё гораздо проще и банальнее... Это моё проклятье.

Вполне Вас понимаю. У меня тоже не во всём порядок.

Один из вариантов решения - это использовать сокращения

«КпртьСтрк» - пойдёт в качестве замены «копировать строку»? Вместо «strcpy»? Арабы так пишут - у них нет гласных букв.

Даже если поддерживают, то необходимо в имени функции указывать тип результата.

Венгерская запись? Достаточно спорная вещь… Вот если бы тип результата в именах был бы не факультативным, а обязательным, тогда можно было бы отменить объявление типов: вместо «int value» – «intvalue», вместо «void func()» – «voidfunc()».

0

26

Юрий написал(а):

значит Вы будете пользоваться своим языком в одиночку.

Это программа минимум и она уже выполнена, я доволен. И теперь делюсь со всеми как есть. Возможно найдется еще 1.

Юрий написал(а):

Венгерская запись?

Если не указывать, то 2 функции с одинаковыми параметрами, но разным типами результата неразличимы без контекста.

В моем языке есть одно вспоможение для этого:

Код:
*Тип1 лА1=лЮ.Преобразовать; // но все равно придется писать тип
*Тип2 лА2=лЮ.Преобразовать; // но все равно придется писать тип
*лА3=лЮ.ВТип1; // так короче?
*лА4=лЮ.ВТип2; // так короче?

Отредактировано vic_one (05.03.2015 16:44:51)

0

27

Пример:

Код:
?Использовать("include.vsc") // присоединяет файл с кодом, исключает дублирование
?Use("include.vsc") // это макрос идентичный предыдущему, все макросы начинаются с символа "?"
 
Программа ИмяПрограммы():
     *СтатусЗавершения=0; // * означает создание нового имени переменной, тип которой получается из выражения
 
     _Байты лМассивБайтов(0,1,2,3,4,5,6,7);
	Каждый лЗначение,лИндекс++ из лМассивБайтов:
    Если лЗначение%2==0:
    	отображение(_С"лЗначение%2==0 лЗначение="+_С(лЗначение)+"\н");
    , Иначе если лИндекс%3==0:
    	отображение(_С"лИндекс%3==0 лИндекс="+_С(лИндекс)+"\н");
    , Иначе:
    	отображение(_С"лЗначение="+_С(лЗначение)+" лИндекс="+_С(лИндекс)+"\н");
    .
	.
 
     Конец СтатусЗавершения;
.

0

28

Доброго дня автору, ну и вообще всем участникам форума!
В синтаксис пока не начинал вникать, сначала есть более важные вопросы:

1. Исходники когда-нибудь будут открыты? Под какой лицензией?
2. Мало кто сейчас разрабатывает что-то с нуля. Вы начинали с нуля? Если нет, то можете коротко обрисовать, что взято за основу?
В плане разработки самого компилятора и в плане того, откуда брали идеи для языка?
3. Планы дальнейшего развития можете коротко обрисовать? Например, планируете ли связь с внешними библиотеками и если да, то как?

0

29

Автор этой ветки, наверное, забыл поставить галочку «Подписаться и следить за ответами в этой теме», поэтому не отвечает.

Можно было бы к Вашим вопросам ещё добавить ещё. Например, на чём написано, есть свод синтаксических правил и т.д. и т.п.

Сайт тоже не особо подробен. У Андрея Хохлова (http://avhohlov.narod.ru/), например, освещены многие аспекты компиляторостроения. Интересно получилось. Но у каждого своя метода.

Ещё заметил, что на какую страницу сайта http://www.vlang.ru/ не зайдёшь – везде одинаковая ссылка в адресной строке. Это, конечно, прикольно, но поисковые системы такое не любят. Это будет мешать продвижению сайта. Убеждаемся в этом: по запросу «язык программирования V» Яндекс не видит этот сайт на первой странице выдачи.

Ну да ладно, «каждый пишет, как он слышит, каждый слышит, как но дышит». Может, всё так и было задумано.

что взято за основу? … откуда брали идеи для языка?

Какие идеи легли в основу этого языка – это лучше автор расскажет. Но идеи – на то они и идеи, чтобы их рожать самостоятельно. Без своих идей обычно получается то же самое, что и у всех. Если набор ингредиентов ограничен, то новое блюдо придумывается редко. «Изюм возьмём из Паскаля, тесто – из Си, а сахарную пудру – из Хаскелла. Тяп-ляп, язык готов». Но если язык не содержит собственной изюминки, то интерес к нему трудно разогреть. Если, конечно, Вы не Microsoft или Google.

Отредактировано Юрий (18.11.2015 11:54:56)

0

30

budden
1. Исходники когда-нибудь будут открыты? Под какой лицензией?
2. Мало кто сейчас разрабатывает что-то с нуля. Вы начинали с нуля? Если нет, то можете коротко обрисовать, что взято за основу?
В плане разработки самого компилятора и в плане того, откуда брали идеи для языка?
3. Планы дальнейшего развития можете коротко обрисовать? Например, планируете ли связь с внешними библиотеками и если да, то как?

1) Да как общественное достояние. НО там такой АД, что пока не хочется плодить форки.
2) Конечно с нуля в 2000+ годах не создают, а воруют по черному. Когда я закончил первое приближение оказалась помесь всего на свете. У меня даже тройная диспетчеризация вызова функции есть как итерационная идея от двойной и динамическая генерация кода в рантайме как противовес всяким евалам.
3) Нашелся пробел в унификации языковых конструкций и действий - в лвнный момент торможу над обменом значения поля структуры с временным значением.
Внешние библиотеки не планирую подключать - это гигантская дыра в безопасности. Сейчас мне известно 2 или 3 фатальные ошибки в рантайме - деление на 0, доступ по индексу к пустому массиву и еще что то, мне хватает.

0

31

Юрий
Ещё заметил, что на какую страницу сайта http://www.vlang.ru/ не зайдёшь – везде одинаковая ссылка в адресной строке. Это, конечно, прикольно, но поисковые системы такое не любят. Это будет мешать продвижению сайта. Убеждаемся в этом: по запросу «язык программирования V» Яндекс не видит этот сайт на первой странице выдачи.
Это аякс и я в роботс_тхт подсказал поисковикам где еще поискать, а в выдаче нет из-за заговора поисковиков. Яндекс так пол года не мог проиндексировать, а потом вдруг раз и ОК.

0

32

Внешние библиотеки не планирую подключать - это гигантская дыра в безопасности.

Да, тут решение принимать непросто. Либо есть сторонние вещи, тогда безопасность - под честное слово посторонних людей. Либо ничего стороннего, но тогда всё придётся изобретать велосипед с нуля. Хотя вроде бы Вы писали:

Конечно с нуля в 2000+ годах не создают, а воруют по черному.

Вроде как в одно месте от стороннего отказываетесь, а в другом - таки нет.

Сейчас мне известно 2 или 3 фатальные ошибки в рантайме - деление на 0, доступ по индексу к пустому массиву и еще что то, мне хватает.

Ошибок переполнения нет? Типа

Код:
uint8 x = 128;
uint8 y = 128;
uint8 z = x+y;   // что получилось? Если ноль, то есть ошибка при переполнении.

0

33

Юрий
тогда безопасность - под честное слово посторонних людей.
вебсервисы и процессы доступны.

Вроде как в одно месте от стороннего отказываетесь, а в другом - таки нет.
Одно дело идеи тырить, а другое козла в огород запускать.

Ошибок переполнения нет?
это не ошибки - это фичи.

0

34

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

Всё же не помешает общее описание языка, которого я не нашёл.
Могу набросать план, возможно неполный.
1. Язык опасный (как С)/безопасный (как была бы Java при отсутствии в ней дыр)
2. Управление памятью: явное (как в C), подсчёт ссылок, сборка мусора, иерархия объектов (как в Tcl), гибриды
3. Возможность переноса на иные платформы (например, Linux, ARM)
4. ООП: классы, интерфейсы, есть ли множественное наследование, есть ли родовые функции
5. Шаблоны.
6. Статичность/динамичность: безбашенно динамичный (tcl, bash), очень динамичный (CL, FORTH), средне динамичный (Java,C), полностью статичный (таких не знаю языков).  Наличие/отсутствие REPL
7. Поддержка альтернативщины и экзотики: чистое ФП, логическое программирование, макросы в стиле CL и т.п. (я не всё знаю, чтобы мочь всё перечислить).
8. Ориентация на предметные области.
9. Инструментарий (отладчик, профайлер, IDE для разработки и ещё не знаю что бывает).

Вот такое описание не заменяется примерами кода. Ибо лично мне, перед тем, как вникать в примеры кода, требуется ещё обоснование,
а почему, собственно, я должен на это тратить время. Языков буквально тысячи, на все времени не хватит.

0

35

budden
1) Он как Раст, но со своими наворотами и фичами.
2) Считается, что все на стеке или по коллекциям которые на стеке лежат.
3) Возможно - все конструкции высокоуровневые.
4) ООП нет, но есть структуры с единичным наследованием по данным, функции, интерфейсы с виртуальными функциями и тройным диспатчингом.
5) Есть шаблоны с типовыми параметрами.
6) Динамика минимальна - можно генерировать в рантайме функции.
7) Есть лямбды, но нет замыканий.
8) CGI скрипт
9) ничего нет - это дорого.

Я отлаживаю скрипты подобно многим - логирование и вывод отладочной информации.

0

36

Понял. Стековый экстремизм - не мой вариант. Хотя, безусловно, имеет право на существование для определённых задач.

Спасибо за ответы и желаю удачи!

И это надо не на форуме ответить, а на сайте выложить, потому что эти вопросы возникают, думаю, у всех.

0

37

budden
Понял. Стековый экстремизм - не мой вариант.
Мнебы понять, что такое "Стековый экстремизм"  :(

0

38

Отказ от кучи.

0

39

budden написал(а):

Отказ от кучи.

Ну как сказать куча есть и большая, но указатель владения на каждую кусок памяти только один и находится в стековой иерархии. Кроме того ваше странное предположение противоречит многопоточным возможностям V.

0

40

Есть базовый тип "ссылка на пользовательский тип" и через него можно делать "нежесткие ссылки".

0

41

Всё же, если я правильно понял, то не считая того, как оно физически расположено, можно считать, что всё находится на стеке. С точки зрения логики, а не адресного пространства. Так?

0

42

budden написал(а):

можно считать, что всё находится на стеке.

да - как и всегда, как во всех ЯП этой вселенной. Разница в передаче владеющего указателя. В Java он отсутствует и вся ответственность за уничтожение объекта кучи ложиться на механизм мусоросборника, а в V уничтожение происходит при покидании переменной области своей видимости. Поэтому все долгоиграющие коллекции должны быть глобальными переменными.

0

43

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

0

44

budden написал(а):

ищу соратников для создания своего языка.

где читать про будущий ЯП?

0

45

46

пример CGI скрипта для загрузки картинок:

Код:
#!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

47

Нашёл в сети тему, начатую vic_one про язык V: ветка на форуме IXBT. На 88 страниц растянулись словопрения! Всё я не осилил, но временами смешно, временами - это сборник всех страхов и предрассудков, связанных с программированием на русском.

0

48

Юрий написал(а):

Нашёл в сети тему, начатую vic_one про язык V: ветка на форуме IXBT. На 88 страниц растянулись словопрения! Всё я не осилил, но временами смешно, временами - это сборник всех страхов и предрассудков, связанных с программированием на русском.

Местами там грустно, а еще она аккумулирует дебилов

0

49

Ну, зубоскальство никогда не исчезнет. Дал где-то слабину - тогда держись.

0

50

Могу разругать:
1. Точку вообще плохо видно, опасно её использовать.
2. Приоритет запятой выше, чем приоритет точки с запятой - противоестественно.

0

51

Для всех, страдающих предрассудками на тему программирования, есть ответ: 1С. Сейчас зарплаты 1С-ников, возможно, просели в связи с курсом и кризисом, но это отражение общего положения дел в стране. 1С - это упрямая история успеха, которую никак нельзя запихнуть под коврик. Пусть оппоненты обоснуют, как вопреки всему, Русский язык не помешал 1С достичь успеха. Они, конечно, скажут, что дело в бизнес-модели, но ничто не мешало тысячам других поставщиков бухгалтерских программ применить "правильный" Английский и такую же бизнес-модель. Тем не менее, конкуренты 1С растворились в небытии, а 1С живёт и процветает.

0

52

У меня один товарищ на 1С программирует. И удивляется порою: «У меня зарплата 1,5 раза выше, чем у программистов C++. Но я то знаю, что на C++ работать сложнее! Странно. Но я ж не буду отказываться от того, что дают». А в успехе 1С в немалой степени «виноват» русский язык. Было дело, работал я в одной конторе, конкурирующей с 1С. Писали на Си. Спросил руководство: «А если бы мы писали программы на кириллице, употребляя русские слова, может так было бы лучше?» Мне ответили, что было бы здорово. Но свой первый русификатор Си я написал только пару лет спустя. И осталась та контора без русского Си.

0

53

Юрий написал(а):

У меня один товарищ на 1С программирует. И удивляется порою: «У меня зарплата 1,5 раза выше, чем у программистов C++. Но я то знаю, что на C++ работать сложнее! Странно.

Странный у вас друг. Скорее всего нубас. А зарплата не зависит от сложности работы, а от ожидаемых работодателем от работника ответственности.

0

54

Код:
?Шаблон Клон - Тип1(
Функция Клон(Тип1 Т):
	Тип1 лРез;
	?Для Тип1.НомерПоля (
    ?Если Тип1.НомерПоля не * (
    	лРез.?Имя поля Тип1.НомерПоля = (Т.?Имя поля Тип1.НомерПоля);
    )
    ?Если Тип1.НомерПоля = * (
    	:{
        *лА=(Т.?Имя поля Тип1.НомерПоля);
        {Тип1 лРез, _лА_ *П: лРез.?Имя поля Тип1.НомерПоля >< П; =1}(лРез, Клон(Т.?Имя поля Тип1.НомерПоля));
    	} 
    )
	)
	=лРез;
.
)
Код:
?Шаблон ЗаполнитьИз - Тип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

55

Код:
:{
    *=глТСоСписокКЗ("А"=>1)("Б"=>2)("Т"=>"Привет ")("Б"=>"Пока ");
    *лФн={_0 А,Б, _Текст Т:=_С"Т=\"" + Т + "\" А="+ _С А + " Б="+ _С Б};
    *лП=("А"=>777)("Б"=>128)("Т"=>"Привет ");
    отображение(лП.Выполнить лФн ._С+"\н");
    *выаыв=("Т"=>"Пока ")("А"=>33)=>лФн;
    отображение(_С(("Т"=>"Пока ")("А"=>33)=>лФн)+"\н");
    отображение(_С(("Б"=>22)=>лФн)+"\н");
    отображение(Выполнить лФн ._С+"\н");
    *лФн2={_0 Сч, _Текст Б,Т:=_С"Т=\"" + Т + "\" Сч="+ _С Сч + " Б="+Б};
    отображение(Выполнить лФн2 ._С+"\н");
	}

0

56

Код:
?Оператор является("=")
Список ТСп(_Строка):
	Оператор "является" _является;
.
!ТСп пустым;
!ТСп заполненным;
Функция ТСп_является(ТСп сп1, сп2)(заполненным):
	Если __размер заполненным == 0:
    заполненным+=_С"";
	.
	Если __размер сп1 && __размер сп2:
    =1;
	.
	Если __размер сп1 == 0 && __размер сп2 == 0:
    =1;
	.
	=0;
.
Функция не(ТСп сп1):
	ТСп лРез;
	Если __размер сп1 == 0:
    лРез+=_С"";
	.
	=лРез;
.
Функция ТестЯвляется()(пустым,заполненным):
	ТСп лСписок;
	Если лСписок является пустым:
    отображение "лСписок пуст\н";
	.
	лСписок+=_С"";
	Если лСписок является не пустым:
    отображение "лСписок не пуст\н";
	.
	Если лСписок является заполненным:
    отображение "лСписок заполнен\н";
	.
	=0;
.
 

0

57

vic_one
Надо что-бы и другие люди вас понимали, вели диалоги. Я вас прошу к своим произведением добавлять описание на русском языке. Что за код? Что он показывает? Какую идею он несёт в массы.

0

58

Павиа написал(а):

vic_one
Надо что-бы и другие люди вас понимали, вели диалоги. Я вас прошу к своим произведением добавлять описание на русском языке. Что за код? Что он показывает? Какую идею он несёт в массы.

Пока нет цели учить неучей. Хочу показать специалистам, а они сюда не ходят, но я не отчаиваюсь.

Кстати вы в чём спец в программировании?

0

59

vic_one
Широкого профиля. За 15 лет чем только не увлекался. Компьютерное зрение,  численные алгоритмы, алгоритмы, компиляторы, программирование сетей.

0

60

vic_one написал(а):

ока нет цели учить неучей. Хочу показать специалистам, а они сюда не ходят, но я не отчаиваюсь.

Описание добавляет понимания. Не важно кто вас читает, специалист или нет. Люди видят предмет по разному, и воспринимают его через призму своих знаний и опыта.
Любой предмет, любая задача они многогранны. О разнообразии объектов можно почитать у Буча. Поэтому полезно описывать их с разных точек зрения. Само документированный код не исключает сопроводительной документации. Есть понятие домысла. А если вы опишите свои мысли, то домыслы, станут умыслами. Так как вы исключите разночтения, и разное понимание.
Поэтому помимо кода от программистов требуют ещё рисования пояснительных рисунков. А UML для одного объекта насчитывает около 15 разновидностей рисунков.

Пояснения от Буча

Споры рождаются от того, что все видят предметы по разному.
http://www.helloworld.ru/texts/comp/other/oop/pg151.gif
Даже если это простой предмет, люди могут концентрировать внимание по разному:
https://s1.postimg.org/88sjko9v3/image.png

0

61

Павиа
Широкого профиля.
И вот у вас лично не появилось понимания от самого кода? и вам требуется пояснить? что именно вам пояснить?

0

62

Само документированный код не исключает сопроводительной документации.

А он не самодокументированный:
"ТСп", "лРез", "лСписок" - х.з. что значат все эти буквы в начале.
ну ладно ещё, очевидна "\н", хотя понятно, что пакость редкостная.

Есть два отвратных способа наименований убивающих всякое желание разбираться в коде - венгерский и финикийский.

0

63

MihalNik1 написал(а):

Есть два отвратных способа наименований убивающих всякое желание разбираться в коде - венгерский и финикийский.

Есть минимум один просто кошмарный способ комментировать - утверждать невероятное и обобщать личные переживания на весь глобус.

0

64

vic_one
Не знаю по чему. Но тоже согласен, что венгерская и финикийская запись вызывает отвращение.
Но не суть. Я бы хотел узнать, что означают у вас знаки пунктуации, в каких случаях у вас ставится точка и другие знаки.

0

65

Павиа написал(а):

Я бы хотел узнать, что означают у вас знаки пунктуации, в каких случаях у вас ставится точка и другие знаки.

Какой кусок кода вас удивляет? Приведите его в следующем комменте. А так как и в других ЯП. ";" - конец выражения, а "." - конец блокового оператора. ":" - начало тела блокового оператора

0

66

Код:
_СписокТекста л_СписокТекста;
	л_СписокТекста+="С\н";
	л_СписокТекста+=(FnGen(
    {():=""}, _С
<<():= "2018\н";
.
>>))();
	л_СписокТекста+=(FnGen(
    {():=""}, _С
<<():= "годом!!!!!!!!!!!!!!!!!!!!!!!!!!!\н";
.
>>))();
	Каждый лТ++ из л_СписокТекста:
    отображение лТ;
	.

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»