О программистах

Сидели недавно пьянствовали с дружбаном.

Я ему пожаловался, что вот провожу интервью, прошу кандидата написать маленькую программку подсчёта факториала (факториал – это произведение всех целых чисел от единицы до нашего числа, т.е. к примеру, факториал от 6 равняется 1*2*3*4*5*6 = 720), и вот половина кандидатов, имеющих вполне весомое резюме, не в состоянии организовать этот простенький цикл, который должен быть доступен первокурснику.

В качестве задачи повышенной сложности я обычно прошу набросать эту же процедуру, но с использованием рекурсии (это когда процедура вызывает саму себя, нечто вроде int getFact(int n) { return (n<2) ? 1 : n*getFact(n-1); }) – это могут сделать примерно 5% кандидатов.

Мой дружбан по образованию не программист, но так вышло, последние несколько лет работает в программировании. Очень умный человек (ну я, собственно, с другими и не пьянствую). Он быстро набросал мне какое-то решение вычисления факториала с классом IntStream, чем поставил меня в тупик, т.к. я о существовании такого класса (в Java 1.8) вообще не подозревал.

Обнялись и плакали.

18 freelancers

Join the Conversation

2 Comments

  1. Присутствие таких конструкций или подобных в коде :
    int getFact(int n) { return (n<2) ? 1 : n*getFact(n-1); })
    признак "говнокода" 🙂 Может поэтому не все могут это сразу изобразить ? 🙂 🙂

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

      Но я понял ваш мессадж, и не сомневаюсь, что вот у вас в вашем блоге программный код, помещаемый для иллюстраций, – красивый, работающий, интуитивно понятный и компилируемый с полпинка. 🙂

Leave a comment

Your email address will not be published. Required fields are marked *