Ответы пользователя по тегу C++
  • Как C/C++ обрабатывает составные условия?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Тип подобных операций называется строгие и полустрогие.
    В англ. языке это называется "Short-circuit evaluation"
    А вот Is short-circuiting boolean operators mandated in ... это вопрос на stackoverflow.
    Ответ написан
    Комментировать
  • Можно ли ускорить доступ к файлу из нескольких потоков одновременно используя memory-mapped files?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. Сама Windows многое кэширует
    2. На мой взгляд I/O операции следует разделять только тогда, когда другие вычислительные процессы достаточно длительные и I/O поток будет успевать к очередному запросу прочитать, иначе зачем?
    Ответ написан
    Комментировать
  • Книга Стивена Прата по C++ для начинающего?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Вы слишком мало описали Вашу ситуацию! Был ли у Вас опыт программирования? - от этого ответа появляются разные типы "начинающих".

    Если Вы ранее не программировали и только только садитесь за комп с целью написать программу, то рекомендую:
    "Освойте самостоятельно C++ за 21 день", Дж. Либерти

    Если же Вы уже имеете хоть какой-то опыт программирования, то:
    Лафоре "Объектно ориентированное программирование в C++"

    После нее прочтения одно из книг выше рекомендую: Б.Страуструп. Дизайн и эволюция C++ , 2006
    Ответ написан
    Комментировать
  • Зачем нужен ООП?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не везде и не всегда нужны классы. Вы верно заметили. НО! Прежде чем принять решение о том, что в конкретном месте кода класс только вредит, нужен профайлер или другие инструменты позволяющие принять такое решение. К примеру в Python словарь значительно выигрывает по скорости чем класс с методами.

    Фишка ООП в том, что человек уже думает классами! Поднимаем голову к небу и видим "Птица летит", другими словами "У объекта "Птица" был вызван метод "Лететь"", но мы так сложно не думаем и для нас это просто "Летящая птица".
    Вспомните детство и моменты когда родители посылали за хлебом. Как это происходило? Возможно это было так: "Объект сын в твое поле ложу объект "Задача" с полями "хлеб", "комод" и "100 рублей", в поле "результат" ложу "Хлеб". Объект сын вызываю метод "Купить"". Не думаю что это было так, мне кажется это было так: "Сын возьми 100 рублей и купи хлеба". В неявном виде обратились к объекту "Сын", вызвали метод "Взять" и передали аргумент "100 рублей" и ожидаем результат вызова в виде значения "Хлеб".

    Попробуйте процедурный подход переложить в нашу естественную жизнь? ;) Попробуйте так общаться, процедурно. Это очень сложно. Потому что человек привык думать объектами! Самолет, кошка, лошадь, дерево и др. Для нас вроде есть концепция "кошка", но конкретная кошка "Масяня" сильно отличается от другой конкретной кошки "Машка".

    Изучая задачу мы прежде всего должны задать вопрос : "Что является условием завершения задачи?" и вторым не менее важным "Что используется при достижении результата?". Вот это "что используется" как правило и есть объекты.
    Ответ написан
    8 комментариев
  • В чем отличия C++ и C# ?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1) Это две разные вселенные. Но при этом можно переключать мозги на разработку в один промежуток времени на С++, а после чашки чая на C#. Если нужно быстро решить проблему и при этом не парится с эффективностью выполнения программы, то C#, иначе при написании системного кода который оооочень много работает на уровне байтов, word,dword то это С++.
    2) То что у них общий дедушка еще не значит что они похожи. Отличий много! Причем действительно много. Используются разные идиомы, трюки, подходы. К примеру C++ идиому traits попробуй повтори на C#. А иногда она очень выручает!!!
    Ответ написан
    Комментировать
  • Где найти напарника, что бы учиться кодить?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    У меня есть проект на BitBucket в репозитарии закрытого типа. Написан на C++. Не заброшен. Пилятся фичи, проводятся рефакторинги. Пока все делаю в одиночку. Проект нацелен на разработку тулзы для reverse-engineering-специалистов, т.е. малварщики, антивирусные спецы, пишущие защиты ПО и снимающие эти защиты и др.

    Если интересно, то можешь найти меня на habrahabr и написать в личку
    Ответ написан
    Комментировать
  • Есть видеоуроки по с++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Достаточно хороших и качественных уроков нет. Большинство из уроков больше учит использовать ту или иную среду разработки, чем самому языку. На мой взгляд, не следует учить этот серьезный язык программирования по видео-фрагментам и куда лучше брать книгу, а об их выборе здесь на тостере уже не мало тем! Если Вам что-то непонятно,берете диктофон(почти любой смартфон эту фичу имеет) идете к ближайшему гуру и задаете вопрос. В последствии у Вас появляется так база вопросов и ответов на них, которая нужна именно ВАМ!
    Ответ написан
    Комментировать
  • Какие книги выбрать по изучению C++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Я бы порекомендовал найти книгу Дж. Либерти "Освой самостоятельно С++ за 21 день". Читается очень легко и не принужденно. В процессе чтения пробуйте писать код. Нет, не боевые задачи, а небольшие консольные что-либо полезное считающие. Маленькие, но завершенные задачки, которые применяют то что описано в Дж.Либерти. Не смотря на название книга более чем заслуживает уважения. Лучше него для начинающего никто не написал.
    После этой книги ни чего другого не пытайтесь читать, иначе намешаете винегрет в голове. Лучше пишите боевой код. После пол-года разработки берите книги С. Майерса про эффективную разработку на С++. Но! Читайте не раньше чем через пол-года, т.к. раньше не набьются шишки, а именно шишки позволят понять то о чем говорит Майерс.
    После этих двух через 2-3 месяца после Майерса рекомендую про STL Джосьютиса.

    После этих трех Вам врядли чьи-то советы будут нужны. ИМХО, мое понимание процесса обучения такое.
    Ответ написан
    Комментировать
  • Где найти книгу или часть из нее по работе с массивами на С++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Похожу у Вас нет понимания "Что такое массив?". Как правило, программеры, понимают под этим последовательность однородных данных одного типа.

    * Типы данных как Вы знаете бывают разными: int, float, long int и др. В виду того что C++ позволяет писать в объектно ориентированном стиле, то Вы также можете использовать и свои собственные типы, т.е. объекты классов из каких-либо библиотек, к примеру из boost или собственноручно написанных;
    * Массив имеет размер или такой признак конца на который можно опереться;
    * По массиву можно пробежаться, т.е. переходить от одного элемента к другому пока не доберемся до последнего элемента;
    * К любому элементу массива можно иметь произвольный доступ. Захотели взять 5-й элемент, то нет проблем если размер больше 5;
    * Признак конца можно организовать по-разному, можно держать во внешней переменной счетчик байт означающий сколько в массив элементов. А можно заложиться на специфическое значение в массиве которое будет означать что массив завершено, к примеру 0x0(нулл-терминированный массив), есть и др. способы, но эти наиболее популярны;
    * Добавить в массив это просто перейти к последнему элементу и задать значение добавляемого элемента + увеличить значение счетчика элементов в массиве или изменить расположение признака конца массива, подвинуть чуть дальше;
    * Удалить из массива, значит надо уменьшить значение счетчика элементов в массиве или изменить расположение признака конца массива;

    Пока изучите это, а потом если интересно,то спрашивайте еще. Не буду засорять сразу голову, т.к. проблем при работе с массивами еще много, но мешать все сразу не следует! Поэтапно учите

    Забыл сказать, что Вам не обязательно привязываться именно к С++, на чистом С теже самые правила. По той лишь причине что язык С++ проектировался и разрабатывался для совместимости с кодом на С
    Ответ написан
    7 комментариев
  • Как добавить поддержку response файлов в TCLAP?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    Автор библиотеки сказал, что явной поддержки этой фичи нет и что он еще не скоро займется этим вопросом. Придется обходные маневры делать
    Ответ написан
    Комментировать
  • Разработка IDE русскоязычным сообществом?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А почему Вы так боитесь учить английский? Это же не только язык потенциальных врагов, но прежде всего это язык с помощью которого выражено громадное количество технической информации. Хотите Вы этого или нет, но сейчас программист знающий этот буржуйстанский язык, как правило, больше выигрывает по сравнению с тем кто этого языка не знает! Возможно Вам стоит просто взять и начать учить, искать способы облегчающие его изучение.
    Ответ написан
    2 комментария
  • Какой язык с семейства Си учить ?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Учите английский. Чем лучше читаете, пишите, думаете на нем тем лучше в освоении чего-либо связанного с компами. На мой взгляд лучше потратить время на улучшение навыков английского чем изучение еще одного языка программирования.
    Ответ написан
    Комментировать
  • Изучение С++ и STL. Какую литературу читать?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    C++. Стандартная библиотека. Николай Джосъютис. на озоне. Очень рекомендую, но читается весьма тяжело. Чтобы материал закреплялся чаще пропускайте прочитанное из этой книги через свои пальцы. Другими словами ЧАЩЕ пишите код
    Ответ написан
    Комментировать
  • Как определить вид хеша?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Ув. Автор, то что Вы спрашиваете это из разряда "как получилась цифра 5?" может быть умножением 1 на 5, а может быть сложение 4 + 1, а может быть делением 10 на 2. Вы бы точнее сформулировали Вашу проблему
    Ответ написан
    2 комментария
  • Как правильно выносить код в разные файлы?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А для чего нужно разбивать на несколько DLL ? Может просто переоформить код,т.е провести рефакторинг и оставить все как есть в рамках одной DLL?

    Я бы Вам посоветовал Пока "жить" в рамках одной DLL и провести рефакторинг, тогда внешняя программа что использует вашу DLL послужит хорошим тестовым стендом и провести проверочное тестирование после рефакторинга будет значительно проще! Вторым этапом, если Вы все же решите разбить на несколько DLL Вам будет значительно проще,т.к. понятный код и он протестирован!

    Разбивается путем мышления и задавание себе вопросов.
    Каждый модуль обязан отвечать утвердительно на вопрос "Он действительно решает только одну задачу?". При этом надо понимать не примитивные задачи "чтение из файла" или "подсчитать энтропию", под "одной задачей" понимает один пункт взятый с уровня абстракции.

    Пример:
    Уровень 1: Чтение настроек
    Под-уровень 1: Формирование имени файла с настройками
    Под-уровень 2: Открытие и чтение из файла с настойками
    Под-уровень 3: Задание глобального объекта конфигуратор соглассно прочитанным настройками
    и т.д. и т.п.

    В любом случае идеальных методик по разбиению нет! Вас никто не научит программировать, это процесс итеративный, сегодня лучше чем вчера, а завтра будет еще лучше чем сегодня ;)
    Ответ написан
    Комментировать
  • Перспективы C++ разработчика

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Узнавайте что конкретно Вы хотите! Узнавайте это ни у кого-нибудь а задавая вопросы самому себе! Это как спросить у админа : "А стоит ли изучать security level при использовании FreeBSD?" ответ админа прост до безумия: "А почему возник такой вопрос?". Вот и Ваши про стоит или нет! Всегда нужно отталкиваться от чего-то конкретного! Некоторые думают что так они заработаю кучу бабла, а кто-то думает что он засядет и напишет лучшую программу мира и получит "перфект и уважуху", кто-то еще что-то думает. Определитесь точнее Что именно Вы хотите получить и к чему именно лежит душа?
    Ответ написан
    Комментировать
  • Что сначала начать изучать, язык С или сразу взяться за С++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Начните с того к чему лежит душа и при этом не понятно почему к этому что-то лежит душа!
    Ответ написан
    Комментировать
  • С чего лучше начать изучение языка С ?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А для чего Вам изучать С, если Вы точно знаете что перейдете на жабу или на плюсы?
    Ответ написан
    Комментировать
  • С++. Создание и инициализация произвольного std контейнера через template?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1) Или мне кажется или на самом деле вы пытаетесь сделать контейнеро-независимый код? Если да, то выбросьте эту затею из головы
    2) Как-то не по-английски: «ContainerMake». Мои варианты 1) ContainerMaker или 2) makeContainer
    Ответ написан
    5 комментариев
  • Как познать C++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    На мой взгляд автору надо найти в круге своих знакомых того кто очень хорошо программирует на С++. Как правило если этот гуру умеет хорошо и лаконично высказать свою мысль, то и посоветовать может то что действительно имеет ценность! Ведь не даром же говорят: «Самый лучший дистрибутив Linux тот, который стоит у вашего ближайшего знакомого шарящего в нем».
    Среди бывших и текущих коллег у меня есть довольно серьезные знатоки С++, читая код которых уже учишься многому без каких-либо книг. А если при этом и вопрос спрашиваешь, то получаешь достаточно серьезное и обоснованное мнение.

    Магия: Чтение кода написанный хорошим программером + общение + непрерывная практика.
    Ответ написан
    Комментировать