Кресты / Говнокод #12844 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
#include <iostream>
#include <string>
#include <utility>
#include <tuple>
#include <array>
#include <vector>
#include <algorithm>
#include <iterator>

int main() {
   const std::array< const std::pair<const int, const std::string>, 3 > a {{{1,"2"}, {3,"4"}, {5,"6"}}};   
   std::vector<std::string> r;
   std::transform(std::begin(a), std::end(a), std::back_inserter(r), static_cast<std::string const& (*)(const std::tuple<const int, const std::string>&)>(std::get<1, const int, const std::string>));
   std::copy(std::begin(r), std::end(r), std::ostream_iterator<const std::string>(std::cout, " "));
   return 0;
}

У нас новичку на собеседовании предложили продемонстрировать работу (без конкретики) с кортежами и итераторами.
Что вы можете сказать про его умения, характер и состояние психики? А вы бы этого взяли на работу?
http://liveworkspace.org/code/2DW59a$0

Запостил: LispGovno LispGovno, (Updated )

Комментарии (109) RSS

  • Мне кажется умения и прилежность он продемонстрировал
    Ответить
  • > продемонстрировать работу (без конкретики) с кортежами и итераторами
    Не совсем удачный вопрос, имхо. Не лучше ли задать что-то более конкретное, и посмотреть как он это реализует?
    Ответить
    • Ну конкретных было много. По идеи на не конкретном вопросе можно много выводов сделать о человеке это написавшим, например о том, что он любит и что не любит, как развита фантазия и лень, что он вчера съел. и тд.
      Ответить
    • Мне тут давече на собеседовании предложили написать любой код в несколько строчек. Вообще без требований, лишь бы осмысленный.
      По итогу написанного (написал геттер/конструктор синглтона) задали ровно один вопрос "Табы или пробелы?".
      До сих пор задумываюсь, зачем это было?
      Ответить
  • >Что вы можете сказать про его умения, характер
    Да что тут говорить?
    Еще одна крестоблядь.
    Ответить
  • >Что вы можете сказать про его умения, характер и состояние психики?
    Ничего, потому что непоказательно.

    >А вы бы этого взяли на работу?
    Если он всегда пишет такой write-only код, то нет. Но опять же непоказательно.
    Ответить
  • > А вы бы этого взяли на работу?

    Если он пытался подавить смех когда демонстрировал - то да. 🙂

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

    Чего я до сих пор не знаю как определять, это умеет ли человек работать под давлением и выставлять приоритеты. Эти две взаимосвязаные вещи тоже очень часто бывают нужны.
    Ответить
  • >Что вы можете сказать про его умения, характер и состояние психики?
    Слушай, а сколько сейчас времени, не знаешь? Так, примерно можешь почувствовать?
    Ответить
  • Функциональненько. А что уж он auto не использовал?
    Ответить
  • http://liveworkspace.org/code/code/2DW59a$15
    кто-то побаловался и немного почистил код
    а вообще в крестах не хватает car\cdr (Lisp), fst\snd (Haskell) или std::select1st\std::select2nd (STLPort)
    а вообще этот стасик_каст и указание всех шаблонов (get<...>) вручную для выбора правильной сигнатуры убивает всю красоту кода.
    Ответить
    • [](decltype(*std::begin(a)) i) { return std::get<1>(i); }
      смотрится проще, чем выбор правильной перегрузки std::get
      вот если бы еще можно было auto засунуть в лямбду, вместо ущербного decltype...
      Ответить
      • >вот если бы еще можно было auto засунуть в лямбду, вместо ущербного decltype...
        C++14
        Даже рекурсивный вывод обещали (и без {} ):
        auto fac=[](auto i) i*fac(i-1)
        Ответить
        • Если б ещё и не надо было авто писать...
          fac := lambda i to i*fac(i-1);
          Ответить
          • типа как скриптоязыках? все новые имена автоматически должны завестись как переменные/аргументы?
            чревато
            Ответить
            • Фигасе "скриптоязыки"... let / let rec для этого нужны. Ну по крайней мере с теоретической точки зрения.
              Ответить
      • Разнесите against и on подальше, в третий раз по плюсу промахиваюсь! >_<
        Ответить
        • роман же пилит 2.0
          потыкай в него веточкой, а то он только притворяется загруженным и уставшим
          Ответить
          • Пока все силы уходят на холивары с коллегами и крестовелики, но, судя по прогрессу на официальной ветке, скоро таки придётся снова взять в руки потёртые лябмды
            Ответить
              • Да, тут сильно не хватает крестотирана вроде тебя, крестоправящего крестотвёрдой кресторукой.
                Ответить
                  • Да нет, тут весело, гораздо веселее, чем интерпрайзно перекладывать поля из базы данных в эксемельки. Есть где размахнуться.
                    Нужно время, чтобы приучить людей работать с умом, не оправдываясь нехваткой времени.
                    Ответить
                      • С учётом того, что я представляюсь настоящим именем, это слишком легко нагуглить, чтобы оставлять эту информацию здесь.
                        Ответить
                        • А я просто хотел уточнить, место работы ли или что-то еще, свое, чужое, другое.
                          В общем не важно.
                          Ответить
                        • Да уже оставил достаточно, кмк.
                          (Вот потому я за здоровую паранойю).
                          Ответить
                          • Я просто не вижу смысла что-то скрывать. За полгода работы в компании, занимающейся различными аспектами информационной безопастости я узнал такие вещи, которые хотел бы рузузнать обратно, и желания что-то скрывать стало ещё меньше.
                            Ответить
                            • До службы в армии крепко спал, потому что знал, что охранают. В армии плохо спал, потому что сам охранял. После армии вообще не сплю, потому что знаю, как охраняют.
                              Ответить
  • Новичок он и есть новичок.
    Накодил неструктурированный код и сдал его.
    Ну что с него взять? Правильно, ничего.
    Ответить
  • Мнения 50 на 50 разделилось. Приверженцы нового стандарта поддерживают новичка. Остальные упоротые старперы не осили новый стандарт
    Ответить
    • Кстати, а какую иде лучше использовать для умеренного крестоблядства?
      Ну с поддержкой С++11 и всего такого.
      ВизуалСтудию и другую монструозную проприетарщину не предлагать.
      Ответить
            • Это как раз неудивительно. Все 3 java IDE поддерживают кроме жабы (груви, скалы) большинство популярных языков: сишку, питон, кресты, пыху, жс и прочия хтмл и css.
              Удивило другое: почему крестоблядям не использовать истинно крестоблядские среды Qt, CodeLite, KDevelop, Code::Block?
              Ответить
              • У нас люди пользуются в основном Eclipse CDT (хотя по уму он врядли у кого настроен), NetBeans и VS. Кто-то ковыряет код в mcedit.
                Я юзаю православный Emacs, мне пока больше ничего не надо.
                Ответить
                • >Я юзаю православный Emacs, мне пока больше ничего не надо.
                  Не-не-не. Так нечестно. Тут всё должны предлагать гипернавороченные иде, а потом пришёл бы @wvxvw и сказал бы эту фразу, с таким видом будто все пидарасы.

                  Но вопрос в другом - какие иде поддерживают больше всякого пиздеца из нового стандарта.
                  Тут-то emacs, я уверен, аутсайдер. Вообще парсинг нынешнего С++11 - нетривиальнейшая задача.
                  Ответить
                  • Я всё мечтаю о том, как кто-нибудь, наконец, догадается скрестить емакс со шлангом в один бинарник, шикарнейшая иде получилась бы.
                    Ответить
                      • idea слишком прожорлива и тормозна даже для своей основной задачи - поддержка java
                        тратить гиг оперативы и смотреть на тормоза одного_из_редакторов_почти_запиливших_в_ себя_анализатор_шланга - не для слабонервных
                        Ответить
                        • Для жабы лучшего аналога нет, хотя индексатор потребляет достаточно много ресурсов. Если отключить неиспользуемые плагины, CE работает достаточно шустро. А навигация и рефакторинги там таки кошеrны.
                          Ответить
                          • ну и с какой серьезностью можно отнестись к людям, описывающим свою поддержку с++ в разделе objc, и ставящим "с++11" и "Boost" в один список
                            Ответить
                          • что такое индексатор?
                            разве это не должно быть преимуществом джавы перед заведомо монструозными крестами - упрощенный синтаксис, отсутствие инстанциирования тысяч темплейтов, нет операторов и прочих путанных adl, нет тех же инклюдов - почему анализ джавы потребляет так много?
                            студия с решением на пару М кода с ассистом, держащим в голове это все + почти весь буст жрет 150-200М
                            Ответить
                            • Думаю, в средней жабопрограмме больше кода, чем во всём (в|н)ашем бусте. Вот потребление памяти на среднего размера жабопроекте:
                              http://rghost.net/45109884/image.png
                              Вот что в top:
                              PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND           
                              14761 roman     20   0 2707m 849m  39m S   2.7 21.8   4:13.54 java
                              память процесса занята пулом памяти сборщика мусора и метоинформацией жабомашины. Реальный расход памяти не особо высокий.
                              Ответить
                              • > больше кода
                                если считать джавопрограммой jvm и кучу библиотек для как ты правильно выразился перекладывания xml в бд, то тогда засчитай за среднюю сишкопрограмму еще рантайм, ядро и оконную среду

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

                                ну и то, что ты показал - это нечто уровня project, теперь домножь на 20, чтобы получить solution, о котором я говорю
                                Ответить
                                • Во всяком случае, потребление памяти при работе с жабой вполне удовлетворительное, чтобы продуктивно работать даже на моём не топовом ноуте. Не профилировал, но есть ощущение, что бОльшая часть памяти отжирается убогим жабо-интерфейсом swing.

                                  Твои претензии вполне понятны, не совсем понятны выводы. Идея говно? Возможно. Но опыт жабка+идея vs. сишарпик+вижуалстудия безоговорочно в пользу первого.

                                  Я, как ты понимаешь, вполне терпимо отношусь к инструментам, которые люди используют при разработке. Каждый должен работать с тем, с чем он может быть продуктивен. Тебе удобно со студией - отлично. Я не против.
                                  Ответить
                                  • выводы?
                                    на дворе 2013 год, а нет идеальной бесплатной полнофункциональной иде
                                    где моё дешево, быстро и качественно?
                                    Ответить
                                    • На дворе 2013 год, а в C++ до сих пор используется долбанутая модель конкатенации файлов инклюдами и хедер гварды, что превращает компиляцию в обогрев помещений. И ты после этого чему-то удивляешься?
                                      Ответить
                                      • это уже не исправить, максимум запилят недомодули - суть облагороженные прекомпилированные заголовки, если запилят вообще

                                        ну и компиляция обогревает помещение в основном из-за шаблонов - инфа 100%

                                        доконкатенировать файлы, и так лежащие в быстрой памяти (кеш диска + кеш компилятора (в нем файл может быть уже разобран даже)) не очень много времени занимает
                                        Ответить
                                        • Возможно. Жабо-конпейлятор, к примеру, работает на порядки медленней, если его заставлять в сишном стиле обрабатывать по одному файлу за проход (т.е. %.class: %.java). Гораздо выгодней натравить его на каталог с сорцами "байткод мне запили".

                                          Интересно, для плюсцов возможна такая batch компиляция?..
                                          Ответить
                                          • for o in folder/*.cpp; do $CPP $CPPFLAGS -c $o...; done

                                            компиляцией всего из какой-нибудь папки должна заниматься система сборки
                                            параллелизацией этого процесса - она же (-j, /MP)
                                            Ответить
                                            • Разделение обязанностей - это очень правильно, тут я согласен. Но с жабой такая ситуация - она долго запрягает, но быстро ездит. Т.е. гораздо выгодней запустить компилятор один раз и обрабатывать им много сорцов. Выигрыш действительно очень велик, ведь это также помогает компилятору кэшировать в памяти объявления уже скомпилированных классов. Кроме того, в жабе есть неплохая фича - сервис компилятора. Прога может нагенерячить сорцов и попросить компилер пройтись заодно и по ним
                                              http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html
                                              Это открывает много интересных возможностей...
                                              Ответить
                                              • ну запуск компилятора джавы походу значительно более накладная операция, чем запуск нативного приложения
                                                скормить крестокомпилятору список файлов - не видел такого использования
                                                вендорам проще оставить вопросы оптимизации параллельной работы N одинаковых исполняемых файлов операционной системе (там уже пусть горбатится и префетч, и не дублирование страниц параллельных процессов)

                                                при скармливании devenv/msbuild файла проекта (в котором содержится список) скорее всего никак не отличается от вызова компилятора пофайлово

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

                                                насчет удобного получения результатов компиляции - сильно зависит от конкретного компилятора, в общем случае стоит надеяться только на ручной парсинг stdout/stderr от компилятора - unix way, чо, в частном - чем компилятор современней, тем богаче его возможности - тот же clang в виде положительного примера и старое барахло cl в виде отрицательного
                                                gcc недалеко ушел от cl, но судя по гуглу в нем есть хотя бы какой-нибудь gcc-xml (но не юзал, не знаю насколько удобно)
                                                Ответить
                                        • Я не специалист, и С++ компилировал только чужой, но ccache не помогает от этого? Вроде ж это прямое ее нажанчение.
                                          ЗЫ. В Федоре недавно ее стали по умолчанию устанавливать, если попросить установить gcc / build tools.
                                          Ответить
                                          • не юзал, в т.ч. и потому, что у меня нет linux-only проектов
                                            судя по их описанию, они кешируют .o файлы, либо -E результат препроцессинга

                                            про .o - накой это надо, когда нормальная система сборки (да тот же gnu make) не будет пересобирать .o файл, если все, от чего он зависит, старше имеющегося результата
                                            разве что ускорить clean+build+clean+build+... - типа ничего не меняем, но постоянно чистим - молотим для красивой таблички

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

                                            среда in-time может отслеживать радикальность изменений и сообщать об этом компилятору, но это уже совсем хардкор
                                            Ответить
                                    • >на дворе 2013 год, а нет идеальной бесплатной полнофункциональной иде

                                      Многих vi/emacs устраивает. Вообще людям всегда чего-то не хватает.

                                      Вот на дворе 2013 год, а нет удобного полнофункционального говнокода без сумасшедших школьников c единственно, абсолютно верным мнением и раскалённой серебрянной пулей в жопе.
                                      Ответить
                  • В Эмаксе есть eclim - можно просто к клипсу прикрутить. Была еще когда-то такая штука которая позволяла консольный редактор запускать поверх Вижуал Студии. Я видел как так Вим использовали, Эмакс не видел, но хз.
                    Ответить
                    • Есть неплохой проект ensime, использующий swank-протокол для общения со скала-сервисом. Проект довольно впечатляющий (для меня, по крайней мере), жаль только, чрезмерно ресурсоёмкий. Думаю, нечто подобное можно запилить и для с++: поднять для проекта clang-сервер, отвечающий за индексацию и анализ в реальном времени.
                      Ответить
                      • Я Энзим попробовал, но не разобрался. Флаймейк то работает то нет (при чем они его как-то через ж. запускают, так что обычными средствами до него не добраться). Автодополнение какое-то непонятное вообще. Куча jar'ов каких-то к которым исходников я не нашел. Да даже если бы и нашел - было бы влом разбираться. Документации - вообще никакой. Насторйки в хз. пойми каком формате. Он вроде работает с sbt - но это тоже хз пойми что делает, и докуметация такая же. (Надо заметить, что это общая тема для Скалы - документацию вообще никто и никогда не пишет, или в стиле КО просто повторяют название функции и аргументов).
                        Ответить
                          • Хз. по поводу sbt - я не понял зачем это нужно. То, что он делает, либо вообще в принципе вредно, либо делает хуже, чем любой аналог. Ну, кроме Мейвена, непосредственно. Да вобщем, такое же недоразумение, как и вся Скала - почему не взять и просто не писать на Камле, если так нравится - они ж нихрена не улучшили.
                            Это как мне недавно попалось описание языка, который изобрели Самсунг для встраиваемых систем (телевизоров), не дословно, но как-то так: "Мы взяли все самое лучшее из наших любмых языков: Сишарпа, Луа и Яваскрипта и создали наш новый язык!" - ну там как бы вообще полный пиздец. На Скале хоть со скрипом писать можно, и в принципе можно понять людей, которые бы ее выбрали вместо Явы. Но если выбирать Камл / Скала... то тут даже вопроса не должно возникнуть...
                            Ответить
                            • sbt, в частности, умеет запускать скала-консоль с настроенным classpath, а также выполнять инкрементальную рекомпиляцию при изменении сорцов, выполняя по итогам полезные команды вроде обновления контекста веб-сервера или запуска тестов. На практике это даёт динамику разработки, немного напоминающую RoR (правда, компиляция у скалы томозная, но, поскольку система реактивна, а программисту нужно переключить внимание, польза весьма ощутима). Очень полезная вещь.
                              Ответить
                              • Не разобрался в том смысле, что из коробки оно не работает / работает нестабильно, а разбираться почему желания нет. Может даже не его вина, а того же sbt, или плохой инфраструктуры у самой Скалы (очень даже может быть т.как они от дот-релиза к дот-релизу меняют название файлов настроек и пути по умолчанию). Сообщения об обшибках явно написаны китайским переводчиком, который до этого переводил инструкции по эксплуатации электротехникой.

                                В мире есть великое множество систем билдов хороших и разных. Нафиг они изобрели еще одну работающую хуже чем всео остальные?
                                Ответить
                          • Да, вот, только если я их не путаю с каким-то другим вендором смарт-ТВ, у них еще был язык разметки "очень похожий на ХТМЛ"... Вот Скала мне как раз это и напоминает "язык очень похожий на ОКамл" 🙂
                            Ответить
                • Eclipse и NetBeans тоже можно
                  > CodeLite, KDevelop, Code::Block
                  Фу фу фу. Мне иногда кажется, что создатели этих иде хотели украсть идею у Microsoft Notepad.
                  Ответить
                  • KDevelop - монструозное говно, согласен. А вот Code::Blocks мне нравились, я в них одно время на сишке без крестов писал, отличная IDE.
                    Ответить
                    • вот я уже без различных снипетов и рефакторов, подсказок ошибок без компиляции, подсказок автодополнения и типов жить не могу (могу, но не приятно)
                      Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8