Задать вопрос
  • Python 2 vs Python 3 ?

    @bromzh
    Drugs-driven development
    Третий, естественно. Т.к. он развивается и будет развиваться, в отличие от 2-го. Например, недавно появилась библиотека async и специальная форма yield from. Да и все нормальные библиотеки поддерживают третью ветку.
    А ещё в нём нормальная поддержка юникода.
    Ответ написан
    2 комментария
  • Являются ли все языки программирования следствием архитектуры процессора?

    Пара встречных вопросов:
    1. что считать принципиально другой архитектурой? кроме упомянутых вами Intel/AMD, есть еще такие штуки как arm/mips, arc, itanium - все они в той или иной степени отличаются друг от друга.

    2. следствием какой архитектуры, по вашему мнению, являются языки вроде haskell или prolog? А, например, всякие DSL - тоже ведь языки программирования, просто узко специализированные.

    Я не думаю, что языки программирования вообще не имею связь с процессором (как минимум компилятор/интерпретатор должен исполняться на процессоре), но, мне кажется, что ответить на ваш вопрос просто нельзя, пока нет четкого осознания, что такое "другая архитектура". С другой стороны языки являются отражением той или иной модели вычислений, если предложить новую модель, то для описания вычислений в такой модели понадобится новый язык, но будет ли он принципиально другим, и понадобится для него принципиально другой процессор не понятно (как пример, императивные языки vs декларативные, и те и те исполняются на одних процессорах).
    Ответ написан
    Комментировать
  • Являются ли все языки программирования следствием архитектуры процессора?

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Да, конечно. Для нового типа процессора придумали новый язык программирования Corelet.
    https://dl.dropboxusercontent.com/u/91714474/Paper...
    Ответ написан
    Комментировать
  • Являются ли все языки программирования следствием архитектуры процессора?

    VyusFire
    @VyusFire
    Студент, padavan, linux-mint-user.
    Изменение архитектуры процессора приведет к изменению только языков так сказать ассемблерного типа. Так как языки создавались с целью облегчения написания программ, в них старались заложить абстрактные концепции, которые позволили бы программистам работать с "виртуальной машиной" (абстрактной машиной в которой нет ограничений на память, время процессора и т.д. -- данное определение я воспроизвел по памяти и оно может быть ошибочным :-) ). Проще говоря есть так называемые ЯВУ -- Языки Высокого Уровня. Они как бы аппаратно независимы и позволяют писать кросплатформенный код (например Си). Т.к. за трансляцию кода ЯВУ в машинный код отвечают виртуальные машины, интерпретаторы и компиляторы именно они бы претерпели серьезные изменения в случае смены архитектуры.
    P.S. Сами языки в случае смены архитектуры изменятся лишь самую малость (в основном библиотеки для работы с вводом/выводом и тому подобные).
    Ответ написан
    Комментировать
  • Какая проверка работает быстрее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Какая проверка работает быстрее?

    Которая вызывает переход, предсказанный предсказателем переходов (поскольку ветвь по которой пойдет код уйдет в конвеер)

    Если в контексте PHP/Python/Ruby то разницы нету вообще, потому что поток команд формируется по мере выполнения и в итоге не особо получится что-то такое разруливать и тут вообще пофигу какое из перечисленных условий вы будете выполнять. А если говорить о java/javascript/c#/c++/etc то тут большее значение имеет то, как часто будет срабатывать одна или другая ветвь кода. Скажем если условие всегда выполняется или не выполняется, то современный процессор будет после первых двух итераций всегда угадывать какая ветвь кода будет грузиться и оверхэда вообще не будет. Не знаю как на AMD но на интеловских так же неплохо работает предсказание того, что ветви будут выполняться по переменно, один раз одна, другой раз другая.

    Так что совсем не важно что будет выполняться в условии. Важно что бы это было предсказуемо, поддавалось каким-то шаблонам. И тогда это будет максимально производительно. А сама операция сравнения это одна операция. и не важно какая это будет операция. Намного важнее что бы весь поток команд который идет на выполнение был в кеше процессора.

    И да, если это вообще разовое условие то можно просто забить. Это важно только в циклах.
    Ответ написан
    Комментировать
  • Какая проверка работает быстрее?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    никакой разницы, т.к. операция математического сравнения - это одна команда процессора.
    Ответ написан
    Комментировать
  • Какая проверка работает быстрее?

    @MilkyWay
    даже на самый слабых компьютерах нет никакой разницы в скорости выполнения данных проверок
    Ответ написан
    Комментировать
  • В чем суть selection алгоритмов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Задача на поиск k-ого элемента по величине это.

    Представьте себе отсортированный по возрастанию список чисел от 1 до n. Вам нужно найти минимум - это первый элемент, то есть k = 0. Вам нужно найти максимальный элемент - k = n-1. Медиану найти нужно - k = n/2 (целочисленное деление, дробная часть просто выкидывается). Вроде как все довольно просто...

    А теперь представим что список не отсортирован, что там есть повторяющиеся элементы и т.д. Вот... Можно отсортировать список за O(n log(n)) например, а потом сделать выборки по индексам. А можно за O(n) просто найти...
    Ответ написан
    2 комментария
  • Как можно сделать, чтобы заказчик не мог скачать твои исходники HTML, CSS и JavaScript и скрыться с ними?

    zooks
    @zooks
    Frontend
    Защищать код не нужно, нужно научиться думать на шаг вперед.

    Высылай скриншоты страницы из нескольких браузеров (Firefox, Chrome, IE11), пускай проверяют. Можно показать фрагмент кода, но не целиком, если заказчик новый. (иногда бывает наоборот, что исполнитель нагородил говнокода, просто порезал картинки и расставил позиционированием элементов).

    И дельный совет на будущее: если за заказчиком висит должок, даже маленький, не начинай новую работу до полного расчета.
    Ответ написан
    Комментировать
  • Cin как определить конец потока?

    если в потоке только пробельные символы cin >> n их просто проигнорирует, и если дойдет до конца потока, то cin >> n будет интерпретировано как false, собственно, выход и так случится. Мне кажется, что вы не всю проблему рассказали...
    Ответ написан
    7 комментариев
  • Как организовать динамический символьный массив в с++?

    barmaley_exe
    @barmaley_exe
    В общем случае нельзя предугадать, сколько элементов будет в массиве (можно оценить это значение сверху, но может быть крайне неэкономно), поэтому используется концепция расширяющихся массивов: имеется предвыделенный массив заданного размера, который заполняется по мере работы программы. Как только массив заполнен и места больше нет, а нужно вставить ешё один элемент, создается новый массив большей ёмкости, туда копируется содержимое старого, а элемент вставляется в новый массив. Старый после этого удаляется.

    Так реализован std::vector, например.
    Ответ написан
    Комментировать
  • Портабельный макрос для получения строки версии C++ компилятора и времени сборки приложения?

    EXL
    @EXL
    Энтузиаст
    Находим серьёзную кросс-платформенную программу с открытыми исходниками, я выбрал Qt Creator.

    Заходим в диалог "About" и видим как раз то, что нам нужно:

    wmUZzbo.png

    Находим построение этого диалога в исходном коде - [src/plugins/coreplugin/versiondialog.cpp | 77].

    Видим, что для получения даты и времени сборки использованы тривиальные предопредёленные макросы __DATE__ и __TIME__, которые гарантировано должны быть предопределены во всех компиляторах.

    А вот для нахождения версии компилятора используется специальная функция ICore::buildCompatibilityString(). Проследуем по цепочке вызовов: [src/plugins/coreplugin/icore.cpp | 472].

    В функции ICore::buildCompatibilityString() используется вызов статической функции compilerString() для получения информации о компиляторе и QSysInfo::WordSize для получения информации о битности порождаемого компилятором кода.

    Функция compilerString() [src/plugins/coreplugin/icore.cpp | 440-458] выглядит так:

    static QString compilerString()
    {
    #if defined(Q_CC_CLANG) // must be before GNU, because clang claims to be GNU too
        QString isAppleString;
    #if defined(__apple_build_version__) // Apple clang has other version numbers
        isAppleString = QLatin1String(" (Apple)");
    #endif
        return QLatin1String("Clang " ) + QString::number(__clang_major__) + QLatin1Char('.')
                + QString::number(__clang_minor__) + isAppleString;
    #elif defined(Q_CC_GNU)
        return QLatin1String("GCC " ) + QLatin1String(__VERSION__);
    #elif defined(Q_CC_MSVC)
        if (_MSC_VER >= 1800) // 1800: MSVC 2013 (yearly release cycle)
            return QLatin1String("MSVC ") + QString::number(2008 + ((_MSC_VER / 100) - 13));
        if (_MSC_VER >= 1500) // 1500: MSVC 2008, 1600: MSVC 2010, ... (2-year release cycle)
            return QLatin1String("MSVC ") + QString::number(2008 + 2 * ((_MSC_VER / 100) - 15));
    #endif
        return QLatin1String("<unknown compiler>");
    }

    Макросы Q_CC_CLANG, Q_CC_GNU и Q_CC_MSVC можно заменить на __clang__, __GNUC__ || __MINGW32__ и _MSC_VER соответственно. Вызовы QLatin1String() можно заменить обычным std::string, QString::number() - чем-нибудь типа sprintf, itoa, std::to_string (если используете c++11).

    А QSysInfo::WordSize это простой:

    enum Sizes {
            WordSize = (sizeof(void *)<<3)
    };

    Удачи!
    Ответ написан
    1 комментарий
  • Как реализовать преобразование типа string в тип int в Java? Нужно ли это делать в рамках задачи?

    1. docs.oracle.com/javase/7/docs/api/java/math/BigInt...
    2. Что-то входные данные не сходятся с ограничениями указанными в условиях, вы точно задачу правильно привели?
    3. Все вычисления стоит производить сразу по модулю m, так как числа Фибоначчи растут очень быстро, а скорость работы с длинной арифметикой, соответственно, падает.
    4. Даже если вы поборитесь с длинными числами, ваше решение при таких больших значениях n просто не уложится во временной лимит, я полагаю, что предполагается решение использующее произведение матриц и быстрое возведение в степень.
    Ответ написан
    2 комментария
  • Насколько реально отреверсить dll на cpp?

    alexclear
    @alexclear
    A cat
    Она будет очень далека от оригинала, даже если подобное и удастся. Во-первых, компилятор применяет оптимизации при создании машинного кода. Во-вторых, если DLL собрана без debug symbols, то оригинальные имена переменных в ней вообще не хранятся. В-третьих, если при разработке были использованы шаблоны (templates), то восстановить оригинал не удастся вообще, компилятор вычисляет темплейты на этапе компиляции, в рантайм эта информация попадает уже преобразованной.
    Ответ написан
    Комментировать
  • Как создать композицию функции на саму себя?

    Функция применяется n + 1 раз к n. Для этого надо список из n + 1 функций f свернуть при помощи композиции, а затем применить к аргументу. Добавим ещё fromIntegral, так как в примерах у вас синусы, которым нужно число с плавающей точкой, а n же у вас - целое (функцию можно применить только целое кол-во раз).

    execute f n = foldr1 (.) (replicate (succ n) f) (fromIntegral n)


    где replicate (succ n) f - список из n + 1 функций f, foldr1 (.) - свёртка списка композицией

    Есть и второй вариант, не сворачивать n + 1 функций f через композицию, а сворачивать список, на каждом шаге сразу применяя к аргументу, т.е. так:

    execute f n = foldr ($) (fromIntegral n) (replicate (succ n) f)


    где ($) - функция применения, т.е. f $ x = f x
    Ответ написан
    Комментировать
  • Как вывести числа в обратном порядке без использования массивов в с++?

    morozovdenis
    @morozovdenis
    нажмите в студии ctrl+F5, введите например "1 2 3 0" без кавычек и нажмите enter ;)
    #include <iostream>
    
    void foo()
    {
    	int number;
    	cin >> number;
    	if (number != 0)
    	{
                    //фишка в том что:
    		foo(); //сначала выполняется функция 
    		cout << number << " "; // а после уже выполняется вывод
    	}
    }
    
    int main(int argc, char *argv[])
    {
    	foo();
            return 0;
    }


    UPD:
    1. рекурсия использует стек вызовов и глубина рекурсии зависит от размера этого стека
    2. исходя из предыдущего пункта не стоит писать код который выше в продакшене, лучше использовать цикл и массив(или стек) который запрещают
    3. обновил сигнатуру main, это никак не должно повлиять на выполнение программы, но так корректнее

    вот результат:
    43c9f6240b4e4354b5e4e9e6c7114ff8.png
    Ответ написан
  • Какой движок выбрать для игры?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    haxe + openfl + haxepunk.com или haxeflixel.com
    для физики nape.
    Ответ написан
    Комментировать
  • Вредно ли Ubuntu для SSD?

    @AlexP11223
    Что за статьи-то?

    Для SSD вредно его использование, положите его в сейф.
    Ответ написан
    Комментировать
  • Как реализовать данный цикл правильно?

    @Lol4t0
    Лишняя точка с запятой:

    if(ostDay == ostYear || ostMonth == ostYear);
                                               ^^^^^


    И все-таки rem, remainder, а не ostatok :)

    И еще совсем не обязательно перебирать все года, когда можно сразу найти только те, которые нужны

    int minN = std::min(remDay, remMonth);
    int maxN = std::max(remDay, remMonth);
    for(year = 201; year <=211; year++)
    {
            cout << year << MinN << '\n' << year << maxN;
    }
    Ответ написан
    Комментировать
  • Нужна ли программисту ближайшего будущего квантовая физика?

    @DancingOnWater
    С точки зрения применимости - нет.

    С точки зрения разрыва шаблона в ощущении окружающего мира - да. Вам придется узнать и смирится со столькими откровениями, типа:
    Один электрон пролезает в две дырки.
    Пока фотон летит, он не существует.
    У абсолютного вакуума есть энергия.
    Фотон меняет направление своего движения мгновенно.
    Ну и т.д.
    Ответ написан