LINUX.ORG.RU
ФорумTalks

Хорошо кодю (C++, js, python, php, go), но плох в матане.

 


0

1

Давно много кодю за деньги, в основном на C++. Шарю в алгоритмах, структурах данных, пишу безглючно, многопоточно, сетевые протоколы, lock-free и т.п. В основном пишу backend для вконтакта, но часто побочно нужно что-то наваять на php/python/go какие-то инфраструктурные постройки или тесты. Под винду не умею, разве что Qt раньше много юзал. Хотя CMake + qt + boost - и уже пофиг под что.

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

Город - СПб.



Последнее исправление: hlamotron (всего исправлений: 1)

Ответ на: комментарий от soomrack

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

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

Мне кажется, что зарплата у среднестатистического программиста слабо зависит от кол-ва выученных алгоритмов. А вот от знания паттернов всяких, кол-ва фреймворков, кол-ва проектов, где он задействован, опыта - да.

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

Да ничего особого. Я алгоритмист и придумал, как решать эту задачу не полным перебором. Вобщем ничего особого.

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

Если есть интересные темы - опишите подробнее. Перед сном интересно чего нибудь порешать.

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

я думаю, что если Вы порешать что-то хотите, то Вам добро пожаловать на codeforces.com, topcoder да и много чего ещё. Там Вы найдёте очень много интересных задач. Хотя может Вы на КФе уже красный какой-нибудь :)

У меня на моей работе задач алгоритмически интересных нет вообще :( В свободное время пишу во всякий опенсорц. Может быть Вас заинтерсует структура данных Rope - милости прошу. Из исследования там пожалуй будет только на основе каких самобалансирующихся деревьев лучше это делать: RB, Splay, AVL. А может что-то другое применить. Конкретно сейчас я курю различные реализации и пытаюсь понять, что другие умные люди там делали.

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

просто я пришёл к этому как человек с линейкой, а не как математик с чайником в 2 положения: закипел/не закипел.

Я перевёл количество вариантов путей в линейную геометрию.

Поменял ракурс зрения на задачу.

Serg_HIS
()
Ответ на: комментарий от soomrack

Да, сегодня все кто может написать пару строчек на питоне уже трудоустроены. Они могу найти работу на зарплату в $500 руб. А несколько лет назад это было бы $1000+ баксов.

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

Сорри, но нет. После многих собеседований (собеседовал я) могу сказать, что всё немного наоборот. Т.е. да, требования растут, но спрос на людей растёт быстрее, в результате зарплаты даже у js-мартышек сейчас весьма неплохие. Главное - следить за модой в IT и уметь себя продать.

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

не я решаю по своим проектам и так много задач.

Дописываю свой фреймворк для писания мобильных приложений.

Одновременно для его же тестов пишу программу для продажи в маркетах.

ну и ещё пару задач подобной сложности.

Serg_HIS
()
Ответ на: комментарий от zamazan4ik

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

Ну как бы чтобы найти, надо знать что искать.

Вот например, нужно программисту что-то быстро перемножить, что он будет искать? А если он знает что есть быстрое перемножение матриц через дискретное преобразование Фурье, то посмотрит, как ДПФ применить к своей задаче.

А если ему нужно написать кеширующую прослойку для вебсервиса, куда он будет смотреть, если он не знает T деревья?

А если ему надо сравнить тексты на похожесть, то как будет это делать без расстояния Левенштейна?

А если ему надо работать с огромными графами, то куда он будет смотреть, если не знает про модели MapReduce и Pregel?

и т.д.

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

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

Хорошо если так.

PS: js на самом деле довольно сложный язык.

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

PS: js на самом деле довольно сложный язык.

Нет, js на самом деле довольно прост. Вот инфраструктура вокруг него - ад и израиль, и она постоянно меняется: фреймворки переписываются, устаревают, рождаются новые.

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

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

А кто-то решал задачу коммивояжера полным перебором? Давно уже есть МВГ, как минимум.

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

не согласен с алгоритмом поиска решения поставленных задач в корне.

Быстрое перемножение - ищу библиотеку, нахожу множество либ для матриц, беру, решаю. Либу нельзя - выдираю исходник. Надо модифицировать? Окееееей - читиаю доки и вникаю. Попутно нахожу мб слова Фурье и иже с ним.

Кеширующая прослойка - гугл, читаем, как дядьки делают, качаем нужные либы, видим два слова вместе «кеш» и «cache-friendly tree». Копируем, юзаем, молодцы. И никто не полезет без надоности в середину - работает, не трожь. А лезть разбираться как оно там работает на работе особо не дадут - бюджеты, а дома у многих есть и дургие дела.

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

Огромные графы - гугл, сначала про либы для работы с графами, потом оп-оп, нифига, слишком большие данные. Пишем «алгоритмы работы с очень большими данными» или что-то в этом роде. Не проверял, но что-то не подсказывает, что mapReduce там будет чуть ли не на первой странице.

Знания ищутся. Наши различия во взглядах в том, что я считаю базовыми вещами намного более простые вещи, нежели Вы.:)

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

в универах на лабах решают. Даже курсачи пытаются писать на такие вот темы «Анализ времени работы алгоритма „грубой силы“ на задаче коммивояжёра» :)

Метод ветвей и границ далеко не все в универе не только кодят, но и слышат про него.

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

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

И какова оценка сложности алгоритма? Он даёт лучшее решение? Если нет, каковы оценки качества результата?

i-rinat ★★★★★
()

Лично моё мнение - затея дурная. Лучше возьми хороший учебник по вышке и читай вдумчиво, если тебя это заинтересовало. А потом и к нейронкам перейдёшь - туда без математики лучше не лезть.

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

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

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

Нет, js на самом деле довольно прост. Вот инфраструктура вокруг него - ад и израиль, и она постоянно меняется: фреймворки переписываются, устаревают, рождаются новые.

Замыкания дают очень много возможностей.

soomrack ★★★★★
()
Ответ на: комментарий от i-rinat

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

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

Абсолютно ничего. Просто товарищ говорит, что как-то по-особому подошёл к задаче. Но лично я не верю, что придумал что-то новое. Задача ну слишком хорошо изучена.

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

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

Рандомизированные алгоритмы. Как бы взаимоотношение РР и NP тоже непонятно, но некоторые задачи можно решить «быстро» с «очень маленькой» вероятностью ошибки.

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

тут конечно описано только ваша точка зрения на что нужно смотреть

я почти по все пунктам могу сказать что вы ошибаетесь.

вот по этому 100% ошибаетесь:

А если ему надо сравнить тексты на похожесть, то как будет это делать без расстояния Левенштейна?

Это жуткая и медленная штука. А процент похожести меньше чем у того алгоритма что я когда-то разработал. Скорость работы моего алгоритма очень высокая.

Пруф: Хвалюсь: система нечеткого поиска.

Да, мы когда-то пытались делать совместные проекты со всем известным «грамарнацием».

Он так был удивлён работоспособностью той ещё недоделки, что не удержался выложить это от себя, после первых пары тестов.

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

Serg_HIS
()
Ответ на: комментарий от soomrack

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

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

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

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

Рандомизированные алгоритмы.

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

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

Да, что-то я не распарсил твой коммент. Сорри.

soomrack ★★★★★
()
Ответ на: комментарий от i-rinat

И какова оценка сложности алгоритма?

Не замерял, но умозрительно где-то сумма факториалов количества ответвлений от перекрёстков.

Он даёт лучшее решение?

Даёт только правильное решение, либо равнозначные.

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

То есть у тебя есть решение задачи коммивояжёра, которое всегда даёт ПРАВИЛЬНОЕ (а это значит лучшее) решение задачи, при этом с асимптотикой лучше факториала от кол-ва городов и лучше чем O(N^2 * 2 ^ N)?

Я не верю в это, но мне очень интересно услышать это.

Твою асимптотическую оценку я не до конца понял, извини.

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

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

Эй, там в калькуляторе 105 ячеек для программного кода, а сами команды примитивны. Я понимаю, если б я тебя просил программу на 10 килострок сварганить. Тут всего ничего, а ты отказываешься. Ведь если уже знаешь, как делать, повторить легко?

— Да я вот так могу! А ещё вот так!
— Ну... давай, показывай.
— Ты тролль!
— Мда...

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

Твою асимптотическую оценку я не до конца понял, извини.

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

Это про распознавание ошибок в словах например :)

Умник :)

Serg_HIS
()
Ответ на: комментарий от i-rinat

Я тебе когда-то предлагал написать вместе с тобой для твоей самоуверенности интерпретатор для МК-61. Ты слился как и сейчас.

я всё помню ;) Тролли... Они во всех темах одинаковы :)

Serg_HIS
()
Ответ на: комментарий от i-rinat

Твоя наглость вышла на новый уровень.

Это считать похвалой?! :)

Спасибо.

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

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

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

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

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

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

К стати у тебя на аватарке троль! Что как бы очень не двусмысленно говорит!

Serg_HIS
()

На курсере посмотри на Machine learning от Andrew Ng. Там правда на Octave или Mathlab надо, но тебе легко будет на чем угодно.

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

Нафига программисту математика? Дискретная, да. Остальное так себе. Почти вся математика, которую я изучал в универе, нигде не понадобилась. И забывается она быстро, если не повторяешь.

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

Понятно, что обычный человек с логарифмами не особо столкнется в жизни

dB знаешь, что такое? Вот это логарифм из жизни.

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

Расскажи, пожалуйста, алгоритм.

Не расскажу конечно. Это одна из «киллерфич», которую собираюсь встраивать в свои проекты.

Но скажу, что он простой как 2 байта переслать.

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

Работает доли секунды на сотнях тысяч слов на разных языках.

Все алгоритмы подобного рода - это алгоритмы перебора данных. Соль в том, чтобы правильно урезать количество перебора. Это касается и «задачи комивояжёра».

Serg_HIS
()
Ответ на: комментарий от zamazan4ik

в интернетах есть куча инфы на эту тему же. Вряд ли тс придумал что-то особо хитрое. Скорей всего идея там в том, что он решает специализированную задачу для человека, который физически ездит по складам, и от этого происходят полезные ограничения. Как минимум, не нужно искать самый выгодный маршрут, достаточно самый выгодный из первых 80%. Сразу гуглится elastic net method for the traveling salesman problem (Durbin, Willshaw) - 1%. Но мы можем просрать не 1%, а все 30%.

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

про такие вещи я прекрасно знаю :) но чувак пишет, что придумал что-то эдакое, которое даёт ПРАВИЛЬНЫЙ ответ всегда (а под правильным я понимаю лучший).

Я более чем уверен, что там что-то приближённое. И нет никакой веры в то, что он смог решить лучше :)

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