• Java vs C++. Что полезнее?

    bogolt
    @bogolt
    Удивляюсь почему в сравнении Java vs C++ многие упоминают, что Java кросс-плафторменна. Си++ тоже кросс-платформенный ЯП. Программа написанная на нем может быть скомпилирована практически под любой платформой. Да, программу на си++ нельзя перенести на уровне бинарников, но часто ли вы видели универсальные бинарники?
    Для Си++ есть множество очень полезных библиотек позволяющих писать красивый и быстрый GUI ( единственная известная мне хорошая GUI программа написанная на Джаве - Eclipse ). Большинство же десктопных приложений пишется именно на плюсах.
    В новом стандарте появилась нативная многопоточность ( впрочем раньше никто не мешал использовать одну из множества кросс-платформенных библиотек для достижения тех же целей ).

    Из основных недостатков си++ скажу что первые 2 года работы с этим языком программист больше вредит, нежели помогает. Это учитывая что он неплохо уже знает синтаксис и уже пишет на нем какие-то программы. Огромное количество скрытых ям, граблей, заряженный ружей - заботливо разложены создателями нескольких версий стандартов, в безумной мечте об обратной совместимости языка ( что конечно очень круто ).
    Ответ написан
    7 комментариев
  • Как прокачать навыки в C++?

    bogolt
    @bogolt
    Из литературы всегда советую Брюса Эккеля - Философия Си++ ( Thinking in C++ ). К сожалению на данный момент в связи с выходом 2011 стандарта книга стремительно устаревает. Хотя все ключевые моменты там очень хорошо разъяснены.
    Про разработку реальных приложений - тут на мой взгляд нужен реальный опыт - создание большого проекта в команде более опытных разработчиков творит чудеса и повышает уровень участников с невероятной скоростью. Разумеется команда должна быть офлайновая, через интернет подобные знания передаются хуже.
    Ответ написан
    Комментировать
  • Что необходимо знать, чтобы создать игру с 2D?

    bogolt
    @bogolt
    Игра довольно сложная задача, если не делать что-то совсем простое, вроде тетриса, впрочем даже тут для новичков встретится множество подводных камней. Для разработки игры на Си++ можно использовать cocos2dx как вам уже советовали. Если хотите писать на голом си - можно воспользоваться библиотекой SDL. Она более низкоуровневая как кокос, но для простых вещей тоже подойдет.
    Однако для создания игры вовсе не обязательно брать сразу же игровую библиотеку - игру можно вполне написать на той же Qt и получить сразу опыт разработки как приложений так и игр ( если вы таки выберете игру ).
    Преимущество Qt в ее востребованности. Кроме того это отличная библиотека с огромным количеством примеров и отличной документаций. Вам, как новичку я бы посоветовал начать именно с нее, а затем уже решать что именно вы хотите написать.
    Ответ написан
  • Почему в Python изменяется строка после использования в функции с модулем на C?

    bogolt
    @bogolt
    Функция diff3 у меня вообще не работает. По крайней мере стабильно меняет значения которые я ей передаю да еще и возвращает NAN вместо значения.

    Беглый осмотр показал что внутри нее происходит перезаписывание памяти внутри функции strtok_r. Эта функция записывает значения в указатель переданный третьим параметром, у вас же он даже не инициализирован. Подозреваю что память каким-то чудесным образом ( а других не бывает ) попадает в вашу же переменную str1 или str2. Дальше код не разбирал, но подозреваю что там еще могут быть проблемы с записью в переменные через указатели.

    Разберитесь с этой функцией отдельно, отладьте ее вначале, независимо от остального кода.
    Ответ написан
    1 комментарий
  • Изучение C++. Как сдвинуться с мертвой точки?

    bogolt
    @bogolt
    Не переживайте. Переход от теории к практике это всегда непросто. Для написания первой программы, как бы внимательно вы не изучали теорию, вам придется много раз обращаться к справочникам или к гуглу. Этот этап нужно просто пройти. Ничего, что написание первого кода занимает,как вам может казаться бесконечность. Главное двигаться вперед, и понимать ( хотя бы ключевые моменты ) того что вы делаете.

    Кроме того можно попробовать начать с модификации примеров рабочего кода. Берите код из туториалов по интересным вам темам ( по тому же сетевому программированию огромное количество примеров как клиентов так и серверов ).

    Тут уже написали про ваш пример - расскажите с чем проблема в вашем коде? Быть может стоит его разбить на несколько частей, и убедится что каждая из них работает как задумывалось.
    Ответ написан
    1 комментарий
  • Передача переменной в exe файл при его скачивании?

    bogolt
    @bogolt
    В тело программы добавьте буфер, который будет хранить внедряемое при скачивании значение, например так:
    volatile char external_buffer[MAX_LEN] = {0};

    При скачивании в тело exe вставляйте нужные данные ( тут два варианта, либо узнать смещение выделенного буфера, либо искать по уникальному его значению ).
    Сама же программа сможет просто пользоваться значением переменной.
    Ответ написан
    Комментировать
  • Как в Python можно хранить список в памяти, чтобы он съедал меньше этой самой памяти

    bogolt
    @bogolt
    Использовать sqlite базу данных. Памяти ест мало, работает быстро ( разумеется при условии что вы ее открыли в памяти вызывав sqlite3.connect(":memory:"), а не в файле, но вам это то и нужно ).
    Ответ написан
    Комментировать
  • ОС для старого копма

    bogolt
    @bogolt
    Crunchbang linux — легкий дистрибутив основанный на Debian. Очень легкий ( использует openbox ) и шустрый. Интернет и фильмы — без проблем, и даже без какой-либо настойки будут работать.
    Единственное — придется вначале объяснить куда и как нажимать чтобы запустить браузер — открыть папку. Но это несложно. Поставил несколько лет назад родственникам на их старенький ноут — до сих пор пользуются ( skype, youtube, одноклассники ).
    Ответ написан
    Комментировать
  • Работа для пожилого человека

    bogolt
    @bogolt
    Занять свободное время можно по-разному. Лучше конечно с пользой. В сети есть куча примитивных «работ» вроде рерайтинга текстов, и других вещей, откровенно делающих мир… ну в общем не делающих его лучше уж точно.
    Но пожилой возраст — это ведь и определенные преимущества. Например багаж знаний, запас терпения, умение преодолевать препятствия. Я бы посоветовал ему посмотреть в сторону википедии или других открытых проектов которым часто бывает нужна помощь волонтеров. На википедии можно улучшать интересующие темы, находить информацию в библиотеках, создавать хорошие статьи. Можно писать документацию полезным open source проектам, или создавать переводы этой документации или самих проектов. Или можно обучать других людей пользованию компьютером. Приглашать к себе в гости друзей и знакомых желающих обучится ( вероятно тоже пожилых ) и объяснять им, показывать.
    Про возможность научится программировать молчу, ибо не знаю реально ли это, хотя подозреваю что ничего сверх сложного при наличии желании у человека в возрасте возникнуть не должно.
    Ответ написан
    4 комментария
  • Как написать игровой сервер на Qt?

    bogolt
    @bogolt
    Qt не предназначен для серверов. Это отличная библиотека для десктопных приложений.

    Если вы планируете взять Qt чтобы получить более удобное управление фукнциями для работы с сетью то вам стоит задуматься о boost.asio. Его асинхронный интерфейс куда более сложен, однако результат того стоит. Код получается очень быстрым и эффективным.

    Позволю себе полюбопытствовать насчет сетевого протокола. Будет ли это голый TCP или нечто более продвинутое. Если вы еще не определились или уже выбрали TCP могу порекомендовать посмотреть на xmpp. Он просто прекрасен. Правда на си есть не так уж много библиотек реализующих его, впрочем libstrophe должно хватить.
    Ответ написан
    1 комментарий
  • Есть ли чаты для програмистов?

    bogolt
    @bogolt
    IRC, Jabber-conferenece
    Многие программисты, админы да и просто влившиеся в интернет давным давно сидят в IRC. Сервера, каналы, теплый ламповый протокол…

    Jabber conference — поновее, но тем не менее на том же jabber.ru можно найти конфы по разным языкам программирования, и не только.
    Ответ написан
  • Linux для старого компьютера

    bogolt
    @bogolt
    Ответ написан
    Комментировать
  • 12 летка хочет учиться программировать

    bogolt
    @bogolt
    Есть замечательная библиотека на питоне pygame для создания игр. Там на сайте есть и примеры как с ней работать. Вообще игры это отличная задача для начала — можно их делать сложными, можно простыми. Человек сразу видит результат своей работы, и это дает ему желание продолжать. Думаю каждый программист в детстве ( а многие в более зрелом возрасте ) мечтали сами делать игры.
    Ответ написан
    Комментировать
  • Как конвертировать unix time в std::string?

    bogolt
    @bogolt
    По-моему самое разумное вынести код функции в отдельный файл, и обернуть его pragma push/pop с отключением надоедливого ворнинга.

    Насчет медленной работы вашей программы используя преобразование через буст — это немного странно ведь если вы обращаетесь к каждому файлу а затем преобразовываете время, то очевидно что именно обращение к файловой системе должно быть узким местом.
    Ответ написан
  • Как вы жили до «бума» социальных сетей?

    bogolt
    @bogolt
    Хорошо жили, интересно. Аська, Ирка — предоставляли возможность общения с кем угодно. Волшебство непередаваемой силы. К примеру ты делаешь поиск по аське, и находишь иностранцев с близкими тебе интересами и начинаешь разговаривать. Они тебе отвечают, завязывается беседа. Все приветливы — все в интернете по умолчанию хорошие.
    Троллинга не существует.
    Есть спам.
    Переписка в гостевых книгах — это нормально.
    Выпускаются бумажные журналы откуда вы выписываете адреса интересных сайтов чтобы потом туда зайти.
    В Живом Журнале регистрация бесплатных аккаунтов только по приглашениям ( приглашать можно было редко, кажется раз в неделю ).
    По сути поиск друзей происходил через — онлайн игры ( текстовые обычно ) и форумы по интересам.
    Ответ написан
    Комментировать
  • Обязательно ли закрывать файлы после операций?

    bogolt
    @bogolt
    Питон сам автоматически закроет все открытые вами файлы. Рано или поздно. Если вы читаете данные, и не открываете сотни файлов в минуту, если вы записываете файлы но ничего критичного во времени записи нет — словом в большинстве обычных случаев — нужды явно закрывать файл нет.
    Если же вам нужно убедится в том данные были записаны — можно воспользоваться функцией flush(), либо закрыть файл.
    Если вы постоянно открываете множество файлов — закрывайте их руками — так вы не дойдете до лимита использования хэндлов в ОС.
    Если у вас программа должна быть запущенна очень долго — убедитесь что файлы закрываются и что хэндлы освобождаются. Утечка хэндлов — может очень болезненно отразиться на системе.
    Ответ написан
    Комментировать
  • Какую самую тупую и/или скучную работу по вашему мнению могут поручить начинающему программисту?

    bogolt
    @bogolt
    Погрести под горой «проектной документации» поскольку без этого разобраться человек в проекте не сможет. Он рвется писать код, а ему говорят «да рано, еще ты не разберешься, вот почитай еще прошлогодние отчеты о системе»… итд.

    Еще вспомнился Office Space где герой проверял тонны кода чтобы править ошибку 2000 года.
    Ответ написан
    1 комментарий
  • написание универсального прокси-сервера

    bogolt
    @bogolt
    Кроссплатформенные ЯП:
    Си, Си++, Питон, Руби, Джава, Эрланг, и тд собственно практически все что угодно.
    Для Си Си++ нужно будет лишь выбрать кросс-платформенную библиотеку для работы с сетью ( boost для плюсов к примеру )
    Ответ написан
  • Вопросы, которые вы не узнали в школе/вузе, но стоило бы знать? (из сферы IT)

    bogolt
    @bogolt
    На мой взгляд многих отталкивает от программирование его безликое преподавание, задачи в стиле: «сортировка массива, умножение матриц»… Задания должны быть в первую очередь наглядными, создающими нечто реальное.
    Лично я до третьего курса не верил что смогу стать программистом оттого что мы занимались подобными хоть и полезными но совершенно непрактичными, далекими от жизни вещами.
    Если бы задачи были в стиле «Написать простейший http сервер, файловый менеджер, игру… » обучение стало бы более полезным. Ведь в контексте любой программы можно объяснить практически любые принципы программирования, но зато сам факт написания чего-то большого, а главное полезного заставляет взглянуть на свою работу совсем иначе, и куда лучше оценить свои реальные умения.
    Ответ написан
  • Увеличение скорости компиляции?

    bogolt
    @bogolt
    SSD по идее влиять не должен, потому что узкое место процессор а не диск. Экспериментировал, кидал проект в tmpfs ( файловая система в оперативке ) — скорость сборки не менялась. Впрочем возможно на больших проектах разница будет но вряд ли значительная.
    Если процессор многоядерный — скажите системе сборки чтобы использовала побольше этих самых ядер ( make -j N ( где N — 1.5 * количество ядер ) ).
    Ответ написан
    2 комментария