# дао калькулятора (история первая)
От: мыщъх США 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[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 01:31
Оценка: 27 (4)
Здравствуйте, kaa.python, Вы писали:

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


KP>Слушай, а можно вот тут подробнее?

да, конечно

KP>Мне не совсем понятно что именно ты показываешь.

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

дальше. в коммерческие продукты, ознакомительные версии которых любой может скачать с официального сайта, входят мои бинарники. ничто не мешает мне написать свою "обертку" для запуска их вне продукта (если это библиотеки), но в моем случае это диагностические утилиты командной строки. в них даже сохранен мой копирайт as is: "(c) my_first_name my_last name, company_name", то есть всем ясно, что их писал я. так же в моем случае было получено разрешение на бесплатное распростанение бинарей в маркетинговых целях (это потому что мы поставляли аппаратно-программный комплекс, а бинарь продуктом _не_ является и не имеет никакого business value без поддержки, документации и с лицензией "для ознакомления").

наконец, можно демонстрировать ноу-хау. например, для детекции зловредных pdf антивирусные компании запускают акробата и перехватывают множество функций. мне же достаточно одной. которую никто ранее не перехватывал. а ее и не нужно перехватывать. ее коцать нужно, что существенно все упрощает (вместо инжекта в процесс акробата с последующим сбором и передачей данных у меня битхак четырех байт). или вот другой пример. есть множество утилит для разжатия всех стримов в pdf, но они либо платные, либо кривые. а в GhostScript входит диагностическая post-script утилита, разжимающая часть стримов. путем небольшого допила (минут пять от силы) она разожмет и остальные, однако, GhostScript и акробат все-таки имеют слишком много различий, но (!) в sdk к акробату входит демонстрационный плагин, который (внимание на экран!) расжимает все-все-все стримы, включая зашифрованные. вместо того, чтобы платить штуку баксов за коммерческую утилиту для анализа зловредных pdf ее можно собрать хоть на основе GhostScript, хоть на основе акробата (правда, если мне не изменяет память бесплатный ридер не грузит плагины без цифровой подписи, а за акробата нужно платить таньгу, но в больших компаниях уже есть цифровая подпись, а для независимой демонстрации на стороне можно захачить бесплатный ридер, отучив его проверять цифровые подписи)

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

KP> соответственно ты показываешь свои личные наработки, да?

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


KP>А идея вообще восхитительная, на мой взгляд!

между прочим, это довольно популярный метод. у многих соискателей к резюме прилагаются слайды, которые они демонстрируют на большом экране, форсируя тем самым ход интервью. если не ошибаюсь это называется drive-by метод.
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]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 05:42
Оценка: 1 (1) +1 :)
Здравствуйте, kaa.python, Вы писали:

KP>А ты поди в РФ или даже в Мск работу искал. У нас тут такая нехватка кадров, что любую компанию, которая предложит что-то подобное можно смело слать в попу, т.к. за ней в очереди стоит еще 5 желающих нанять.

KP>А вот если ты весь такой умный и красивый, посылающий компании с подобными запросами в РФ начнешь общаться с Гуглом, Амазоном или еще кем-то подобным, то гномики с калькуляторами радостно распахнут свои объятия перед тобой

Ага, вон летом микрософт в Кембридж людей набирал, в исследовательский центр. На меня рекрутерша вышла через LinkedIn, мол попробуй свои силы. Черт меня дернул, согласился. Сначала тестовое задание, что-то поделать с их коллекциями запрос-документ. Ну ладно, сделал подбор формулы ранжирования, через линейную интерполяцию. Там же надо матричное уравнение решать, на .Net я как-то хорошей матричной библиотеки не нашел, пришлось написать. Ну сдал. Говорят хорошо, давай собеседоваться. Собеседует их архитектор, и снова задачи "про гномиков"! Вычислить медиану ряда, еще какая-то фигня. Мое решение их задания он, оказывается, вообще в глаза не видел. Я то что-то о себе думал поначалу, а оказалось -- это просто конвейер, у них там стандартные вопросы и должны быть стандартные ответы. В общем, плюнул и зарекся, больше на такие собеседования -- ни ногой!
Re[5]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 08:07
Оценка: 1 (1) +1
Здравствуйте, мыщъх, Вы писали:

M>> Там же все сразу вычислять можно.

М>сразу это как? а приоритет операций? 1+2*3? или упаси боже 1+2*-3? хотя если не умничать, то можно вычислять и "сразу", но в несколько проходов. сначала вычисляются операции с наивысшим приоритетом, а затем менее приоритетные. но это ИМХО как-то несерьезно.

Нет, такие языки очень просто можно парсить и по ходу вычислять. Надо магазин (стек) для сохранения параметров и операторов, а также таблицу приоритетов операций. Идешь по строке, вытаскиваешь число -- кладешь в стек, вытаскиваешь операцию -- смотришь по таблице приоритет с оператором на вершине стека. Если приоритет выше, то кладешь в стек, если нет, то выталкиваешь из стека операции и параметры и вычисляешь, а результаты -- снова в стек. Скажем, выражение 1*2+3:
1. Читаешь 1 -- в стек параметров.
2. Читаешь *, смотришь в стек операций, есть там чего? Нет, значит кладешь в стек.
3. Читаешь 2 -- в стек параметров.
4. Читаешь +, смотришь в стек. Там на вершине *, его приоритет больше. * -- бинарный оператор, выталкиваешь из стека два параметра, вычисляешь и результат снова в стек. Значит, там теперь 2. Снова в стек операций, там ничего нет, вталкиваешь +.
5. Читаешь 3 -- в стек параметров.
6. Читаешь конец строки, выталкиваешь операции и вычисляешь 2+3=5, результат снова в стек. Смотришь в стек операций, там ничего нет. Проверяешь размер стека параметров, там должен быть один элемент, иначе ошибка. Он там есть и равен пяти.

Разбор магазинным автоматом с приоритетом операций возможен для т.н. операторных грамматик. Для более сложных языков не годится. Но для арифметических выражений, для регулярных выражений и т.п. подходит хорошо.
Re[4]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 08:49
Оценка: +2
Здравствуйте, Vzhyk, Вы писали:

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

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

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

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


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


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

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

а тут сначала учат пограмированию с младших курсов, а потом полгода не могут парсер написать.
и эти студенты потом должны идти работать %)
In Zen We Trust
Re[6]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 08:34
Оценка: +1 :)
Здравствуйте, Vzhyk, Вы писали:

>> N>Блин, везет вам там,

>> 1) давайте к нам;
V>nen777w у тебе уже с десяток раз спрашивал: "Как?"

Пришли мыши к сове. «Сова, нам от кошки житья нет. Ты птица мудрая, посоветуй, как быть!» Подумала сова. «Вот ежей, — говорит, — никакая кошка не тронет. Вам, мыши, надо ежиками стать!» Поблагодарили ее мыши, пошли домой, но с полдороги вернулись. «А как же мы можем в ежей превратиться?» «Вы, мыши, ко мне с мелкими деталями не лезьте, — отвечает сова, — я СТРАТЕГИЕЙ занимаюсь!


Но если объективно, тема "как" на этом форуме терлась стопицот раз и все кто хотел, включая мыщъха, уехали.
Re[11]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 10:58
Оценка: 10 (1)
2/18/2014 1:35 PM, kaa.python пишет:

> Тогда хотелось быб услышать что тобой лично понимается под "не

> тушкой".
Работа по моему достаточно узкому профилю. Про профиль, распрягаться не
буду, если кому очень интересно, в тоннах местного бреда найти можно,
если поискать. Просто профиль реально узкий.
Ибо от работы мне нужны не только деньги, но и чтобы интересно было и
коллектив нормальный (от крысиных бегов тошнит и сильно), а деньги — на
уровне местного рынка (там где жить), не более.
Ну а тушкой через гномиков в 46 лет не катит. Это позаниматься этой
херней пару месяцев уйдет, дождаться их собеседования (и чтобы по
возрасту не обрезали), пару лет в богадельне гномиколюбов поработать,
после пытаться искать выходы на то, что мне интересно. Итого лет через 5
(или реальнее 7) выйти в общем-то на тот же уровень жизни, что у меня
сейчас и это будет уже за 54-55, не не интересно. Плюс к этому еще куча
сложностей с работой для жены, учебой ребенка, жильем.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 06:44
Оценка: 5 (1)
Здравствуйте, mefrill, Вы писали:

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


M> Вообще непонятно, зачем это было.

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

калькулятор та же песня. во многих языках есть набортные парсеры, лексеры, понимающие bnf. и уж точно генератор парсеров сможет сгенерировать код на любом языке, включая чистый си без библиотек. писать руками? можно и руками, но пускай объяснят, что они хотят и как их танцевать. если генераторы парсеров им не нравятся, то почему они отказываются _явным_ образом запретить их использование?


M> Для калькулятора вообще непонятно, зачем там AST,

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

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

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

M> Там же все сразу вычислять можно.
сразу это как? а приоритет операций? 1+2*3? или упаси боже 1+2*-3? хотя если не умничать, то можно вычислять и "сразу", но в несколько проходов. сначала вычисляются операции с наивысшим приоритетом, а затем менее приоритетные. но это ИМХО как-то несерьезно.

M> Ну написал, и что?? Что они хотели увидеть через этот калькулятор? Фигня какая-то...

выше по ветке мне предлагали не выпендриваться, а реализовать калькулятор руками. но я с этим категорически не согласен. когда формулировка задачи требует телепатора, то тратить существенную часть времени, отведенного для решения, без гарантий того, что я движусь в правильном направлении... вот я и потратил 5 минут, показав 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]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 03:08
Оценка: 4 (1)
Здравствуйте, Michael7, Вы писали:

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


M>Надеюсь там не калькулятор, а хотя бы символьную математику студенты пишут? Иначе это деграданс.

ИМХО это деграданс отдельно взятого вуза. возможно, деграданс отдельно взятой страны. на ютубе можно найти много лекций по cs в арабский вузах на английском языке. интересно, почему россия до сих пор преподает на русском? исламский мир владет тремя языками: родным, арабским и английским. и при этом никто не курит и не пьет, поскольку за наркотики смертная казнь или пожизненное заключение.


M>К сожалению не могу вспомнить у какого фантаста читал рассказ, но там было про будущее в котором люди весьма сильно интеллектуально деградировали и куда попадает человек из настоящего в будущий НИИ. Там были такие отделы как точно не помню, но что-то вроде отдел дробей, отдел корней, еще какие-то, писались диссертации и т.п.


это не деградация. это специализация. возьмем математика из 19 века и начнем ему объяснять основы кибернетики. например, как работает калькулятор. кстати, а вы знаете как он работает? у нас есть АЛУ, которое может только складывать и выполнять логические операции. а требуется взять синус угла. мне довелось разговаривать с людьми, которые работали в закрытом НИИ в СССР и хачили мат обеспечение от DEC. советские математики оказались бессильны объяснить _как_ это мат обеспечение работает и вычисляет различные функции намного быстрее, чем они. только с появлением публикаций в зарубежных математических журналах эту проблему удалось решить.

ну или сравнить алгол и плюсы. разница ИМХО между ними в том, что на алголе студенты будут писать вменяемый код, а на плюсах сплошное безобразие. ИМХО сначала нужно давать основы алгоритмов и писать одну большую процедуру на 100500 строк. затем курить декомпозицию. курить долго. и только кода студенты на процедурных языках придут к тому, чтобы возвращать структуры с внутреннем состоянием (типа FILE на си) им можно показывать ООП.
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[6]: # дао калькулятора (история первая)
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.14 10:44
Оценка: 1 (1)
Здравствуйте, Vzhyk, Вы писали:

V>Одно из важнейших умений специалиста в нашей области — это уметь

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

Т.е., всех, кто не умеет с людьми разговаривать, сразу в лес посылаем? Ну и правильно, мы ведь официантов ищем, а не инженеров
Re[6]: # дао калькулятора (история первая)
От: Abyx Россия  
Дата: 13.02.14 14:08
Оценка: 1 (1)
Здравствуйте, artkarma, Вы писали:

A>>этот самый парсер пишется за час.

A>>вместе с тестами, ООП и "архитектурой" и т.п.

A>неужели так просто? Я за час не напишу.


да, если знаешь про алгоритм парсинга выражений (его можно найти в википедии), то всё просто.

у меня за час получилось вот так —
https://bitbucket.org/goldfinch/stringcompiler/src/8391b738273d9bd6e65ea890520033b1fc7c321c/

наверное программисты получше меня напишут быстрее.
In Zen We Trust
Re[15]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 11:45
Оценка: 1 (1)
2/18/2014 2:27 PM, kaa.python пишет:

> Это безусловно алгоритмы, но я думаю что это некие высокоуровневые

> алгоритмы, которые базируются на чем-то более низкоуровневом и
> фундаментальном.
Во-первых, не базируются. Они базируются на высшей математике, что в
институте всем здесь преподавали. По сути ни разу не пришлось
пользоваться чем-то навороченным из стандартных программистских
алгоритмов. Оно все не подходило для реальных задач, в реальных все
сложнее. Нет, STL со своими алгоритмами тот же во многих местах удобен,
код получается понятнее, лаконичнее.
Во-вторых, для многих базовых вещей там есть прекрасно отлаженные и
оптимизированные библиотеки. И писать свои велосипеды с квадратными
колесами — это или вредить или пилить.

> Ты же сам

> понимаешь <http://rsdn.ru/forum/job/5474730.1&gt;
Автор: Vzhyk
Дата: 18.02.14
почему отбор именно так

> построен.
Это другое. Это уже обсуждалось 100 раз. Интереснее обсудить, как
произошло такое сужение понятия алгоритмы.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: # дао калькулятора (история первая)
От: artkarma  
Дата: 13.02.14 09:40
Оценка: :)
Здравствуйте, мыщъх, Вы писали:

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


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

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

Задание включает разбор скобок и простых арифметических операторов, без корней логарифмов и прочей подобной шняги.
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: # дао калькулятора (история первая)
От: Артeм Австралия жж
Дата: 13.02.14 11:23
Оценка: +1
Здравствуйте, мыщъх, Вы писали:

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


http://ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции

P.S. Видать, у вас в Америке кто-то соригинальничал и вместо разворота списка и виртуального деструктора, дал разбор выражений. Ну а другие альтернативно одаренные ботаны прочитали у оригинала в блоге и принялись подражать. Что ж, придется теперь держать еще кусочек бесполезного мусора в голове.
Re[7]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 01:33
Оценка: :)
Здравствуйте, Abyx, Вы писали:

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


A>>>этот самый парсер пишется за час.

A>>>вместе с тестами, ООП и "архитектурой" и т.п.

A>наверное программисты получше меня напишут быстрее.

вот рекурсивный LL парсер выражений на чистом си:
http://rosettacode.org/wiki/Arithmetic_Evaluator/C
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  
Дата: 18.02.14 08:24
Оценка: :)
2/17/2014 8:58 PM, мыщъх пишет:

> N>Блин, везет вам там,

> 1) давайте к нам;
nen777w у тебе уже с десяток раз спрашивал: "Как?"
Posted via RSDN NNTP Server 2.1 beta
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[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[5]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 10:14
Оценка:
2/13/2014 12:39 PM, мыщъх пишет:

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

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

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

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

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

Дибилов хватает.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 10:17
Оценка:
2/13/2014 12:40 PM, artkarma пишет:

> Вообще-то парсер мат выражений на С++ — это тема курсовой работы старших

> курсов в одном из ведущих технических вузов Санкт-Петербурга, задание на
> весь семестр, причем сами всё, от и до, пишут процентов 13 студентов, 50
> % не берут эту тему как сложную.
А когда я учился у меня курсовые были "адаптивные методы решения жестких
систем ОДУ".
Posted via RSDN NNTP Server 2.1 beta
Re[2]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 10:19
Оценка:
Здравствуйте, Abyx, Вы писали:

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


A> ну так и написал бы этот правильный калькулятор за 4 часа.

я бы и написал. но когда... "блин, опять этого гребанный калькулятор!!! сколько можно!!!".

A> людям хочется твой код посмотреть, а не БНФ и код генереный генератором парсеров.

как бы да, но как бы и нет. это рулетка. напишешь 100500 строк кода и тебе скажут идти курить матчать и читать книгу дракона. кстати, дракон закодирован в номере года по китайскому календарю
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:21
Оценка:
2/13/2014 12:47 PM, Abyx пишет:

> а тут сначала учат пограмированию с младших курсов, а потом полгода не

> могут парсер написать.
> и эти студенты потом должны идти работать %)
Ты бы видел, что они после этих заведений (СПбГУ) пишут. От такого кода
потом в холодном поту просыпаешься.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.14 10:40
Оценка:
Здравствуйте, artkarma, Вы писали:

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

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

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

Hint: мелкопроцессор в таком калькуляторе если и есть, то это что-нибудь 4-битное, снабженное килобайтом програмной памяти и несколькими десятками байт памяти данных. Такую железку на C++ не попрограммируешь

Если вы поиграетесь с таким калькулятором, то поймете, что алкогоритм, на самом деле, весьма простой, и что там делать весь семестр, понять невозможно. А, ну да, проектировать архитектуру и иерархию классов.
Re[7]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 10:54
Оценка:
2/13/2014 1:44 PM, Pzz пишет:

> Т.е., всех, кто не умеет с людьми разговаривать, сразу в лес посылаем?

> Ну и правильно, мы ведь официантов ищем, а не инженеров
Да. Уже давно подавляющее большинство продуктов делается командами и
навык рабочего общения необходим. Необходим навык умения рассказать о
том, что сделал, как и почему, что предполагаешь делать. А вот вообще не
умеющих говорить можно брать только в том случае, если он гений и есть
задача точно для его гениальности и она никак не связана с другими.
А вот официанту навык общения в общем-то и не нужен. Улыбка да пара
дежурных фраз, правда в этом случае он без чаевых часто будет
оставаться, но работодателю на это в общем-то пофиг.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: # дао калькулятора (история первая)
От: BrainSlug Израиль  
Дата: 13.02.14 10:55
Оценка:
Pzz>Т.е., всех, кто не умеет с людьми разговаривать, сразу в лес посылаем?
А как ты определишь то ли он думать не умеет, то ли разговаривать, то ли работать не хочет? Люди о людях судят по внешним признакам, по поступкам. Человек может быть хоть Эйнштейном, но если не сумеет себя преподнести, никто никогда и не поймет, что он Эйнштейн. А времени на выяснения как известно мало. В этом вся и проблема.
.
Re: # дао калькулятора (история первая)
От: elmal  
Дата: 13.02.14 11:01
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>
М>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
М>

Ок, парсер написал, AST построил. А где реализация и собственно вычисления ? Генератор парсеров за тебя вычисления то не сделают . И кстати, нет поддержки скобочек, если уж такой умный, мог бы грамматику и понавороченнее сварганить.

Кстати на прологе круто бы калькулятор выглядел. По количеству строк было бы столько же, по выразительности было бы очень близко, но еще б и реализация была и это бы работало . В следующий раз рекомендую на прологе им зафигачить — код просто конфетка
Re[4]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 13.02.14 11:15
Оценка:
Здравствуйте, artkarma, Вы писали:

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


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


A> Вообще-то парсер мат выражений на С++ — это тема курсовой работы старших курсов

A> в одном из ведущих технических вузов Санкт-Петербурга, задание на весь семестр,
фигасе. в нью-джерси студенты пишут на си компилятор алгол-подобного языка, а самые продвинутые пишут с умным сборщиком мусора, оптимизации распределения переменных по регистрам и даже переупорядочиванию команд ЦП для создания очередей на запись/чтение совмещенных с выполнением операций в АЛУ. а самые-самые продвинутые даже распараллеливают выполнение однопоточного control flow на несколько цп.

язык, конечно, учебный. и очень простой. но это все-таки язык, причем компилируемый. плюс рантайм к нему. и все на си. правда не без помощи яка. но компилятор языка на несколько порядков сложнее калькулятора. это делают здесь: http://www.princeton.edu/ и это далеко не самый лучший университет.


A> причем сами всё, от и до, пишут процентов 13 студентов, 50 % не берут эту тему как сложную.

ИМХО это бесцельная трата сил и времени. вуз должен дать общую картину, а не вязнуть в узкой теме как в трясине. знаете, я очень удивился и обрадовался, когда узнал, что популярный плагин колорер для фара это дипломная работа. это очень хорошая и очень полезная работа. в результате которой на свет появился очень нужный инструмент. а писать 100500 раз никому не нужный калькулятор...
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]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 11:21
Оценка:
Здравствуйте, elmal, Вы писали:

E>Кстати на прологе круто бы калькулятор выглядел. По количеству строк было бы столько же, по выразительности было бы очень близко, но еще б и реализация была и это бы работало . В следующий раз рекомендую на прологе им зафигачить — код просто конфетка


Судя по остаточным студенческим воспоминаниям, Prolog штука реально замечательная, но вот кто бы его помнил на приличном уровне после окончания ВУЗа? Он же крайне бесполезен в реальной практике.
Re[3]: # дао калькулятора (история первая)
От: elmal  
Дата: 13.02.14 12:30
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Судя по остаточным студенческим воспоминаниям, Prolog штука реально замечательная, но вот кто бы его помнил на приличном уровне после окончания ВУЗа? Он же крайне бесполезен в реальной практике.

Ну, возможно кто и помнит. Парсеры на нем пишутся на раз два. Или, например, логику игрушки типа квеста на нем определить — тоже вполне неплохая идея. Да и использовать как ядро DSL чего то запутанного, но не критичного к скорости — тоже спасет. Сам язык однозначно не мертв, однозначно есть люди, которые его применяют до сих пор. Правда число таких мест ограничено, ибо порог вхождения довольно высок — это не спагетти код лабать на ифах и форах .

Главное возможности знать, а так по любому случаю придется в доку лезть, если хотя б полгода этим не занимался. Я вот с регулярными выражениями сталкиваюсь раз в полгода, и не смотря на то, что периодически освежаю в памяти это все, когда требуется первым делом гуглю, так как синтаксис забываю.
Re[4]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 13.02.14 13:25
Оценка:
Здравствуйте, artkarma, Вы писали:

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

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

Надеюсь там не калькулятор, а хотя бы символьную математику студенты пишут? Иначе это деграданс.

К сожалению не могу вспомнить у какого фантаста читал рассказ, но там было про будущее в котором люди весьма сильно интеллектуально деградировали и куда попадает человек из настоящего в будущий НИИ. Там были такие отделы как точно не помню, но что-то вроде отдел дробей, отдел корней, еще какие-то, писались диссертации и т.п.
Re[6]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 13.02.14 13:32
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Такого сразу лесом посылать. Из такого максимум, что можно получить —

V>это тупого исполнителя копать отсюда и до обеда.

Такие тоже нужны, а то все креативщики и нудно писать код не хотят
Re[5]: # дао калькулятора (история первая)
От: sergey2b ЮАР  
Дата: 13.02.14 13:32
Оценка:
Здравствуйте, мыщъх, Вы писали:

в ЛИТМО калькулятор с скобочками дом задание на 2 недели на первом курсе (пример есть дажве в первом издании K&R)
компилер small C + простая rtl курсовик на полгода
Re[3]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 13.02.14 13:36
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Судя по остаточным студенческим воспоминаниям, Prolog штука реально замечательная, но вот кто бы его помнил на приличном уровне после окончания ВУЗа? Он же крайне бесполезен в реальной практике.


Кстати, насчет практики. Не знаю, может байка, но слышал, что пролог использовался для написания чего-то вроде CAD для организации проектирования Бурана. Получилось сверхуспешно, но осталось уникальным примером.
Re[7]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 13:38
Оценка:
2/13/2014 4:32 PM, Michael7 пишет:

> Такие тоже нужны, а то все креативщики и нудно писать код не хотят

Ну тут хуже вариант был приведен, когда человек не может и не хочет
говорить. Как ты с таким работать будешь?
Или мы уже до той стадии высшего образования, когда только "креатившики"
говорить умеют, а остальные только мычать?
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: Vlad_SP  
Дата: 13.02.14 13:38
Оценка:
Здравствуйте, Michael7,

M>.... слышал, что пролог использовался для написания чего-то вроде CAD для организации проектирования Бурана.


Для организации проектирования или для проектирования?
Re[8]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 13.02.14 13:45
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>2/13/2014 4:32 PM, Michael7 пишет:


>> Такие тоже нужны, а то все креативщики и нудно писать код не хотят

V>Ну тут хуже вариант был приведен, когда человек не может и не хочет
V>говорить. Как ты с таким работать будешь?

Может у него аутизм? Писать код это часто не мешает, хотя общаться с таким трудно.

V>Или мы уже до той стадии высшего образования, когда только "креатившики"

V>говорить умеют, а остальные только мычать?

Надеюсь, что нет.
Re[5]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 13.02.14 13:48
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Здравствуйте, Michael7,


M>>.... слышал, что пролог использовался для написания чего-то вроде CAD для организации проектирования Бурана.


V_S>Для организации проектирования или для проектирования?


Именно в первую очередь для организации самого процесса проектирования.
Re[5]: # дао калькулятора (история первая)
От: artkarma  
Дата: 13.02.14 13:56
Оценка:
Здравствуйте, Abyx, Вы писали:

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


A>этот самый парсер пишется за час.

A>вместе с тестами, ООП и "архитектурой" и т.п.

неужели так просто? Я за час не напишу.

Ну канешн если не так

.....
return certainClass.Match.resolve(str);
};
Re[5]: # дао калькулятора (история первая)
От: artkarma  
Дата: 13.02.14 14:03
Оценка:
A>>Здравствуйте, мыщъх, Вы писали:

A>> причем сами всё, от и до, пишут процентов 13 студентов, 50 % не берут эту тему как сложную.

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

Да еще в каждом техническом вузе, каждый студент редуктор рассчитывает, хотя кому в здравом уме, в жизни придется его рассчитывать.
Re[9]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 13.02.14 14:13
Оценка:
2/13/2014 4:45 PM, Michael7 пишет:

> Может у него аутизм? Писать код это часто не мешает, хотя общаться с

> таким трудно.
А код потом в "корзину"?
Такого человека можно использовать, но только если есть некая небольшая
работа, не связанная ни с кем больше. Это редкость нынче?
Ну написал он код, это код кто-то пытается использовать, идет к этому
аутисту и ... все. Код использовать не получилось.
Я же не говорю о том, что чел должен крутейшую презентацию сделать, но
он должен уметь достаточно внятно и четко рассказать о том, что он делал
и почему так, а не иначе.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: # дао калькулятора (история первая)
От: MTD https://github.com/mtrempoltsev
Дата: 13.02.14 14:57
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Вот чесно тебе скажу, ни на одном собеседовании про гномиков не спрашивал и у меня не спрашивали уже лет 10 как.


В Яндекс ходил?
Re[6]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 15:10
Оценка:
Здравствуйте, MTD, Вы писали:

KP>>Вот чесно тебе скажу, ни на одном собеседовании про гномиков не спрашивал и у меня не спрашивали уже лет 10 как.

MTD>В Яндекс ходил?

Нет, они всегда сливаются как только узнают за сколько я согласен работать
Re[5]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.02.14 19:29
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


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

А идея вообще восхитительная, на мой взгляд!
Re[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 01:39
Оценка:
Здравствуйте, 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[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 01:48
Оценка:
Здравствуйте, artkarma, Вы писали:

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


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


A>>этот самый парсер пишется за час.

A>>вместе с тестами, ООП и "архитектурой" и т.п.

A>неужели так просто? Я за час не напишу.

вот пример на чистом си без всяких библиотек:
http://rosettacode.org/wiki/Arithmetic_Evaluator/C

половину программы занимает функция evaluate, которую можно сократить до трех-пяти строк если слегка подумать. если убить комментарии, то останется порядка сотни строк кода. это совсем немного, хотя архитектурно данный пример сильно косячит (в частности, использует глобальную переменную в качестве индекса на текущий символ -- на собеседовании к этому обязательно придерутся).
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[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 02:44
Оценка:
Здравствуйте, sergey2b, Вы писали:

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


S>в ЛИТМО калькулятор с скобочками дом задание на 2 недели на первом курсе

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

S>компилер small C + простая rtl курсовик на полгода

с генератором парсеров или руками? с генерацией машинного кода или front-end? просто интересно. если с генерацией, то когда они асм и форматы файлов (типа PE32) учат? или там MS-DOS/COM?
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[7]: # дао калькулятора (история первая)
От: CEMb  
Дата: 14.02.14 03:18
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>>>Вот чесно тебе скажу, ни на одном собеседовании про гномиков не спрашивал и у меня не спрашивали уже лет 10 как.

MTD>>В Яндекс ходил?

KP>Нет, они всегда сливаются как только узнают за сколько я согласен работать


А что за гномики? О_о Расскажите, а то что-то я не в курсе, а то вдруг собеседование...
Re[7]: # дао калькулятора (история первая)
От: sergey2b ЮАР  
Дата: 14.02.14 04:12
Оценка:
Здравствуйте, мыщъх, Вы писали:

S>>в ЛИТМО калькулятор с скобочками дом задание на 2 недели на первом курсе

М>а что за алгоритм такой, доступный на первом курсе? случайно не трансляция инфикса в постфикс и дальше полька?
да именно так

S>>компилер small C + простая rtl курсовик на полгода

М>с генератором парсеров или руками? с генерацией машинного кода или front-end? просто интересно. если с генерацией, то когда они асм и форматы файлов (типа PE32) учат? или там MS-DOS/COM?
руками
у кого как было, у кого то в P-COD + его интопритатор
у меня фактически генерация в COM для MSDOS была (+-94 год)
Re[5]: # дао калькулятора (история первая)
От: skirty  
Дата: 14.02.14 05:09
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>а самые-самые продвинутые даже распараллеливают выполнение однопоточного control flow на несколько цп.


Удивительно. В индустрии эта задача до сих пор не решена толком, а студенты одной левой.
Re[3]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 05:29
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Причем тут штаты — это определяется только наличием знакомых в

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

Ну да, последние три работы на одну я к знакомым устроился, а две других -- моя предметная область и они меня знали уже. Не напрямую, а по книжкам и статьям. Ясно, что если люди не тебя знают, то будут собеседовать и пытаться выяснить, кто ты такой есть.
Re[3]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 05:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


Вообще непонятно, зачем это было. Ну, написал бы ты калькулятор, скажем через стековый автомат. Для калькулятора вообще непонятно, зачем там AST, обратная польская запись или другое промежуточное представление. Там же все сразу вычислять можно. Ну написал, и что?? Что они хотели увидеть через этот калькулятор? Фигня какая-то...
Re[8]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.02.14 05:42
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>А что за гномики? О_о Расскажите, а то что-то я не в курсе, а то вдруг собеседование...


Поиск помогает. Но вообще, там алгоритмы спрашивают, а не задачи о гномиках.
Re[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 07:06
Оценка:
Здравствуйте, skirty, Вы писали:

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


М>>а самые-самые продвинутые даже распараллеливают выполнение однопоточного control flow на несколько цп.


S>Удивительно. В индустрии эта задача до сих пор не решена толком, а студенты одной левой.


см. выделенное. "самые-самые продвинутые". и никто не говорил, что они решают эту задачу лучше, чем разработчики "промышленных" компиляторов. но по крайней мере их знакомят с проблемой и существующими наработками в этой области.
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[8]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 07:11
Оценка:
Здравствуйте, sergey2b, Вы писали:

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


S>у кого как было, у кого то в P-COD + его интопритатор

S>у меня фактически генерация в COM для MSDOS была (+-94 год)
круто. эх... (ностальгически вздыхая по com) было же время. а сейчас даже вывести синусоиду на экран в винде надо грызть гранит апи. а чтобы она еще и не мерцала... раньше хоть был обратный ход луча, а сейчас все сильно иначе. не представляю как можно преподавать на примере винды.
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[8]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 14.02.14 07:35
Оценка:
2/14/2014 6:18 AM, CEMb пишет:

> А что за гномики? О_о Расскажите, а то что-то я не в курсе, а то вдруг

> собеседование...
Открываешь книжку про гору Фудзи и проникаешься. Старые советские книжки
по разным интересным задачкам можешь не смотреть — это слишком сложно
для собеседователей.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 14.02.14 07:40
Оценка:
2/14/2014 8:29 AM, mefrill пишет:

> Ну да, последние три работы на одну я к знакомым устроился, а две других

> -- моя предметная область и они меня знали уже. Не напрямую, а по
> книжкам и статьям. Ясно, что если люди не тебя знают, то будут
> собеседовать и пытаться выяснить, кто ты такой есть.
Ну и какое отношение к вопросу выше имел твой пост про штаты?
Похвастаться? Здесь??? Кому нужно, те и так тебя знают.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 14.02.14 07:46
Оценка:
2/14/2014 8:42 AM, kaa.python пишет:

> Поиск помогает

> <https://www.google.ru/#newwindow=1&amp;q=задача%20о%20гномах>. Но вообще,
> там алгоритмы спрашивают, а не задачи о гномиках.
И "гномиков" тоже.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 14.02.14 07:49
Оценка:
2/14/2014 8:42 AM, mefrill пишет:

> Я то что-то о себе думал поначалу,

> а оказалось -- это просто конвейер, у них там стандартные вопросы и
> должны быть стандартные ответы. В общем, плюнул и зарекся, больше на
> такие собеседования -- ни ногой!
Об этом тут последние 5 лет пишут или более. И если очень хочется к ним
, то идешь в инет, смотришь, как готовиться к их собеседованию
(стандартные вопросы-ответы), готовишься, сдаешь. Все, профит.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 08:08
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Ну и какое отношение к вопросу выше имел твой пост про штаты?

V>Похвастаться? Здесь??? Кому нужно, те и так тебя знают.

Да написал сгоряча, не подумал. Бывает.
Re[8]: # дао калькулятора (история первая)
От: Abyx Россия  
Дата: 14.02.14 08:22
Оценка:
Здравствуйте, мыщъх, Вы писали:

A>>>>этот самый парсер пишется за час.

A>>>>вместе с тестами, ООП и "архитектурой" и т.п.

A>>наверное программисты получше меня напишут быстрее.

М>вот рекурсивный LL парсер выражений на чистом си:
М>http://rosettacode.org/wiki/Arithmetic_Evaluator/C

LOL parse_error делает exit(1). Си такой Си.
In Zen We Trust
Re[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 09:04
Оценка:
Здравствуйте, mefrill, Вы писали:

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


M>>> Там же все сразу вычислять можно.

М>>сразу это как? а приоритет операций? 1+2*3? или упаси боже 1+2*-3? хотя если не умничать, то можно вычислять и "сразу", но в несколько проходов. сначала вычисляются операции с наивысшим приоритетом, а затем менее приоритетные. но это ИМХО как-то несерьезно.

M> Нет, такие языки очень просто можно парсить и по ходу вычислять.

M> Надо магазин (стек) для сохранения параметров и операторов, а также таблицу приоритетов операций.
а этот алгоритм работает с 1+2*-3? -2*2? а как быть тут: 1+--1? чтобы отличить унарный минус от простого минуса нужно что-то предпринять. думаю, что самое простое -- после того как нам встретилась операция мы автоматически переключаемся в режим ожидания унарного минуса (плюса) или числа. дальше движемся по цепочке унарных минусов (плюсов) пока не встретим число и запихиваем его в стек с учетом знака.

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

я бы предпочел написать несложный лексер. в частности, если мы вычисляем 1+2**--3*4, то лексер выдаст следующие токены: 1, +, 2, **, --3, *, 4.

однако, остается неясной ситуация с "-2**2". ожидаемый ответ -4 (можно проверить на том же питоне), а вовсе не +4, т.к. это -(2**2), а не (-2)**2. вот такие приоритеты, блин. неясно как в вашем алгоритме их обрабатывать.

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

1) кладем минус на ум
2) кладем 2 на стек параметров
3) кладем ** на стек операций
4) кладем 2 на стек параметров
5) встречаем "*", смотрим на стек операций -- там возведение в степень, выполняем, кладем результат на стек параметров
6) кладем "*" на стек операций
7) кладем 3 на стек параметров
8) встречаем "-". стаскиваем минус с ума и обращаем знак параметра на вершине стека параметров, кладем "-" на стек операций
9) встречем "4" и стаскиваем минус со стека операций

вам не кажется, что простой разбор выражения оказался более сложным?

мне нравится 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[9]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 09:09
Оценка:
Здравствуйте, Abyx, Вы писали:

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


A>>>наверное программисты получше меня напишут быстрее.

М>>вот рекурсивный LL парсер выражений на чистом си:
М>>http://rosettacode.org/wiki/Arithmetic_Evaluator/C
A>LOL parse_error делает exit(1). Си такой Си.
это не си. это rosettacode такая rosettacode. вика такая вика. никакого ревью. (знаю, знаю. сейчас мне скажут что там есть edit и что если я такой умный, то мог бы исправить, но первым "крякнули" вы. так что вам и править). но exit(1) это ерунда. убрать глобальную переменную намного сложнее. для этого придется перелопатить кучу кода.
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[9]: # дао калькулятора (история первая)
От: CEMb  
Дата: 14.02.14 09:41
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


Да там всё просто, но только кому это надо?... я попытался применить где-то свои знания по графике — всего одна фирма нашлась(зато очень интересная, игры класса ААА), но в Питере. И всё... И видел ещё одного такого же человека, тут на форуме, но из другой страны, и с такими же проблемами
Re[7]: # дао калькулятора (история первая)
От: mefrill Россия  
Дата: 14.02.14 10:06
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>вам не кажется, что простой разбор выражения оказался более сложным?

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

Все зависит от задачи. Простой калькулятор -- это простой калькулятор. Добавление в него сложных вещей делает калькулятор сложным. Думаю, для тестового задания никто сложные вещи не стал бы спрашивать. Ну и понятно, что BNF это не панацея, это только описание синтаксиса в определенной конкретной парадигме (порождающие КС-грамматики Хомского). Да и не все BNF можно, скажем, тем же Bison разбирать. Даже можно "расширить" синтаксис калькулятора таким образом, что его BNF не опишешь.
Re[8]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 14.02.14 10:57
Оценка:
Здравствуйте, mefrill, Вы писали:

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


М>>вам не кажется, что простой разбор выражения оказался более сложным?

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

M>Все зависит от задачи. Простой калькулятор -- это простой калькулятор.

-2**2 это вроде бы основы основ. а BNF действительно не панацея. в частности он не в состоянии распарсить pdf, потому что pdf нужно парсить начиная с конца файла, продвигаясь к началу и лексеру требуется фидбак от парсера. хотя бы уже потому, что внутри стрима может быть ключевое слово endstream, а истинный конец стрима определяется по его длине (/Length number), причем number может быть как длинной, так и ссылкой на длину, которая может находится в любом месте файла. дополнительный источник информации xref таблица. при этом длина стрима в /Length может не совпадать с информацией из xref и если эти данные заданы некорректно, то мы должны обработать ситуацию восстановления ошибки, пытаясь открыть файл любой ценой.

нормальные парсеры не в состоянии двигаться от конца к началу. look ahead не помогает ;-( самое смешное, что парсер pdf, опирающийся на BNF, открывает порядка 99.96% файлов и даже используется во многих опен-сурсных проектах. оставшийся 0.04% файлов создатели опен-сурса игнорируют, отвечая: скажите спасибо, что оно вообще работает. LR парсер без хаков не сильно помогает. эксперименты с акробатом показывают, что мы имеем дело с unrestricted грамматикой.

один простой пример — ширина записей xref таблицы фиксирована и включает в себя перенос строки, поддерживая как \x0D\x0A, так и \x0A, но в совокупности должно получится 20 байт на строку, что делает разбивку на токены очень, очень нетривиальной задачей.

но это мелочи. акробат ищет магическое слово %PDF- в первом килобайте от начала файла и потому можно создать гибридный файл. например, pkzip и pdf в одном флаконе. или ms word и pdf. антивирусы проверяют первые байты файла в поиске magic word. пусть там будет D0 CF 11 E0 — антивирус говорит "ага" и парсит это как офис. а при открытии в браузее -- браузер смотрит на MIME тип и вызывает плагин акробата, открывающий зловредный pdf.

легко создать файлы, в которых блоки чередуются в произвольном порядке. это и офис и pdf. парсеры с ума сходят. причем наличе %PDF- в файле как бы не является основанием для заключения, что это pdf. и этим форматом пользуются миллионы людей? йаду мне, йаду.
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]: # дао калькулятора (история первая)
От: nen777w  
Дата: 17.02.14 16:24
Оценка:
A>>Компания наверн была в РФ?
М>нет, в сша. компания "маленькая, но гордая". не все компании такие. большинство компаний -- нормальные. но даже в нормальных компаниях попадаются совершенно уникальные личности. и если им доверяют собеседовать людей -- тогда "ой". но рассказывать о типичных собеседованиях неинтересно. потому что о них совершенно нечего рассказать. встретились. рассказали о себе, а я -- о себе. выясняется, что я хочу делать одно, а им нужно совсем другое. договорились если ни я, ни они ничего не найдут за определенный срок, тогда встретимся еще и будем идти на взаимный компромис, но это вряд ли, т.к. в сша рынок труда в ИТ довольно развит и если хорошо поискать, то можно найти _то_что_надо_. а когда находишь _то_что_надо_, то там и собеседования может не быть (в моем случае встретились за ланчем в ресторане, где даже ноута не было -- даже разогнав фантазию тут совершенно не о чем писать).

Блин, везет вам там, а у нас в городе ко мне уже 3-и хрюши с разных рекрутинговых агенств с одними и теми же предложениями постучались.
А так в основном... саппорт, дазы-банных, саппорт, и все, или еще какая-то нудятина в офисе. А к вам пока никак не выходит, поехать.
Re[4]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 17.02.14 17:58
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Блин, везет вам там,

1) давайте к нам;
2) ну как везет? работу я искал с августа по март. и это с правом работы в сша;

> а у нас в городе ко мне уже 3-и хрюши с разных

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

N>А так в основном... саппорт, дазы-банных, саппорт, и все

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

> А к вам пока никак не выходит, поехать.

а что не выходит-то? настойчивее быть надо. я тут сейчас собираю в кучу свои заметки про сша как я мигрировал и все такое. приходилось действовать напролом и наугад.
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[4]: # дао калькулятора (история первая)
От: AleksandrN Россия  
Дата: 18.02.14 05:35
Оценка:
Здравствуйте, artkarma, Вы писали:

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


А по какой специальности?

Когда я учился в одном из московских вузов, компиляторы нам читали на 3-м курсе и курсовик был сложнее (но и делался он не в одиночку, а группой в 3-5 человек).

А калькулятор был то-ли лабораторкой, то-ли на семинаре изучали, как его делать (сейчас уже не помню подробностей). Да и пример калькулятора есть, наверное, почти во всех книгах по синтаксическому анализу.
Re[7]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 09:07
Оценка:
2/18/2014 11:34 AM, kaa.python пишет:

> Но если объективно, тема "как" на этом форуме терлась стопицот раз и все

> кто хотел, включая мыщъха, уехали.
Вопрос часто в том, "чучелом" или "тушкой" поуезжать?
Posted via RSDN NNTP Server 2.1 beta
Re[8]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 09:19
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Вопрос часто в том, "чучелом" или "тушкой" поуезжать?


Гугл/Майкрософт/Амазон, 110-130 К американских рублей в год + релокация. Из минусов — надо реально хотеть уехать и разобраться с гномиками (что бессмысленно, но очень просто) и алгоритмами (что сложнее, но завсегда пригодится). Можно ли это назвать тушкой?
Re[9]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 09:23
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Из минусов — надо реально хотеть уехать и разобраться с гномиками (что бессмысленно, но очень просто)


Ну если ты имеешь возможность и желание потратить пару месяцев на "подготовку", то просто.
Re[10]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 09:27
Оценка:
Здравствуйте, skirty, Вы писали:

S>Ну если ты имеешь возможность и желание потратить пару месяцев на "подготовку", то просто.


Гномики — два месяца?! Да ладно!

Да и не раз уже проскакивала информация о том, что гномики больше не в моде и акцент на завершенных проектах и алгоритмах со структурами данных. Но если ты и на это не можешь найти времени, то просто желания нет, не более того. Или должны "по резюме" нанимать?
Re[9]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 10:02
Оценка:
2/18/2014 12:19 PM, kaa.python пишет:

> Гугл/Майкрософт/Амазон, 110-130 К американских рублей в год + релокация.

> Из минусов — надо реально хотеть уехать и разобраться с гномиками (что
> бессмысленно, но очень просто) и алгоритмами (что сложнее, но завсегда
> пригодится). Можно ли это назвать тушкой?
Я не знаю, как это воспринимает nen777w.
А я воспринимаю это "тушкой", мне оное не интересно.
А да есть же еще Голубая карта в Германию.
Posted via RSDN NNTP Server 2.1 beta
Re[10]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 10:35
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>А я воспринимаю это "тушкой", мне оное не интересно.


Тогда хотелось быб услышать что тобой лично понимается под "не тушкой".
Re[11]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 10:42
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Гномики — два месяца?! Да ладно!


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

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


Про это сто раз уже говорили, а воз гномики и ныне там.
Re[12]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 10:59
Оценка:
Здравствуйте, skirty, Вы писали:

S>Там кроме гномиков много всяких головоломок. Ну, может не 2 месяца, а один. Среди моих знакомых есть люди, которые успешно проходили эти собеседования, но нет ни одного, кто прошел без подготовки. Некоторые "готовились" реально больше года, хотя конечно не фул тайм.


Знаю лично как минимум одного человека, который прошел и в Гугл и в Майкрософт вообще без подготовок.

S>Про это сто раз уже говорили, а воз гномики и ныне там.


Начинал общаться с Майкрософт, прошел несколько собеседований, но когда понял что кроме Рэдмонда ничего не светит – бросил. Так вот, никаких гномиков Алгоритмы – да, выполненные проекты – да, гномы – ну вообще без них.
Так же спрашивал тех, кто не бросил и до конца довел процесс – нет гномов.
Но, подготовиться по алгоритмам это реально Задача.
Re[12]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 11:04
Оценка:
2/18/2014 1:42 PM, skirty пишет:

> Про это сто раз уже говорили, а воз гномики и ныне там.

Это разумный вариант отсева. Во-первых, убедиться, что люди реально
очень хотят к ним. Во-вторых, отсеивать все одно надо, а учитывая задачи
все равно как.
Можно, конечно просто каждого второго (или 3 из 4, не важно) в мусорку,
но тогда как найти тех, кто к ним очень хочет.
Posted via RSDN NNTP Server 2.1 beta
Re[13]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 11:10
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Начинал общаться с Майкрософт, прошел несколько собеседований, но когда понял что кроме Рэдмонда ничего не светит – бросил. Так вот, никаких гномиков Алгоритмы – да, выполненные проекты – да, гномы – ну вообще без них.

KP>Так же спрашивал тех, кто не бросил и до конца довел процесс – нет гномов.
KP>Но, подготовиться по алгоритмам это реально Задача.

Это давно было?
Хотя, мне работа у них все равно уже неинтересна.
Re[14]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 11:13
Оценка:
Здравствуйте, skirty, Вы писали:

S>Это давно было?


Год-полтора назад, где-то.

S>Хотя, мне работа у них все равно уже неинтересна.


На мой вкус, у них есть одно достаточно интересное подразделение. Разве что Рэдмонд все портит.
Re[13]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 11:19
Оценка:
2/18/2014 1:59 PM, kaa.python пишет:

> Но, подготовиться по алгоритмам это реально Задача.

А вообще уже прикольно, как широкое понятие "алгоритмы" свели до узкого,
фактически из STL.
А вот алгоритмы из распознавания образов — это алгоритмы или уже нет?
Posted via RSDN NNTP Server 2.1 beta
Re[14]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 11:26
Оценка:
2/18/2014 2:10 PM, skirty пишет:

> Хотя, мне работа у них все равно уже неинтересна.

Так это и есть суть их "гномиков". Отсев тех, кому работа у них
неинтересна. Но в отличие от многих местных контор с манией величия, у
тех все четко и понятно, что и как надо, если очень хочется к ним попасть.
Posted via RSDN NNTP Server 2.1 beta
Re[14]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 11:27
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>А вообще уже прикольно, как широкое понятие "алгоритмы" свели до узкого,

V>фактически из STL.
V>А вот алгоритмы из распознавания образов — это алгоритмы или уже нет?

Это безусловно алгоритмы, но я думаю что это некие высокоуровневые алгоритмы, которые базируются на чем-то более низкоуровневом и фундаментальном. Так что, свели не до "фактически из STL", а до некой фундаментальной базы (которую как раз STL и покрывает). Ты же сам понимаешь
Автор: Vzhyk
Дата: 18.02.14
почему отбор именно так построен.
Re[15]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 11:28
Оценка:
2/18/2014 2:13 PM, kaa.python пишет:

> На мой вкус, у них есть одно достаточно интересное подразделение.

Думаю не одно. Но вот через "гномиков" путь обычно отнюдь не в
интересные. В интересные путь если и есть из РФ (Индии), то однозначно
не через "гномиков".
Posted via RSDN NNTP Server 2.1 beta
Re[15]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 12:11
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>На мой вкус, у них есть одно достаточно интересное подразделение. Разве что Рэдмонд все портит.


Это какое?
Re[15]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 12:12
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Так это и есть суть их "гномиков". Отсев тех, кому работа у них

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

Нуу, раньше была интересна. Лет так 10 назад. А сейчас это стало бы большим шагом вниз.
Re[16]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 12:25
Оценка:
Здравствуйте, skirty, Вы писали:

KP>>На мой вкус, у них есть одно достаточно интересное подразделение. Разве что Рэдмонд все портит.

S>Это какое?

Protection team
Re[17]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 12:28
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Protection team


UAC, что ли?
Re[18]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 12:35
Оценка:
Здравствуйте, skirty, Вы писали:

S>UAC, что ли?


Их антивирус и другие защитные механизмы.
Re[19]: # дао калькулятора (история первая)
От: Vzhyk  
Дата: 18.02.14 13:49
Оценка:
2/18/2014 3:35 PM, kaa.python пишет:

> Их антивирус и другие защитные механизмы.

Это ты про ту гадость, что первым делом отрубаешь после установки Винды?
Posted via RSDN NNTP Server 2.1 beta
Re[19]: # дао калькулятора (история первая)
От: skirty  
Дата: 18.02.14 14:14
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Их антивирус и другие защитные механизмы.


Странный выбор. Их технологии защиты особенно унылы даже по сравнению с другими их технологиями.
Re[15]: # дао калькулятора (история первая)
От: ilvi Россия  
Дата: 18.02.14 14:29
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>На мой вкус, у них есть одно достаточно интересное подразделение. Разве что Рэдмонд все портит.


А что не так с Редмондом?
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 21>>
Re[20]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 18:00
Оценка:
Здравствуйте, skirty, Вы писали:

S>Странный выбор. Их технологии защиты особенно унылы даже по сравнению с другими их технологиями.


Судя по обзорам, они не так уж и плохи, особенно для бесплатного антивируса. Я бы сказал что уровень достаточно высокий, а то, что им есть куда расти делает работу у них еще более интересной и перспективной. Но, не срослось
Re[16]: # дао калькулятора (история первая)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.14 18:01
Оценка:
Здравствуйте, ilvi, Вы писали:

I>А что не так с Редмондом?


В моей системе ценностей Редмонд – это дыра. Я люблю большие города и пальмы. В идеале и то и то сразу (на свете есть единственный идеальный город, но меня никак не возьмут туда работать), но как минимум что-то одно в обязательном порядке. Так что можешь считать это просто моими личными тараканами
Re[5]: # дао калькулятора (история первая)
От: Michael7 Россия  
Дата: 18.02.14 22:31
Оценка:
Здравствуйте, мыщъх, Вы писали:

>> а у нас в городе ко мне уже 3-и хрюши с разных

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

Любопытный момент, это касается только тех кто прямо или косвенно (контракты) работает на государство или вообще всех, и в США в принципе нельзя не гражданину США заниматься тем, что попадает под понятие ИБ, например антивирус писать?
Re[6]: # дао калькулятора (история первая)
От: мыщъх США http://nezumi-lab.org
Дата: 18.02.14 23:29
Оценка:
Здравствуйте, Michael7, Вы писали:

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



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


M>Любопытный момент, это касается только тех кто прямо или косвенно (контракты) работает на государство


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

пример из жизни. знакомый с доступом топ-секрет работает в саппорте и получает 130. рядом с ним работают не-граждане, делают такую же работу и получают $60k. то есть человек тупо получает +70 только за то, что получил клиранс. кстати, лично он получил его в армии. а так это небыстрый и недешевый процесс. чисто теоритически, у не-граждан все-таки есть возможность получить клиранс (не топ-секрет, но все же лучше, чем ничего), однако, это будет стоить еще дороже. дешевле найти человека с клирансом и доплачивать ему +70 за бумажку кота мурзика.

> в США в принципе нельзя не гражданину США заниматься тем,

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

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

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

антивирусные компании уже попали под "раздачу", т.к. по их вине утекло множество секретных документов, посланных антивиурсом в облако к которому имеют доступ практически все сотрудники компании-разработчика антивируса, даже те, у кого нет клиранса. в результате требования к компаниям, работающим на гос секторе, резко ужесточились. разумеется, топ-секрет документы никогда не посылались в облако и утекли документы низших уровней секретности, но в результате пострадали все.
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[21]: # дао калькулятора (история первая)
От: skirty  
Дата: 19.02.14 05:09
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Судя по обзорам, они не так уж и плохи, особенно для бесплатного антивируса. Я бы сказал что уровень достаточно высокий, а то, что им есть куда расти делает работу у них еще более интересной и перспективной. Но, не срослось


Как рядовой кодер, ты бы просто копал отсюда и до обеда. Чтобы получить право хоть что-то решать самостоятельно, надо еще выслужить несколько лет. А чтобы реально что-то улучшить, надо быть очень сильным в корпоративной грызне.
Re: у меня тока 1 вопрос
От: Wolverrum Ниоткуда  
Дата: 19.02.14 20:14
Оценка:
Здравствуйте, мыщъх, Вы писали:

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



М>
М>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
М>


Почему ты не осилил скопки?
Re[2]: у меня тока 1 вопрос
От: мыщъх США http://nezumi-lab.org
Дата: 19.02.14 23:21
Оценка:
Здравствуйте, Wolverrum, Вы писали:

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


М>>
М>>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
М>>


W>Почему ты не осилил скопки?

1) многие BNF парсеры не требуют скоборк (например, PLY);
2) на мой взгляд скобки снижают наглядность и в глазах от них рябит;
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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.