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

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

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

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

Сообщение EmeraldMan » 12.01.2009 19:17:22

utkin писал(а):Основы это не if, while и прочее. Основы это твердое понимание базовых концепций: переменные, циклы, подпрограммы, алгоритм.

С этим и не спорю. Я имел ввиду, что изучение основных операторов любого языка программирования это не трудно! Более того - это просто элементарно - как четверостишье :) Смысл здесь упрощать что-то?
Смысл мною сказанного был вот в чем: Если человек специализируется на беге с препятствиями, то чтобы просто пробежать по стадиону не составит особого труда для переучивания. А вот наоборот ещё как! Так и здесь: если сразу научить человека строго типизировать переменные, то потом он будет уметь работать со всем! Иначе придется переучиваться. Это как небольшая задача обучения программированию!

Если язык создается для обучения, то давайте уже создавать так, чтобы он объяснял максимально много, а не пытаться сделать его настолько элементарным, чтобы потом при переходе на другие языки приходилось изучать не только операторы, но и различные другие стороны программирования.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

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

Сообщение utkin » 12.01.2009 19:34:57

В том то и дело, что различные другие стороны очень различны в различных языках программирования :)
Задача как раз и заключается в том, чтобы найти то общее, что можно применить ко всем языкам. И рассказать про это все по-русски.
Вы знакомы с Pyhton? Изучив Visual Basic, Вам все-равно придется учиться писать на Pyhton. Хотя все вроде одно и тоже. Есть и процедуры и классы и циклы. Это просто различные точки зрения на процесс реализации алгоритма.

Добавлено спустя 1 минуту 27 секунд:
А Lisp и С++? Вроде как и там скобки и там (ну какя разница что другие?) :lol:
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Timid » 12.01.2009 21:17:48

2"Все сомневающиеся".

А вы пробовали программировать в Visual Basic 6? Его среда была бы почти идеальна, если бы ориентировалась больше на автоформатирование, а не "просто помогала" набирать чистый код.

Что я считаю в IDE VB6 полезным?

Если программист набирает код, то после нажатия Enter листинг в строке автоматически преобразуется к шаблону: убираются лишние пробелы между операторами, Операторы переписываются в правильном регистре, т.е.
Код: Выделить всё
fOR   i =    1 to 10
преобразуется к
Код: Выделить всё
For I = 1 To 10
. Синтаксические конструкции с ошибками выделяются красным цветом и т.д.
По моему, если бы VB еще и отступы расставлял - вообще бы стало очень удобно учиться: ты пишешь код, а IDE подправляет тебя - в итоге ты видишь уже правильный код, без возможных ошибок.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

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

Сообщение Mr.Smart » 13.01.2009 02:19:00

Причём тут IDE?
В данной теме поднят вопрос именно создания интерпритатора учебного языка программирования, а не создание удобной среды разработки.
Еще студентом изучал основы построения компиляторов и операционных систем на основе абстрактной учебной машины. Описанной в книге Леланда Бека "Системное программирование" (кажется так называется). И я бы сказал, что описанная там реализация учебной машины не загнала меня в тупик и мне не пришлось переучиваться как утверждает NTFS...

p.s. Насчёт VB6. Приведённый пример Timid'ом был реализован МелкоМягкими ещё в среде QBasic'a ;)
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение NXP » 13.01.2009 02:30:44

EmeraldMan писал(а):
NXP писал(а):Естественный язык + авто-преобразование типов - это правильный путь.

В корне с этим не согласен!
...

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

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

Сообщение utkin » 13.01.2009 10:02:15

Говорить об Ide пока рано, вопросов хватает и по части интерпретатора (но учитывать вопросы создания IDE все же стоит).
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение EmeraldMan » 13.01.2009 13:08:06

NXP писал(а):Будьте внимательнее, я это не писал :D

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

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

Сообщение utkin » 13.01.2009 18:58:23

Ну что же, если эта тема получила столько откликов, то могу предложить интерпретатор для скачивания. Текущая версия http://narod.ru/disk/4920388000/Valenti ... 4.rar.html В архиве имеются исходники и некоторые пояснения по концепциям языка.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение flick » 17.01.2009 21:01:56

Посмотрел исходники....
Что-то не пойму автора. А как вводить информацию от пользователя?
flick
незнакомец
 
Сообщения: 1
Зарегистрирован: 17.01.2009 20:59:05

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

Сообщение utkin » 18.01.2009 10:43:27

Пока ни как. Вообще можно такой вариант: внешняя программа запускает TAtomic.Run затем смотрит результат в какой-нибудь функции класса. если 0 - все ОК, программа завершена. 1 - ожидается ввод строки, 2 - ожидается вывод строки. Для ввода (и для вывода) можно использовать 2 строки. Одна само содержимое, вторая служебные параметры (например, размер и положение окна, заголовок и пр.). Если приложение консольного типа параметры можно игнорировать. Вывод полностью аналогичен. Основная программа выполняет свои действия по вводу/выводу и снова запускает метод RUN.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Timid » 18.01.2009 11:43:31

2utkin, как насчет "сделать синтаксический препроцессор"? Чтобы возвращался список строк с ошибками (как сообщения при компиляции в Delphi)?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

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

Сообщение utkin » 18.01.2009 15:50:04

В общем-то можно, но от него будет мало толку. Так можно отлавливать синтаксические ошибки. Но с остальным придется повозиться, так как переменные имеют динамическую природу. Допустим есть выражение с участием переменной. Как проверить правильно ли оно? Ведь точно неизвестно, будет ли она существовать в момент исполнения или нет? Аналогично константы существуют с места их объявления. Даже область видимости в методах (это аналоги функций Паскаля) может изменяться по усмотрению программиста во время выполнения программы (!). Для меня это серьезный вопрос и я не вижу пока простых способов решения подобной задачи.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Timid » 18.01.2009 16:30:53

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

Кстати, можно взять модель perl объявления видимости переменных. В ней все "внешние" переменные невидимы из процедуры кроме передаваемых параметров. Для "проявления" внешних переменных используется директива GLOBAL со списком открываемых переменных. Это позволяет копировать код процедуры в любое место и, по моему, гораздо понятнее новичкам.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

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

Сообщение utkin » 18.01.2009 20:43:07

Как контролировать доступ к внешней (по отношению к методу) переменной? Если область видимости можно менять в условном операторе :roll: ?
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение utkin » 25.03.2009 19:34:38

Если кому вдруг интересно (просто нуждаюсь в помощи :)) проект продолжает развиваться с учетом данных постов на сайте http://rus.24bb.ru (это не реклама сайта!)
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

Пред.След.

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

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

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

Рейтинг@Mail.ru