http://codingvault.org/forum/viewtopic. … d5a5dfc113 - начало
http://codingvault.org/forum/viewtopic. … p;start=60 - последняя страни
Отредактировано rusprog (23-03-2009 16:24:18)
Языки программирования с русским синтаксисом |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Языки программирования с русским синтаксисом » Язык Валентина » Интерпретатор языка Валентина
http://codingvault.org/forum/viewtopic. … d5a5dfc113 - начало
http://codingvault.org/forum/viewtopic. … p;start=60 - последняя страни
Отредактировано rusprog (23-03-2009 16:24:18)
Здесь я готов дать полную информацию по данному языку программирования и ответить на вопросы, связанные с ним.
Отредактировано utkin295 (30-01-2009 14:44:56)
Кратко об Valentina
1. Разработка ведется на Паскале (пока в Delphi, но чуть позже планируется миграция на Lazarus).
2. Поддержка очень длинных чисел (число значащих цифр ограниченно Integer), а это порядка миллиарда знаков.
3. В качестве языка программирования выступает русский (не перевод английских сокращений).
4. Текст программы приближен к естественной записи.
5. Отсутствие явного преобразования типов данных
6. Тип данных строки, посредством которых выполнены остальные.
Пример программы на языке Valentina
# - Тестовая программа - тест массивов и циклов
Создадим массив Утка. Здесь мы будем хранить свойства утки.
Создадим переменную Характеристика. С помощью этой переменной определим свойства этой замечательной птицы.
Создадим переменную Все_об_утках. Сюда мы поместим результат, а потом, сохраним его в файле.
Добавим в массив элемент Утка [тип] = птица
Добавим в массив элемент Утка [название] = 'утка'
Добавим в массив элемент Утка [имя]='Дональд Дак'
Добавим в массив элемент Утка [двигатель]= крылья
Добавим в массив элемент Утка [способ_передвижения]=полет
Добавим в массив элемент Утка [миграции]='сезонного типа'
Примечание: До этого мы осуществляли подготовительные операции
Для Характеристика подставляем индексы массива Утка. В цикле определим все характеристики птицы.
Все_об_утках=Все_об_утках & Характеристика & ' = ' & Утка [Характеристика] & конец_строки
Конец цикла. Результат накапливается в цикле.
Затем сохраним переменную Все_об_утках в файле 'утиные_истории.txt'
Отредактировано utkin295 (30-01-2009 19:54:53)
> ответить на вопросы
Прежде всего: отчего ж название нерусским алфавитом писано?
Для совместимости с не-Windows платформами. Позже, когда язык будет доведен до стандарта, планируется переход на Linux. Сам интерпретатор может быть перенесен посредством Lazarus это мультиплатформенная среда программирования языком которой является freepascal. В частности это позволит перенести язык на Lunux и клоны BSD.
Логично ли для обозначения команд использовать глаголы первого лица множественного числа и в будущем времени?
Valentina поддерживает множественность конструкций. Это значит, что вместо СОЗДАТЬ ПЕРЕМЕННУЮ Х можно использовать
СОЗДАЕМ ПЕРЕМЕННУЮ Х
СОЗДАДИМ ПЕРЕМЕННУЮ Х
ДОБАВИТЬ ПЕРЕМЕННУЮ Х
ДОБАВИМ ПЕРЕМЕННУЮ Х
ДОБАВЛЯЕМ ПЕРЕМЕННУЮ Х
в любом месте, где допускается данная конструкция. Аналогично и для массивов. Множественность конструкций пока находится в стадии разработки (однако последняя версия поддерживает любую из указанных конструкций). Множественность конструкций применима пока к некоторым составным конструкциям, позже их число будет расширено. Также многие конструкции (но не все) допускают использование комментария после точки.
> Для совместимости с не-Windows платформами.
Кого-то из нас явно глючит. И почему-то мне кажется, что не меня. Какое отношение платформа имеет к названию?
Ко мне обращался один любопытный, его проблема была в том, что он не мог открыть каталог с документацией из-за проблем с кодировкой в Linux. Тогда я переделал многие надписи и названия файлов. А так в том же ДОСе другая кодировка (это уже про название). Сам интерпретатор представляет собой один класс и его можно использовать не только в Windows. Для теста я попробовал болванку (тогда еще Valentina не была названием ) запустить в ДОС и увидел абракодабру Чтобы хоть как-то узнавать решил дать название на нерусском. Как видите это не принципиальный вопрос. Как только решится вопрос с кодировками, можно будет сделать и полностью русское название и имена файлов и каталогов, везде где это будет допустимо.
Кстати, на счет языка. Внутреннее устройство Valentina позволяет делать сменными названия конструкций. Это значит что можно организовать поддержку всех родственных языков (но к примеру, немецкий не получится, там предложения имеют строгую форму). Скажем украинцы смогут программировать по украински, используя украинские конструкции. По-крайней мере, чисто теоретически такая возможность сохраняется (побочный эффект множественности конструкций ).
Кроме того, в Valentina для приближения к более естественной записи используются незначащие лексемы. Они ни как не влияют на работу программы и служат для более быстрого восприятия алгоритма человеком.
Достигается это использованием перед конструкциями выражений:
Затем
Аналогично
Далее
Тогда
Сначала
Теперь
Иными словами конструкции
Затем Х=Х+1
и
Х=Х+1
эквивалентны между собой и приведут к одному результату.
> проблем с кодировкой
Проблемы с кодировками существуют лишь у ленивых программистов. В современных ОС должна использоваться одна кодировка: Уникод. В остальных случаях должны прилагаться инструменты для перекодировки. Кстати, в тему 8-битовой русской кодировки, смотрите её универсальный вариант в конце статьи о русском алфавите на Традиции: [traditio.ru/wiki/Русский_алфавит]. Остальные 8-битовые кодировки являются порождением либо отсталости, либо капитализма. Оправдывать же нерусское название (суть просто слово, независимо от того, где как пишется) путаницей в кодировках крайне нелепо и даже глупо.
Дело не в лени. Сначала надо чтобы хотя бы так заработало (то есть работает, но не все сделано ). А дальше исправим.
Дело не в лени. Сначала надо чтобы хотя бы так заработало (то есть работает, но не все сделано ). А дальше исправим
1. как тебе вики справка?? По твоему - имеет смысл так оформлять справочную систему??
2. Я не очено в этом понимаю, но может быть , чтобы не делать всё самому , в качестви среды разработки использовать Notepad++? а Валентину - оформить как плагин к нему??? Там есть подсветка , и сворачивание разворачивание кода - что очень удобно при разработке более менее больших программ.
Вот ссылка на НЕОФИЦИАЛЬНЫЙ дистрибутив Валентины
состоит из:
1. исходников Валентины версия 21
2. Вики справки по Валентине
3. EXE-шника - от версии 20!!!!
_Valentina_Wiki.zip - 1,64 Мб
В дальнейшем наверное имеет смысл собранный исполняемый файл вкладывать в архив вместе с исходниками, т.к. не у всех есть Дельфи, многие хотят просто посмотреть.
PS может быть ты будешь выкладывать ссылку на архив с последней версией не только на своём форуме но и здесь???
PSS
Для проектирования алгоритмов можете попробовать Дакон-редактор (грубо говоря редактор Блок-схем)
DRAKON_2009_01_25_Wiki.zip
- 1.39 Мб - Дракон от 2009.1.25 + wiki Спрака по дракону + Гернератор кода из Дракон-схем -> Оберон и СТАРАЯ версия Дракон-редактора которая с ним совместима.
Всё объеденино в один пакет.
Да, с этого момента я буду выкладывать последующие версии и здесь . Почему неофициальный? Пусть будет официальный! Но нужно придумать хранилище, для версий, чтобы люди не путались. Для начала можно просто ftp, а там и SVN попозже. Тогда все версии будут выкладываться именно здесь, а на том форуме будет ссылка .
Необходимо договориться об наименованиях версий. Только нужно учитывать, что речь идет об альфа-версиях, как самого интерпретатора, так и среды разработки.
Насчет NotePad++.... Я думал об этом, изучаю его возможности. Если подойдет, возможно так и поступим. Справка просто отлично! Пятерка с плюсом.
Физически файл пока всё равно придётся выкладывать на Народ.ру, т.к. этот хостинг не позволяет размещать архивы даже администратору. Только картинки.
По поводу версий - правь своё первое сообщение, а архив файла выкладывай на народ.ру. Только указывай версию ПО в названии архива чтобы небыло путаницы.
ОК, я думаю со временем все наладится.
http://narod.ru/disk/5432119000/Valentinapr.rar.html - очередная альфа. Добавлен еще один метод, улучшена подсветка синтаксиса, и еще кое-какие мелочи
В данный момент ведутся работы по корректной поддержки вложенности методов (в частности правильная обработка рекурсии).
Это альфа версия. Я не могу делать все сразу. Пока пытаюсь работать над подсветкой и автоформатированием. Ну там с большой буквы предложения и все такое. Но это относится только к среде разработки. Есть проблемы и в интерпретаторе. В текущей версии рекурсия не возможна. Источником проблемы является код, ответственный за разбор выражений (результат подпрограмм определяется не всегда). И затем необходимо проработать средства ввода с клавиатуры и вывода на экран. Поскольку я хочу, чтобы имелась возможность переноса интерпретатора на Linux, то это не самая легкая задача.
Кстати, вспомнил почему SaveReport. Сначала все кнопки именовались стандартно Button1, Button2 и т.п. (так проставляет Делфи, Валентина пишется на Паскале). Но я в них очень быстро стал путаться. И начал именовать как попало (в основном по английски). Потом мне это показалось тоже не удобным и часть кнопок стала называться по русски. А SaveReport так и остался по смешной причине. Надпись Сохранить отчет намного длинее и не помещалась в кнопку целиком . Но это не имеет значения, так как скоро все кнопки перейдут на панель инструментов. Обычных кнопок в среде разработке не будет.
Сама среда разработки появилась из набора проверочных функций. Мне понадобились средства для отладки интерпретатора, делать это напрямую утомительно - общее число строк кода около 15000 (вместе с кодом среды разработки).
Не спорю, исправлюсь
Очередная альфа с документацией и примерами использования - http://narod.ru/disk/5510673000/Valentina v00023 (copy%202).rar.html
Теперь возможна рекурсия . Некоторые изменения среды разработки. В первую очередь убрал все не русские слова, какие нашел . Небольшое улучшение внешнего вида.
Валентина поддерживает очень длинные числа. Самый простой факториал для 1000 далеко не так легко вычислить в том же С++ или Паскаль, но теперь доступен для школьников и студентов. В последней версии содержится пример вычисления факториала для 10, однако вы легко можете вычислить факториал и для 1000 и для 10000. Конечно сам процесс вычислений будет намного медленнее чем в С++ или Object Pascal, но общее время от процесса постановки задачи до получения результата при использовании Валентина в разы меньше .
Почему Валентина медленнее чем Паскаль или С? 1 - это интерпретатор. 2 - Валентина не оптимизирована - это "чистый" интерпретатор, он не производит промежуточных преобразований (вроде байт-кода), исполняет программы в один проход. Стадия оптимизация будет начата только после получения первой беты.
Пока доступны 4 арифметические операции, позже будет реализована поддержка остальных, планируется переход на использование комплексных чисел.
http://narod.ru/disk/5510971000/Valenti … 1.rar.html - на тот случай, если вы не смогли получить архив из предыдущей ссылки.
Описание метода
а заканчивать так:
Конец метода
Начинается описание, а заканчивается метод.
Ну это спорно ... это ближе к человеческому языку... по моему.
вообще-то да... Метод ПЕРМЕЩЕНИЕ
....
Конец метода Перемещение.
может так?? большая избыточность по моему нечему.
Когда свою карту по ЯП составлял пришли идеи по документированию исходников и компонентов ЯП.
1. Каждый компонент сопровождать WikiСправкой на Java
2. по проекту в целом и крупным компонентам делать карту памяти и поддерживать её актуальной
3. Нарисовать Дракон - схему к каждому компоненту
4. Выложить с исходниками.
----
мог бы ты попробовать при создании своего ЯП Валентина попробовать оформить так несколько компонентов или часть программы?? И написать свои впечатления , насколько это удобно, сложно, делать при написании ПО, насколько удобно пользоваться потом?? стоит ли овчинка выделки??
А чё мою wiki справку в 23 ю версию не вложил???
В языке конструкция ЕСЛИ записывается так:
Если что-то, то что-то
При использовании запятых и вопросительных знаков логично было бы в конце предложения ставить и точку.
Есть и множество других моментов, которые хорошо бы упомянуть. Например, нелогично начинать объявление функции, называемой методом, так:
Описание метода
а заканчивать так:
Конец метода
Начинается описание, а заканчивается метод.
Оператор Если не закончен, планируется еще использование ложной ветви. Многие конструкции (но к сожалению не все) допускают в конце точку. Все что после точки на той же строке считается комментарием. Конструкции в форме вопросов имеют на конце вопросительные знаки.
По части описании метода пока не знаю. Конец метода - это просто указание для Валентина, где метод заканчивается. Изменить не очень сложно, приведите свой вариант использования с более человечной формой. Если она окажется действительно таковой, то исправим.
Когда свою карту по ЯП составлял пришли идеи по документированию исходников и компонентов ЯП.
1. Каждый компонент сопровождать WikiСправкой на Java
2. по проекту в целом и крупным компонентам делать карту памяти и поддерживать её актуальной
3. Нарисовать Дракон - схему к каждому компоненту
4. Выложить с исходниками.
----
мог бы ты попробовать при создании своего ЯП Валентина попробовать оформить так несколько компонентов или часть программы?? И написать свои впечатления , насколько это удобно, сложно, делать при написании ПО, насколько удобно пользоваться потом?? стоит ли овчинка выделки??
Напишите поподробнее, что Вы имели ввиду? По второму вопросу будет утомительно, у меня нет четкого плана компонентов. В частности последние изменения в плане рекурсии затронули многие блоки - определение типов операндов, разбор выражений, передача параметров при вызове метода, регистрация методов при старте, вызов методов оформлен в самостоятельный блок, добавлен стек вызванных методов и кое-что еще по мелочи. Если каждый раз перерисовывать время будет уходить уже на это, а не на разработку программы. Аналогично и 3 пункт. Работа идет как правило модернизацией некоторых блоков и добавлением новых. Однако в последнем случае пришлось провести и замену.
Вы здесь » Языки программирования с русским синтаксисом » Язык Валентина » Интерпретатор языка Валентина