• Будет ли рассчитано значение выражения strlen("str") на этапе компиляции или при выполнении?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Вообще нет. Но, если компилятор сочтет что ваша строка не меняется (а это так и есть), он может оптимизировать этот код, заменив его константой. К стати, он еще и len тогда может выкинуть, заменив его константой в выражениях ниже.

    Сказать что он наверняка заменит можно только точно зная какой компилятор используется и опции компиляции.

    gcc с -O3 100% выкинет эту строку и заменит константой выражения для a и b, а вот с -O0 скорее всего трогать не станет.

    Чтобы наверняка быть уверенным, что компилятор ничего не оптимизирует можно применить volatile, но в большинстве случаев для этого нет причин.
    Ответ написан
    4 комментария
  • Как на Ассемблере сделать сложные условия?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    cmp ax, 1
    je :action1
    cmp ax, 2
    je :action2
    
    ;тут ребут
    
    :action1:
    тут вызов справки
    jmp :done
    
    :action2:
    тут вызов редактора
    jmp :done
    
    :done
    тут конец
    Ответ написан
    4 комментария
  • Как сделать экпортируемую dll функцию без хедера членом класса?

    Nipheris
    @Nipheris Куратор тега C++
    Совершенно верно Петр говорит, this в мешке не утаишь).

    Кроме того, если либа грузится через LoadLibrary, т.е. связывания на этапе компиляции нет, то и вызывать ее надо через указатель, а тогда без обертки соответствие между какой-либо функцией, объявленной в классе (пусть даже это будет статическая функция) и этим указателем не проставить в принципе, т.к. где-то должна произойти косвенная адресация и передача управления в DLL.
    Ответ написан
    Комментировать
  • Как правильно маскировать/демаскировать фреймы (WebSocket)?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    У вас две проблемы, одна большая, вторая маленькая.
    Большая - вы пишите в кондово-мерзком стиле, под названием "Пешу на C++ как на Си, мне пофигу". Бросайте это.

    Маленькая - прозреваю, что int у вас 32 битный, а вы его на 50 с гэком рязрядов сдвигаете. Это на грани UB, честно говоря.

    Бросайте этот поганый стиль писания без циклов (так китайцы прошивки для фейко-айфонов лепят, им построчно оплачивают), учите наконец STL и пишите красиво.
    Ответ написан
    Комментировать
  • Какова практическая ценность магистратуры в IT?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Профильное ВО в IT полезно в 2х случаях:
    1) Вы занимаетесь enterprise разработкой: крупные интеграторы, банки, нефтянка, итд. Они любят всяко-разные сертификаты.
    2) Вы задались целью эммигрировать (usa, европа, etc)

    Во всех остальных случаях всем глубоко плевать какое у Вас образование и есть ли оно вообще.
    Важны навыки и портфолио как их заочное подтверждение.
    Ответ написан
    8 комментариев
  • Где можно наблюдать стримы по программированию?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    У себя дома:
    Системное под венду:
    - открываете 8 вкладок с MSDN, 4 со stackoverflow и иногда их скроллите.
    Системное под Linux:
    - открываете 8 вкладок со stackoverflow и консольку с man + исходники ядра
    Математическое:
    - открываете что угодно, все равно ничего не увидите - все самое интересное делается на бумажке, которая у стримящего лежит рядом с клавиатурой
    Высокопроизводительные вычисления, HPC, Нadoop:
    -купите 128 мониторов для начала
    Прикладное:
    - ну, вы знаете толк в извращениях, если хотите смотреть, как одинэсник пишет очередной унылый запрос на три листа, чтобы удовлетворить бухгалтершу.
    Ответ написан
    Комментировать
  • Актуально ли второе высшее образование для программиста в области медицины?

    @NortaBirdo
    Для начала о себе: по образованию я врач-психиатр, по должности я ведущий бизнес-аналитик в фирме, которая пишет медицинский софт.

    Ответ коротко: нет, не нужно.

    Подробно:
    1. Высшее образование в медицине (я имею ввиду лечебный факультет, стоматологию (5 лет) и фармацевтику (5 лет) не рассматриваю) это 6 лет. После этого вы обязаны 3 года отработать врачом общей практики. После этого у вас специализация от 2 до 5 лет в зависимости от специальности. Чтобы пройти специализацию бесплатно, вам надо быть краснодипломником или к ним приближенным (что ой как не просто) чтобы пройти конкурс на федеральную льготу. Если по федералке не прошли, то остаются два способа: заплатить (простейшие специальности типа терапевта участкового стоят порядка 100 тыс./год), либо продаться больнице на 3 года (больница оплачивает вам обучение, а вы потом эти деньги отрабатываете). Если вы не проходите специализацию (это возможно) то значит практического опыта у вас по нулям. Ценность ваших знаний для разработки ПО -10 по шкале от 0 до 10 (я не опечатался, величина отрицательная при положительной шкале). чтобы понимать реальные потребности бизнеса вам нужен опыт, чтобы его получить вам надо: 1) пахать студентом в ночные смены мед.сестрой 2) пройти практику специализации.
      Кстати летние практики вам тоже надо проходить, и ночные дежурства в них тоже входят.
    2. На лечебном факультете заочки нет.
    3. Пропускать занятия - нельзя. Пропускать лекции - нельзя. Присутствие на лекциях проверяют, часто не ленятся пофамильно проверить весь курс (~300 человек). Пропускать сдачи историй болезни крайне не рекомендуется (хрен найдешь потом препода, а если найдешь - еще и хрен сдашь). Двойки получать - нельзя. Они штрафуются и/или отрабатываются (очно). Деканат обычно на стороне кафедры. Т.е. то что ты получил пару, потом не осилил 3 из 3 отработок в этом семестре и теперь тебя кафедра не допускает до сессии (кстати экзамена у этой кафедры в эту сессию может и не быть, но она все равно должна поставить допуск) - твои проблемы и только твои. Не выход на сессию - отчисление.
    4. Обучение медицине одно из сложнейших. Вам придется заучивать огромные объемы информации. Там нет логики. Например, чтобы сдать простейший (!) экзамен по нормальной (бог с ней, с патологической) анатомии вам придется заучить три тома анатомического атласа формата а4 по 600 страниц в каждом мелким шрифтом на латыни+русском + уметь все это показать на трупе (да-да, на три года ваш второй дом - анатомичка, есть, одной рукой ковыряя в трупе - это норма) Когда заучите, это первые года три - придется учится принимать решения исходя из всей этой информации
      Добавьте к этому: мудаков профессоров коих +50% в каждом вузе, разброс знаний: вам нужно будет ориентироваться в мед.биофизике, органической и неорганической химии, биохимии, биологии, ну профильных дисциплинах (первые три года - норма и патология тела+общая фармакология, вторые три года - клинические кафедры, когда собственно начинаем учить болячки (и да, тут снова придется кучу всего заучивать, но уже проще). Завершается это клинической фармакологией, которую заучить не возможно. Ты либо помнишь и понимаешь все свои 6 лет, либо очень плохо быть тобой)
    5. Для того чтобы писать медицинский софт в команду нужны бизнес-аналитики + грамотный архитектор + нормальный представитель на стороне клиента. Как и везде. Именно эти люди формируют техническое задание, осуществляют проектирование. К тебе в итоге уже придет конкретное задание вида "сделай класс А"
    6. Что бы быть хорошим бизнес-аналитиком, тебе на старте нужна не столько предметка, сколько методологии бизнес-анализа. Ты должен понимать как вытащить из пользователя что ему надо и зачем
    7. 95% рынка - это базовые учетные контуры (регистрация пациентов и их историй болезней/мед.карточек). Мед. тут не поможет вообще ни как от слова совсем. А вот хороший лид + внятный клиент + светлая голова и скрупулезность = profit. Оставшиеся 5% это исследовательские задачи, но тут без domain subject expert все равно не обойтись, даже если ты медик.


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

    На сколько востребованы в целом специалисты по медицинской информатике? Очень востребованы. Рынок только развивается, поле - не паханное.

    P.S. Если хочется по работать в сфере мед.информатики - напишите, можем пообщаться.
    Ответ написан
    8 комментариев
  • Си. Как сделать функцию, умножающую число?

    @abcd0x00
    Тебе, конечно, предложили с указателем, но надо сделать без указателя.
    int func(int x)
    {
        return x / 10;
    }
    
    ...
    
        a = func(a);
    Ответ написан
    1 комментарий
  • Какой язык программирования выбрать для создания десктопных приложений?

    Olej
    @Olej
    инженер, программист, преподаватель
    C, C++, Python, Go - на выбор.
    Всё остальное - шелупень ;-)
    Ответ написан
    4 комментария
  • Почему в программировании используются моноширинные шрифты?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    Когда-нибудь ты тоже будешь громко материться, когда " окажется двумя апострофами, а не кавычкой))
    Ответ написан
    Комментировать
  • Задача про стену и кирпичи. Как решить?

    bobrovskyserg
    @bobrovskyserg
    Копай в динамическое программирование.
    UPDATE
    > А потом, увы, перебор, если я правильно понял условие задачи
    хе-хе, не хочет копать Andy_U
    # строим всевозможные комбинации кирпичей длинной 25
    nxt, rows = [(3,), (4,)], []
    while nxt:
        cur, nxt = nxt, []
        for row in cur:
            for brick in 3, 4:
                le = row[-1] + brick
                if le < 23:
                    nxt.append(row + (le,))
                elif le == 25:
                    rows.append(frozenset(row))
    
    # все комбинации длинны 25 лежат в листе rows, т.е. занумерованы
    # строим лист, где по номеру каждой комбинации
    # лежит список номеров неконфликтующих комбинаций
    friendly_row = [[i for i, b in enumerate(rows) if not (a & b)] for a in rows]
    
    nxt = [1] * len(rows)  # в первом слое может лежать любая комбинация
    for _ in range(10 - 1):  # есть же один слой
        cur, nxt = nxt, [0] * len(rows)
        for i, n in enumerate(cur):
            for j in friendly_row[i]:
                nxt[j] += n
    print(sum(nxt))


    UPUPDATE: разгоним рекурсивное решение
    cache = {}
    
    def build_tail(height, row):
        if height == 9:
            return neighbours_number[row]
        if (height, row) in cache:
            return cache[height, row]
        cache[height, row] = res = sum(build_tail(height + 1, i) for i in acceptable_neighbours[row])
        return res
    
    rows = {i for i in itertools.permutations([3, 3, 3, 4, 4, 4, 4], 7)} | \
           {i for i in itertools.permutations([3, 3, 3, 3, 3, 3, 3, 4], 8)}
    
    acc_rows = [set(itertools.accumulate(row[: -1])) for row in rows]
    acceptable_neighbours = [[i for i, b in enumerate(acc_rows) if not (a & b)] for a in acc_rows]
    neighbours_number = [len(i) for i in acceptable_neighbours]
    
    print(sum(build_tail(1, i) for i in range(0, len(acc_rows))))
    Ответ написан
    3 комментария
  • Книга по архитектуре ПО и принципам ООП?

    @evil0o
    Не знаю на сколько в тему.
    Для ленивых "Шаблоны разработки (Design patterns) Сергей Немчинский".
    vk.com/video-79831840_170741376
    Ответ написан
    Комментировать