Создание учебного интерпретатора
Модератор: Модераторы
Создание учебного интерпретатора
Предлагаю всем желающим принять участие в разработке собственного интерпретатора. Open Source.
Цель проекта: научиться писать интерпретаторы в команде, разработка интерпретатора для обучения школьников и студентов программированию.
Особенности:
1. Разработка ведется на Паскале (пока в Delphi, но чуть позже будет выполнена миграция на Lazarus).
2. Поддержка очень длинных чисел (число значащих цифр ограниченно Integer)
3. В качестве языка программирования выступает русский (не перевод английских сокращений).
4. Текст программы приближен к естественной записи.
5. Отсутствие явного преобразования типов данных
6. Два типа данных строки и массивы строк, посредством которых выполнены остальные.
Подробности можно узнать здесь: http://www.codingvault.org/forum/viewto ... b7&start=0
Там же имеются некоторые аргументы за и против и там же можно скачать исходники.
Цель проекта: научиться писать интерпретаторы в команде, разработка интерпретатора для обучения школьников и студентов программированию.
Особенности:
1. Разработка ведется на Паскале (пока в Delphi, но чуть позже будет выполнена миграция на Lazarus).
2. Поддержка очень длинных чисел (число значащих цифр ограниченно Integer)
3. В качестве языка программирования выступает русский (не перевод английских сокращений).
4. Текст программы приближен к естественной записи.
5. Отсутствие явного преобразования типов данных
6. Два типа данных строки и массивы строк, посредством которых выполнены остальные.
Подробности можно узнать здесь: http://www.codingvault.org/forum/viewto ... b7&start=0
Там же имеются некоторые аргументы за и против и там же можно скачать исходники.
2utkin, вы, конечно, извините, но зачем делать "новую Рапиру". Был такой руссифицированный язык программирования, с интструкциями типа ПЕЧАТЬ и НЦ (начало цикла).
Существует множество интерпретаторов различных языков, которые можно портировать в freepascal, кроме того, есть PaxScript и PaxCompiler - интерпретатор и компилятор Pascal, Basic и нескольких других языков, написанные на Delphi.
Имеет смысл браться за "IDE для школьников", с отладчиками, подсказчиками, автозавершениями и исправлениями, автоформатированием и т.д. под "естественный" язык: Visual Basic for Application, Freepascal&Lasarus, или VB.Net / C# (в порядке предпочтения именно для школьников).
Это я вам как преподаватель говорю.
Существует множество интерпретаторов различных языков, которые можно портировать в freepascal, кроме того, есть PaxScript и PaxCompiler - интерпретатор и компилятор Pascal, Basic и нескольких других языков, написанные на Delphi.
Имеет смысл браться за "IDE для школьников", с отладчиками, подсказчиками, автозавершениями и исправлениями, автоформатированием и т.д. под "естественный" язык: Visual Basic for Application, Freepascal&Lasarus, или VB.Net / C# (в порядке предпочтения именно для школьников).
Это я вам как преподаватель говорю.
Действительно, Рапира оказалась тупиковым вариантом.
Мне кажется, что Паскаль создавался для обучения и пока ничего лучше и нету (моё мнение). Ему только хорошую документацию на русском, или другом национальном, с удобными подсказками и контекстным хелпом. Lazarus движется именно в этом направлении.
Мне кажется, что Паскаль создавался для обучения и пока ничего лучше и нету (моё мнение). Ему только хорошую документацию на русском, или другом национальном, с удобными подсказками и контекстным хелпом. Lazarus движется именно в этом направлении.
2utkin, вы, конечно, извините, но зачем делать "новую Рапиру". Был такой руссифицированный язык программирования, с интструкциями типа ПЕЧАТЬ и НЦ (начало цикла).
Уважаемый Timid! Это не руссифицированный язык программирования. Это программирование на русском языке. Вещи разные. Конструкции в нем множественные.
Например, взгляните на это:
Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х
Хотя этот пример абсолютно бесполезен, но он рабочий даже в текущей версии интерпретатора.
Что касается Visual Basic, то я не думаю что это хорошая идея. Хотя преподавателям видней...
Добавлено спустя 6 минут 23 секунды:
Logo.
Конечно, Паскаль лучший для обучения (и не только), кто спорит? Но почему бы не попробовать что-то еще?
Что касается данного интепретатора, то его не сложно перестроить под родственные языки программирования. Украинский, белорусский и пр.
И я вовсе не против Lazarus, если удасться создать что-то стоящее из моей затеи, то это будет только дополнительный плюс в сторону Lazarus.
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
> Разработка ведется на Паскале (пока в Delphi, но чуть позже будет выполнена миграция на Lazarus)
Создается впечатление, что человек не понимает что такое Pascal, Delphi и Lazarus.
> Украинский, белорусский и пр.
Транслит, а лучше китайский, один хрен, набор лингвистических "обозначений", которые будет понимать только разработчик "кода" :-).
Приведенный вами код читать невозможно. Я считаю что все попытки привести языки программирования к разговорным языкам, обречены на провал - мне проще подойти к чайнику и нажать на кнопку, чем с дивана объяснять всей бытовой технике, что я говорю именно с чайником и что я он него хочу.
> Переменная Итог существует?
Как это?
> Разрушим переменную итог
> Аналогично уничтожим переменную Х
:-).
Мой пример ВОСПРИНИМАЕТСЯ в течении секунды, если не быстрее, твой нужно ЧИТАТЬ значительно дольше.
..bw
Создается впечатление, что человек не понимает что такое Pascal, Delphi и Lazarus.
> Украинский, белорусский и пр.
Транслит, а лучше китайский, один хрен, набор лингвистических "обозначений", которые будет понимать только разработчик "кода" :-).
Приведенный вами код читать невозможно. Я считаю что все попытки привести языки программирования к разговорным языкам, обречены на провал - мне проще подойти к чайнику и нажать на кнопку, чем с дивана объяснять всей бытовой технике, что я говорю именно с чайником и что я он него хочу.
Код: Выделить всё
X := 1000;
if Total > 0 then
Inc(Total, X);
Save('total.txt', Total);
> Переменная Итог существует?
Как это?
> Разрушим переменную итог
> Аналогично уничтожим переменную Х
:-).
Мой пример ВОСПРИНИМАЕТСЯ в течении секунды, если не быстрее, твой нужно ЧИТАТЬ значительно дольше.
..bw
- NXP
- постоялец
- Сообщения: 187
- Зарегистрирован: 02.01.2008 15:11:56
- Откуда: Воронеж
- Контактная информация:
Согласен с bw
Сделайте ИИ, научите его понимать слова и наговаривайте Ваш код в микрофон
Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х
Сделайте ИИ, научите его понимать слова и наговаривайте Ваш код в микрофон
- EmeraldMan
- постоялец
- Сообщения: 149
- Зарегистрирован: 16.10.2008 08:41:51
- Откуда: Белгород
- Контактная информация:
Слишком приближенный код к разговорному создавать не стоит: получается как-то не однозначно все... Не понятно с фразами типа "аналогично". Например, если уж создаем две переменных лучше просто написать
Многим начинающим программистам это может быть во вред. Фразы в программировании должны строиться однозначно и четко. Как уже сказали, Паскаль для учебных целей лучше всего подходит.
А вообще задумка
доворьно интересна.
Код: Выделить всё
создадим переменную Х //для того-то
создадим переменную ИтогМногим начинающим программистам это может быть во вред. Фразы в программировании должны строиться однозначно и четко. Как уже сказали, Паскаль для учебных целей лучше всего подходит.
А вообще задумка
utkin писал(а):научиться писать интерпретаторы в команде
доворьно интересна.
Мне это почему то напомнило рассказ одного знакомого, которому пришлось разбираться в исходнике из 1С.
Там были фразы типа "в одной абстрактной фирме на абстрактном складе .." и т.д. в таком же духе.
Говорит, что читалось это всё как художественный рассказ
А вообще, сказать по-правде, когда вижу текст типа
то у меня мурашки по спине бегут от ужаса
Хотя, конечно, автору желаю успеха. Пусть у него всё получится, что он задумал.
В конце концов может просто это я такой испорченный и чего то не понимаю.
Но с другой стороны такое количество негативных откликов должно настораживать.
Там были фразы типа "в одной абстрактной фирме на абстрактном складе .." и т.д. в таком же духе.
Говорит, что читалось это всё как художественный рассказ
А вообще, сказать по-правде, когда вижу текст типа
Сначала создадим переменную Х. В ней будут содержаться промежуточные вычисления
Затем добавим переменную Итог
Х=1000
Переменная Итог существует?
Если да, то Итог=Итог+Х
Сохраним переменную итог в файле 'итог.txt'
Разрушим переменную итог
Аналогично уничтожим переменную Х
то у меня мурашки по спине бегут от ужаса
Хотя, конечно, автору желаю успеха. Пусть у него всё получится, что он задумал.
В конце концов может просто это я такой испорченный и чего то не понимаю.
Но с другой стороны такое количество негативных откликов должно настораживать.
2utkin
Еще раз и еще раз повторяю вам, что разговорный русский - неудачная идея.
У меня были соображения по разработке, подобной вашей.
Подробнее, чуть позже...
Еще раз и еще раз повторяю вам, что разговорный русский - неудачная идея.
У меня были соображения по разработке, подобной вашей.
Подробнее, чуть позже...
Timid писал(а):2utkin
Еще раз и еще раз повторяю вам, что разговорный русский - неудачная идея.
Может русский матерный?
- *vmr
- постоялец
- Сообщения: 168
- Зарегистрирован: 08.01.2007 00:46:07
- Откуда: Киев
- Контактная информация:
Люди, вы не шарите! 
За этой технологией будущие!
Программы будут не писатся, а надиктовыватся! На родном языке! Надиктовывается входные условия и наборы правил, а компьютер создает соответствующий исполняемый код. Представляете, сидит программист, и рассказывает компьютеру, что тот должен сделать:
ЗЫ: никого не хотел обидеть, просто пример сразу под руку попался
ЗЗЫ: а разговорный русский — действительно плохая идея
За этой технологией будущие!
Программы будут не писатся, а надиктовыватся! На родном языке! Надиктовывается входные условия и наборы правил, а компьютер создает соответствующий исполняемый код. Представляете, сидит программист, и рассказывает компьютеру, что тот должен сделать:
Включить запись программы.
Программа будет игрой.
Значит.... пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш ни преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого...). Ну а если за злого... то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого... (в горах, там есть старый форт...)
Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее... поставить протез. Сохранятся можно...
ЗЫ: никого не хотел обидеть, просто пример сразу под руку попался
ЗЗЫ: а разговорный русский — действительно плохая идея
Текст программы (на интерпретаторе будущего):

Код: Выделить всё
О милый, милый мой компьютер,
Пршу тебя, скорей включись.
Программу будем сочинять мы,
Но, умоляю, не глючИсь!
Мы переменную объекта,
Введём с тобой как N за раз.
Чтоб типа "интенсивность спектра",
Той переменной был указ.
Теперь её создай скорее,
И цвет ей дай как "бирюза".
(Всё потому что у любимой,
Моей такие вот глаза). :)
С периодичностью уместной,
(Пусть это будет в пять секунд).
Ты всполыхай её конечно,
Похоже будет на корунд.
Всё, удаляй! Нет, некрасиво.
Не понял, гадкий, ты меня.
Пойду на стареньком Паскале,
Задам и перцу и огня!*vmr писал(а):За этой технологией будущие!
Возможно так оно и будет, но это в довольно далеком будущем!
Vadim писал(а):Текст программы (на интерпретаторе будущего)
А что,... Мне понравилось!
Давайте отбросим прения не по теме, человек совета просит! 
Основные положения "учебной среды разработки приложений"
Главное в обучении - не "понятный язык", а "понятное объяснение"
То есть, не беда, что на английском, главное, чтобы подробно комментировалось. Автоматически. Например, при наведении мышкой на SET A=2 всплывала подсказка "Сохранить целочисленное значение 2 в переменной A". А можно и справа от основного кода создавать нередактируемый комментарий.
Далее.
Обязательно должно быть реализовано визуальное проектирование и визуальное программирование.
Обязательно должно быть автоформатирование и автокоррекция кода (это вотчина VisualBasic - за то его и любят преподаватели).
Обязательно должно быть фиксированное размещение панелей с возможностью "уплывания", чтобы учащийся не перетащил и не "спрятал" панель инструментов.
Обязательно должен быть пошаговый отладчик, совмещенный с "мастером интерпретации", выделяющий переменную и подсказывающий тип ошибки и дающий комментарии на русском языке. Например, "значение переменной цикла (счетчика) нельзя изменять внутри цикла For самостоятельно". Причем все термины должны быть гиперссылками на справку.
Код и описание формы должны быть в одном текстовом файле, но редактор среды должен их открывать отдельно.
Есть еще другие, но нужны хотя бы эти пункты
В идеале, такая среда должна уметь компилировать исходный код в один из популярных байткодов (java,as3,.net) или даже в исходник на freepascal/Lasarus. Пусть с явной избыточностью, главное в работающую программу.
Основные положения "учебной среды разработки приложений"
Главное в обучении - не "понятный язык", а "понятное объяснение"
То есть, не беда, что на английском, главное, чтобы подробно комментировалось. Автоматически. Например, при наведении мышкой на SET A=2 всплывала подсказка "Сохранить целочисленное значение 2 в переменной A". А можно и справа от основного кода создавать нередактируемый комментарий.
Далее.
Обязательно должно быть реализовано визуальное проектирование и визуальное программирование.
Обязательно должно быть автоформатирование и автокоррекция кода (это вотчина VisualBasic - за то его и любят преподаватели).
Обязательно должно быть фиксированное размещение панелей с возможностью "уплывания", чтобы учащийся не перетащил и не "спрятал" панель инструментов.
Обязательно должен быть пошаговый отладчик, совмещенный с "мастером интерпретации", выделяющий переменную и подсказывающий тип ошибки и дающий комментарии на русском языке. Например, "значение переменной цикла (счетчика) нельзя изменять внутри цикла For самостоятельно". Причем все термины должны быть гиперссылками на справку.
Код и описание формы должны быть в одном текстовом файле, но редактор среды должен их открывать отдельно.
Есть еще другие, но нужны хотя бы эти пункты
В идеале, такая среда должна уметь компилировать исходный код в один из популярных байткодов (java,as3,.net) или даже в исходник на freepascal/Lasarus. Пусть с явной избыточностью, главное в работающую программу.
Timid писал(а):Например, при наведении мышкой на SET A=2 всплывала подсказка "Сохранить целочисленное значение 2 в переменной A". А можно и справа от основного кода создавать нередактируемый комментарий.
Однажды мне попадалась интересная информация по преобразованию графических блок-схем в исходный текст на языке программирования! Мне кажется такой подход будет более полезным для понимания предмета, ведь речь идет именно об обучении! Например в левой части окна графический редактор/конструктор где можно писать и на русском, а в правой уже готовая программа.
