Задать вопрос
  • Как развиваться в программировании не привязываясь к языку?

    myjcom
    @myjcom
    "Есть только проблема и решение" - а есть уже готовые решения распространенных проблем,
    которые нужно знать, чтобы не тратить месяцы на изобретение велосипеда.

    Вместо этого текста:

    "Где-то писали, что человек может удержать в памяти не более 7 понятий одновременно.
    Разбивайте код на смысловые (именно смысловые!) блоки, содержащие не более 7-10 действий. Безжалостно режьте, если больше. Давайте классам и методам длинные понятные названия. Используйте транслит вместо "благородного" английского.
    И если за это вас запишут в быдлокодеры, несите это прозвище с гордостью!!!"


    можно лаконично написать:

    Используйте метод декомпозиции.

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

    Не сбивайте человека с толку.
    Вопрос всплывает, в том числе и потому, что Именно не читают, как Вы выразились эту макулатуру. Макулатурой можно назвать огромное кол-во изданий отечественных и зарубежных авторов, но никак не то что приведено здесь.
  • Как развиваться в программировании не привязываясь к языку?

    myjcom
    @myjcom
    Wentixon, эту литературу нужно перечитывать по нескольку раз, как классику,
    паттерны это вообще настольная книга. Да я прочитал, ознакомился со всеми. Сейчас перечитываю.
    C Unleashed использую для "тренировок", и да этой книги достаточно, чтобы понять как работает железо на низком уровне. Если вы это имели ввиду.
    По поводу математики - если нет специфических требований, достаточно уровня технического колледжа, чтобы чувствовать себя свободно. Дискретная математика, линейная алгебра, немного теории вероятности и статистики. Аналитической геометрии на плоскости и в пространстве. Начал дифференциального и интегрального исчисления. Это все осваивается при наличии желания, не спеша в течение двух лет.

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

    Различные библиотеки на данном этапе в расчет не берем, завистит от языка и среды.

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

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

    Р.S. И да, я не знаю на достаточном уровне ~50% того что написано в этих книгах, ввиду отсутствия практического опыта применения некоторых знаний. Но ориентироваться в них могу.
  • Есть ли С++ IDE с готовыми библиотеками?

    myjcom
    @myjcom Куратор тега C++
    MegaCraZy6, https://habrahabr.ru/post/192284/
    Boost.Asio C++ Network Programming.
    И как выше посоветовали Qt.

    Как вариант:
    Code::Block+GCC+Clang+Boost
  • Как сделать TCP сервер на С++ для Ubuntu?

    myjcom
    @myjcom Куратор тега C++
    #include<string.h>
    char* message = "Hello World";
    write(sock, message, strlen(message)); //strlen(message) == 11


    if ( bytes_read != 0 )
    {
      while( i == bytes_read ) // здесь i == 0 а bytes_read != 0 что означает ( i != butes_read)
                                          // условие не выполняется блок пропускается
      {
      cout << buf[i];
      i = i + 1;
      }
    }


    Наверно должно быть так:
    if ( bytes_read > 0 )
    {
      while( i != bytes_read ) // здесь i == 0
      {
      cout << buf[i];
      ++i;
      }
    }