# дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 06:03
Оценка: 62 (16) +3 -1 :))) :))) :)))
в году эдак 4710 по китайскому календарю мыщъх искал работу. искал долго, но основательно и продуктивно. а пока искал решал разные задачки. чаще всего попадался калькулятор. попадался так часто, что основательно задолбал. я не выдержал и стал стебаться. как известно, экзамен это беседа двух умных людей. а если один из них дурак, да еще и без чувства юмора...

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

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

нахожу наконец интевьера и говорю, что написал и давайте мне следующую задачу. интервьер, улыбаясь, говорит: "eval вызвал?". а я ему: "и ни фига не eval". он мне: "скажи честно -- уже раньше писал или с интернета скачал?". я ему: "нет, не с интернета. раньше писал, сейчас воспроизвел по памяти. там правда скобки не поддерживаются и унарный минус не работает, но сложение, вычитание, умножение, деление и взятие остатка есть с поддержкой приоритетов. это типа скелет, который еще за пять минут можно расширить. можно даже имена переменных поддержать. это вообще раз плюнуть. несколько строчек дописать.

итервьер (удивленно): "давай, показывай. посмотрим что у тебя за АРХИТЕТУРА". я разворачиваю к нему ноут. на экране фар и колорер. и пять строк кода:


expr := expr + term | expr - term | term
term := term * factor | term / factor | term % factor | factor
factor := expr | number
number := number digit | digit
digit := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9


интервьер смотрит на это глазами шурика из мосфильма и вопрошает: "это вообще ЧТО?". я ему (гордо): "калькулятор". он: "х... какая-то. это вообще работает?". я: "это BNF. точнее почти BNF, но без угловых скобок, которые снижают наглядность, но вам шашечки или ехать?".

интервьер: "BNF это что?". идем в википедию. читаем. интервьер говорит: "это какой-то абстрактный язык перпендикулярный реальности. вы сдайте мне так, что калькулятор работал. то есть, чтобы его было можно запустить и сложить 2 + 2".

мысленно матерясь скачиваю PLY (Lex + Yacc) с которым поставляется калькулятор часть которого реализована в лексере, а часть в парсере. убираю лексер и переписываю все на парсере в результате чего он меняется так, что его родная мама не узнает. на выходе получается практически тоже самое, что и было сначала, только с "обвязкой". на это уходит минут 10 — 15 (не засекал). добавляю поддержку возведения в степень, скобки и hex-числа и перевод цельсия в фаренгейты и наоборот.

но такой подход к решению проблемы не нравится и мне говорят: "ты бы еще регулярными выражениями его парсил". я: "можно и регулярными, но это не парсер будет, а лексер". тут все начинают шуметь: "почему лексер, а не, скажем, обратная польская запись? почему не аст? короче, ты ничего не знаешь".

конечно, умом я понимаю, что если мне дают четыре часа на написание кода, то ожидают увидеть что-то низкоуровневое, где все написано руками, но это только предположение. возможно, что они ожидают получить калькулятор вместе с тестами, sdk и сопроводительной документацией на 100500 страниц.

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

дао калькулятора (и не только калькулятора) угадать в каком ухе у кого звенит. напишите все руками -- вам скажут идти курить матчасть, поскольку это слишком базовые понятия. а если вы используете правильные инструменты и решите задачу за пять минут -- вам скажут, что хотят увидеть архитектуру и владение ооп. истина в том, что не ошибается только тот, кто ничего не делает и мудрый отличается от умного тем, что мудрый никогда не воспринимает всерьез компании в которых дают писать код на 2+ часа. это неправильный фильтр и через него проходят неправильные люди. мудрый программист сначала обсудит эту самую архитектуру, а только потом возьмется за перо клавиатуру. калькулятор хорош тогда, когда на его примере обсуждают пути решения поставленной задачи. калькулятор интересен тем, что его можно реализовать и как лексер, и как парсер. или как и то, и другое вместе. машины состояний можно обсудить. поднять вопрос (не)возможности корректно распарсить выражение со скобками на регулярных выражениях. обработка ошибок -- это еще одна тема для обсуждений. правильный калькулятор не только выдает позицию ошибки, но внятно объясняет, что тут не так, а не просто syntax errror и попробуй угадать какой. но это все лирика. дао калькулятора не тут, а совсем в другом месте.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: # дао калькулятора (история первая)
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.14 07:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>мысленно матерясь скачиваю PLY (Lex + Yacc) с которым поставляется калькулятор часть которого реализована в лексере, а часть в парсере. убираю лексер и переписываю все на парсере в результате чего он меняется так, что его родная мама не узнает. на выходе получается практически тоже самое, что и было сначала, только с "обвязкой". на это уходит минут 10 — 15 (не засекал). добавляю поддержку возведения в степень, скобки и hex-числа и перевод цельсия в фаренгейты и наоборот.


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

М>конечно, умом я понимаю, что если мне дают четыре часа на написание кода, то ожидают увидеть что-то низкоуровневое, где все написано руками, но это только предположение. возможно, что они ожидают получить калькулятор вместе с тестами, sdk и сопроводительной документацией на 100500 страниц.


Вообще, за 4 часа можно написать на Си свой малемький игрушечный як, а потом на нем уже за 5 минут решить задачу
Re: # дао калькулятора (история первая)
От: artkarma  
Дата: 13.02.14 07:38
Оценка:
Харошая текста,
пеши есчо


Компания наверн была в РФ?
Re: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 13.02.14 07:43
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


Вообще, странно это выглядит. Обычно такие задачи ставят программистам, которых берут на средние позиции. Это предполагает, что уровень кандидата неизвестен заранее, надо его проверить. Ну и уровень необходим соответствующий, и зарплата на такие позиции соответствующая. Я на последние три работы, когда устраивался, такие задачи не решал, позиции были такие, что мы говорили о других вещах, обсуждали предметную область, в основном. Чета у тебя там в Штатах совсем плохо с работой, что ты на такие должности пытаешься устроиться.
Re[2]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 07:49
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Вообще, странно это выглядит. Обычно такие задачи ставят программистам, которых берут на средние позиции. Это предполагает, что уровень кандидата неизвестен заранее, надо его проверить. Ну и уровень необходим соответствующий, и зарплата на такие позиции соответствующая. Я на последние три работы, когда устраивался, такие задачи не решал, позиции были такие, что мы говорили о других вещах, обсуждали предметную область, в основном. Чета у тебя там в Штатах совсем плохо с работой, что ты на такие должности пытаешься устроиться.


А ты поди в РФ или даже в Мск работу искал. У нас тут такая нехватка кадров, что любую компанию, которая предложит что-то подобное можно смело слать в попу, т.к. за ней в очереди стоит еще 5 желающих нанять.
А вот если ты весь такой умный и красивый, посылающий компании с подобными запросами в РФ начнешь общаться с Гуглом, Амазоном или еще кем-то подобным, то гномики с калькуляторами радостно распахнут свои объятия перед тобой
Re[2]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 08:23
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Здравствуйте, мыщъх, Вы писали:


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


M> Вообще, странно это выглядит. Обычно такие задачи ставят программистам, которых берут на средние позиции.

я претендовал на позицию CS/архитектор. так что давать задачу на программирование руками было странно вдвойне, но судя по всему во многих компаниях люди не в курсе как проводить собеседование (их этому не учили), но руководство требует собеседовать. мне приходилось бывать в их шкуре. это когда опыта найма сотрудников нет, в людях я не разбираюсь и к собеседованиям не готовлюсь (хотя должен) и тупо не знаю, чтобы такого спросить. кстати, это быстро отучило меня задавать вопросы, в которых я не разбираюсь или "знал, но забыл".

M> уровень необходим соответствующий, и зарплата на такие позиции соответствующая.

стиль собеседования от зарплаты зависит слабо ИМХО.

M> Чета у тебя там в Штатах совсем плохо с работой, что ты на такие должности пытаешься устроиться.

работы -- валом. тем более, что устраивался уже с EAD картой в кармане. но почему-то многие просили написать калькулятор, хотя я ни разу не девелопер и никогда им не был. и писать калькулятор на собеседовании это как оскорбление (на позицию cs). а потому можно и постебаться. если люди с чувством юмора то оценят. а если нет -- то и не надо.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 08:34
Оценка:
Здравствуйте, artkarma, Вы писали:

A>Харошая текста,

A>пеши есчо
следующая история про калькулятор будет смешнее.


A>Компания наверн была в РФ?

нет, в сша. компания "маленькая, но гордая". не все компании такие. большинство компаний -- нормальные. но даже в нормальных компаниях попадаются совершенно уникальные личности. и если им доверяют собеседовать людей -- тогда "ой". но рассказывать о типичных собеседованиях неинтересно. потому что о них совершенно нечего рассказать. встретились. рассказали о себе, а я -- о себе. выясняется, что я хочу делать одно, а им нужно совсем другое. договорились если ни я, ни они ничего не найдут за определенный срок, тогда встретимся еще и будем идти на взаимный компромис, но это вряд ли, т.к. в сша рынок труда в ИТ довольно развит и если хорошо поискать, то можно найти _то_что_надо_. а когда находишь _то_что_надо_, то там и собеседования может не быть (в моем случае встретились за ланчем в ресторане, где даже ноута не было -- даже разогнав фантазию тут совершенно не о чем писать).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 08:40
Оценка:
2/13/2014 10:43 AM, mefrill пишет:

> Чета у тебя там в Штатах совсем плохо с работой,

> что ты на такие должности пытаешься устроиться.
Причем тут штаты — это определяется только наличием знакомых в
соответствующих местах. Если ты пойдешь через стандартную посылку
резюме, то именно так тебя и спрашивать будут про калькуляторы и гномиков.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 08:42
Оценка:
2/13/2014 10:49 AM, kaa.python пишет:

> У нас тут такая нехватка

> кадров, что любую компанию, которая предложит что-то подобное можно
> смело слать в попу, т.к. за ней в очереди стоит еще 5 желающих нанять.
Хватит рассказывать сказки про нехватку кадров, надоело уже. Была бы
нехватка, не было бы здесь срачей про гномиков в российских конторах.
А mefrill просто искал среди своих знакомых и собеседование было просто
в варианте поговорить за жизнь.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 08:49
Оценка: +2
Здравствуйте, Vzhyk, Вы писали:

V>Хватит рассказывать сказки про нехватку кадров, надоело уже. Была бы

V>нехватка, не было бы здесь срачей про гномиков в российских конторах.

Ну давай я переформулирую: у нас серьезная нехватка кадров во многих IT областях с высоким порогом входа. Вот чесно тебе скажу, ни на одном собеседовании про гномиков не спрашивал и у меня не спрашивали уже лет 10 как. Ну а при низком пороге входа или при большом количестве желающих куда уж без гномиков-то?
Re[3]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 09:02
Оценка:
Здравствуйте, мыщъх, Вы писали:

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

А зачем вообще задавать всякие странные вопросы. Гораздо больше информации о человеке можно узнать, если дать ему возможность самому рассказывать о себе, иногда направляя в нужное русло.

М>но почему-то многие просили написать калькулятор, хотя я ни разу не девелопер и никогда им не был. и писать калькулятор на собеседовании это как оскорбление (на позицию cs).

Я его вообще не напишу, потому как ни разу в жизни не пришлось заниматься чем-то хоть чуть близким к этому.
Re[5]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 09:06
Оценка:
2/13/2014 11:49 AM, kaa.python пишет:

> Ну давай я переформулирую: у нас серьезная нехватка кадров во многих IT

> областях с высоким порогом входа. Вот чесно тебе скажу, ни на одном
> собеседовании про гномиков не спрашивал и у меня не спрашивали уже лет
> 10 как.
Не все такие крутые спецы, как ты.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 09:15
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, мыщъх, Вы писали:


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

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

или взять проект jsunpack.com -- парисить pdf регулярками? парсер дохнет на первом же комментарии. потому что он кривой и неправильный. я форкнул проект и пытался усилить детекцию, но в какой-то момент в коде стало слишком много "подпорок" и пришло понимание, что легче самому писать с нуля и писать правильно. то есть лексом/яком. кстати, создатель проекта автор книги Malware Analyst's Cookbook. книга -- хорошая. а вот парсер на регулярках...

тут и так синтаксис pdf неоднозначный. в частности внутри стрима может быть endstream, что делает разбивку на токены нетривиальной задачей, которая требует дополнительной информации, которая может быть получена от парсера только на финальной стадии, что не укладывается в LL грамматику и потому yacc не поможет. очень важно знать синтаксис pdf с одной стороны и возможности yacc с другой. попытка описывать грамматику pdf по мере углубления в спецификацию приводит к мату и хаку со множеством "костылей". если же знать об этих "особенностях" заранее, то задачу можно решить с яком, но только в несколько проходов с грамматиками различных уровней.

Pzz>Вообще, за 4 часа можно написать на Си свой малемький игрушечный як, а потом на нем уже за 5 минут решить задачу

норма выработки кода очень сильно зависит от навыков. у меня по жизни получается так, что писать приходится гораздо меньше чем думать и потому пишу я неспешно. за четыре часа я даже игрушечный парсер не напишу. а ведь там не только парсер нужен, но и лексер. а еще нужно вычислять, что мы считаем и делать кучу проверок типа на переполнение. калькулятор с int и float это не калькулятор. с натяжкой фиксированную точку можно получить выполняя все вычисления как целочисленные, а потом просто переносить разряд. если у нас всего 32 разряда, то это будет игрушечный калькулятор. и тут возникает вопрос: реализовать BigNum это как бы не проблемма (умножене в столбик), но это _время_. на чистом си я бы не стал такое писать (только если сильно приспичит).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: # дао калькулятора (история первая)
От: a_g_99 США http://www.hooli.xyz/
Дата: 13.02.14 09:27
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>задачу переформулировали: написать калькулятор на си без использования сторонних библиотек, чтобы не тащить зависимости в проект. я говорю, что генераторы парсеров вообще-то совершенно необязательно подключать как библиотеки. они генерируют код на всех популярных языках и этот код уже работает без зависимостей. если вы не хотите, чтобы при решении задачи использовались подобные инструменты -- так и скажите. но нет! не говорят.


Так чего они хотели? Чтобы вы написали свой ll-парсер?
Что можно подавать на вход (какие терминалы/нетерминалы)? А то получается пойди туда не знаю, принеси не знаю что за 4 часа
Re: # дао калькулятора (история первая)
От: Abyx Россия  
Дата: 13.02.14 09:30
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>конечно, умом я понимаю, что если мне дают четыре часа на написание кода, то ожидают увидеть что-то низкоуровневое, где все написано руками, но это только предположение. возможно, что они ожидают получить калькулятор вместе с тестами, sdk и сопроводительной документацией на 100500 страниц.


М>задачу переформулировали: написать калькулятор на си без использования сторонних библиотек, чтобы не тащить зависимости в проект. я говорю, что генераторы парсеров вообще-то совершенно необязательно подключать как библиотеки. они генерируют код на всех популярных языках и этот код уже работает без зависимостей. если вы не хотите, чтобы при решении задачи использовались подобные инструменты -- так и скажите. но нет! не говорят.


М>дао калькулятора (и не только калькулятора) угадать в каком ухе у кого звенит. напишите все руками -- вам скажут идти курить матчасть, поскольку это слишком базовые понятия. а если вы используете правильные инструменты и решите задачу за пять минут -- вам скажут, что хотят увидеть архитектуру и владение ооп. истина в том, что не ошибается только тот, кто ничего не делает и мудрый отличается от умного тем, что мудрый никогда не воспринимает всерьез компании в которых дают писать код на 2+ часа. это неправильный фильтр и через него проходят неправильные люди. мудрый программист сначала обсудит эту самую архитектуру, а только потом возьмется за перо клавиатуру. калькулятор хорош тогда, когда на его примере обсуждают пути решения поставленной задачи. калькулятор интересен тем, что его можно реализовать и как лексер, и как парсер. или как и то, и другое вместе. машины состояний можно обсудить. поднять вопрос (не)возможности корректно распарсить выражение со скобками на регулярных выражениях. обработка ошибок -- это еще одна тема для обсуждений. правильный калькулятор не только выдает позицию ошибки, но внятно объясняет, что тут не так, а не просто syntax errror и попробуй угадать какой. но это все лирика. дао калькулятора не тут, а совсем в другом месте.


ну так и написал бы этот правильный калькулятор за 4 часа.
людям хочется твой код посмотреть, а не БНФ и код генереный генератором парсеров.
In Zen We Trust
Re[4]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 09:39
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Здравствуйте, мыщъх, Вы писали:


V> А зачем вообще задавать всякие странные вопросы.

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

V> Гораздо больше информации о человеке можно узнать,

V> если дать ему возможность самому рассказывать о себе,
лично я предпочитаю демонстрировать свои наработки в "живую". и собеседование больше похоже на презентацию. кому-то это нравится, а кто-то начинает задавать совершенно нерелевантные вопросы.

V> Я его вообще не напишу, потому как ни разу в жизни не пришлось заниматься чем-то хоть чуть близким к этому.

с учетом того, что мне приходится заниматься распознаванием малвари, а чтобы распознать малварь надо сначала ее распарсить, то в моем случае калькулятор вполне релевантен, хотя основную проблему представляет не парсинг, а знание того, что мы, собственно, ищем (то есть как работает малварь и чем она отличается от других животных. это ни в каких спеках не написано. за это мне, собственно, и платят. а парсер скорее всего уже давным давно написан).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: # дао калькулятора (история первая)
От: artkarma  
Дата: 13.02.14 09:40
Оценка: :)
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, artkarma, Вы писали:


A>>Харошая текста,

A>>пеши есчо
М>следующая история про калькулятор будет смешнее.
Вообще-то парсер мат выражений на С++ — это тема курсовой работы старших курсов в одном из ведущих технических вузов Санкт-Петербурга, задание на весь семестр, причем сами всё, от и до, пишут процентов 13 студентов, 50 % не берут эту тему как сложную.

Задание включает разбор скобок и простых арифметических операторов, без корней логарифмов и прочей подобной шняги.
Re[4]: # дао калькулятора (история первая)
От: Abyx Россия  
Дата: 13.02.14 09:47
Оценка: -2
Здравствуйте, artkarma, Вы писали:

A>Вообще-то парсер мат выражений на С++ — это тема курсовой работы старших курсов в одном из ведущих технических вузов Санкт-Петербурга, задание на весь семестр, причем сами всё, от и до, пишут процентов 13 студентов, 50 % не берут эту тему как сложную.


A>Задание включает разбор скобок и простых арифметических операторов, без корней логарифмов и прочей подобной шняги.


прекрасный пример того какое у нас говнообразование в говновузах.

этот самый парсер пишется за час.
вместе с тестами, ООП и "архитектурой" и т.п.

а тут сначала учат пограмированию с младших курсов, а потом полгода не могут парсер написать.
и эти студенты потом должны идти работать %)
In Zen We Trust
Re[2]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 10:03
Оценка: +1
Здравствуйте, a_g_99, Вы писали:

__>Здравствуйте, мыщъх, Вы писали:


__>Так чего они хотели? Чтобы вы написали свой ll-парсер?

с учетом того, что они не знали что такое BNF, не факт, что они знают, что такое LL-парсер. знают только, что хотели посмотреть и оценить АРХИТЕКТУРУ под которой, вероятно, подразумевается декомпозиция.

__> Что можно подавать на вход (какие терминалы/нетерминалы)?

__> А то получается пойди туда не знаю, принеси не знаю что за 4 часа
вот так и получается. но не буду же я тратить на первую (и последнюю) попытку 4 часа (т.е. все отведенное время)?! вот и начал с того, что описал основные операции в BFN-нотации с поддержкой приоритетов, ожидая услышать, что я двигаюсь в (не)правильном направлении и дальше действовать по ситуации. но ситуация приподнесла сюрприз в виде вопроса: "что это такое?".

постановки задачи как таковой не было. в частности не указывалось следует ли вообще поддерживать скобки. следует ли поддерживать унарный минус? у него же приоритет выше, чем у умножения и это усложняет разбор, но если поставить условие, что унарный минус будет в скобках, то такое можно и "руками" разобрать без генераторов парсеров. а если только сложение/вычитание и умножение/деление без скобок и прочих наворотов, то это вообще тривиально, но зачем решать задачу сложно, когда она решается в пять строк? тем более, что на вопрос "на каком языке писать" мне ответили "на _любом_", а BNF это _язык_, хотя, конечно, я стебался, поскольку напрямую BNF не запустить и это действительно еще не калькулятор, а только описание синтаксиса предполагаемого языка.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[5]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 10:14
Оценка:
2/13/2014 12:39 PM, мыщъх пишет:

> поручили собеседовать, а я не знаю как. а человек говорит: вот мое

> резюме, вот мой опыт работы, какие у вас будут вопросы? просишь
> рассказать о себе, а человек: читайте резюме -- там все написано. а там
> действительно что-то написано, но ведь написать можно все, что угодно,
> верно? вот и думаешь -- чтобы такого релевантного спросить.
Такого сразу лесом посылать. Из такого максимум, что можно получить —
это тупого исполнителя копать отсюда и до обеда.
Одно из важнейших умений специалиста в нашей области — это уметь
представить свою работу. А также из представления своей работы можно
выяснить не только что человек умеет, а и более важное, как человек
работает. А этот не просто не умеет, а даже и не хочет.

> лично я предпочитаю демонстрировать свои наработки в "живую". и

> собеседование больше похоже на презентацию. кому-то это нравится, а
Круто.

> кто-то начинает задавать совершенно нерелевантные вопросы.

Дибилов хватает.
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.