• Какая книга по С++ будет лучше всего для тотального новичка?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Люди, которые советуют сначала учить просто C, вы не правы. C и C++ -- это два разных ЯП, и С++ это даже не супермножество С (т.к. очевидно, что не любая программа, валидная для С, будет валидна и для C++). У этих двух языков отличается подход к управлению ресурсами, обработке ошибок, работе с типами и т.п. Я считаю, что иметь опыт промышленной разработке на C даже вредно при изучении плюсов.

    Липпмана попробуйте почитать.
    Ответ написан
    Комментировать
  • Есть ли литература в которой я могу прочитать все о том как работает сеть интернет?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Таненбаум, Компьютерные сети
    Ответ написан
    Комментировать
  • Как лучше реализовать локализацию?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    s = loc::get("key");    // ambiguous overload for op=

    неоднозначность у тебя появляется потому что оба конструктора std::wstring (конструктор копирования и конструктор преобразования из const wchar_t*) являются неявными.
    Операторы преобразования TaggedCWstr так же являются неявными.

    Эту неоднозначность нужно исключить. Замени, например, оба оператора преобразования на оператор преобразования в std::wstring_view.

    Я бы не стал делать неявный оператор преобразования в std::wstring и этим позволять бесконтрольно обращаться к динамической памяти без явного понимания этого процесса. Лучше для получения std::wstring сделать operator *, а еще лучше - вообще не ломать семантику операторов и сделать метод с говорящим именем.
    Ответ написан
    1 комментарий
  • Какие курсы по машинному обучению пройти на Coursera?

    @dmshar
    Ну, хоть бы сообщили, в какой области у вас "стандартный университетский багаж знаний". И неплохо бы понимать - вы бакалавр или магистр? Просто "лучший курс от Coursera" для магистра по специальности "прикладная математика" и бакалавра по специальности "мелиорация и водное хозяйство" могут оказаться разными, вам не кажется?
    Кроме того, в сети достаточно много откликов по указанным курсам - не например
    https://www.ibs.ru/datalab/blog/osvoenie-spetsialn...
    Какой курс по машинному обучению на Coursera полезнее?
    https://www.quora.com/What-is-your-review-of-Cours...
    Вы их уже проанализировали и у вас остались какие-то неясности? Или вы просто ждете, что кто-то скажет "вот этот курс лучше, а вот этот курс хуже"? Так человек для этого должен как минимум пройти три-четыре таких курсов, что-бы было с чем квалифицировано сравнить.
    (Кстати - вопрос, почему именно Coursera, а не какой-нибудь другой источник - для простоты оставим за скобками).
    А вообще в таких случаях всегда говорю - вы начните хоть с чего нибудь. Хорошо пойдет - чудесно. Что-то пойдет не так - успеете перескочить на другой. Это все равно лучше, чем сидеть и мечтательно раздумывать "а что лучше-что хуже", полагаясь на чье-то чужое мнение, авторитетность которого - вообще-то мягко говоря не ясна.
    Удачи.
    Ответ написан
    Комментировать
  • Какой стек технологий учить для написания собственных кросс-платформенных приложений?

    Zifix
    @Zifix
    Barbatum
    И чему не устраивает тот же Qt, который вы уже знаете?
    Ответ написан
    Комментировать
  • С чего начать изучение C++, если есть опыт программирования на других языках?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Попробуйте погуглить что-то вроде "C++ crash course", это может помочь.
    Вообще, С++ на PHP не похож совсем. И ваше непонимание того, что такое int это доказывает. Непонимание будет только расти, после того, как вы узнаете о ссылках и указателях, управлении ресурсами, сборке и дистрибуции проекта и т.п. Вот если бы вы после пхп, руби или пайтон начали изучать, то таких бы проблем не возникло.
    Так что, скорее всего проще и правда взять хорошую книгу (можете погуглить, таких вопросов много), и изучать C++ с нуля. Общий опыт программирования вам безусловно поможет, но повторюсь, языки разные.
    Ответ написан
    Комментировать
  • Почему в с++ не могут избавиться от переполнения буфера?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Зачем избавляться от strcpy? Она проста и эффективна, как и большая часть языка C. Проверка длинны строки на каждый символ или просто дополнительная проверка -- это проверка и, как следствие, затраченное время. При определённой культуре программирования, покрытия кода тестами (в том числе и со случайными данными), ревью, и использовании средств статического и динамического анализа, риски можно минимизировать. Взамен вы получаете быстрый и легкий код, практически без оверхеда. Из-за отсутствия оверхеда (тяжёлого рантайма), этот язык популярен для всяких системных вещей (я всё ещё скептически настроен насчёт Rust) + очень много кода на нём уже написано и его надо поддерживать + интерфейсы многих библиотек написаны на C из-за возможных проблем с ABI, в случае C++, например и т.п.
    В C++ дела обстоят по-другому, и мешать (а тем более путать) его с C не стоит (ну только, если надо что-то системное дёрнуть в недрах вашего кода или написать обвязки для C библиотеки).
    Ответ написан
    3 комментария
  • Найдите, пожалуйста, ошибку в коде c++?

    GavriKos
    @GavriKos
    Во первых - весь код в тег "code"!
    Во вторых - при ошибках в инклюдах программа не скомпилируется.
    В третьих - по моему вы что то неправильно делаете совсем. Алгоритмически.
    Ответ написан
    4 комментария
  • Почему в примерах кода в книге функции создаются после того, как используются?

    romy4
    @romy4
    Exception handler
    или просто функции объявлены до их использования
    Ответ написан
    Комментировать
  • Почему в примерах кода в книге функции создаются после того, как используются?

    Возможно вы упускаете заголовочные файлы.
    Ответ написан
    Комментировать
  • Какую литературу почитать для саморазвития?

    ilyasus
    @ilyasus
    "Код. Тайный язык информатики." авт.: Ч. Петцольд
    Ответ написан
    Комментировать
  • C++: Как решить задачу про мантиссу и знак float?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ,мои попытки не увенчались успехом,к сожалению

    не очень-то информативно. Что за попытки? Что именно не увенчалось?

    Смотрим сюда и пишем:

    struct float_parts {
        unsigned fraction:23;
        unsigned exponent:8;
        unsigned sign:1;
    };
    
    union float_and_parts {
        float f;
        struct float_parts parts;
    };

    UPD: поправил для little endian.
    Ответ написан
    1 комментарий
  • С какой книги начать изучать машинное обучение?

    ptitca_zu
    @ptitca_zu
    Programmer. Reader. Introvert
    Посмотрите в сторону "Building Machine Learning Systems with Python".

    Еще сходите сюда и сюда.
    Ответ написан
    1 комментарий
  • Каков правильный путь изучения SQL?

    По любому начинаем с Мартина Грайбера "Понимание SQL" - идеальная книга для начального изучения.
    Ответ написан
    Комментировать
  • Нужно ли хорошо знать математику, чтобы стать программистом? (в частности PHP разработчиком)

    @AlexP11223
    Ладно уж математика, но гугл-то за что не любите? Вот без него точно никак.
    Ответ написан
    Комментировать
  • Как узнать, является ли число иррациональным?

    Иррациональное число может быть представлено в виде бесконечной непериодической десятичной дроби.

    В компьютере ВСЕ числа конечны. Сколько бы большой размер числа мы не ставили, он будет конечен. А значит, что все числа в компьютере рациональны. Да, они могут быть приближены с какой-то точностью с какому-то иррациональному числу, но не более.
    Ответ написан
    Комментировать
  • Как побороть боязнь чистого листа?

    metamorph
    @metamorph
    У Вас просто нет подходящей задачи.

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

    А Вы, судя по всему, пытаетесь начать программировать просто так, "для того, чтобы было". Отсюда куча внутренних противоречий: "да зачем мне это надо?".

    Найдите задачу по душе и вперед с песней.

    Что же касается кривого кода - это действительно может стать сильным стопором ("решение существует, но оно какое-то кривое, поэтому я не буду его применять, а посижу и подумаю над более красивым").

    Лично я с таким борюсь следующим образом: если чувствую, что затупил, пишу кривую реализацию с пометкой "FIXME: ...". Это позволяет двигаться дальше, и в процессе может либо прийти в голову нормальное решение, либо логика кода может смениться до неузнаваемости (и кривое решение уйдет само собой).
    Ответ написан
    Комментировать
  • Знаете ли вы эту игру?

    Ответ написан
    Комментировать
  • Вы в браузере набрали адрес сайта, нажали Enter. Расскажите максимально подробно о технических процессах происходящих далее?

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

    0) Пользователь вбивает в адресную строку браузера адрес сайта (нажимая клавиши на клавиатуре, которые замыкают определённую дорожку в матрице, по которой происходит определение нажатой клавиши, что через шину USB в какой-то момент передастся OS, где это поймает HID-драйвер и вызовет определённое прерывание, что OS передаст как событие/или_ещё_как в программу, которая вызовет соотвествующую функцию из API менеджера окон, которая изменит содержимое строки и в результате когда-то будет перерисован UI-элемент, а если нажат был Enter, то начнётся следующее).
    1) Браузер вытащит из input'а строку с запросом и посмотрит, похоже ли это на адрес. Если да, то добавит недостающие уточнения (например, http или file протокол, порт и подобные довольно стандартные вещи). Если нет - то скорее всего создаст запрос в поисковую систему, установленную по умолчанию (я более не буду опускаться до таких бессмысленных деталей, как вызовы API-функций, иначе я буду набирать это сообщение ОЧЕНЬ долго). В любом случае на выходе мы по сути получим URL, который надо загрузить. Протокол file:// мы рассматривать не будем, ftp далеко не везде есть, https:// на не хватит вечности, так что остановимся на http, который по сути есть tcp/ip по умолчанию на 80 порту с определённым форматом общения.
    2) Окей, url есть. Теперь нам нужен адрес, к которому обращаться. Так как http это tcp/ip - нам нужен ip адрес. Здесь нам помогают dns-сервера. Обычно, нормальный провайдер устанавливает у себя кэш-сервера dns, которые не обращаются по стопицот раз за vk.com к ответственному серверу com-зоны. Давайте не будем отвлекаться на то, как происходит там общение, если что - вот (вики тем хороша, что часто содержит внизу релевантные ссылки). Скажу лишь то, что на выходе мы получаем ip адрес(а).
    3) Имея адрес мы можем запросить страницу. Собственно, всё что после первого слэша - это как-бы параметры для http-сервера: какую именно страницу запрашивать, он всё же не телепат. Конечно, можно было бы немного схитрить и отправить читать про tcp/ip, но ведь существует и shared-hosting. Ограничемся лишь его упоминанием. Собственно, по полученному адресу отправляется GET запрос, который и обрабатывает сервер, находящийся по полученному IP-адресу.
    4) Сервер же, получив адрес, начинает распарсивать строку, медленно вытягивая нужные данные из баз-данных и настроек, выполняются сотни скриптов, иногда делается ещё не одна сотня различных запросов на другие сервера (здесь и разного вида метрики и разного вида HADOOP и т.д.). Пройдя сквозь скрипты и темплейторы в самом конце мы получаем html-страницу, готовую к употреблению. Её-то сервер и отправит в ответе (после заголовков, конечно).
    5) Вот и началось самое интересное. Получив html страницу браузер начинает жутко надругаться над CPU, HDD и GPU, попутно сжирая тонны RAM и мусоря в swap. Виной всему нереальные для полного соблюдения стандарты от небезызвестной w3c.org. Для облегчения многие делают костыли, вроде webkit, а некоторые и вовсе забивают на него и пилят свой стандарт с преферансом и картёжницами (впрочем, в последнее время становиться лучше). Здесь снова начинаются сотни вызовов API ОС, windows manager'а и прочих библиотек, вроде boost, qt или libpng. В ходе работы в RAM строится макет, по которому потом строится нечто вроде PDF (тоже сильно векторный), что, потом, обрабатываясь быстрыми шейдерами на GPU, выдаётся на экран. Опять же, многое пропущено, но вряд ли кому-либо, кроме парня в свитере с оленями, действительно интересно, как работает GDI, DirectX или OpenGL.
    6) Ах да, мы же забыли про тысячи js-скриптов, миллионы картинок и анимации с котиками, а также о таких дополнительных плюшках, как flash-player или java-weblets. В кратце, что js, то и flash и java - это виртуалка, со специальной архитектурой. Они, виртуалки, конечно разные (хотя flash и js довольно похожи, ещё бы - ECMAScript один и тот же). JS - самый интегрированный внутрь браузера, он же и самый медленный чисто визуально (ибо последние два имеют доступ к быстрому GPU), хотя самый быстрый в попугаях. Второй постепенно вымирает и представляет из себя, так же как и третий специальную shared-библиотеку, о которой браузер как-нибудь узнал и которой скармливает специальное содержимое помечанное специальным тегом html. Третий уже почти умер и встречается лишь изредка или в каком-нибудь энтерпрайзед со страшным legacy-базой. Ну здесь из сылок разве только гугл. Ибо сколько всего - даже не сообразишь. Да и вообще, эта тема ещё скучнее GDI, DirectX и OpenGL и к свитеру с оленями требуются ещё очки с толстенными стёклами, дающие стопицот к терпению и задроству над матаном. Если в кратце, то в случае JS, всё что было загружено в память и не думает выгружаться и формирует этакое дерево - DOM, над которым с помощью специального API и происходят модификации. При этом, перед тем как исполниться, весь JS-код компилируется, в нативный для VM байт-код. То же самое в общем-то и со вторым и третьим, разве только они не имеют доступа к DOM и организовать его - дело тех ещё костылей. Ах да, забыл ещё про Silverlight (или как оно там пишется), который сдох, не успев родиться. Так же как и Java, жив в серьёзном энтерпрайзе, не поскупившийся не "дешёвую" поддержку MS.
    7) Ну... А дальше пользователь нажимает на нужную гиперссылку и всё по новой.

    За кадром остались такие костыли, как ajax, websockets и прочая асинхронная ересь. С ней всё в миллионы раз сложнее. И к очкам со свитером потребуется ещё и... а чёрт их знает, что они там ещё носят. Ну да ладно, я искренне завидую тем парням (и девушкам), которые разбираются во всей этой машине. Целиком. Ибо это лишь верхушка айсберга. Разбавленная не лучшей памятью и ужасным гуглом.

    P.S. Не бейте сильно за грамматические и синтаксические ошибки. Спеллчекер приказал долго жить, да и 5 утра как никак.

    UPDATE
    На хабр выложили неплохой перевод дающий некоторое представление, как браузер ругается над памятью и процессором. Хотя и весьма поверхностное,
    Ответ написан
    26 комментариев