Никита Прокопов (tonsky) wrote,
Никита Прокопов
tonsky

Categories:
А теперь к интересному. На собеседовании к нам часть кандидатов решает задачи на C, часть (малая) — на чем-то высокоуровневом (C#, Python). Так вот, на этом контрасте видно — я сейчас говорю о самых лучших кандидатах, вопросов к профессионализму которых нет вообще — как на C вы час решаете с человеком задачу, учли кучу случаев, исписали две страницы кода, а на выходе малозначительная не утилитка даже, а функция, но зато уже (!) с кучей допущений насчет входных данных, неврозом по поводу утекающей памяти1, с допущениями по порядку вызова и прилагающимся сюда неврозом по поводу надежности вызывающей стороны; и неистребимым ощущением неудовлетворенности в целом. А на Python-е за пятнадцать минут у тебя уже готово и чтение файла, и парсинг какой угодно, и все это надежно, и общее ощущение хорошо и правильно выполненной работы. Я первый раз даже не готов оказался — через пятнадцать минут и вот, всё, пожалуйста, что дальше делать? Хотя работы было раза в три больше.

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

Питон же — язык с готовым каким-то решением на любой случай жизни. Практичный в бытовом смысле язык. Задача без раздумий и сомнений ложится на код практически один-к-одному, потому что все нужное уже тут. Когда готово, вдруг думаешь — как это получилось? Подозрительно мало я страдал: над выбором библиотек, над мелкой моторикой работы с ними, над микрооптимизациями. Потом к этому ощущению привыкаешь, понимаешь, что так и задумано. И удивляешься, что у других не так: кто-то занят какими-то моноидами, чистотой, системами типов, а на самом деле мясо, скучные бытовые утилиты — они и в промышленности, и для собственного счастья куда важнее. Когда каждой следующей строчкой ты приближаешься к окончательному решению своей задачи (в терминах вход-результат), а не к очередному уточнению используемой абстракции, это больше смысла несет, это важнее. Даже ощущение правильности решения больше. Но это надо попробовать Питон, чтобы понять.

1 Это мое личное, может, в универе меня напугали, но на меня любая строчка кода на C смотрит как партизан, который нет-нет да и выкинет кунштюк, а мне потом неосвобожденная память две ночи снится. В банальной программе
    int* arr = malloc(10);
    arr[0] += 1;
    free(arr);

я не могу избавиться от ощущения, что память тут рано или поздно найдет способ утечь. Это еще и к вопросу о чтении puzzlers на ночь.
Tags: девелопмент, и такое было, нервы, формула успеха
Subscribe

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 69 comments