LINUX.ORG.RU
ФорумTalks

что творят девелоперы

 


6

5

Решаю задачку на talentbuddy.co, а там...

Задача: смёрджить два отсортированных масива. Больше двух третей ответов в духе return sorted(a+b).

В задании посчитать корень числа без использования библиотечных функций один чувак как-то пропихнул ответ def sqrt(x): return 4 . Не знаю как у него это получилось. Видимо, поймал момент когда не было дополнительных тестов.

У меня есть смутное подозрение что люди неправильно понимают зачем это всё нужно. Вспомнился анекдот:

Недалёкое будущее. Программист:
-- Компьютер, сделай базу данных.
Исправленная версия:
-- Компьютер, сделай базу данных. Чтобы работала.
★★★★★

Ооо...

print str(sorted(a+b))[1:-1].replace(',','')

Жаль что тут не филиал говнокода, а то я бы повеселил вас.

true_admin ★★★★★
() автор топика

У меня есть смутное подозрение что люди неправильно понимают зачем это всё нужно.

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

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

зачем нужны разные математические извороты и прочее в программировании.

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

Я знаю одного мощного чувака который тоже говорит что это нафиг всё не надо. «Проблема» в том что он уже всё знает, много лет проработал на аутсорсе сложного софта. Ему это давно не нужно. Но это другой случай.

Короче, я бы не стал связываться с человеком который не может написать сортировку пузырьком потому что «я не обязан это уметь, есть же библиотечная функция которая решает эту проблему».

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Короче, я бы не стал связываться с человеком который не может написать сортировку пузырьком потому что «я не обязан это уметь, есть же библиотечная функция которая решает эту проблему».

А я бы не стал связываться с человеком, который вместо sorted() стал бы изобретать пузырёк.

PolarFox ★★★★★
()
Ответ на: комментарий от true_admin

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

alozovskoy ★★★★★
()
Ответ на: комментарий от PolarFox

Ну, естестно. Но речь-то не об этом.

Задание как раз было написать этот самый sorted.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

ты говоришь именно о программистах?

В данном случае да, о тех кто пишет код. Хотя, кмк, умение логически мыслить ещё никому не мешало.

Ещё раз повторюсь что задачи тривиальные. Не надо быть Энштейном чтобы их решить. Странно слышать о том что люди не обязаны знать сколько будет 2+2.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

Никогда не понимал зачем нужны разные математические извороты и прочее в программировании

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

goingUp ★★★★★
()
Ответ на: комментарий от alozovskoy

Никогда не понимал зачем нужны разные математические извороты и прочее в программировании.

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

provaton ★★★★★
()
Ответ на: комментарий от true_admin

Нет, ты говоришь о том, что человек должен знать как работает механизм изнутри. Это - круто, но разве все ваше ООП и прочее не стремится сделать компоненты модулями? То есть ты дал массив, тебе его отсортировали. Ты знаешь что дать на вход и что получить на выходе. Что внутри - пусть там хоть китайские студенты онлайн руками твой массив сортируют. Так и тут. И, исходя из твоих слов, нужно знать как использовать сортировки, но НАСТОЯЩИЙ программист должен знать механизм и уметь воспроизвести его из спичек и желудей, а значит НАСТОЯЩИЙ программист должен знать, как работаю эти простейшие компоненты и, следовательно, смочь написать их на языке низкого уровня, при этом НАСТОЯЩИЙ программист должен еще и знать, как этот низкоуровневый язык работает а, следовательно, уметь написать все это в машинных кодах. Учтем еще и то, что НАСТОЯЩИЙ программист должен знать ту платформу, под которую он пишет досконально... Отсюда следует, что тот, кто не может на элементарной логике спаять используемые им функции по сути нормальным программистом быть не может.

alozovskoy ★★★★★
()
Ответ на: комментарий от provaton

И я тоже считаю этот вопрос имеющим место быть. Для обучения - может и да. Но говорить «не можешь доказать теорему => не можешь ее применить» не совсем корректно, на мой взгляд.

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от alozovskoy

Но говорить «не можешь доказать теорему => не можешь ее применить» не совсем корректно, на мой взгляд.

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

provaton ★★★★★
()
Ответ на: комментарий от goingUp

Компьютер работает с числами. КОМПЬЮТЕР. Человеку пофиг на числа. Про даты - если у человека есть функция дата(начальная дата + 5 дней), зачем ему знать как именно эта функция использует эти даты? Приводит ли она их к секундам от «эры UNIX» или тупо считает «5 дней = начальная дата + 1 день. Проверили, нет ли нигде месяца с 32 днями, если есть, увеличили месяц, обнулили число <...> Повторить пока не приплюсую все дни».

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

ты говоришь о том, что человек должен знать как работает механизм изнутри

Не было такого. Я сказал что было задание написать sorted, это не то же самое что знать. Ну окей, я понял что это задача не для всех :). Предложи свои задачки для собеседования.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Реши задачу

Щас тебе напишут otchet.get_prev(5) :)

Интересно, а кто тогда должен писать этот get_prev если программисты это делать отказываются.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Ну почему все молчат, мне так поговорить хочется.... :(

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

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

goingUp ★★★★★
()
Ответ на: комментарий от true_admin

Я сказал что было задание написать sorted, это не то же самое что знать

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

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

Xellos ★★★★★
()
Ответ на: комментарий от goingUp

Не знаешь, как работают базовые вещи

Ты уверен, что знаешь, как работают ВСЕ базовые вещи, которыми ты пользуешься так или иначе? А если мы начнём спрашивать?

Xellos ★★★★★
()
Ответ на: комментарий от goingUp

Я не говорил что я ее могу решить. Повторюсь - я не программист. Я могу сейчас написать тебе что-нибудь из Google на запрос «Adding 5 days to Date in %тут_любимый_язык_программирования%», но какой в этом смысл?

alozovskoy ★★★★★
()
Ответ на: комментарий от true_admin

Да ёлки-палки, я не говорю что я такой умный и больше всех знаю, просто я действительно(!) не понимаю этого «не можешь написать - иди в сад!». Компьютер это же всего лишь инструмент для решения задачи, разве нет?

alozovskoy ★★★★★
()
Ответ на: комментарий от Xellos

Поясните ход ваших мыслей. Откуда взялся квантор всеобщности, причем тут я, и почему вы так много на себя берете :)

goingUp ★★★★★
()
Ответ на: комментарий от alozovskoy

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

goingUp ★★★★★
()
Ответ на: комментарий от Xellos

Кроме этого ты сказал, что это примитив и элементарщина

Угу, только речь шла о мёрдже двух отсортированных массивов, а не о написании «полноценной» сортировки. Впрочем, написать какой-нить quicksort это тоже элементарная задача.

как вы можете писать ваши гномы-кеды-вебы-сапры

Не было такого. Я всего лишь сказал что страшно работать с людьми которые не могут сделать итерацию по двум массивам.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от Reset

но и sorted тоже треш в данном случае.

Питоновский sorted использует timsort который оптимизирован для данного случая.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от goingUp

Квантор всеобщности взялся из-за отсутствия ограничения на применение операции «знать как работают базовые вещи».

А кроме того, ведь что есть базовые вещи надо ещё корректно определить...

Xellos ★★★★★
()
Ответ на: комментарий от goingUp

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

И попутно еще один вопрос - ты когда выключателем свет включаешь ты думаешь как и почему он работает? А когда заболел и таблетки пьешь ты разбираешься какие компоненты на что и как влияют? Ну ты понел.

alozovskoy ★★★★★
()
Ответ на: комментарий от arturpub

какого такого ваша среда не имеет sorted_join'а?

Никто не смог написать, скилов не хватает :)

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

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

arturpub ★★
()
Ответ на: комментарий от true_admin

Смотря куда - если это какой-то проект, которому нужна огромная производительность и устойчивость, то может быть я бы и спрашивал все эти базовые вещи. Если мы говносайты лопатим на коленке по 10$\штука, при том что чем больше сделаем - тем больше заработаем, то попросил бы какую-нибудь форму сделать, что-нибудь из того, что постоянно используем, при этом-то я и буду смотреть, что он примерно хоть представляет что за функция ему нужна и использует библиотечные функции, чтоб любой мог легко подхватить его код. А ты бы как нанимал? Приходит к тебе студент после института, ты ему «пиши сортировку!». Приходит какой-нибудь прям ОГОГО-ДЕВЕЛОПЕР (ну я не знаю кто там кумиры у вас), ты ему «пиши сортировку!». ??

А вообще я никогда этого не касался, не знаю.

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от arturpub

Если человек не может написать ретурн 4 чтобы сдать работу сейчас, а не через неделю — нахрен он такой нужен.

Дык а где гарантии что через неделю там будет нормальный ретурн? :)

true_admin ★★★★★
() автор топика
Ответ на: комментарий от Xellos

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

goingUp ★★★★★
()
Ответ на: комментарий от alozovskoy

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

И попутно еще один вопрос - ты когда выключателем свет включаешь ты думаешь как и почему он работает?

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

goingUp ★★★★★
()
Ответ на: комментарий от true_admin

Такая работа вся на саппорте — как понадобится, так и появится. Или ты такой говнокод решил без поддержки оставить? ;)

arturpub ★★
()
Ответ на: комментарий от alozovskoy

А ты бы как нанимал?

Смотря куда :). Но базовую планку я бы опускал ниже плинтуса.

Приходит какой-нибудь прям ОГОГО-ДЕВЕЛОПЕР (ну я не знаю кто там кумиры у вас), ты ему «пиши сортировку!». ??

Почему нет? А в чём, по-твоему, отличие между девелоперами?

По поводу собеседования. Я бы не отклонялся от стандартной процедуры. И эта процедура включает в себя написать код, рассказать как работает, оценить производительность итп. Потом задачки на базовые структуры данных. По крайней мере меня такое спрашивали на собеседованиях. Конкретно, в mail.ru просили перемножить матрицы, заодно поговорили о памяти в C итп. В касперском спрашивали как бы я написал tcp/ip с точки зрения буферов на уровне ядра (и это была позиция на сисадмина. Кстати, мой ответ их удовлетворил). В одной гейм-девелопмент конторе спрашивали как бы я написал балансировщик нагрузки, у них это была насущная проблема и не было свободных рук.

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

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

Приходит к тебе студент после института, ты ему «пиши сортировку!».

В институтах учат сортировки, тащемто. И не одну. И в нормальных без этого можешь не получить зачет/экзамен. То есть диплом.

goingUp ★★★★★
()
Ответ на: комментарий от arturpub

как понадобится, так и появится

Дык я и говорю, есть риск через неделю вместо ретурн 4 увидеть, скажем, ретурн 5 :).

Или ты такой говнокод решил без поддержки оставить? ;)

Т.е. ты одобряешь, по сути, ручное исполнение кода? Я так и представил что при передаче неизвестных параметров функции у программера загорается красная лампочка, он быстро хачит код на лету чтоб никто не заметил :)

true_admin ★★★★★
() автор топика
Ответ на: комментарий от goingUp

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

arturpub ★★
()
Ответ на: комментарий от goingUp

А, ну да. Давая я просто приведу алгоритм, ок?

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

Пока дата отчета раньше текущей даты прибавляем по пять дней к дате отчета. Как только условие нарушается выводим значение даты отчета.

Все, я прошел?

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

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

alozovskoy ★★★★★
()
Ответ на: комментарий от arturpub

без проблем закончить любой вуз по айти

Можно. Но люди которые пять лет жизни спустили в мусорку нам не нужны :).

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

тебе нужно знать, ноль или фазу разрывать выключателем

ноль разрывать выключателем

Пожалуйста не тяни проводку :)

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

Я тоже не понял (ну я то и не такой уж и программист). Никогда не понимал зачем нужны разные математические извороты и прочее в программировании.

А вот зачем: Есть большие конторы типа гугля-яндекса, в которых 2-3 девелопера работают практически с основания. Эти люди за свою жизнь несколько раз столкнулись с проблемами типа O(N^3) или O(exp(N)). То есть им приходилось несколько раз «все в консерватории править». И теперь они, нанимая джуниора, спрашивают его про алгоритмы.

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

ansky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.