therollingstones
therollingstones личный блог
13 декабря 2017, 15:23

Из за чего я потерял год.

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

Programming Principles and Practice Using С++
Second edition
Bjarne Stroustruр

Я копировал совет из книги, и стал его применять.
С моей стороны было бы свинством, не поделиться этим после года писанины.
Из за чего я потерял год.
Надеюсь это будет полезным)
19 Комментариев
  • Брахман Пилорама
    13 декабря 2017, 15:40
    «Поздравляю Шарик, ты балбес!» ©

    Не в плане обидеть, просто год из за вот этой вот хрени? Вы че шутите чтоли? Может неверное целеполагание вообще убьет Вас?
  • Брахман Пилорама
    13 декабря 2017, 15:55
    Это меняет дело :)
  • Бог
    13 декабря 2017, 16:04
    обломовщина
  • tranquility
    13 декабря 2017, 17:28
    Я что-то не понял в чем посыл. Похоже на что-то вроде приглашения на некий курс программирования для дебилов. Или проблема в том, что люди начинают с С++ толком не понимая что такое объекты и не смотря на это продолжают осваивать более сложные вещи толком не понимая их сути? По-хорошему, конечно, надо примеры работы с консолью начинать с функций printf и scanf, тогда не надо будет рисовать какие-то дебильные квадратики, наверное…
      • tranquility
        13 декабря 2017, 17:48
        Therollingstones, вдруг полезным окажется: я по этой книжке
        www.labirint.ru/books/76003/
        учил С/С++ когда у меня даже компьютера не было. Там на простых коротких примерах есть все что касается объектов (наследование, полиморфизм, виртуальные функции). Только книжка у меня более старого издания была. Ну и Borland C++ я никогда в жизни себе не ставил, это я к тому, что хоть про борланд написано на самой обложке, по сути это вообще ничего не меняет.
          • tranquility
            13 декабря 2017, 19:02
            Therollingstones, а ты для себя уже открыл STL? Если нет, без этого никак, если надо писать большой проект. Вообще, интересно, а в каком месте тебе понадобился С++ в роботостроении? Если просто данные обрабатывать исторические — тут питона вполне себе хватает. Если робота писать, то как-то все сразу на си шарп подсаживаются, луа та же для простых стратегий подойдет (а может и не для простых и это просто я ее готовить не умею)… Почему С++?
              • tranquility
                13 декабря 2017, 19:38
                Therollingstones, я не знаю как сейчас, но еще лет 12 назад, когда я занимался системным программированием в Винде, там все писалось на простом С (без плюсов). Первые простые (внутри они не такие уж и простые) объекты, которые встречаешь — это cin и cout, и в ряде случаев погружение в С++ на этом может и ограничиться. Следующий этап — это уже написание собственных классов и использование контейнеров STL.

                P.S. Все равно не понимаю, на что впустую был потрачен год, как связано системное программирование в Windows и торговля на бирже, и что значит «собрался написать финансовый индекс»?
                  • tranquility
                    13 декабря 2017, 20:26
                    Therollingstones, 
                    На простецком уровне уже сейчас тобой stl может использоваться так:
                    вместо
                    int arrSize = 5;
                    double* pArr = new double[ arrSize ];

                    for( int i = 0; i < arrSize; i++ )
                        cin >> pArr[i];

                    //do something

                    delete pArr

                    ты можешь делать так:

                    #include <vector>

                    std::vector<double> dVec(5);
                    // or std::vector<double> dVec; dVec.resize(5)
                    for( int i = 0; i < dVec.size(); i++ )
                        cin >> dVec[i];

                    //do something

                    а удалять специально объект dVec не нужно, это сделает деструктор, встроенный в него.

                    А что если ты не знаешь заранее длину своего вектора? Пожалуйста:

                    std::vector<double> dVec;

                    while( true )
                    {
                        double t;
                        if( !( std::cin >> t ) )
                            break;
                        dVec.push_back( t );
                    }

                    длина вектора будет увеличиваться до тех пор, с консоли будет введено не число…
  • tranquility
    13 декабря 2017, 17:57
    а еще, для лучшего понимания компилируемых языков программирования полезно хоть немножечко попрограммировать на ассемблере, тогда, например, станет легко понять откуда берутся соглашения о вызовах и что в этом плане те же printf и scanf не так просты, как это может показаться с первого взгляда.
  • tranquility
    13 декабря 2017, 20:46
    STL == Standard Templates Library)
    у нее три составляющие: контейнеры (vector), итераторы (указатели на элементы контейнеров по сути) и алгоритмы. push_back — этот метод (один из, как и .size() ) контейнера (с точки зрения С++ — шаблона класса) vector. Алгоритмы — это отдельная тема. Например, можно легко отсортировать вектор, просто написав:

    #include <algorithm>
    std::sort( dVec.begin(), dVec.end() );

    тут уже придется книжку почитать, чтобы уяснить что возвращают методы begin и end (что такое итераторы)…

    Не знаю как насчет Страуструпа, но вот у Саттера очень полезные книжки по STL, там изнутри объясняется как устроена STL, чтобы можно было самому ее заново воспроизвести!
    Ну а тут чисто посмотреть что за тема вообще:
    www.solarix.ru/for_developers/cpp/stl/stl.shtml

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн