• Как можно определить, какой язык в данный момент включен?

    aur
    @aur
    Если вы про текущую раскладку клавиатуры, то
    InputLanguage.CurrentInputLanguage.LayoutName
    Ответ написан
    Комментировать
  • Странное поведение массивов в Си

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Массив как переменная в C — это псевдоним адреса в памяти, по которому лежит его первый элемент.
    Массива ни в машинном коде, ни в памяти, строго говоря, не существует. Существует только его «содержимое» — его элементы.
    При обращении к элементу массива действия производятся машиной прямо над его содержимым по вычисленному адресу.
    Самого массива — не существует.
    Всякий раз, когда в С Вы работаете с массивом — компилятор использует или указатель на первый элемент массива (например, когда Вы передаете массив в функцию), или адрес первого элемента массива, а машина далее с этим работает.

    Указатель в C — это переменная, содержащая адрес в памяти.
    Указатель в машинном коде и памяти — существует. Он имеет значение — число размером с разрядность машины, а значение числа — это адрес в памяти.
    Указатель как число — может быть передан в регистрах, лежать на стеке, и т.д.
    При обращении к байту/слову/двойному слову/… по смещению через указатель, в машинном коде указатель разыменовывается (в явном виде берется его значение=адрес) т.е. в машинном коде происходят несколько другие действия, чем в случае для массива.

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

    Вот, кстати, приличное описание различий на английском:
    eli.thegreenplace.net/2009/10/21/are-pointers-and-arrays-equivalent-in-c/
    Ответ написан
    Комментировать
  • C++14 имеет достаточно фич, что бы забыть о PHP?

    bak
    @bak
    На плюсах есть всё чтоб пилить сайты. Берёте батарейки (boost), веб-сервер (мой выбор — mongoose с самопальной обёрткой), шаблонизатор (например, cpptemplate), базу данных (в простых случаях — хранить всё в памяти и дампить на диск. В средних — заюзать любую из кучи бд, как внешних, так и легко встраиваемых прям внутрь проги. В сложных — держать часть данных в памяти, часть на диске, подгружать когда надо, и не забыть ещё журналирование). Затем берёте бутстрап & jquery (или любые другие фреймворки по вкусу) и запиливате обмен json-ами. Можно ещё websocket-ы прикрутить.
    По скорости разработки — когда приноровитесь — будете не слишком сильно сливать интерпретирщикам. Для удобной разработки нужно иметь настроенную систему сборки с библиотеками, ide, умеющую работать с данными на удаленной машинке (например, QtCreator) ну и саму машинку, которая будет не сильно долго всё это пересобирать.
    Сливать будете всё равно, потому что:
    — компиляция (быстрей 5-10 секунд для проекта с набором библиотек наврятли разгонитесь. хотя..)
    — библиотеки (есть инфа что воткнуть в систему сборки либу и написать для неё обёртку несколько медленней, чем заюзать готовую для популярных в вебе языков)
    — велосипеды (не знаю на плюсах нормально реализованных веб компонент, т. е. cms, веб фреймворки, etc). В итоге у вас будет свой собственный фреймворк с блекджеком и шлюхами утечками памяти и багами, на фикс которых вам придётся тратить время, превышающее время разработки продукта
    — скорость мозга. Есть инфа, что если мозг часть времени думает о том, какой объект кем владет и кто кого когда убивает, ещё часть, как бы завернуть первую часть в удобо-юзабельные абстракции и какой-бы паттерн тут применить, ещё часть о том, что за странное сообщение об ошибки в какой-то сторонней библиотеки, вступившей в странную связь со свеженаписанным говнокодом, не забывая про статическую типизацию а так же извращённый интерфейс разработчиков типовых решений (да тот-же split) — его производительность несколько ниже чем у мозга, думающего по большей части о продуктовой логике.
    — ошибки компиляции, линковки, segfault-ы, ошибки многопоточности, утечки памяти — вообщем полный набор удовольствий для истинных ценителей :)
    Ответ написан
    5 комментариев
  • C++14 имеет достаточно фич, что бы забыть о PHP?

    @gro
    Нет, сначало нужно написать какую-то херню, намекнуть, что php-г.но и php'шники талпайопы, а потом рассказывать, что «я не хотел никого оскорбить», «я здесь вообще не о php»…
    Ответ написан
    4 комментария