Comments 73
по моему горчица должна была быть на столе а не на соскиске: Р
А почему именно постфиксная запись? Чем префиксная хуже? ИМХО она более логична и проста для восприятия.
Потому что на момент получения оператора, операнды уже в стеке. :)
* Хотя насчёт «интуитивной понятности» не могу не согласится)
Ну да, насчёт стека не спорю :) Спасибо за топик, вспомнил хоть, что в унивеситете учил.
Этот алгоритм вроде как преподают в любой нормальном вузе для программистов.
Не все на хабре закончили ВУЗ по специальности программист, но это не значит что им не будет интересно.
Знать сабж по имени и не обязательно — не все же учились на программиста и зубрили названия алгоритмов — но реализовать его на практике сможет любой программист, когда приспичит распарсить строковые выражения.

Хотя я бы предпочёл префиксную запись и рекурсию по дереву, если бы писал калькулятор — интуитивно понятнее, как отметили выше — но я не привык вручную работать со стеком и экономить память, ассемблера лет десять не видел :)
Большинство программистов бинарное дерево реализовать не может…
Значит им повезло с работой, если они могут обходиться без этих знаний :) — мне приходится так или иначе делать эти деревья практически в каждом проекте и по многу раз — вот и сейчас я занимаюсь ни чем иным, как расширяю древнее приложение, прикручиваю возможность неким сущностям в приложении иметь дочерние сущности, и пытаюсь это всё красиво отобразить в рамках старого интерфейса.

Поступить на программера, что-ли… пусть меня научат всему тому, чем я занимаюсь последние годы…
UFO landed and left these words here
Ну начните тогда с объяснения сортировки пузырьком — всё-таки это более «плавное» погружение в среду, чем польская запись.
Не факт — Киевский политехнический институт, физтех — алгоритма не было. Я-то его еще в лицее писала, но это другая история.
У нас его давали на первом курсе, калькулятор был курсовой.
Я лично в школе разбирался с обратной записью. Замечу, что не в столице, не в областном центре и даже не в районном, а В ОБЫЧНОЙ СОВЕТСКОЙ ШКОЛЕ!!! На уроках информатики (или математики?) нас учили работать с программируемыми калькуляторами, типа этого:

У меня такой дома был. Ох как красиво он упал со шкафа.
Мне маленькому, для него лампу не продали в магазине.
Я был безумно обижен на продавца. Так хотел порадовать папу, что я тоже умею паять.
не только в вузе, но и в колледже. правда там его, алгоритм, называли венгерской нотацией.
UFO landed and left these words here
Да ну. Венгерская нотация — это совсем другая штука, соглашение об именовании переменных :) Особенно люто применяется в Microsoft (там, собственно, и зародилась)
Три года использую и только сейчас узнал что это «Венгерская нотация» :)
не, люди, я серьёзно. =) я действительно проходил этот алгоритм в колледже. и там его действительно называли венгерской нотацией.
По опыту знаю, что многим будет просто лень реализовывать алгоритм самим.
Вы будете удивлены, но я сам недавно столкнулся с программистом, который не знал сабжа. Причём довольно-таки неплохим специалистом. У всех бывают пробелы в образовании… =)
вообще странно это все
у нас например все начинали писать свои калькуляторы именно с конвертера инфикстной записи в постфиксную
ну нереально же всё держать в голове, особенно те знания, которыми долгое время (годами) не пользуешься… сам польскую запись уже забыл. спасибо, мать ученья :)
Ну таким программистам надо не популярные статейки на Хабре читать, а проштудировать хотя бы пару университетских учебников по алгоритмам. Дело нехитрое.
После беглого просмотра Седжвика «Фундаметальные алгоритмы на С», раздел «Сортировка», глава «Быстрая сортировка», где представлены 7 (или 11, точно не помню) вариантов QuickSort, я бы не говорил о сортировке столь пренебрежительно.
Кнут — да. Но QuickSort у Седжвика разобран подробнее, с различными оптимизациями и хитростями.
На этом калькуляторе считалось тоже обратной записью.
(2+2)*3 вводить как 3 В 2 В 2 + x

Это мой первый ПК :-)
Памяти в них было мало и ОПЗ позволяла экономить драгоценные байты. Эх, было время, когда боролись за отдельные ячейки памяти :-)
А у меня такого не было и мне приходилось у знакомого правдами и неправдами выманивать (приходить к нему домой, выпрашивать на денек-другой), чтобы немного «покодить» :)
Я первое время ходил в Дворец Пионеров на кружок программируемых калькуляторов :-)
Что ж вы делаете?

Прямо слезы на глаза от его вида наворачиваются… Помню я с ним в крестики-нолики играл…
Одних «лунолётных» программ с десяток было (с мощным для тех времён «бэкстори»), а ещё и стратегии, и экономические симуляторы и много чего ещё :)
Лучше «2 В 2 + B 3 x». Тут ведь стек всего-то на 4 элемента. В этом примере — не вылезет, а вообще — грабли :)
ех, помню лабы по трансляторам. Вроде именно перевод с польскую инверсную запись был самым большим гемороем…
Всегда завидовал тем, кто успел придумать \ изобрести \ запатентовать нечто крайне простое, вроде этой записи )
Ностальгия… Сам использовал ОПЗ при написании дипломной работы на тему «Пакет программ по численным методам». Вводилась формула в строковом виде, преобразовывалась в ОПЗ, ну и далее интегрировалась, дифференцировалась, решались дифуры.
UFO landed and left these words here
Лисп не из той оперы. В Лиспе есть скобки, а RPN как раз позволяет от скобок избавиться.
Форма с оператором между операндами называется инфиксной записью. Форма с оператором после операндов называется постфиксной, или обратной польской записью в честь польского логика Я. Лукасевича (1958), который изучал свойства этой записи.

Не совсем верно. Лукасевич изобрел польскую нотацию (префиксную). На ее основе более чем через 30 лет была разработана обратная польская запись (постфиксная).
Судя по такому восторженному рассказу про RPN, вам наверняка должен понравиться язык Форт.
Хороший язык, красивый, помню даже сам для него «транслятор» (насколько это слово к нему применимо) «портировал» (лет через 10 только узнал, как это называется) с 8086 на 8080, жаль на практике у него применение очень ограниченно :(
У любого языка область применимости очень ограничена. Но знакомство с Фортом пллезно каждому, мозги неплохо прочищает.
Планировщик задач для windows nnCron вроде как даже написан на Форте, и при этом скрипты для него синтаксис форта активно используют.
А мозги прочищает реально здорово.
Это, по-моему, единственный пример его широкого практического использования :(

Насчёт мозгов не скажу, это был мой третий язык после BASIC*MICRON* и ASSM*MICRON*, особенно заср… хм, запачкаться :) не успели
> В таблице показана зависимость ситуации…

Я внимательно прочитал статью. И никак не могу понять, как составлена эта таблица? Вы приводите её как данность, но хотелось бы понимания, откуда она взялась.
возьметесь написать преобразователь в ОПЗ не числового выражения, а строкового? ;-)

Элементами выступают не числа с операторами, а слова.
А что в таблице «зависимости ситуации от того, какой вагон отправился в Техас последним и какой вагон находится у стрелк» значит P?
Only those users with full accounts are able to leave comments. Log in, please.