А что тяжелее слон или кит?

Помню, давно-давно, когда я только начинал программировать, я думал, а вот интересно, что написать сложнее всего или что сложнее всего выучить. В общем, детство прошло, а глупые вопросы остались 😉

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

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

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

Далее идут задачи, которые я считаю сложными. Думаю, люди с другим опытом считают другие задачи сложными.

1. Работа с hardware.

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

Плюс, при работе с hardware очень тщательно нужно следить за разными таймаутами и таймингом.

2. Закрытые библиотеки неизвестных фирм

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

3. Сложные математические разработки

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

Вот, пожалуй, это я и считаю сложными задачами.

Хотелось бы услышать ваше мнение, что для вас сложная/тяжелая задача?

48 комментариев to “А что тяжелее слон или кит?”

  1. Michael:

    «естественные языки» 🙂
    остальное из категории — «глаза боятся — руки делают». главное ввязаться
    хотя математика иногда становится труднопреодолимым припятсятвием… ибо при учёбе уделял ей слишком мало внимания 🙁

    • Victor Ronin:

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

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

  2. Виктор:

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

    • Victor Ronin:

      Забавно. Согласен, что если задачу никто не делал, то она однозначно сложная. Хотя, если честно мне даже нравиться такая сложность.

      А вот оптимальность… у… это действительно непросто.

      • По-моему, аксиома «если задачу никто не делал, то она однозначно сложная» неверна изначально. Не буду весь «баян» рассказывать, только вывод:
        — Кто это был?!
        — О! Это был сам Неуловимый Джо!
        — А почему он неуловимый?
        — А кому он нафиг нужен?!

        С неделанной задачей может быть таже ситуация. 🙂

        • Виктор:

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

  3. мне страшно становится, когда я думаю о том, чтобы такого сделать, что ещё никто не делал… страшно от того, что вроде как ВСЁ УЖЕ СДЕЛАНО 🙂 единственно что успокаивает это бесконечность слова всё…

    • Victor Ronin:

      То есть страшно, не от самой задачи, а от отсутствия задач, которых еще никто не делал?
      Это интересно.

  4. Yuri:

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

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

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

    • Victor Ronin:

      Та да, сложности для каждого свои. Поэтому я это и оставил открытым вопросом.

      Да, признавать свои ошибки сложно. Особенно сложно, если они находятся в базе знаний.

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

      Да, я тоже не люблю сложности, на которые плохо можно влиять. Все же сложности с прессом действительно целиком в своих руках.

    • Аноним:

      Особенно сложно кого-то п…, если он сделал такие же ошибки, которые ты сам когда-то делал 🙂

      • Keks:

        А втройне, как мне кажется, сложно, п…. того, кто качал пресс осваивал алфавит, пока ты делал ошибки и учил английский. 🙂

        • Victor Ronin:

          В общем, единогласно принято, что для того, чтобы п… было не сложно. Нужно нанимать специального человека одетого в черную кожу и с кнутом в руках. И он будет всего помогать п…. остальных ;))

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

    Вот если взять приведенные типы сложных ситуации:
    1. Hardware, ничего там сложного в программировании нет. Просто там все подругому, и местами программировать _ПРОЩЕ_. Просто если инженер где-то напахал в принципиальной схеме устройства, можно промучится 2 недели прежде чем поймешь, что косяк-то не твой. А поменять схему в 1000 изделий — это ой.

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

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

    3. Вычисления это своя облать. Реально написать программу по спеке расчетов, не такая уж большая проблема, особенно если у тебя есть нормальная библиотека для мат расчетов (см. пункт 2). Опять же основная проблема отсутсвие контроля над выч. библиотекой.

    Так что не боги горшки обжигают. :-)))

    • Victor Ronin:

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

    • Borisov Pavel:

      Дополню, сложная ситуация либо отсутствие контроля, либо банальное не понимание. Одним словом — грабли.

      Сложная задача — это когда бьёшся над решением 2 недели и совершенно не зависимо от того открыты исходники или закрыты.

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

  6. jaguar:

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

    • Victor Ronin:

      Интересно. То есть сложность состоит не в задаче, а в нужной/важной задачи.

      • jaguar:

        Ага. Даже если это таск от работодателя, то я еще сильно подумаю, а стоит ли овчинка выделки. Последнее время мне даже удается убеждать начальство, что таск не выгодный 🙂

        • Victor Ronin:

          Это отличная привычка. Кстати, очень многим людям пытался объяснить, что если я сказал выкопать яму 20 на 30 метров, то все равно надо перед капание подумать, на фига такая яма нужна, и не опечатался ли я с размерами. Так как тупое выполнение задач «в лоб» бывает хуже, чем их не выполнение вообще.

  7. GeF:

    Сложно — это когда не знаешь как делать, а когда изучишь, разберешься, попробуешь — ничего сложного уже нет, тоесть сложно бывает только первый раз 😉

    • Victor Ronin:

      В общем да. Хотя есть вещи, которые даже после изучения остаются достаточно сложными. Субъективно они кажутся проще еще не изученных, но объективно остаются сложнее.

  8. Keks:

    Вспоминается старый анекдот «Что главное в танке?». 🙂 Так вот, я вам доложу, что то самое — в жизни еще не главное 🙂

    1. Всякие математические штуки — это да, поддерживаю полностью. Особенно учитывая, что в универе математику я не просто «сдал и забыл», а «кое как отмучал и забыл».

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

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

    • Victor Ronin:

      Ну, третий пункт безусловно сложный. Забавно, что пост я начинал с чисто технических сложностей. Но он быстро разросся, на сложности в IT.

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

      • jaguar:

        я знаю одну такую вещь. 🙂 править чужой код. 🙂

        • jaguar:

          ой. не туда комент пнул. 🙂 Это относиится к
          Comment by Victor Ronin
          Reply to GeF
          2008-03-12 13:16:07

          В общем да. Хотя есть вещи, которые даже после изучения остаются достаточно сложными. Субъективно они кажутся проще еще не изученных, но объективно остаются сложнее.

  9. Тема очень интересная. Я программирую FW для GPS приёмников уже больше 3х лет. Когда то к начале работы я действительно считал, что работа с железом — это сложно. Со временем я даже не заметил как я перестал так считать.
    1. Но тем не менне, сейчас для меня отладка приложения под RTOS системой не простая задача. Хуже всего для меня сейчас — это когда ты написал, отладил на PC, скомпилил FW, загрузил а оно виснит, причем не сразу, да ещё на процессоре, к которому программно затруднён доступ для отладки. Это для меня страшно. Проходится отлаживать мозгами.
    2. Соглашусь с вами.
    3. Ну тут этого добра в моей области навалом. Сам программировал и продолжаю программировать такие алгоритмы. Самое страшное это не то, что с первого раза без ошибок не получается. Самое страшно, когда начинают выползать арифметические проблемы. Нехватка разрядности, например, когда все на каком-то не понятном проце работает и прочее. Ещё страшнее когда просят оптимизировать производительность, не жертвуя performance’ом. Да ещё заставляют влезать в ограничения по памяти. Это для меня страшно. «У вас есть 50000 байт вот в них пожалуйства уместите свой код, только чтобы быстродействие было на таком-то уровне и результат не отличался от текущего больше чем на 5%». Это сложно.

    4. Сложно, когда просят дебажить многопроцессорную систему с RTOS когда виснет больше одного проца. Это капец.

    З.Ы. Читаю вас регулярно, очень интересно. А где вы такой плагин взяли для комментов? Тоже очень хочется на свой блог. Спсибо

    • Victor Ronin:

      А что такое «FW’?

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

      Так, что пишется все в логи, а потом долгими зимними вечерами, курятся эти логи в раздумии, какого черта оно работает так, а не иначе.

      • FW — firmware, то то, что крутится во всех железках под управлением RTOS. Ну когда отлаживаются быстро текущие процессы или математика, то так и делаем, но долгих зимних вечеров, правда, нет на это. А что это за плагин такой для комментов?

        • Victor Ronin:

          А понял. Я просто сокращение от Firmware не знал.

          Плагин взят отсюда: http://meidell.dk/threadedcomments/
          И слегка доточен (цветовая раскраска изменена, поле ReplyTo добавлено) и какие-то еще мелочи.

          • GeF:

            Хорошо бы было если еще это ReplyTo в письме уведомлении писалось, чтоб знать не только кто написал комент а и еще кому был адресован.

  10. Спасибо. Этот плагин пока самое лучшее что я видел.

    • Victor Ronin:

      Пожалуйста. Да, действительно сделан качественно и установился без проблем.

  11. Лично для меня все новое кажется сложным как только впервые с этим сталкиваешся — будь то двиг или новая работа)

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

  13. Есть и простые задачи не менее интересные

  14. Переход с Дельфи на Пролог. Чуть крышу не сорвало.
    Совершенно разные способы мышления.

    • Victor Ronin:

      Какой ужас…. Надеюсь, с Пролога удалось куда-то уйти… Я сам, чуть с ума не сошел, когда с ним разбирался.

  15. На самом деле как мне кажется, очень тяжелых вещей для изучения нет. Есть вещи которые изучать в тягость и есть которые изучать нравится. Вот отсюда и формируются сложности

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

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

    • Victor Ronin:

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