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

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

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

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

Сообщение NXP » 09.01.2009 12:33:33

Главное в обучении - не "понятный язык", а "понятное объяснение"
То есть, не беда, что на английском, главное, чтобы подробно комментировалось.

Может проще заняться обучением шимпанзе вышиванию крестиком, чем пытаться учить программированию людей, которые к этому не способны.
Программирование в Эссе - в любом случае не конкурентоспособный вариант, а тут тянуть за уши, да еще с замашками таким
код в один из популярных байткодов (java,as3,.net) или даже в исходник на freepascal/Lasarus

Не проще ли просто обучать программированию на FPC/Lazarus?
А если студен не способен понять, что 'если' = 'if', а 'тогда'='then' и тд. то что это за кодеры получаться, если их так с соской приходится учить. :lol:
В повара или слесари таких...

Добавлено спустя 4 минуты 39 секунд:
Andreich писал(а):Однажды мне попадалась интересная информация по преобразованию графических блок-схем в исходный текст на языке программирования!

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

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

Сообщение Andreich » 09.01.2009 13:07:35

NXP писал(а):А если студен не способен понять, что 'если' = 'if', а 'тогда'='then' и тд. то что это за кодеры получаться, если их так с соской приходится учить. :lol:
В повара или слесари таких...

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

Добавлено спустя 4 минуты 48 секунд:
Да, и еще,.. ведь есть такие, чья речь и построение предложений могут довольно сильно отличаться от общепринятых!
Магистр Йода явный тому пример. :)
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

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

Сообщение utkin » 09.01.2009 16:49:06

Честно говоря, не ожидал, что будет столько откликов. Начнем по порядку.

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


Вот теперь действительно не понятно. Я считаю, что Паскаль это язык программирования. Delphi и Lazarus это среды разработки. Что не так? Я уже пробовал компилировать под Lazarus, учитывая, что я его практически не знаю, все получилось отлично.

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


А всем остальным приведенный фрагмент, значит абсолютно не понятен?

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


Очень просто. Имеется специальная служебная переменная КОНТЕКСТ. Все конструкции форме вопросов помещают результат туда. Условный оператор воспринимает условия и просто текст. В последнем случае он сравнивает его с контекстом. И все :D Контекст можно использовать и в других случаях просто как обычную переменную (но нельзя создавать и уничтожать).

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


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

Ваш пример воспринимается в доли секунды. Абсолютно с вами согласен. Знаете почему? Потому что Вы учили Паскаль. Студент также будет воспринимать текст программ интерпретатора, потому что он будет его изучать. Представьте человека, который абсолютно не знаком с языками программирования. Какой текст он будет воспринимать лучше? Это типичная ошибка, Вы рассуждаете как профессионал, но язык предназначен для начинающих. А вообще по ссылке дан небольшой материал и там все это написано. Просто Вы не прочитали и поэтому у Вас, уважаемый bw, возникли такие вопросы.

NXP, для решения этой задачи не требуется ни капли (или в чем там он измеряется) искусственного интеллекта. Голая автоматика :D .

Уважаемый EmeraldMan! Если Вас заинтересовала идея, приглашаю Вас рассмотреть проект поближе. Исходный код можно скачать абсолютно свободно.

*vmr, мне нравится Ваша логика, но хотелось бы узнать в чем собственно "плохость" идеи?

Timid'у.
Я с Вами полностью согласен, но сейчас пока речь идет о разработке основы, а автоформатирование и все прочее будет чуть позже. Я не успеваю чисто физически. Кстати, многие конструкции допускают комментарий после точки (но это немного другое), как раз для того, чтобы программист мог внести туда свои разъяснения. А строка считается комментарием, если начинается с символа #, слов Важно:, Комментарий:. Пустая строка считается комментарием.

Надеюсь немного прояснил ситуацию.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Timid » 10.01.2009 11:38:40

2A, это подразумевается под "графическим проектированием", хотя бы в направлении "Код -> Блок-схема"

2utkin, в общем, понятно, что все обсуждение разбивается на два потока - возражения по языку и соображения по IDE.
Предлагаю вам задуматься над универсальным подходом, позволяющим подключить интерпретатор как стороннюю библиотеку, либо иной способ реализации "переключения" на другой язык программирования.
Если такая возможность будет поддерживаться, то участие в разработке Visual Basic | FPC&Lasarus версий меня интересует. Равно как и разработка самой IDE.

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

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

Сообщение utkin » 10.01.2009 13:27:39

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

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

Сообщение Vadim » 10.01.2009 14:25:16

А у меня такой вопрос...
Вот беру я чей-то исходный код, чтобы поработать совместно над проектом, того же, к примеру, Хироюки Хори, смотрю в него и ведь мне там многое понятно. Не всё, конечно, но слегка поднапрягшись могу и всё понять. :)
А теперь представим, изобрели мы интерпретатор на своём языке, японцы на своём, марсиане видят такие дела и тоже изобрели интерпретатор на своём, марсианском, языке. А как же мы друг друга понимать то будем? Мне отнюдь не кажется, что на своем родном языке программирование будет изучаться проще и быстре. Зато куда быстрее работа над программой пойдёт, если над ней будут работать несколько человек.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение utkin » 10.01.2009 16:53:11

Vadim, Вы конечно же правы. Но язык не предназначен для создания программ в тысячи строк кода разными разработчиками. Он предназначен для обучения программированию. Речь шла об разработки интерпретатора командой разработчиков, а не программ для него. Это не одно и тоже :) . Вы также можете его встроить в свое приложение, но не для программ в несколько сотен тысяч строк. Одну из причин Вы уже назвали. Вторая очень проста это скорость. Все эти причины объективны, я о них знаю. Но интерпретатор создается для других целей.
Есть и компромиссное решение. Я могу включить туда и поддержку английских конструкций (так и хотел, условный оператор поддерживает ИЛИ И НЕ, а также OR NOT AND). Тогда если разработчики хотят выйти на международный уровень им будет достаточно писать конструкции на английском. Можно даже составить небольшую утилиту, которая бы гоняла тексты туда и обратно :) . Так что если вопрос станет ребром, то решение найти можно.

Добавлено спустя 15 минут 2 секунды:
Касательно марсиан...
Разве сейчас это не наблюдается повсеместно? С++, Java, Visual Basic, Lisp, Ada. Их можно рассматривать аналогично. Я не смыслю в Fortran'e и в Jave, но могу общаться с программистами на этих языках. Ладно, С++ знают многие, а С? Можно и перепутать тексты запросто, если не знать, что написано на разных языках. Особенно если не вдавался в их изучение. Но ведь я же могу поговорить с программистом на Pyhton. Потому что программирование по большому счету это не только язык, но и еще базовые принципы, вроде переменные, циклы и прочее.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Vadim » 10.01.2009 18:23:06

utkin писал(а):Касательно марсиан...
Разве сейчас это не наблюдается повсеместно? С++, Java, Visual Basic, Lisp, Ada.

Ох, и не говорите... :) Это самое больное место. Особенно это касается Си и Си++. :) В ихние тексты только взглянешь и хочется выть от ужаса и немедленно выпрыгивать с девятого этажа. Именно поэтому возникновение ещё одного языка (особенно национального :) ) вызывает настороженность.
Не будем говорить про коммерческий успех языка (а учебные заведения выбирают язык обучения именно ориентируясь на коммерческий успех, а не на понятность языка), но должна быть какая-то яркая изюминка на которую стоит один раз взглянуть и уже не забудешь никогда (ну как глаза влюблённой женщины :) ).
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение perlpunk » 10.01.2009 20:15:13

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

зачем такая расширеная запись? и в чем принципиально отличается от:
Х=1000
если сущесвует X тогда Итог=Итог+Х
сохранить_в_файле 'итог.txt' Итог
Разрушить итог
уничтожить Х

во втором случае разве не проще - т.к. определены уже стандартные операторы и т.д.
и делаете просто алиасы/синонимы (Разрушить эквивалентно уничтожить) если уж так охота разными словами описывать. а вот слова типа "Аналогично" - это ненужно вообще - оно же ничего не делает.
perlpunk
новенький
 
Сообщения: 90
Зарегистрирован: 26.09.2008 21:19:48

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

Сообщение Timid » 10.01.2009 20:33:27

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

зачем такая расширеная запись? и в чем принципиально отличается от:
Х=1000
если сущесвует X тогда Итог=Итог+Х
сохранить_в_файле 'итог.txt' Итог
Разрушить итог
уничтожить Х

во втором случае разве не проще - т.к. определены уже стандартные операторы и т.д.
и делаете просто алиасы/синонимы (Разрушить эквивалентно уничтожить) если уж так охота разными словами описывать. а вот слова типа "Аналогично" - это ненужно вообще - оно же ничего не делает.


2p, а вот это уже совсем "Рапира".

Задача была в создании "естественного" языка, а не простого перевода языковых конструкций.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

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

Сообщение perlpunk » 10.01.2009 21:24:24

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

Там тогда другая проблема возникает - проблема в том, что нужно будет хорошо знать русский язык.
perlpunk
новенький
 
Сообщения: 90
Зарегистрирован: 26.09.2008 21:19:48

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

Сообщение Logo » 10.01.2009 22:01:37

Эта идея хорошо подошла бы для приложений, например, имеем бухгалтерскую программу, а для создания и изменения формул вычислений использовать интерпретатор с "естественным языком". Ведь зачем бухгалтеру учить еще какой-то язык, если можно просто ознакомиться с понятными словами и что они могут делать. То же и в медицине, да и в любой сфере деятельности.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

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

Сообщение wavebvg » 10.01.2009 22:37:11

Помнится учили нас кумиру... Скажем так: куда проще написать программу на pascal-e...
Это я как бывший (6 лет прошло как закончил) школьник говорю (мнения учителей прозвучали)
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

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

Сообщение Timid » 10.01.2009 23:19:41

2w, безусловно, необходимость поддержки нескольких языков уже обсуждалась.

2u, раз так, может лучше реализовать транслятор с Эссе на Object Pascal с автокомментированием? Своеобразный C++ претранслятор.
C++ ведь тоже сначала транслируется в С, а затем компилируется.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

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

Сообщение Andreich » 10.01.2009 23:31:35

В приводившихся примерах и цитатах меня заинтересовало вот что: упоминается необходимость хорошего владения языком (русским/английским - неважно) + встречается некоторая переменная ИТОГ,.. причем есть как "итог", так и "Итог ". Вопрос: Должен ли такой учебный интерпретатор различать регистр, ведь для настоящего языка это весьма существенно?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Пред.След.

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

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

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

Рейтинг@Mail.ru