Ответы пользователя по тегу Программирование
  • Как можно преобразовать число из 3 байт в число из 2 байт?

    Godless
    @Godless
    В общем и целом, ответ на Ваш вопрос - нет, нельзя. как ни крути, из 3х байт 2 байта не сделать без потерь.
    Иначе кто-нить уже давно бы сделал архиватор до 2х байт всего чего угодно...

    Но в порядке альтернативного секса в голову, давайте покумекаем.

    1. Если вы запишите в строку все биты 3х байтового числа, то получите последовательность нулей и единиц. Можно попробовать сжать эту строку например zlib.compress в памяти, отрезать стандартный двухбайтовый заголовок и посмотреть на то что получилось. Если влезет в 2 байта - то да. Обратное преобразование такое - добавляем заголовок zlib, делаем zlib.decompress и переводим в байты.
      Тыдыщщщ, а если сжатая строка не влазит - то ничего не получится.
      Не взлетит. ;-)
    2. Еще вариант, когда есть какие-то известные ограничения на серийные номера. Например, вы знаете, что они все в диапазоне 1000 - 66000. Тогда да =) влезет в 2 байта. Даже если диапазонов несколько, главное чтобы количество значений было не больше 2^16.

    В остальных случаях - i'm sorry, be happy.

    ЗЫ: тему сжатия можно раскрутить, придумав многопроходные схемы, типо сначала начальный бит, потом бит разницы со следующим, а потом к этой строке сжатие, сразу сжатие бит по Хаффману с какой-нить популярной таблицей (готовой ибо передавать таблицу вам негде); попробовать арифметическое кодирование к битам с длиной.
    Но все это дурь космическая - найдите место для байта. ;-)

    Это кажется про Вас =) : Повесть об одном байте
    Другой линк
    Ответ написан
    1 комментарий
  • Почему этот код возвращает такой странный ответ?

    Godless
    @Godless
    я подозреваю нужно вернуть не key, а min. И вообще зачем key? Или нужен индекс минимального? Тогда инициализацию не забудьте как уже выше указали.

    И цикл надо с 1 начинать.
    Ответ написан
    3 комментария
  • кем бы вы хотели быть?

    Godless
    @Godless
    в 2008 году закончил прикладную математику и информатику. (синяя рожа, красный диплом)
    Работаю программистом, кодить приходится на целом зоопарке языков. Отчасти оттого, что старый софт работает 24/7. Изменений много, примерно с 03 года программы введены. Уфф… ладно.
    Кем хотел бы быть… мне всегда нравился Си. (плюсы тоже). Я неплохо (хотелось бы так думать =) ) кодю на асме под х86. и самое главное во всех этих словах — мне это нравится. Я не знаю как описать все это, но именно Си (дада, и с плюсами тоже) с асмом близки мне по духу…
    Начинал (наверное можно уже так сказать) классически с паскаля в 9м классе, потом ассемблер в 10м, си, ну и в универе поехали…

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

    PS: хотелось чтобы Вы помнили, что на чем кодить — вам со временем станет абсолютно пофигу (за исключением психологичечкой тяги к чем-то конкретному). Понадобится — за 2 недели новый синтаксис поднимете. Программистом Вас делают знание технологий, алгоритмов, протоколов и т.п. А язык — он же инструмент для конкретных задач. Наверное, можно перефразировать Ваш вопрос «Какие задачи вы хотели бы решать?» 8) Хотя да, некоторые языки весьма многозадачны…

    PPS: ассемблер… Он божественен =) Начните обязательно. Вы верно про него думаете =) Стучите в личку, подскажу как поменьше граблей собрать в начале.
    Ответ написан
    Комментировать
  • Мотивация программирования — деньги. Это нормально?

    Godless
    @Godless
    Могу посоветовать начать нечто свое, свой проект, пусть сначала опенсорс с донатами, на любом языке, делайте что-то, что Вам интересно, если удачно выберете тему + удачно реализуете, будет и интересно, можно будет перевести в коммерческое русло, а может и донатов хватать будет.
    Я столкнулся практически с тем же. Придумали себе с другом проектик, вечерами сидим кодим понемногу. Изучать тьму всего приходится. Интересно. Есть перспективы для заработка.
    Я не уверен, но возможно смена работы будет лишь временным решением…

    ЗЫ: личное мнение…
    Ответ написан
    Комментировать
  • Вопросы, которые вы не узнали в школе/вузе, но стоило бы знать? (из сферы IT)

    Godless
    @Godless
    Очень много мыслей в голове… У меня есть тоже некоторый опыт преподавания (6 лет репетиторства, 1 год практики в вузе после выпуска). Я вынес оттуда примерно вот что:
    • В детей нужно закладывать максимум принципов, законов, идей. Факты тоже необходимы, однако (личное мнение) считаю именно «идею» самой важной, а только потом «факты»
    • Обязательно нужна практика. Сферические слова в вакууме не запоминаются. И чем больше практики, тем лучше.
    • Школьник/учащийся/студент — должен самостоятельно делать какие-то задания, придумывать себе их. САМ. Эффекты от «сделал сам» и «показали как сделать» представляете я думаю.
      По этому поводу, кстати, наш геометр говорил так (талантливый преподаватель, с десятилетиями опыта): «когда ребенок сам понял, или вывел какой-нить закон, факт, что угодно — он не забудет это никогда. Если ему рассказать про него — он это забудет сразу же после того как перестанет использовать.».
    • «Есть вещи, которые нужно пощупать самому помимо теории, так сказать ручками потрогать, а есть такие, что надо узнать как делать правильно и делать так.» — Прямо вот так и скажите =) к последним относятся всякие техники, модифицирующиеся со опытом поколений. Не нужно повторять старый опыт. О нем можно почитать в интернетах.

    Про себя могу сказать, что мне очень помогала структурировать знания в ИТ и выдирать оттуда логику математика, особенно геометрия. Я знаю что в некоторых школах у нас по городу, скажем так, чуть-чуть опускают доказательства теорем. Потерянные в голове рассуждения и возможность выводить одно из другого нужно как-то восстанавливать. Про принципы — полезно рассказать, показать про «восходящее/нисходящее» программирование, плюсы минусы, MVC. В общих словах как использовать фреймворки, библиотеки. примеры, задачи можно даже сделать на какой-нить библиотеке. Нужно знать разные алгоритмы, не обязательно уметь реализовывать сложные. Важно, чтоб они понимали что такие уже придуманы и наверняка где-то в сети есть реализация… Просто необходимо знать как хранятся данные в памяти. Да, вот прямо так вот побайтово понимали что как и где. «Младший байт по младшему адресу» и т.п. Про виртуализацию, как целиком ОС, так и устройство Java машины и других… естественно в общих чертах. Безопасность. Как распространяются вирусы, что где как и почему, что такое уязвимости и т.п. (не забыть упомянуть про УК РФ) Многие боятся этого слова, но… Ассемблер! я начал в 10м классе. считаю абсолютно свободно его можно давать на таких курсах. пусть даже азы. желательно под винду конечно же… хотя DOS программы чисто для ознакомления скомпилить можно тоже. Я даже не могу передать как он мне помогал потом учить C++.

    ну… всему не обучишь… я думаю вы выберете то что вам больше подходит…

    ЗЫ: почитал что получилось… Несколько сумбурно. Просто вспомнил себя в школьные годы, так не хватало человека, который бы помогал бы мне учиться быстрее, делился своим опытом, чтобы я не повторял его ошибок… видимо хочу в этих школьников, осознанно идущих на ИТ, втолкать больше чем было во мне =)
    Ответ написан
    1 комментарий