Создание учебного интерпретатора

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Создание учебного интерпретатора

Сообщение utkin » 07.01.2009 20:21:06

Предлагаю всем желающим принять участие в разработке собственного интерпретатора. Open Source.
Цель проекта: научиться писать интерпретаторы в команде, разработка интерпретатора для обучения школьников и студентов программированию.
Особенности:
1. Разработка ведется на Паскале (пока в Delphi, но чуть позже будет выполнена миграция на Lazarus).
2. Поддержка очень длинных чисел (число значащих цифр ограниченно Integer)
3. В качестве языка программирования выступает русский (не перевод английских сокращений).
4. Текст программы приближен к естественной записи.
5. Отсутствие явного преобразования типов данных
6. Два типа данных строки и массивы строк, посредством которых выполнены остальные.

Подробности можно узнать здесь: http://www.codingvault.org/forum/viewto ... b7&start=0

Там же имеются некоторые аргументы за и против и там же можно скачать исходники.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: Создание учебного интерпретатора

Сообщение Timid » 07.01.2009 23:44:33

2utkin, вы, конечно, извините, но зачем делать "новую Рапиру". Был такой руссифицированный язык программирования, с интструкциями типа ПЕЧАТЬ и НЦ (начало цикла).

Существует множество интерпретаторов различных языков, которые можно портировать в freepascal, кроме того, есть PaxScript и PaxCompiler - интерпретатор и компилятор Pascal, Basic и нескольких других языков, написанные на Delphi.

Имеет смысл браться за "IDE для школьников", с отладчиками, подсказчиками, автозавершениями и исправлениями, автоформатированием и т.д. под "естественный" язык: Visual Basic for Application, Freepascal&Lasarus, или VB.Net / C# (в порядке предпочтения именно для школьников).

Это я вам как преподаватель говорю.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Создание учебного интерпретатора

Сообщение Logo » 08.01.2009 01:40:17

Действительно, Рапира оказалась тупиковым вариантом.

Мне кажется, что Паскаль создавался для обучения и пока ничего лучше и нету (моё мнение). Ему только хорошую документацию на русском, или другом национальном, с удобными подсказками и контекстным хелпом. Lazarus движется именно в этом направлении.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Создание учебного интерпретатора

Сообщение utkin » 08.01.2009 11:01:01

2utkin, вы, конечно, извините, но зачем делать "новую Рапиру". Был такой руссифицированный язык программирования, с интструкциями типа ПЕЧАТЬ и НЦ (начало цикла).


Уважаемый Timid! Это не руссифицированный язык программирования. Это программирование на русском языке. Вещи разные. Конструкции в нем множественные.
Например, взгляните на это:

Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х

Хотя этот пример абсолютно бесполезен, но он рабочий даже в текущей версии интерпретатора.
Что касается Visual Basic, то я не думаю что это хорошая идея. Хотя преподавателям видней...

Добавлено спустя 6 минут 23 секунды:
Logo.
Конечно, Паскаль лучший для обучения (и не только), кто спорит? Но почему бы не попробовать что-то еще?
Что касается данного интепретатора, то его не сложно перестроить под родственные языки программирования. Украинский, белорусский и пр.
И я вовсе не против Lazarus, если удасться создать что-то стоящее из моей затеи, то это будет только дополнительный плюс в сторону Lazarus.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Re: Создание учебного интерпретатора

Сообщение bw » 08.01.2009 18:37:52

> Разработка ведется на Паскале (пока в Delphi, но чуть позже будет выполнена миграция на Lazarus)
Создается впечатление, что человек не понимает что такое Pascal, Delphi и Lazarus.

> Украинский, белорусский и пр.
Транслит, а лучше китайский, один хрен, набор лингвистических "обозначений", которые будет понимать только разработчик "кода" :-).

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

Код: Выделить всё
X := 1000;
if Total > 0 then
  Inc(Total, X);
Save('total.txt', Total);


> Переменная Итог существует?
Как это?

> Разрушим переменную итог
> Аналогично уничтожим переменную Х
:-).

Мой пример ВОСПРИНИМАЕТСЯ в течении секунды, если не быстрее, твой нужно ЧИТАТЬ значительно дольше.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Создание учебного интерпретатора

Сообщение NXP » 08.01.2009 19:14:10

Согласен с bw
Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х

Сделайте ИИ, научите его понимать слова и наговаривайте Ваш код в микрофон :mrgreen:
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Создание учебного интерпретатора

Сообщение EmeraldMan » 08.01.2009 19:53:31

Слишком приближенный код к разговорному создавать не стоит: получается как-то не однозначно все... Не понятно с фразами типа "аналогично". Например, если уж создаем две переменных лучше просто написать
Код: Выделить всё
создадим переменную Х //для того-то
создадим переменную Итог

Многим начинающим программистам это может быть во вред. Фразы в программировании должны строиться однозначно и четко. Как уже сказали, Паскаль для учебных целей лучше всего подходит.
А вообще задумка
utkin писал(а):научиться писать интерпретаторы в команде

доворьно интересна. :)
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Создание учебного интерпретатора

Сообщение Bupyc » 08.01.2009 20:22:10

Мне это почему то напомнило рассказ одного знакомого, которому пришлось разбираться в исходнике из 1С.
Там были фразы типа "в одной абстрактной фирме на абстрактном складе .." и т.д. в таком же духе.
Говорит, что читалось это всё как художественный рассказ :)

А вообще, сказать по-правде, когда вижу текст типа

Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х


то у меня мурашки по спине бегут от ужаса :shock:

Хотя, конечно, автору желаю успеха. Пусть у него всё получится, что он задумал.
В конце концов может просто это я такой испорченный и чего то не понимаю.
Но с другой стороны такое количество негативных откликов должно настораживать.
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: Создание учебного интерпретатора

Сообщение Timid » 08.01.2009 22:25:53

2utkin

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

Подробнее, чуть позже...
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Создание учебного интерпретатора

Сообщение Bupyc » 09.01.2009 00:15:05

Timid писал(а):2utkin
Еще раз и еще раз повторяю вам, что разговорный русский - неудачная идея.


Может русский матерный? :D :D
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: Создание учебного интерпретатора

Сообщение *vmr » 09.01.2009 02:09:03

Люди, вы не шарите! :)
За этой технологией будущие!

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

Включить запись программы.
Программа будет игрой.
Значит.... пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш ни преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого...). Ну а если за злого... то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого... (в горах, там есть старый форт...)

Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее... поставить протез. Сохранятся можно...


ЗЫ: никого не хотел обидеть, просто пример сразу под руку попался
ЗЗЫ: а разговорный русский — действительно плохая идея
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: Создание учебного интерпретатора

Сообщение Vadim » 09.01.2009 08:10:27

Текст программы (на интерпретаторе будущего):
Код: Выделить всё
О милый, милый мой компьютер,
Пршу тебя, скорей включись.
Программу будем сочинять мы,
Но, умоляю, не глючИсь!

Мы переменную объекта,
Введём с тобой как N за раз.
Чтоб типа "интенсивность спектра",
Той переменной был указ.

Теперь её создай скорее,
И цвет ей дай как "бирюза".
(Всё потому что у любимой,
Моей такие вот глаза). :)

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

Всё, удаляй! Нет, некрасиво.
Не понял, гадкий, ты меня.
Пойду на стареньком Паскале,
Задам и перцу и огня!

:)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Создание учебного интерпретатора

Сообщение Andreich » 09.01.2009 10:04:07

*vmr писал(а):За этой технологией будущие!

Возможно так оно и будет, но это в довольно далеком будущем!

Vadim писал(а):Текст программы (на интерпретаторе будущего)

А что,... Мне понравилось! :)
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Создание учебного интерпретатора

Сообщение Timid » 09.01.2009 12:14:14

Давайте отбросим прения не по теме, человек совета просит! :)

Основные положения "учебной среды разработки приложений"

Главное в обучении - не "понятный язык", а "понятное объяснение" ;)
То есть, не беда, что на английском, главное, чтобы подробно комментировалось. Автоматически. Например, при наведении мышкой на SET A=2 всплывала подсказка "Сохранить целочисленное значение 2 в переменной A". А можно и справа от основного кода создавать нередактируемый комментарий.

Далее.
Обязательно должно быть реализовано визуальное проектирование и визуальное программирование.
Обязательно должно быть автоформатирование и автокоррекция кода (это вотчина VisualBasic - за то его и любят преподаватели).
Обязательно должно быть фиксированное размещение панелей с возможностью "уплывания", чтобы учащийся не перетащил и не "спрятал" панель инструментов.
Обязательно должен быть пошаговый отладчик, совмещенный с "мастером интерпретации", выделяющий переменную и подсказывающий тип ошибки и дающий комментарии на русском языке. Например, "значение переменной цикла (счетчика) нельзя изменять внутри цикла For самостоятельно". Причем все термины должны быть гиперссылками на справку.
Код и описание формы должны быть в одном текстовом файле, но редактор среды должен их открывать отдельно.

Есть еще другие, но нужны хотя бы эти пункты

В идеале, такая среда должна уметь компилировать исходный код в один из популярных байткодов (java,as3,.net) или даже в исходник на freepascal/Lasarus. Пусть с явной избыточностью, главное в работающую программу.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Создание учебного интерпретатора

Сообщение Andreich » 09.01.2009 12:30:48

Timid писал(а):Например, при наведении мышкой на SET A=2 всплывала подсказка "Сохранить целочисленное значение 2 в переменной A". А можно и справа от основного кода создавать нередактируемый комментарий.

Однажды мне попадалась интересная информация по преобразованию графических блок-схем в исходный текст на языке программирования! Мне кажется такой подход будет более полезным для понимания предмета, ведь речь идет именно об обучении! Например в левой части окна графический редактор/конструктор где можно писать и на русском, а в правой уже готовая программа.
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru