• Литература для изучения "Алгоритмов и структуры даных"?

    Dumbris
    @Dumbris
    Вам уже посоветовали отличные книги.
    В 2017 году, так же доступно несколько более прогресивных форматов обучения:
    1. Курсы

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

    2. Сразу начинайте решать задачки с leetcode.com, hackerrank.com и т.п.

    3. Участвуйте в соревнованиях типа Яндекс.Алгоритм или Russian CodeCup первые 1-2 задачи можно решить не имея специальных знаний по алгоритмам.
    Ответ написан
    Комментировать
  • Как относитесь к курсам на Stepik?

    Dit81
    @Dit81
    Security researcher, pentester, internet-marketer
    Я проходил там один курс по web-безопасности, но хочу пройти еще несколько... Впечатления очень хорошие! Много нового и интересного и уроки ведут хорошие лекторы и специалисты
    Ответ написан
    Комментировать
  • Как относитесь к курсам на Stepik?

    @JihadTV
    Отличный сервис, очень много курсов от крутых отечественных преподавателей.
    Ответ написан
    Комментировать
  • Как проходит тестирование веб приложений?

    @mipan
    Юзабилити и безопасность в отношении веб-разработки это не первые 2 пункта в тестировании.
    Основная задача сводится к проверке функционала и соответствию ТЗ.

    Это может быть сделано либо руками, либо автоматизировано. Основной инструмент для автоматизации - Selenium.
    Написание автоматизированных тестов это по сути разработка.
    Ответ написан
    Комментировать
  • С чего начать изучение Linux с нуля?

    illuminat17
    @illuminat17
    инженер-системотехник
    Здравствуйте, Vitaminka!
    Я бы Вам посоветовал предпринять следующие шаги.
    1. Установить один из хорошо поддерживаемых дистрибутивов на "компьютер под рукой" (свой домашний, второй свой домашний, виртуалка). На мой взгляд, если Вы сам не сторонник "шоковой терапии", то лучший вариант поставить на второй домашний (тестовый), а если сторонник, то сразу на главный домашний. Из дистрибутивов рекомендую в порядке убывания предпочтения для вашего случая следующий список:
    Ubuntu 16.04
    www.ubuntu.com/download/ubuntu-kylin

    Debian Jessie 8.5
    cdimage.debian.org/debian-cd/8.5.0/amd64/iso-dvd

    OpenSuse
    https://software.opensuse.org/421/en

    2. Как правильно писал Ciscoridze определите себе некую цель. Не общую, типа "хочу в совершенстве изучить Linux", а конкретную. Причём очень важно, чтобы это была действительно интересная для Вас задача и предельно конкретная. Как уже писали "установить свой Web-сервер и опубликовать его в интернете", "автоматизировать отправку СМС сообщений по критическим событиям на ПК и в сети" и т.п.

    3. Хоть нынче это становится не слишком модно, купить бумажную книгу хорошего автора и читать её постоянно. Дело в том, что помимо конкретных знаний, как решить тот или иной вопрос, которые почтит всегда можно найти в интернете, очень важно общее понимание, системное преподнесение материала, а оно возможно как раз из книги или из обучающего курса. Как хороший пример «UNIX и Linux. Руководство системного администратора» (2010) Эви Немет.
    adm-lib.ru/linux-i-drugie-unix/evi-gart-trent-ruko...

    4. Одновременно ос всем этим считаю очень полезным чтение справочника команд прямо в алфавитном порядке. Такие справочники есть в большом количестве. Много чего там будет оставаться для вас совершенно не понятным, но ровно столько же вызовет у вас немой возглас "ах вот как это просто и классно, буду знать!!!". Чтение этого справочника должно стать для Вас многопроходным процессом и со временем количество команд из группы "ничего не понимаю" начнёт существенно убывать.
    5. Очень хорошо бы найти человека, который мог бы Вам подсказывать какие-то вещи, когда у Вас совсем будет уже тупик. Кстати, выбор первого Вашего дистрибутива лучше увязать с тем, какой установлен у него. Это резко повышает эффективность помощи.
    6. Будут моменты, когда "ничего не работает, ненавижу!!! Ничего не получается!!!". Не опускайте руки, не сдавайтесь, решение найдётся. :)
    Ответ написан
    1 комментарий
  • Что должен знать профессиональный программист без учета особенностей конкретных языков программирования?

    viktorvsk
    @viktorvsk
    Не уверен, что для среднестатистического:
    - фронт-энд разработчика нужны паттерны, алгоритмы и структуры
    - Для 1C-ника - английский
    - для эмбеддера - базы данных и фреймворки

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

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

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

    Другое дело в том, как вы распоряжаетесь имеющимися знаниями и, главное, - теми, которых еще нет (а-ля Антибиблиотеки Умберто Эко) и как быстро адаптируетесь к новым задачам

    Часто, на такой вопрос отвечают "Изучайте протоколы и структуры данных", но это тоже сильно общий ответ (хотя, конечно, как и вопрос).
    Ответ написан
    2 комментария
  • Почему MS Visual Studio Community 2013 не на русском?

    StanislavMychko
    @StanislavMychko
    Мыслитель
    Языковой пакет можно установить Tools > Options > International settings ссылка "Get additional languages".
    Скачать пакет и установить.
    39e04b0dfa5d4e19b4bc7dcbe8f2dafa.png
    Ответ написан
    1 комментарий
  • В чем отличия C++ и C# ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Тут все пишут про отличия. Рискну написать про сходства.

    Во-первых, о чём бы ни писала Елена и Си++ и C# - оба языки общего назначения. Даже больше, оказывается - C# ни разу не заточён под объёмную библиотеку (или фреймворк) .NET, однако с ним намного, много проще. Но если таки учитывать .NET, то для Си++ есть Boost и Qt, так что здесь скорее паритет - библиотек для обоих хватает.
    Во-вторых, сложность разработки на Си++ часто преувеличена. Разве только дисциплины надо поболее - выстрелить в ногу здесь попроще. Однако при этом Си++ будет чутка более гибкий и без танцев с бубнами unmanaged код не запустить на C#. Если внезапно потребуется.
    В-третьих, оба языка, раз они общего назначения, таки мультипарадигмальные. То есть они реализуют большинство практик. И хотя Си++ развивается довольно медленно, сейчас Си++ резко догнал C# в плане нереализованных фич (здесь как минимум лямбды). Ну и метапрограммирования у Си++ поболее будет (наглая ложь).
    В-четвёртых, оба языка кроссплатформеные. Впрочем, C# будет более кроссплатформенный, чем Си++. Разве только тот же Qt резко стёр границы, но это не значит почти ничего - C# компилируется в тот же самый CIL для всех платформ, Си++ - в совершенно разный код для разных платформ (i386, amd64, ARM Cortex-AXX).
    Наконец, в пятых, синтаксис у них действительно очень похож. Оба языка принадлежат к семейству Алгол-подобных, так что и брейсы, и остальные скобки здесь имеют примерно одно предназначение.

    Различия, которые казалось бы делают языки совершенно разными, таки не столь принципиальны на том уровне абстракции, на котором был задан вопрос. А различия действительно колоссальны: C# - managed код, что означает, что скомпилированный код будет исполнятся не на прямую в CPU, а на специальной виртуальной машине. Это съедает производительность, но сильно облегчает перенос кода. Ну и потом, C# - полупроприетарный ответ Java (что интересно, так как получается, что C# - более свободный, чем Java), которая была создана как замена сложному и небезопасному C++ в том числе.

    В общем, как человек, который начал давно с C#, продолжив C++ и по пути изучив Python, Java, D и другую ООП-чушь могу с уверенностью сказать, что разницы в общем-то и нет... То есть придётся немного проникнуться в чуть другую философию и выяснить, какие проблемы более новый язык пытался решить. Но если подходить к этому, как подошёл lookid, то это скорее не как изучать языки одной языковой группы, а как изучать один и тот же язык в разное время или в разных сферах.

    Почему так? Потому что ООП... Оно как бы ООП, ничего сверхъестесственного ни один язык не предлагает, это не Haskell, и тем более не Brainfuck. Так что принципиально общие вещи в них будут. То подмножество, что реализует машину Тьюринга - у них общие. Сами посмотрите: циклы, ветвления, передача аргументов, арифметика... С небольшими правками всё совершенно одинаковое. Да, Дмитрий совершенно прав, traits на C# не повторишь, ибо та аналогия будет уже не traits, однако... Это уже [programming_language] related, то есть это попытка совладать с особенностями.

    Немного пруфов: лично я ходящий пруф. Зная C++ и C# и немного Java я просто начал программировать на Python. При том, что Python даже алголоподобным не принадлежит. А всё потому, что логика одна и та же, хотя различий между Python и C(++|#) намного, много больше. Но не читая почти никаких туториалов, пройдясь галопом по европам с документацией сейчас я знаю python достаточно для серьёзного проекта.

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