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

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

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

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

Сообщение Vadim »

Andreich
Вообще-то с регистронезависимостью это Микрософт всех с понталыку посбивало.
utkin
новенький
Сообщения: 46
Зарегистрирован: 07.12.2008 12:03:20

Сообщение utkin »

В общем-то и меня тоже :D Нет разницы в именах переменных Итог и ИТОГ, зато допускаются и английские буквы и некторые знаки тоже.
Что касается всего остального. Вопрос упирается в использовании контрукций к естественной записи и все? А то что все переменные строки и массивы строк на это ни кто не обратил внимания. Хотелось бы узнать мнение по данному вопросу, если можно :roll: .

Добавлено спустя 8 минут 26 секунд:
perlpunk

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


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

Сообщение Vadim »

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

Только не думайте, что Вы пионер и Никлаус Вирт в этой области. :)
В PHP можно написать такую сентенцию:

Код: Выделить всё

<?php
  $a1 = "10";
  $a2 = "15";
  echo $a1 + $a2;
?>

И ответ, в отличие от Паскаля, будет 25, а не 1015... А Си вообще обругает программиста с ног до головы. :)
utkin
новенький
Сообщения: 46
Зарегистрирован: 07.12.2008 12:03:20

Сообщение utkin »

Нет, не пионер. Я давал ссылку, там все написано. Это во-первых. А во-вторых, в интерпретаторе имеется конструкция
Вычислим выражение в Х

Если Х переменная, то будет считано ее значение как строки и вычислено (если это возможно), если выражение то будет вычислено оно (с участием переменных, констант и т.д.). Результат будет помещен в КОНТЕКСТ. Мне кажется более мощнее. В ваших программах (для интерпретатора) будет доступен математический разбор и это не стоит Вам ни одной строчки кода (он все равно используется при разборе математических выражений в самом интерпретаторе).

Добавлено спустя 7 минут 58 секунд:
Если содержимое переменных числа они будут складываться автоматически иначе объединяться. Для объединения строк используется &.
Таким образом в интерпретаторе
a1=a1+a2
даст результат 25 в а1
a1=a1 & а2
даст результат 1015 в а1, а можно еще вот так:
a1=a1 & a2 +a2
а1 получит в результате 1030

Добавлено спустя 2 минуты 16 секунд:
А про Си даже речь не идет :) .
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Ага, сложить указатели на строки в Си и ждать строковый результат - это "сильно" ;)
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

Ааааххх... Я лежал. Я плакал. Я валялся.
Народ, о чем вы вообще говорите? Какой учебный интерпретатор? Зачем изобретать трехколесный велосипед, к которому надо привыкать полгода, чтобы потом пересесть на машину?
Где вы вообще видели УЧЕБНОЕ оборудование?
На курсах вождения используют старенькие, но реальные машины - с рулем, коробкой передач и двигателем внутреннего сгорания - а не с джойстиком и паровым приводом.
Физики изучают спектры на старом, но обычном спектрографе - таком же, какой стоял (и кое-где стоит) в лабораториях. Никто не изобретает "учебные спектрометры" - они нафиг никому не нужны. Равно как и учебные амперметры, учебные линзы, учебные дифракционные решетки. Они могут быть с меткой "для обучения", но выглядят и работают так же, как и обычное оборудование. Максимум - отличие в точности измерений.
Химики смешивают реальные вещества в реальных колбах. Перегонные кубы... индикаторы... все почти такое же, как на больших заводах.
Математики учатся, используя стандартные кванторы "СУЩЕСТВУЮТ" и "ЛЮБОЙ", а не что-то другое, хотя перевернутые А и Е могут быть и не совсем удобны, особенно для тех, кому эта математика как свинье бисер.
Зачем же учить программистов на псевдоограниченноубоговымученноязыке, когда они потом пойдут работать и будут с матами пересаживаться на Pascal, C, Java?
Чем не устраивает обычный Pascal?
Как? Лышенько, жалко дитяток! Нужно ведь целых десять новых слов выучить, да каких чудных - BEGIN, END, PROGRAM, VAR! Да и обозначения эти дурацкие - := - это присвоить, а = - это сравнить, вот же бредятина! А уж цикл записать - так это вообще голова распухнет.
Нахрен ли нужен программист, если он не в состоянии сразу усвоить жесткие ограничения синтаксиса, принятые в промышленных языках?
Так в чем же дело? Что за идея фикс с учебным языком? Нечем заняться? Я подскажу: сделайте нормальный УМК по тому же Pascal. Начните не с "Hello, World", от которого уже тошнит, а хотя бы с калькулятора, и дальше расписывайте полезные приложения, а не расчет ряда Тейлора, который никому, кроме узких специалистов физмата, нафиг не нужен.
Извините за резкость, но сами подумайте...
Аватара пользователя
NXP
постоялец
Сообщения: 187
Зарегистрирован: 02.01.2008 15:11:56
Откуда: Воронеж
Контактная информация:

Сообщение NXP »

NTFS писал(а):Зачем же учить программистов на псевдоограниченноубоговымученноязыке

Носом чую, что как раз стоит цель научить псевдоограниченномупрограммированию лиц, которые по определению не могут быть программистами :lol:
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

2NTFS,NXP - Не забывайте разделять три составляющие данного топика - сам язык, метод обучения и "учебную IDE".

Тезис 1 - программировать (алгоритмизировать) могут все. Только "строгий" синтаксис "классических" языков требует "наработки навыков" для создания даже простых программ ("Здравствуй мир" - не в счет) - определение типов, передача параметров, условные конструкции и т.п. Наилучший вариант, который есть (для обучения) - Tcl/Tk. Но даже чуть усложненная программа - это монстр, в котором невозможно разобраться.
Естественный язык + автопреобразование типов - это правильный путь.
Проблему "боговымученности" можно решить, как уже говорилось, написанием транслятора - Эссе->"нормальный язык" или "байткод".
Либо - нужно изобретать новый метод обучения.

Тезис 2 - "УМК - не спасет!" - Уж сколько раз твердили миру - что лень вредна, да только все не в счет...
"Средний" студент не хочет учиться, максимум на что он способен - "читать с листа". Если вы дадите ему учебник - он его положит под мышку (компьютерную), чтобы она "не дергалась". Выхода два - сделать язык "читаемым", либо сделать его наглядным. Тут мы переходим к IDE.

Тезис 3 - все существующие IDE - не для студиусов. Они действительно не решают задачи "обучать и направлять". А, в основном, помогают "ускорить разработку" программы специалистом. Вы думаете это хорошо? Отнюдь.
Почему все любят Mac? Потому что в MacOS поставленную задачу можно решить только одним заранее известным способом! Выучив последовательность шагов в дальнейшем вы будете работать чуть медленнее, чем ваш Виндовый/Линуксовый друг, но если перед вами поставят новую задачу - то вы в ней разберетесь быстрее. Потому что путь всегда один.
Так вот, именно IDE, которое и будет "направлять, посказывать и запрещать лишнее" хотят обучающиеся. Для "классических" языков создание такой IDE - дело весьма непростое. Лучший вариант, упоминавшийся Visual Basic 6. Других то и нет...
utkin
новенький
Сообщения: 46
Зарегистрирован: 07.12.2008 12:03:20

Сообщение utkin »

Зачем же учить программистов на псевдоограниченноубоговымученноязыке, когда они потом пойдут работать и будут с матами пересаживаться на Pascal, C, Java?
Чем не устраивает обычный Pascal?


Например, автоматическое преобразование типов, настоящие множества, очень длинные числа. Планируется подключение нейросетей. Удобная работа с файлами. Этого достаточно? Что из всего предложеного есть у выше перечисленных языков? Я реализовал 4 основных действия с длинными числами. Нужен еще аналог exp(). Мне этого достаточно для реализации всех распрастраненных операций. Продумываю переход на комплексные числа. Си здесь рядом даже не валялся. Не смотря на то, что он учебный уже этого достаточно, что не заморачиваться со многими вещами.

Нахрен ли нужен программист, если он не в состоянии сразу усвоить жесткие ограничения синтаксиса, принятые в промышленных языках?

Задумайтесь, а зачем они нужны в промышленных языках?


Timid
, я полностью с Вами согласен, Ide действительно необходимо.
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

Я повторю еще раз: где вы видели "УЧЕБНОЕ ОБОРУДОВАНИЕ"? Т.е., такое, на котором можно только учиться, но не работать?
Почему учебная IDE должна отличаться от обычной?
Вот пример: Лабораторная работа - изучение спектра железа.
Что идет в начале методички? Правильно - руководство к спектрографу. Посложнее, чем описание синтаксиса Pascal.
Но ведь никто не делает "учебный спектрограф", чтобы упростить задачу студенту. Нет, начинается все с изучения прибора. Прибора, максимально приближенного к обычному промышленному оборудованию.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Я полагаю, что учебный адронный коллайдер тоже никто не будет строить, а построят в каждом учебном заведении настоящий, рабочий... :)
При обучении водителей или автомехаников широко используются всевозможные стенды, плакаты и даже (о, ужас!) методические указания в виде брошуры. Никто никого сразу не ведёт с гаечным ключом на 22 курочить настоящий мотор настоящего автомобиля. Спектрометристов по железу никто сразу же не ведёт к настоящему спектрометру, а даёт сначала изучить учебный материал - учебник какой-нибудь. И только самая последняя стадия - работа непосредственно с оборудованием.
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

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

Сообщение Vadim »

NTFS писал(а):После того, как ученик изучил методические указания, ему сразу дают рабочее оборудование. А не макеты.

Увы, друг мой, когда я учился нас никуда кроме как за учебные макеты в виде гиперЭВМ ИЗОТ и персональных ДВК-3М не сажали, хотя в реальности уже нигде на таких не работали (почти нигде... :) )
Вот давайте посмотрим, IBM-286AT в те времена стоил 1 500 долларов, в то время как ДВК-3М стоил 300 долларов. И что выберет учебное руководство по вашему? ;)
Если Вы считаете что с тех пор времена изменились, то я завидую Вашему оптимизму. :)

Добавлено спустя 6 минут 11 секунд:
Учебный интерпретатор - это не совсем макет. Это реальный язык для написания программы за одни маленьким исключением. Вот ядит за него какой-нибудь поэт и без переучивания сразу начнёт писать программу. Потому как программа пишется именно на том языке, именно тем синтаксисом, который ему уже знаком. В то время как на изучение Паскаля ему надо потратить целый месяц. И на этот месяц он лишается своих гонораров.
Аватара пользователя
EmeraldMan
постоялец
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород
Контактная информация:

Сообщение EmeraldMan »

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

В корне с этим не согласен!
Как говорил великий полководец Александр Суворов: "Тяжело в учении - легко в бою".
Паскаль и задумывался для обучения и был создан строго типизированным, чтобы научить людей правильному стилю! Если человек научится так программировать, то потом вообще ему очень просто будет перейти на тот же PHP с авто-преобразованием типов. Иначе - очень не привычно и проблематично...
Изучить самые основы: if, while - согласитесь за день запросто!

Я не выступаю против идеи создавать такой интерпретатор - это полезно и как для саморазвития и просто в дальнейшем можно прикольную тему замутить с тем же микрофоном. Но! ставить цель сделать в таком духе учебный язык нельзя! Это реально только помешает начинающим людям в дальнейшем...
utkin
новенький
Сообщения: 46
Зарегистрирован: 07.12.2008 12:03:20

Сообщение utkin »

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


А что такое правильный стиль программирования? Концепции структурного программирования всегда носили рекомендательный характер, это так для справки. Не хочешь пиши как тебе нравится. Хочешь тысячи строк кода и международную команду разработчиков пользуйся структурными методами. Паскаль не исключение. Хочешь модули, классы, инкапсуляции и прочее, не хочешь есть goto к примеру. Вам предлагают писать программы определенным образом, но не заставляют это делать.
Основы это не if, while и прочее. Основы это твердое понимание базовых концепций: переменные, циклы, подпрограммы, алгоритм.
Ответить