Ответы пользователя по тегу IT-образование
  • С чего начать изучение математики если прогулял 11 лет школы но хочешь понимать сложные алгоритмы в программировании?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    А чё понимать то там? Это алгоритмическое расстояние, его формулой не посчитаешь, для него нет каких-то адекватных свойств или чего-то такого. Банальный алгоритм, созданный для быстрого нечёткого поиска по словарям. Это не рокет-сайнс и не криптография.

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

    Возможно потребуются разделы геометрии, особенно если хотим работать с 3D-объектами.

    Большинство можно получить из учебника по математики для 10-11 классов, из общей литературы мог бы рекомендовать "Конкретную математику" Кнута, Поташникова, а также "Алгоритмы. Построение и анализ" Кормена, Лейзерсона. Весьма полезным может стать "Искусство программирования" Кнута, но она на любителя.

    И да. Учим технический английский. Иначе будет больно.
    Ответ написан
    Комментировать
  • Что такое Абстрактная математика, а что практическая?

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

    Однако в целом вся математика чрезвычайно абстрактна. Логичная, стройная, по существу. Не в пример, экономике, которая сама не понимает, почему человек (или группа) поступает так или иначе.

    Практическая, если имеется ввиду прикладная, то это расширение стройной (ограниченной) математической модели новыми понятиями из других сфер, чтобы можно было используя математические методы решать задачи, например, биологии или социологии, да хоть литературы и музыки. Для этого производится некоторый переход математического понятия в другое, может быть прямой переход, а может косвенный. Например, рассчёт ВВП страны это прямой переход от бездушных чисел к убитым енотам. А классификация нот - переход от звуковой волны через преобразования Фурье к гармоническим колебаниям, то есть к спектру.
    Ответ написан
    Комментировать
  • Как может заработать чистый математик?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ну вообще в университеты требуются и научные сотрудники тоже. Хотя в РФ с этим посложнее, но в целом пара мест на университет бывает. Конкурс, конечно, дикий. Преподавание не требуется, только научная работа под руководством. Минимальный обмен опытом, конечно, будет, но это на уровне раз в год по обещанию. Да и в основном по собственным работам.

    А так, да. Прикладные программисты. Попробуй mathematica (или python) и ищи по тегам "машинное обучение" и "нейронные сети", "обработка данных" (data mining). Или попробуй python + GLSL (или какой-нибудь движок и соответствующий язык шейдеров) и там уже играй в геометрию и вычислительную геометрию, поменьше математики, но покрасивее задачи и решения (как правило). Здесь теги примерно такие: "шейдеры", "3д программирование", "GLSL", "HLSL", "opengl", "directx", "(un)biased rendering". Ну и ещё есть физика, метеорология, биология и прочая ересь, где так же нужны программисты и они в основном дробят числа по хитрому. Хотя, что характерно, у нас в стране таким обычно занимаются сами физики, метеорологи, биологи и прочие. Хотя вот в международных компаниях это поставлено чуть правильнее.
    Ответ написан
    Комментировать
  • Как найти область определение функции?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Нет, здесь такое не стоит делать. Вам сюда.
    Ответ написан
    Комментировать
  • Python vs C++ что достойно внимания?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Python скорее не язык, а набор спецификаций. C, Java, .Net, да хоть сам Python. Так что выбор и очевиден. И непонятен, собственно, о чём вообще вопрос.
    Ответ написан
    Комментировать
  • С чего начать изучение компьютерного зрения?

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

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

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

    Единственное, что следует заметить, так это то, что OpenCV всё таки шлак. То есть он очень не плох для обучения, но представляет из себя разношёрстную помойку порой едва работающего кода. Этому есть логичное объяснение - её делают не профессиональные программисты, зачитывающиеся МакКоннеллом, а какие-то там профессора и аспиранты, увлекающиеся плюсами и пайтонами. Так что, не стоит брать пример с того кода, а продакшн ни в коем случае не должен содержать ни грамма этой библиотеки. Но это так, лирика.
    Ответ написан
    Комментировать
  • Действительно ли важно правильное питание для мозга программиста (с точки зрения науки)?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    The truth is out there.

    Собственно, вопрос правильный. И в какой-то степени интересный. И даже очень дисскуссионный - пока ещё нет рабочей теории о работе мозга. Вот что довелось узнать мне на собственном опыте:

    1) Диета. Классная штука, с ней чувствуешь себя по настоящему другим человеком. Важно, критически важно понимать, что диета - синоним рациона, иначе - обоснованные правила приёма пищи, включая собственно рацион, то есть состав, разнообразие продуктов. И здесь всё очень просто - есть надо, надо много и разнообразно. 20% утром, 50% на обед и 25% - ужин, можно откусить по 5% от каждого и сделать полдник. Наедатся на ночь плохая идея - прямая дорога к ожирению (ибо во время сна выделяются интересные гормоны стимулирующие жировые отложения), так и проблем с сердечно-сосудистой системой. Ну и веганы идут лесом - собирать жёлуди.

    2) Витаминки. Здесь всё ещё проще - если соблюдать диету, то витаминки не нужны, разве что сезонные. Ну и веганы пляшут в аптеку закупаться компливитами. К слову, в аптеку таки стоит зайти и затарится кальциями и черниками - помогает, правда.

    3) Допинг. Кофеин - плохая идея, не чаще раза в неделю. Полностью нарушает энергетический баланс за счёт того, что у кофеина схожая структура с АТФ, таким образом организм обанывается о настоящих запасах энергии, полностью высвобождая запасы энергии на внешние возбудители; результат - угробленный энергетический обмен, который восстанавливается очень медленно. Никотин - забавный ноотроп, который в общем-то яд, однако оказывает угнетаетающие воздействие на ЦНС помогая концетрироваться. Амфетамины - классная штука, по настоящему работает, однако оказывает деструктивное воздействие. Другими словами - конкретно сейчас думаешь быстрее и конкретнее, однако послезавтра не думаешь совсем. Ноотропы спорны, могут помочь, могут нет, немного комулятивны, читай выпил курс, а через месяц понял матан, однако исследования показали улучшения в пределах погрешности.

    В целом, да. Питание важно. Но стоит понимать про такую вещь, как пределы возможностей. То есть много поедать апельсинов - плохая идея, гипервитоминоз аскорбиновой кислоты угробит мочевой тракт.
    Ответ написан
    17 комментариев
  • Стоит ли париться за престижный диплом?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Сколько людей столько и мнений. Моё мнение - всё очень по разному. Очень по разному.

    ОК. Какие плюшки может дать престижный диплом? Ну это очевидно - больше возможностей, а именно: проще с работой, ибо престижный ВУЗ явно чуть чаще и сильнее котируется; вероятнее получить образование, за которое не стыдно; скорее всего интереснее учиться; большее число полезных связей. Наконец, дипломная работа, вероятно, будет единственным серьёзным более менее законченным проектом в портфолио, что очень и очень важно. Ну и напоследок, не хочу пугать, но мне бабушка шептала, что в неизвестных ВУЗах хаос и бардак - взятки, ужасный учебный план, некомпетентность...

    В общем, выбор прост. Если есть возможность, то всегда стоит выбирать лучшее. Но комфорт тоже стоит учитывать в своих возможностях. Брать кредит на 25 лет за лексус живя с родителями, чтобы отдавать половину и без того небольшой зарплаты в условиях кризиса - как минимум неразумно. А вот взять раздолбанную девятку на первое время, чтобы бросать её где попало, не боясь что её угонят, чтобы со спокойствием ездить по нашим дорогам и заезжать на тротуар, зная что ходовую ремонтировать раз в год за четверть месячной зарплаты. Да и заправляться тем же 92ым, прекрасно понимая что он и не отличается от 95го ничем - вот это уже похоже на план. Собственно, я к чему - всё надо делать в меру сил и возможностей. Если такая возможность есть - хватайтесь за неё двумя руками. А если нет - довольствуйтесь чем есть. У всего есть свои плюсы.

    Удачи!
    Ответ написан
    Комментировать
  • Как более грамотно сформулировать тему диплома "Интернет-магазин"?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Не в обиду, однако задайте вопрос, а станет ли мир лучше, если будет создан ещё один бесполезный интернет-магазин. Дипломная работа в первую очередь должна быть актуальной, а значит как минимум привносить что-то новое. Подойдите к этому вопросу.

    А по делу, попробуйте что-то вроде "Использование современных инструментов, фреймворков и методов при разработке %my_project_name". Во-первых, внезапно переместился акцент с "новейшая вакцина от британских учёных", на процесс, где воды можно налить намного больше, взять то же экстремальное программирование. Во-вторых, внезапно появляется слово современный, а так как все эти js-библиотеки, php-фреймворки, CMS-движки имеют свойство меняться с незавидной частотой, это слово скорее всего окажется верным. Ну а методы... Экстремальное программирование уже было упомянуто, придумайте уж хоть что-то своё.

    Однако, лично я бы не брал такую тему. Она... Как бы сказать, не очень хорошая для диплома. Возьмите тот же apache, протестируйте его вдоль и поперёк, покажите, какие настройки будут оптимальны для того же интернет магазина. По сложности примерно то же, по актуальности в разы лучше. Или сделайте нагрузочное тестирование VPSок и дедиков на сравнимых заявленных характеристиках. Попытайтесь посчитать потери "на виртуализацию". Ещё можно попробовать посчитать всевозможные метрики пользователей, то как среднее время препровождения на интернет странице, однако здесь потребуется что-либо хоть сколько-то раскрученное. В общем, тем тысячи. Да возьмите один компонент той же бесполезной CMS и выкопайте от туда всё что можно и нельзя. В дипломе нужен анализ, а не вода. Намного приятнее диплом, в котором 20 страниц чистого анализа, того диплома, в котором 120 страниц воды. Не надо делать ещё один интернет магазин. Придумайте что-нибудь хоть сколько-нибудь оригинальное.
    Ответ написан
    Комментировать
  • Наследование в ООП - стоит ли широко применять?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Наследование действительно следует избегать. Вообще, идеально избегать так, будто наследования нет вовсе, будто это чит-код при использовании которого пролетариат убивает котёнка.

    Почему так? Давай-те представим, что мы всё и вся наследуем. Тогда объект будет... Очень ёмким, ведь он связан непосредственным родством со всеми предками (равно как и предки - со всеми наследниками). И связность будет очень и очень сильной, что очень сильно усложнит архитектуру. Чаще намного целесообразнее просто включать объект в класс (агрегировать). Во-первых, это значительно упростит архитектуру. Во-вторых, цепочка конструкторов может быть очень длинной. И лишний раз создавать объект - не лучшая идея. В-третьих, наследованием мы как бы декларируем, что вот этот класс объектов так же является вот этим классом. Далеко не всегда это верно, что в дальнейшем породит множество костылей и боль. Тогда как ошибившись с агрегацией мы всегда сможем в дальнейшем расширить до наследования несколькими изменениями.
    Ответ написан
    1 комментарий
  • Стоит ли подводить учеников, их проекты к тому, чтобы они стали коммерческими?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Тут всё сложно. Самый простой способ несовершеннолетнему вести бизнес - это найм личного адвоката уполномоченного вести юр. дела от имени клиента. Он будет от имени, собственно, несовершеннолетнего ставить печати и давать автографы. Это очень удобно, так как родители обычно думают по своему, а хороший адвокат (да, такого ещё найти надо) будет действовать только по поручениям клиента, оберегая от неверных с точки зрения юриспруденции действий. Ещё как вариант, если ученик смышлёный, вполне возможно он сам всем займётся. Законодательство позволяет, важно лишь согласие родителей.

    И да, бизнес план и всё такое - это сущий бред. Поверьте, на собственном опыте убедился. Он потребуется лишь если нет чёткого понимания проекта или если нет даже прототипа. В первом случае инвестор может рекомендовать составить бизнес план чтобы "не было чего", во втором - ну а как ещё? К слову, лучше держаться от них как можно дальше. Идеально заняться так по предзаказам, когда покупатели сами оплачивают производство товара или краудфаундингом. Возможно родители могут стать инвесторами. Наконец, снова при всецелой поддержки родителями, можно взять и кредит для малого бизнеса. Инвесторы же, они слишком хитры, чтобы работать с ребёнком на равных, им ведь лишь бы пирог поболее откусить.
    Ответ написан
    Комментировать
  • Как развиваться в области ИБ?

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

    Ок. Смотри, расклад прост. Есть три ветви ИБ: две как прикладные и одна как теоретическая:

    Начнём с прикладных. Здесь в ИБ "делиться" на две части: собственно, обеспечение безопасности и её тестирование.
    Первое, это скорее сисадминство и best practice, когда всё до тебя расписано, только следуй указанием. На мой взгляд - самое бесполезное занятие, ибо никакого творчества не требуется. Конечно, можно заняться обеспечением комплексной безопасности под ключ, но это интересно только тем, что появляется слишком много нюансов. Ну и да, стоит мониторить новости на предмет утечек аля heartbleed.
    Второе же куда интереснее - дяди сделали крутую защиту, всякие динамические байт-коды и эволюционные системы (генетика и все дела), здесь намного больше творчества, потому что обычно тестируешь систему сделанную по best practice, а задача - именно сломать, а не сказать "всё хорошо". Ведь если сломал, значит одной уязвимостью меньше, а если нет, то волновая функция так и не сколлапсирует. Но ко всему прочему, здесь потребуется реверс-инжениринг, так что дизассемблер и тонкие настройки компиляторов-линкеров-компоновщиков гарантированы, равно как и намного более подробное понимание работы компьютера. Впрочем, тем не менее здесь что-то вроде good practice: есть куча вполне рабочих техник и придумать что-то новое вряд ли возможно. А обнаружение чего-то стоящего обычно простая удача, а не что-то выдающееся.

    Ок. Есть ещё теоретическая. Это in reseach область, полная матана и никому непонятных вещей, таки да. Здесь есть довольно новая теория, которая до сих пор ходит по грани. Самое перспективное направление - дискретка и теория чисел оказались крайне неподготовленными к переходу в цифровую эру. Повезло хотя бы, что функция эйлера не подкачала, но в любом случае, здесь точно есть чем заняться: совсем недавно французы неплохо упростили сложность декодирования общих линейных кодов, а тут ещё из первых рук сообщаю - вполне возможно появился первый субэкспоненциальный алгоритм (а это на, на минутку, McEliece), который между прочим наступает на пятки уже P ?= NP. Впрочем, криптология на самом деле скучна. Невероятно скучна. На практике делать нечего, трон будет поделён между двумя-тремя командами, а остальные что? Так и останутся не удел, проверяя и перепроверяя результаты коллег. Ну и сама криптография с криптоанализом тоже самое противостояние с теми же самыми practice. Конечно, здесь намного больше возможностей что-то открыть, совершенно новое. Вот месяц назад обсуждали abc-гипотезу и что возможно, если она таки верна. Конечно, ни к чему не пришли, но было очень интересно. Но одно ясно - теория она и в Африке теория, на практике применяется невероятно мало. Разве только тот же самый субэкспоненциальный алгоритм, если оправдает ожидания, вполне юзабелен для помехоустойчивого кодирования за счёт намного большей эффективности "случайного" линейного кода. Хотя, там на самом деле много интересных вещей, рекомендую хотя бы посмотреть в сторону не столько хардового ИБ, сколько в теорию информации в целом. А криптография?.. Да ну ей, криптографию. Разве только тот факт, что в теории она на грани совсем чуть-чуть печалит иногда, а потом узнаёшь, что на практике современные квантовые компьютеры не такие уж и квантовые, да и кубит всё равно не хватит, чтобы разложить хотя бы 1кбит число на сомножители.
    Ответ написан
    Комментировать
  • Питон. Как изучать?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Окей, берём nginx, включаем cgi, и накатываем like this. Вот вам и PHP-style на питоне. Вместо echo используем print.

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

    Так что смотря что Вам больше нравиться. Хочется больше велосипедов? Flask Вам в руки. Хочется быстрого развёртывания? Привет, django. Ищете хардкора? BaseHTTPServer имеет почти всё, что нужно, а чего нет - можно и самим придумать. А если требуется надёжность, возможно имеет смысл взглянуть на руби-стек, ибо пусть django и мейнстрим, пусть он и не сильно новый, всё таки у RoR аудитория больше и сообщество посильнее, тем более что магии в ruby более чем достаточно.
    Ответ написан
    Комментировать
  • Какую первую книгу по программированию выбрать?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Если знания нулевые, как Вы говорите, начните с изучения базового синтаксиса. Java сегодня имеет довольно богатый, пусть и очень стандартный синтаксис: классы и интерфейсы, наследование, переменные и члены класса, методы и уровни доступа, управляющие операторы (циклы, условия), анотации, система пакетов. Вроде всё. Пусть этот список станет поводом для того, чтобы прочитать это в рамках java где угодно, будь то wikipedia, аль coursera, да хоть Шилтд. К слову, здесь не сильно важен язык программирования. Если до этого хоть что-нибудь изучали, втянете за пару дней. Иначе изучение может растянуться на пару недель.

    Вот после этого уже можно копать вглубь. Здесь я бы рекомендовал вами упомянутого Кормена и Кнута. Первого нужно читать вдумчиво, выполнять все упражнения (каждое выполненое упражение это +10 к интеллекту). Кнута можно просто полистать. Оба годяться как справочники, но Кнут будто создавался таким образом. Математики у Кнута много больше и если Кормен может что-нибудь доказать "абы как", то Кнут себе такого не позволит. Из-за чего его читать долго и нудно: можете смело пропускать доказательства и возвращаться как было что-то не понятно. В любом случае, их читать действительно сложно. Осилите хотя бы Кормена - медаль Вам уготована.

    Но и язык нужно знать и понимать. Поэтому здесь пора заняться и тем, для чего java предназначена - энтерпрайзом. А именно, умением не столько программировать, сколько разрабатывать продаваемые продукты. Здесь подойдёт филосифия java для начала. Когда наследование перестанет Вас пугать (или наоборот, пройдёт время чересчур увлечённого наследования всего и вся), можно приступить к банде четырёх. В то же время, умея строить сложную архитектуру, мы всё ещё смутно знаем что под капотом у java. Так что можно почитать про оптимизации в JVM (читал англ, не знаю есть ли перевод), ну и покопаться в openjdk, если будет излишняя увереность, лишнем не будет.

    Собственно, это roadmap на очень долгое время. С самых начал до седой старости будете изучать java. Вполне возможно, что к тому времени, как начнёте банду четырёх (если начнёте), уже подойдёт долгожданная java 2.0 и всё нижеописанное потеряет значение, но чем чёрт не шутит? К слову, Кормен, и Кнут, и философия, и банда четырёх остануться, это скорее фундаменальные книги.
    Ответ написан
    Комментировать