• Как заинтересовать человека(студента) в IT?

    Никак не заинтересовать если у него самого явного интереса к этому нет.

    Пытался нескольких людей заинтересовать из своего окружения, не навязывая, но они посмотрели, поохали, поахали и на этом всё.

    Меня например насильно никто не тянул в мир кода, сам пришёл, своим путём.
    Ответ написан
    Комментировать
  • Как заинтересовать человека(студента) в IT?

    edli007
    @edli007
    full stack, team lead
    Сам не захочет, не начнет. Программирование это ад для обычного человека.
    Ответ написан
    Комментировать
  • Как заинтересовать человека(студента) в IT?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Комментировать
  • Как заинтересовать человека(студента) в IT?

    sim3x
    @sim3x
    Не надо нам тут лишних людей
    Ответ написан
    Комментировать
  • Паскаль. Переменные и массивы внутри классов?

    @Mercury13
    Программист на «си с крестами» и не только
    Что творится? Не компилируется?
    А не компилируется из-за непонимания концепции эквивалентности типов. В отличие от Си, внешне одинаковые типы не эквивалентны! Для эквивалентности надо, чтобы их цепочки type A = B; вели к одному «предку». Для этого существует оператор type.
    const
      FieldSize = 10;
      MaxShips = 10;
    type
      TField = record
        cells : array [1..FieldSize, 1..FieldSize] of integer;
        nLive : array [1..MaxShips] of integer;
      end;
      TGame = class
        Field : TField;
        constructor Create(const Field : TField);  
      end;

    Возможно, эквивалентность ослабили в Delphi, не проверял. А в BP именно так.

    Возможно, вы также сделали известную ошибку начинающего дельфиста:
    var
      x : Test;
    ....
    x.Create(a, b);     // неверно!
    x := Test.Create(a, b); // верно!


    Есть одно исключение из этой эквивалентности типов.
    type
      DaInt = array of integer;
    
    procedure DoSomething1(var x : array of integer);
    procedure DoSomething2(var x : DaInt);

    Эти команды обе действуют, но не эквивалентны!

    Первое — нововведение TP7, параметр типа «открытый массив», массив любой размерности. Статический, динамический, строчка 2D-массива — всё подойдёт. Действуют Low, High и (для D4+) Length.

    Второе — нововведение D4, динамический массив, которому можно изменять длину через SetLength.
    Ответ написан
    1 комментарий
  • Разработка под Windows - MSVC или TDM GCC (MinGW)?

    Попробуйте VS 15 Preview -- не путать с 2015. Насколько я знаю, C++14 там поддерживается достаточно полно. Естественно, чтобы код компилировался и под msvc, и под gcc, часто приходится прикладывать немало усилий. В этом отношении ничего не собирается меняться.
    Ответ написан
    Комментировать
  • Разработка под Windows - MSVC или TDM GCC (MinGW)?

    @Mercury13
    Программист на «си с крестами» и не только
    3) Использование инициализации списком для структур (POD) с уже прединициализированными полями:

    Это C++11. Хорошее дело. MinGW поддерживал, пока стандарт ещё вырабатывался. MSVC начал было, да бросил и довёл до конца аж в 2015!!

    1) Разное содержимое одних и тех же хедеров

    Не выбивается из стандарта.

    2) MSVC спокойно компилирует нечто вроде

    MSVC ошибается, таким образом неконстантную ссылку передавать запрещено.

    но при этом не компилирует код, если не-void функция не возвращает значение

    Хорошая диагностика, но это лишь warning, а не error. Компилятору трудно знать, возможен ли тот или иной путь исполнения кода.
    Ответ написан
    Комментировать
  • Разработка под Windows - MSVC или TDM GCC (MinGW)?

    GavriKos
    @GavriKos
    Подключите к студии MinGW с его хейдерами и будет все как и было.
    Ответ написан
    Комментировать
  • Как обойтись без библиотеки импорта?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Библиотека импорта для dll - это вспомогательный артефакт связывания основного образа программы с динамическим модулем.
    В общем - никак, раз уж явную загрузку тебе не предлагать. :)

    Иное дело - это твои хитромудреные манипуляции для установления зависимости между основным и динамическими модулями. Зачем тебе потребовалось явно указывать линковку с lib файлом?
    У каждого проекта студии есть список зависимостей (References). Если в проекте главного модуля программы установить зависимость от проекта динамической библиотеки, то msbuild все свяжет за тебя.

    А еще есть нестандартная но широко поддерживаемая #pragma comment(lib,"xxx.lib").
    Ответ написан
    Комментировать
  • Как добавить динамическую библиотеку в проект напрямую?

    @Mercury13
    Программист на «си с крестами» и не только
    Задача lib — указать если не код функций, то хотя бы каким образом их прилинковывать из DLL. В частности, как «искозявлено» имя функции при переводе с Си на Си++. Этот самый lib — издержка разделения функций между компилятором и линкером.
    Не знаю, как MSVS/cl, но MinGW/ld с определённого момента начал прилинковывать DLL просто по наличию этого DLL, без построения *.a (а Embarcadero/ilink32, насколько мне известно, умел это изначально). С одной стороны, это серьёзно упрощает жизнь. С другой — для некоторых хитрых способов преобразования имён (или даже без имён, как в небезызвестном storm.dll) он не выцепит, что с чем слинковывать, *.a всё равно потребуется.
    stackoverflow.com/questions/31708832/how-to-refere...
    www.codeproject.com/Questions/613668/Is-it-possibl...
    Простейший, действующий на любом компиляторе способ — это сделать DLL-заглушку со всеми нужными нам функциями в нужных нам соглашениях вызова и с нужным образом закозявленными именами. Код может быть любым, хоть пустым. Компилируем, подставляем этот lib и правильный DLL.
    Второй способ — получить список имён функций, собрать их в *.def с правильными соответствиями «имя в коде — имя в DLL» и сделать из этого *.lib. Какими программами это делается в MSVS — описано по одной из ссылок.
    Ответ написан
    2 комментария
  • Не могу разобраться в книге Герберт Шилдт C++. Ошибка в книге или в VS?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Это не ошибка. Программа запустилась, что-то напечатала и вернула 0. VS себя ведёт правильно и программа тоже. Никто в книгах по плюсам общей направленности не будет ориентироваться на конкретную IDE, OS или же компилятор. По крайней мере так должно быть.
    Попробуйте запустить свою программу из консоли, и тогда чёрное окошечко не закроется, или же настроить IDE, чтобы не закрывала консоль. Думаю, что это нагуглится на раз-два.
    Ответ написан
    Комментировать
  • Большое количество typedef влияет ли отрицательно на что-либо значимое?

    Проблема вообще то есть. Если ты пишешь что то только для себя в 1000 строк, то все ок, но если есть вероятность того, что твой код потом будут править другие люди, то 100 раз подумай перед тем, как юзать typedef. Человеку, который потом будет сопровождать такое, будет очень больно в разных частях тела. Вот он видит в коде "event_handler" … и что это и куда это, начнет тратить время на изучение того, что должно само вытекать из кода.
    Ответ написан
    Комментировать
  • Мало весящий IDE для С++?

    Adamos
    @Adamos
    Полноценный (с анализом кода и прочими плюшками) и при этом легкий - вещи сугубо взаимоисключающие.
    VisualStudio с С++ ведет себя так, как будто рекламирует С# (ирония, но недалекая от истины). Анализ кода там тормозит безбожно, на слабом железе его просто не дождешься. Хотя, может быть, хэлловорды он и быстро будет прожевывать...

    Eclipse, NetBeans, Clion - это все-таки Java со всеми из нее вытекающими - медленно и печально. Для слабого железа опять-таки противопоказано.

    QtCreator - имеет довольно много плюсов, но объем действительно может зашкаливать, так как он тащит за собой весь Qt в обязательном порядке.

    Есть легкие Code::Blocks и CodeLite - в принципе, настолько легкие, что их просто стоит попробовать, а если будет некомфортно - тогда уже подниматься по этому списку вверх ;)

    Альтернатива в порядке бреда: поставить какую-нибудь древнюю VS, которая еще нормально жевала С++ на слабых машинках (то есть до 2008 версии). Если она запустится на "десятке", то для изучения "крестов" может вполне сгодиться. С++0х и С++11, правда, придется исключить из учебной программы.
    Ответ написан
    2 комментария
  • Какие книги посоветуете по python 3?

    zooks
    @zooks
    Frontend
    Лутц
    Ответ написан
    Комментировать
  • Как записать слово в переменную?

    Slavka_online
    @Slavka_online
    Интересная личность
    // extract to string
    #include <iostream>
    #include <string>
    
    int main ()
    {
      std::string name;
    
      std::cout << "Please, enter your full name: ";
      std::getline (std::cin,name);
      std::cout << "Hello, " << name << "!\n";
    
      return 0;
    }

    www.cplusplus.com/reference/string/string/getline
    Ответ написан
    1 комментарий
  • Как безболезненно сменить область деятельности?

    opium
    @opium
    Просто люблю качественно работать
    безболезненно никак
    координальная смена деятельности безболезненно может пройти в лет двадцать, а если вам за 30 это всегда сильный напряг
    вот у меня есть хороший друг сергей, он в 35 лет прочитал мой блог и решил уехать из москвы и сменить работу, до этого работал как и вы 1С программистом, за два года выучил js + node , стал работать на апворке и переехал жить в тайланде с женой и ребенком из москвы.
    Ответ написан
    2 комментария
  • Сравнение двух фотографий?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Можно сделать с помощью нейронной сети
    Это делается так, берем обученную, например, на имэджнэте глубокую сверточную сеть, отбрасываем у нее последние 2-3 слоя, так как они являются классификаторами и нам не нужны
    То, что сталось - это слои, которые выделяют признаки
    И потом прогоняем одну картинку через НС, вторую, если активированные на выходе нейроны практически одинаковы, значит и картинки похожи
    Ответ написан
    2 комментария
  • Как быстро выучить C++ для олимпиадного программирования, если есть опыт профессиональной разработки на PHP и JavaScript?

    RubaXa
    @RubaXa
    Всё просто, следуйте это инструкции
    252633.jpg
    Ответ написан
    Комментировать
  • Странный дизайн Rust?

    @DarkEld3r
    Соглашусь с предыдущем комментарием, только добавлю ещё один нюанс: ссылки в расте, точно так же, как в С++, не могут содержать нулевой указатель. Опять же, арифметика указателей с ними не работает. Как по мне, это делает их ближе к плюсовым ссылкам, несмотря на возможность брать адрес ссылки и "переназначения значения".
    Ответ написан
    Комментировать
  • Как создать обобщение для списка лямда выражений?

    impwx
    @impwx
    Разработчик
    Во-первых, вы можете унаследоваться от Dictionary и не переизобретать методы:

    class AbstractExpressionList<T>: Dictionary<string, Func<T, T>> { }

    Во-вторых, ваш метод Execute уже написан авторами LINQ и называется Enumerable.Aggregate. Внутри он устроен примерно так:

    public T Aggregate(IEnumerable<T> values, T accumulator, Func<T, T> projection)
    {
        var current = accumulator;
        foreach(var value in values)
            current = projection(current, value);
        return current;
    }

    Вам понадобится начальное значение, от которого цикл будет двигаться. Можете использовать первый элемент в списке, или default(T), или передавать пользовательское значение.

    Поскольку ваш класс будет унаследован от Dictionary, который в свою очередь реализует IEnumerable, то вы можете использовать Aggregate напрямую, не реализовывая самостоятельно:

    var data = new AbstractExpressionList<T>
    {
        ["a"] = ...,
        ["b"] = ...
    };
    var result = data.Aggregate(...);
    Ответ написан
    1 комментарий