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

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

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

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

Сообщение Aiur » 26.03.2009 15:24:02

Интересная тема, поэтому скажу по порядку, поскольку занимался похожими разработками несколько лет.

1) Технологически интерпретатор строится сложнее, чем компилятор
2) В качестве языка нужно брать не естественно руский/английский или еще какой, а нормальный формализованный язык. Та же Рапира или школьный алгоритмический язык весьма неплохо подходят для обучения правильному мышлению программиста. И еще. Не нужно изначально усложнять себе задачу - вполне можно реализовать аналог стандартного паскаля. Аналоги Си или Java строить тоже нездорово, потому что Си-шный подход расхолаживает программиста и поощряет небрежное использование памяти. В Java например требуется принудительно запускать процедуру "сборки мусора". Памяти на современных компьютерах хоть и много, но работать с ней нужно аккуратно, потому что в конце концов трудно отлаживаться.
3) структурное программирование не есть пустая прихоть. Грамотное использование структуры освобождает до 60% времени отладки программы еще на этапе написания кода.

И напоследок - мне было бы интересно поучаствовать в таком проекте :)
Aiur
незнакомец
 
Сообщения: 2
Зарегистрирован: 26.03.2009 15:14:08

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

Сообщение utkin » 27.03.2009 18:27:25

Код: Выделить всё
структурное программирование не есть пустая прихоть. Грамотное использование структуры освобождает до 60% времени отладки программы еще на этапе написания кода.


Никто с этим и не спорит, речь идет о том, чтобы это не навязывать.

Добавлено спустя 24 минуты 8 секунд:
Aiur писал(а):Интересная тема, поэтому скажу по порядку, поскольку занимался похожими разработками несколько лет.

2) В качестве языка нужно брать не естественно руский/английский или еще какой, а нормальный формализованный язык. Та же Рапира или школьный алгоритмический язык весьма неплохо подходят для обучения правильному мышлению программиста. И еще. Не нужно изначально усложнять себе задачу - вполне можно реализовать аналог стандартного паскаля. Аналоги Си или Java строить тоже нездорово, потому что Си-шный подход расхолаживает программиста и поощряет небрежное использование памяти. В Java например требуется принудительно запускать процедуру "сборки мусора". Памяти на современных компьютерах хоть и много, но работать с ней нужно аккуратно, потому что в конце концов трудно отлаживаться.


Ну язык не совсем естественно русский (это будет сложно и очень медленно), но стиль написания программ приближен. Если у Вас есть общие представления (алгоритмы, циклу, условия и прочее) текст воспринимается на ура.
Рапира и прочие аналоги мне не нравятся угловатостью конструкций. ДЛЯ ни как не ассоциируется с циклами, FOR даже лучше, потому как для ДЛЯ :) возникают другие ассоциации (из русского языка). Я не говорю, что все операторы такие, но некоторые не очень.
Паскаль хорош спорить здесь не о чем, но я не хочу клон Паскаля (у меня есть сторонние разработки - компиляторы различных версий Паскаля), желательно бы включить и некоторые элементы других стилей программирования. Так в язык включена конструкция вычисления выражений (с использованием переменных и других структур языка). То есть программист может задать строкой свою математическую операцию - построить решение задачи без условий (не всегда конечно). У программиста есть возможность проверить истинность выражения в строке (ввиде результата 'да'/'нет').
Я думаю это справедливо показать начинающему не одну сторону программирования, лучше с нескольких точек зрения.
Сейчас я подготавливаю формальное описание языка.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение alexs » 27.03.2009 22:12:38

utkin писал(а):речь идет о том, чтобы это не навязывать.

Вот это очень плохо.
При обучении надо именно НАВЯЗЫВАТЬ правильные методы написания программы. Не правильно - всегда успеют научиться.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

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

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

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

Сообщение Bupyc » 29.03.2009 19:09:26

alexs писал(а): Не правильно - всегда успеют научиться.


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

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

Сообщение utkin » 30.03.2009 08:29:00

Я уже писал, что правильно в одном языке может быть совсем не правильно в другом. Попробуйте в Lispe программировать a-ля Паскаль. На Ваш код посмотрит хмурый дядька и скажет, что эту дурь нужно было давно из головы выбить, что НАДО программировать по другому :) , а то осели в голове всякие глупости.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение Bupyc » 30.03.2009 11:30:33

Отсюда вытекает резонный вопрос, насколько правильный стиль программирования сформируется у программиста после обучения тому языку, который Вы пытаетесь развивать. И как потом всякие "хмурые дядьки" в лице работодателей будут смотреть на тот чудо-код, который будет писать человек после обучения Вашему языку, когда от него потребуют решать реальные задачи в сжатые сроки.
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

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

Сообщение Vadim » 30.03.2009 11:48:56

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

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

Сообщение Bupyc » 30.03.2009 12:46:11

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

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

Сообщение Vadim » 30.03.2009 13:14:43

Bupyc
Встречал не раз на подобие:
fori:=1to10dobegin
...
:)
И хоть говориш товарищу имяреку, что если компилятор это понимает, то я уже давно не компилятор... :)

Добавлено спустя 6 минут 55 секунд:
Я вот думаю, что стиль изложения зависит вовсе не от того, какому языку обучался гражданин. Будь язык французский, будь язык Паскаль или какой угодно - грамотное и понятное изложение нужно специально тренировать. И мне кажеться, что зря программистов готовят из математиков (хотя математика ещё никому не мешала :) ), скорее их надо готовить из филологов, т.е. людей, которые могут объяснить то или иное явление, которые знают, откуда что пошло в языке.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение utkin » 31.03.2009 14:38:05

Vadim писал(а):Встречал не раз на подобие:fori:=1to10dobegin

Чтобы не возникало таких глупостей и предполагается использовать русский язык, и не просто Нач и Кон, а Описание фрагмента и Конец фрагмента и прочее в том же духе. Текст гораздо читабельней.
Стилю предполагается именно обучать, все правильно. Но есть разница в обучении стилю и навязыванию стиля. В течение нескольких постов эти понятия постоянно смешиваются.
Опять же тренировать и навязывать не одно и тоже. Кроме того речь шла о структурном программировании, а данный пример к нему не относится ни разу и ни с какого боку. А то получается со стороны, что я вообще противник всех опредленных элементарных правил и приличий. Меня тоже не устраивает данный пример и свой код я стараюсь оформлять корректно. Примерно процентов 40 моего кода составляют комментарии. Причем здесь структурное программирование? Или нет, правильно будет так причем здесь этот пример?

Добавлено спустя 6 минут 25 секунд:
Vadim писал(а):Я вот думаю, что стиль изложения зависит вовсе не от того, какому языку обучался гражданин. Будь язык французский, будь язык Паскаль или какой угодно - грамотное и понятное изложение нужно специально тренировать. И мне кажеться, что зря программистов готовят из математиков (хотя математика ещё никому не мешала :) ), скорее их надо готовить из филологов, т.е. людей, которые могут объяснить то или иное явление, которые знают, откуда что пошло в языке.


Напрасно вы так думаете, почитайте книгу "ООП в действии" (автора не помню, Бадд кажется). Дело не только в закорючках вида begin или ДЛЯ. Вы не только пишите на определенном языке, но еще и думаете. Чем ближе будет язык программирования к тому, на котором Вы думаете, тем меньше Вы будете допускать ошибок при создании программ.
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение B4rr4cuda » 31.03.2009 21:33:54

utkin писал(а):Напрасно вы так думаете, почитайте книгу "ООП в действии" (автора не помню, Бадд кажется). Дело не только в закорючках вида begin или ДЛЯ. Вы не только пишите на определенном языке, но еще и думаете. Чем ближе будет язык программирования к тому, на котором Вы думаете, тем меньше Вы будете допускать ошибок при создании программ.

Я думаю образами, и для их выражения мне проще использовать лаконичный ЯП.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

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

Сообщение utkin » 01.04.2009 09:04:14

Сомневаюсь, что Вы думаете образами. Скорее всего Вы думаете и образами то же. Используйте язык ДРАКОН, кто Вам мешает?
Чистое образное мышление без языка не возможно в рамках нашей цивилизации :). Потому что Вас уже в садике начинают учить словами, а не только образами. И далее как Вы обучались? Образами букв или содержимым текстов учебников? Поэтому чисто образное мышление у Вас невозможно (как и у меня и остальных).

А лаконичный язык Вам использовать проще, потому что Вы учили лаконичный язык, потому что большинство языков программирования используют сокращения от естественных слов, уродуя их и образное мышление здесь абсолютно не причем. Почему Вы для программирования не пользуйтесь записью азбуки Морзе? На мой взгляд очень лаконично :D
utkin
новенький
 
Сообщения: 46
Зарегистрирован: 07.12.2008 13:03:20

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

Сообщение B4rr4cuda » 01.04.2009 14:01:01

utkin писал(а):Сомневаюсь, что Вы думаете образами. ... Чистое образное мышление без языка не возможно в рамках нашей цивилизации :). Потому что Вас уже в садике начинают учить словами, а не только образами. ... Поэтому чисто образное мышление у Вас невозможно (как и у меня и остальных).

Не сомневайтесь :)

Любая работа с информацией проходит ряд обязательных стадий: введение, обработка и оценка. В этой связи в НЛП выделяют три информационные системы активности человеческого мозга: ведущую (ввод информации), предпочитаемую (представление информации в сознании) и референтную (оценка информации). Каждая из перечисленных систем может быть представлена визуально, аудиально и кинестетически. Рассмотрим каждую из них более подробно.

Чтобы репрезентировать информацию, ее сначала нужно получить. Каждый человек имеет предпочитаемые им средства введения информации. Совершенная память содержала бы полный набор картин, звуков, ощущений, запахов и вкусов первоначального переживания, но, чтобы восстановить его, мы обращаемся только к одной части набора.

Это, так называемая, ведущая система: внутренний канал, используемый в качестве ключа доступа к памяти. Ее также называют системой ввода, т.к. она поставляет нужную информацию для дальнейшего ее обдумывания, которое осуществляется уже с помощью первичной (предпочитаемой) системы.

Обычно человек использует все каналы восприятия, хотя в зависимости от ситуации обращает внимание на один канал больше, чем на другой. Например, в художественной галерее мы будем находиться в визуальном мире, на концерте же - в аудиальном. Но что самое удивительное: когда мы думаем, то в независимости от предмета размышления, мы всегда придерживаемся какой-либо одной системы. Обычно это предпочтение проявляется в возрасте 10-12 лет.

Многие люди могут создавать ясные мысленные образы и думать картинками. Другие находят эту точку зрения трудной. Они могут долго рассуждать сами с собой, тогда как другие основывают свои действия на ощущениях по отношению к ситуации. Когда человек имеет тенденцию придерживаться одного канала восприятия, то в НЛП этот канал называется его предпочитаемой системой. Вероятно, он оказывается более проницательным и способным делать более тонкие различения именно в этой системе, а не в других. Это значит, что некоторые люди по природе оказываются более талантливыми, чем остальные в использовании определенного канала восприятия. В тех случаях, когда определенные органы утрачивают свои функции, то их компенсируют другие. Такого рода феномены общеизвестны. Например, слепые - 'видят пальцами', а глухие - 'слышат глазами' и т.д.

тынц

utkin писал(а):Используйте язык ДРАКОН, кто Вам мешает?

Спасибо за наводку - забавно. Но использовать его не получится по вполне прагматичным причинам. Думаю и так понятно по каким :)

utkin писал(а):И далее как Вы обучались? Образами букв или содержимым текстов учебников?

Не знаю как у вас, а я, читая, строю в сознании образы прочитанного. Слова распознаются и на их ассоциации всплывает образ, дополняется, изменяется и тд.

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

Кроме лаконичного я учил ещё и "нелаконичные", FoxPro например. До сих пор в дрожь бросает, как вспоминаю его синтаксис. Адой баловался, тоже задолбала многословность. Я многими языками баловался, ближе всего мне Pascal - соблюден баланс между лаконичностью и "словоблудием". Т.е. удобно и писать и читать. И еще, когда я начинал учиться программировать - английского я не знал вообще, поэтому для меня те сокращения значили просто некие команды и образное мышление очень даже при чем. По манере программирования на вашем языке можно сразу заметить, что вы используете аудиальный тип мышления, поэтому этот язык может быть для вас весьма удобен. Но вот мне он не подойдет ну никак. И главная трудность в том, что трудно поверить, что кто-то действительно мыслит не так, как вы. :) Это проблема каждого.

utkin писал(а):Почему Вы для программирования не пользуйтесь записью азбуки Морзе? На мой взгляд очень лаконично

У меня отец в армии связистом был, он до сих пор любую передчу азбуки Морзе на слух воспринимает и тут же говорит, что это значит. Это тоже аудиальный "язык программирования". А не пользуюсь - ибо невизуально :) да и упирается все не только в яп, но и в библиотеки, среду, инструменты.

ЗЫ: Не имею ничего против вашей разработки, но покоробило такое категорическое высказывание от том как "мы думаем".
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

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

Сообщение utkin » 02.04.2009 08:56:36

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

Пред.

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

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

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

Рейтинг@Mail.ru