Очередь на входе — это все же входящие данные. Очередь в данном случае — удобная абстракция, не более. Это может быть, например, массив, в котором лежат готовые токены. Или поток. Не суть. Здесь важно только то, что придет подготовленная постфиксная запись выражения.
На выходе же мы имеем только одну структуру данных — стек.
По вашим пунктам:
1. Преобразование в постфиксную запись из инфиксной — это подготовительная операция. Если ее проводить самостоятельно, то нужен будет только один стек для той самой «сортировки» операций по приоритетам. На входе в каком-то виде выражение (пусть набор символов тот же). Токенизация тут же происходит. На все требуется один проход по исходным данным.
2. Перенесение операндов в стек в полном составе происходит очень редко. В данном случае вы предложили вырожденный случай, а не «усредненный» пример. В общем случае в стеке одновременно не будут находиться вообще все операнды.
3. Непосредственный расчет как раз за один проход и делается. Как раз об этом я написал в конце. Видимо не очень понятно, виноват. Попробую еще раз.
На входе сырое выражение. У нас уже два пустых стека. Читаем вход, токенизируем, полученные токены либо идут в стек операндов, либо в стек операций. Когда операции по приоритету выталкиваются из стека операций, то происходит сразу тот расчет в стеке операндов который я описал в предыдущем комментарии. В итоге за один проход входящей последовательности данных мы сразу получаем ответ. Валидацию оставляем за кадром, считаем что последовательность на входе уже хорошая.
Мне кажется Вы не совсем верно уловили основное назначение ОПН как таковой. Про один стек и проход везде упоминают только и исключительно для подготовленной постфиксной записи. Эта самая запись и называется ОПН. Ее подготовка — это отдельная операция, да. Основное применение — интерпретаторы и компиляторы. Выражение, написанное программистом, переводится в ОПН и, грубо говоря, таким остается в коде. На этапе выполнения вместо переменных подставляются реальные значения и быстро, в один проход, с одним стеком, выражение вычисляется.
Если уже до такого преобразовали, то посчитать в чем проблема-то?
Есть очередь «A B C D E F + / — * +» и пустой стек. Алгоритм очень простой: достаем по одному из очереди. Если достали число — положили в стек. Если достали «операцию» — вынули из стека два числа, применили «операцию», положили обратно в стек. Когда очередь кончилась в стеке лежит результат вычисления.
Что интересного в этих реальных действиях?
Вообще ОПН imho удобнее применять сразу при разборе выражения «A + B * (C — D / (E + F))». Тогда просто два стека нужно использовать. Один для чисел, второй для операций. Общий алгоритм немного сложнее естественно будет. Но результат тот же.
Я же говорю — эксперимент ) По галочкам прям вот совсем ни кто и не выбирает. Но вот начальный отсев эти галочки на мой взгляд делают неплохо.
По сабжу. Припаянную память и диск еще можно хоть как-то понять. Хотя не очень приятно. Для расширения диска хоть второй слот оставили. А память — это навечно.
А вот то, что проц U как раз и напрягает больше всего. Но тут возникло сомнение в виде восьмого поколения. Интел помнится заявил, что эти U заоптимизировали до уровня HQ предыдущих поколений. Как раз при меньшем TDP. И если погуглить что-то типа 8550U vs 7700HQ, то интересные сравнения видим. Да, проигрывает. Но совсем немного. В некоторых синтетических тестах даже выигрывает. И здесь важным становится как конкретно в этой машинке сделано охлаждение.
В идеале конечно взять бы несколько разных, самому погонять ) Но приходится читать обзоры и искать крупицы информации.
В США Dell XPS 15 9560 стоит сейчас $1600 + $60 накладные расходы. Это где-то 91-95, от курса зависит. + еще сколько-то ждать. Я.Маркет говорит что можно вот прям сейчас в Москве купить за 101.5. Выигрыша не видно большого. 5-10 тысяч на одной чаше весов, на другой ожидание и риски что сопрут по дороге, разобьют или еще что. Кстати — во сколько встанет таможня?
По Xiaomi интересует время работы реальное, перегрев/тротлинг, ну и надежность )
Как раз давно думаю про шустрый ноут для разработки. Чтобы и идея не тупила, и виртуалки/докеры не обделены были, и СУБД тут же жила. Ну и по мелочи там набежит еще.
Дано: Яндекс.Маркет -> ноутбуки, 15 дюймов, i7, 4 ядра, память 16+, подсветка клавиатуры, время работы 8+ часов, вес не более 2 кг. На выходе 17 машинок.
Из них: 7 — маки. 4 MS Surface, 3 Dell, 2 Lenovo и собственно сабж. При чем Dell Latitude в этот список нечестно попал — вес указан без аккумулятора.
MS Surface — цены выше чем у маков.
Lenovo Yoga — ноутбук-планшет для разработки? Странное решение. И не знаю я ничего про них. И отзывов мало очень. Мимо.
Dell XPS 15 по цене уже аналогичны макам. И опять неясности с описанием: вес от комплектации разный. На сайте производителя таких комплектаций вообще нет, как магазины заявляют.
Получается сабж в своем ценовом диапазоне одинок.
В итоге если не рассматривать сабж, то выбор будет между XPS и MacBook. Осталось решить рассматривать ли…
Позвольте с вами в некотором роде не согласиться. Сейчас программирование (или скорее автоматизация) проникает во все профессии все больше и больше. Когда придет время работать тем, кто сегодня только пошел в школу этот процесс будет еще более масштабным. Ни кто не заставляет детей в школе обучать всем тонкостям разработки ПО, но освоить самые азы программирования (не говоря уже о простой «компьютерной грамотности») — это получить конкурентное преимущество на рынке труда. А то и просто не остаться за бортом. Тот же python встроен во все дистрибутивы linux и вроде как во все последние macos. На windows вполне себе легко устанавливается. Либо какой-то shell-script. Это то, что реально поможет в любой профессии в будущем. Точно так же, как всегда пригодится школьная математика, физика, география и т.д. Т.е. это базис уже по сути, который пригодится и биологу, и архитектору и всем остальным. А вот если
Я так понял, что речь идет о книге издательства O`Reily из серии HeadFirst под названием Design Patterns. На мой взгляд это одна из самых понятных книг на эту тему.
Программеры чаще всего так и говорят. А вот реальный ответ на такую фразу одного из директоров довольно крупной компании: «Что значит не можешь? В этих процедурах что, select'ы другие какие-то? Делай давай! Быстро!»
Уже есть такое нечто на экранах страны. Ну почти такое. По результатам ежеквартальной аттестации если ты попал в первые 5% — вэлком в кадровый резерв и дальше в манагеры. Если в так сказать в последние 5% — репрессии таковы, что уволишься сам. Половина так и уходит. Самое смешное, что есть при этом некая норма баллов, от набора которой зависит квартальная премия. Так вот можно набрать норму (это 0.7 от max) и при этом все равно быть в последних 5%. Ротация людей в компании довольно большая в итоге.
Посчитал, показал, рассказал. Покивали, похвалили, но делать отказались. Потому что «это мы заказчику не продадим». А открыть небольшой инвест в рамках текущей разработки это же надо рискнуть. «А вдруг мало ли что?» Зато очень эффективные менеджеры. На очень хорошем счету у акционеров компании. А проблемы же не на месте стоят: они нарастают.
На выходе же мы имеем только одну структуру данных — стек.
По вашим пунктам:
1. Преобразование в постфиксную запись из инфиксной — это подготовительная операция. Если ее проводить самостоятельно, то нужен будет только один стек для той самой «сортировки» операций по приоритетам. На входе в каком-то виде выражение (пусть набор символов тот же). Токенизация тут же происходит. На все требуется один проход по исходным данным.
2. Перенесение операндов в стек в полном составе происходит очень редко. В данном случае вы предложили вырожденный случай, а не «усредненный» пример. В общем случае в стеке одновременно не будут находиться вообще все операнды.
3. Непосредственный расчет как раз за один проход и делается. Как раз об этом я написал в конце. Видимо не очень понятно, виноват. Попробую еще раз.
На входе сырое выражение. У нас уже два пустых стека. Читаем вход, токенизируем, полученные токены либо идут в стек операндов, либо в стек операций. Когда операции по приоритету выталкиваются из стека операций, то происходит сразу тот расчет в стеке операндов который я описал в предыдущем комментарии. В итоге за один проход входящей последовательности данных мы сразу получаем ответ. Валидацию оставляем за кадром, считаем что последовательность на входе уже хорошая.
Мне кажется Вы не совсем верно уловили основное назначение ОПН как таковой. Про один стек и проход везде упоминают только и исключительно для подготовленной постфиксной записи. Эта самая запись и называется ОПН. Ее подготовка — это отдельная операция, да. Основное применение — интерпретаторы и компиляторы. Выражение, написанное программистом, переводится в ОПН и, грубо говоря, таким остается в коде. На этапе выполнения вместо переменных подставляются реальные значения и быстро, в один проход, с одним стеком, выражение вычисляется.
Есть очередь «A B C D E F + / — * +» и пустой стек. Алгоритм очень простой: достаем по одному из очереди. Если достали число — положили в стек. Если достали «операцию» — вынули из стека два числа, применили «операцию», положили обратно в стек. Когда очередь кончилась в стеке лежит результат вычисления.
Что интересного в этих реальных действиях?
Вообще ОПН imho удобнее применять сразу при разборе выражения «A + B * (C — D / (E + F))». Тогда просто два стека нужно использовать. Один для чисел, второй для операций. Общий алгоритм немного сложнее естественно будет. Но результат тот же.
По сабжу. Припаянную память и диск еще можно хоть как-то понять. Хотя не очень приятно. Для расширения диска хоть второй слот оставили. А память — это навечно.
А вот то, что проц U как раз и напрягает больше всего. Но тут возникло сомнение в виде восьмого поколения. Интел помнится заявил, что эти U заоптимизировали до уровня HQ предыдущих поколений. Как раз при меньшем TDP. И если погуглить что-то типа 8550U vs 7700HQ, то интересные сравнения видим. Да, проигрывает. Но совсем немного. В некоторых синтетических тестах даже выигрывает. И здесь важным становится как конкретно в этой машинке сделано охлаждение.
В идеале конечно взять бы несколько разных, самому погонять ) Но приходится читать обзоры и искать крупицы информации.
По Xiaomi интересует время работы реальное, перегрев/тротлинг, ну и надежность )
Дано: Яндекс.Маркет -> ноутбуки, 15 дюймов, i7, 4 ядра, память 16+, подсветка клавиатуры, время работы 8+ часов, вес не более 2 кг. На выходе 17 машинок.
Из них: 7 — маки. 4 MS Surface, 3 Dell, 2 Lenovo и собственно сабж. При чем Dell Latitude в этот список нечестно попал — вес указан без аккумулятора.
- MS Surface — цены выше чем у маков.
- Lenovo Yoga — ноутбук-планшет для разработки? Странное решение. И не знаю я ничего про них. И отзывов мало очень. Мимо.
- Dell XPS 15 по цене уже аналогичны макам. И опять неясности с описанием: вес от комплектации разный. На сайте производителя таких комплектаций вообще нет, как магазины заявляют.
Получается сабж в своем ценовом диапазоне одинок.В итоге если не рассматривать сабж, то выбор будет между XPS и MacBook. Осталось решить рассматривать ли…