Обновить
4

Программист

1
Подписчики
Отправить сообщение

Английский язык: взгляд инженера

Время на прочтение13 мин
Охват и читатели92K

ДИСКЛЕЙМЕР


Я по образованию инженер, и вряд ли могу сказать, что очень хорошо владею языком. Могу читать техническую литературу и статьи по специальности.

Здесь приводится опыт, который выдернул меня из состояния «читаю со словарем».




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

Возьмем такой предмет, как английский язык. Там куча понятий: 12 времен глагола, страдательный залог, причастия и т.п. Кто их ввел? Видимо, некие ученые мужи, для которых английский язык был РОДНЫМ. Они жили себе в каком-нибудь Oxford’e или в Cambridg’e и вряд ли знали русский язык.

Соответственно, курс английского у них получался неадаптированным под русскоговорящего. Учебник английской грамматики пытается научить человека говорить с нуля заново, игнорируя тот факт, что речью он уже владеет.

Вспомните, как вы в школе изучали русский язык. Подлежащее, сказуемое, дополнение, определение… и штук 200 правил, из которых куча исключений, которые все благополучно забывают, кроме собственно учителей русского. И которые потом нужны – максимум – при разборках с бюрократическими документами («казнить нельзя помиловать»).

Английская грамматика – туда же – что-то академическое и малополезное при изучении языка с нуля. Для человека, который более-менее свободно умеет стыковать из английских слов фразу, нужно просто учить новые слова.

Но есть много людей, которые даже стыковать толком не умеют, у них уровень — «читаю и перевожу словарем», в смысле — «заглядываю в словарь за каждым словом из текста».
При отсутствии языковой практики навык сложения английской фразы из слов у них практически отсутствует, что является серьезным барьером на пути к дальнейшему изучению.

Статья ориентирована именно на таких.
Читать дальше →

explicit в деталях

Время на прочтение3 мин
Охват и читатели219K

Если спросить C++-программиста о значении ключевого слова explicit, большинство ответит, что это ключевое слово ставится перед объявлением конструктора с одним параметром (или с большим числом параметров, но когда все параметры, начиная со второго, имеют значения по умолчанию) и предотвращает неявное преобразование типов при инициализации.

Читать дальше →

Полгода с разными беспроводными наушниками: что я выбрал

Время на прочтение7 мин
Охват и читатели135K


Я один раз надел по-настоящему беспроводные наушники, и кабели после этого, пусть даже это и гибкое оголовье на беспроводной гарнитуре, стали раздражать. Поэтому все новые уши вроде эппловских AirPods я воспринимаю с энтузиазмом и стараюсь погонять какое-то время. В 2018-м помимо AirPods я успел поносить Jabra Elite 65+, Samsung IconX 2018 и Sony WF-1000X. В итоге получилась сравнительная табличка под катом — в ней объективные данные. А все остальное — мои субъективные наблюдения и тема для обсуждения.

Мысли о современном C++ и игровой разработке

Время на прочтение18 мин
Охват и читатели31K
Новый год для игровых разработчиков начался с волны критики, обрушившейся в адрес комитета по стандартизации C++ после публикации Араса Пранкевичуса «Жалобы по поводу современного C++». Возник серьезный вопрос: действительно ли комитет стандартов потерял связь с реальностью, или все наоборот, и это игровые разработчики откололись от остального С++ сообщества?

Вашему вниманию предлагается перевод популярного поста Бена Дина, — ветерана игровой индустрии, проработавшего продолжительный срок в компаниях Blizzard, Electronic Arts и Bullfrog в качестве разработчика на C++ и тимлида, — в котором он отвечает на критику с позиции собственного опыта.

TL;DR: Комитет по стандартизации C++ не имеет скрытой цели игнорировать нужды игровых разработчиков, а «современный» C++ не собирается становиться «неотлаживаемым» языком.
На протяжении всей прошлой недели в Twitter шла активная дискуссия, в ходе которой многие программисты – особенно те из них, кто работает в сфере игровой разработки – высказались о том, что нынешний вектор развития «современного C++» не отвечает их потребностям. В частности, с позиции обычного игрового разработчика, все выглядит так, будто производительность отладки в языке игнорируется, а оптимизация кода становится ожидаемой и необходимой.

В силу того, что на 2019 год я успел проработать в игровой индустрии более 23 лет, у меня имеется собственное мнение, основанное на наблюдениях по данной теме применительно к игровой разработке, которым мне и хотелось бы поделиться. Важна ли для игровых разработчиков «отлаживаемость» и почему? В чем заключаются вопросы, связанные с ней?

Для начала — небольшой экскурс в историю.
Читать дальше →

Dropbox + AutoIt + utorrent

Время на прочтение4 мин
Охват и читатели8.7K
Добрый день. Читал про разные связки Dropbox и utorrent, но не одна мне не подходила. Исходя из опыта закачек ранее, следовало только одно, если сразу не указать место куда сохранять и нужное название файла, потом он так и останется в папке «Не разобранное» с название «Avatar.2009.Extended.Collectors.Cut(1080p).mkv». Если даже потом разобрать скаченное, надо будет перезапускать торрент файлы и указывать уже новый путь к файлу, чтобы их раздавать. А если учесть, что дома помимо меня смотрят фильмы еще родители и племянница, то такое название оставлять было нельзя.

Итак необходимые требования к программе:


1. добавление торрентов удаленно не подключаясь к домашнему компьютеру (ДК);
2. возможность указать путь к файлу на ДК;
3. возможность указать имя скачиваемого файла;
4. удаленно отслеживать какие файлы поставились на закачку, какие завершили закачку.
Читать дальше →

Знакомство с библиотекой шифрования libgcrypt

Время на прочтение7 мин
Охват и читатели18K
Добрый день, хабрахабр!

imageВ процессе написания одной из своих программ мне понадобилось разобраться с библиотекой шифрование и де-шифрования текста. Я разобрался и теперь хочу поделиться накопленным опытом и знаниями с сообществом.

В данной статье речь пойдет о библиотеке libgcrypt.
Читать дальше →

Бот, играющий в Castlevania

Время на прочтение24 мин
Охват и читатели10K

Что это


CastlevaniaBot — это плагин для эмулятора NES Nintaco, который играет в Castlevania. Если запустить его на экране заставки, то плагин пройдёт всю игру от начала до конца. Или же можно запустить его в любом месте игры, чтобы он прошёл её часть.


В этой статье я расскажу, как создал бота, способного пройти Castlevania, и как вы можете создать нечто подобное для любой игры на NES.

Внутренняя и внешняя линковка в C++

Время на прочтение9 мин
Охват и читатели82K
Всем добрый день!

Представляем вам перевод интересной статьи, который подготовили для вас рамках курса «Разработчик C++». Надеемся, что она будет полезна и интересна для вас, как и нашим слушателям.

Поехали.

Сталкивались ли вы когда-нибудь с терминами внутренняя и внешняя связь? Хотите узнать, для чего используется ключевое слово extern, или как объявление чего-то static влияет на глобальную область? Тогда эта статья для вас.

В двух словах

В единицу трансляции включены файл реализации (.c/.cpp) и все его заголовочные файлы (.h/.hpp). Если внутри единицы трансляции у объекта или функции есть внутреннее связывание, то этот символ виден компоновщику только внутри этой единицы трансляции. Если же у объекта или функции есть внешнее связывание, то компоновщик сможет видеть его при обработке других единиц трансляции. Использование ключевого слова static в глобальном пространстве имен дает символу внутреннее связывание. Ключевое слово extern дает внешнее связывание.
Компилятор по умолчанию дает символам следующие связывания:

  • Non-const глобальные переменные — внешнее связывание;
  • Const глобальные переменные — внутреннее связывание;
  • Функции — внешнее связывание.


Читать дальше →

Любопытные извращения из мира ИТ

Время на прочтение11 мин
Охват и читатели128K
Сайт The Daily WTF уже 14 лет собирает курьёзные, дикие и/или печальные истории из мира ИТ. Я перевёл несколько рассказов, показавшихся мне интересными. Все имена и названия компаний изменены.

На работу за 3 000 миль


Правдивая история из личного опыта нашего автора Snoofle. [Оригинал]

Много десятков лет назад оборонный подрядчик DefCon Inc работал на армию США и пытался получить новый контракт на создание какого-то приложения, применяемого в бою. Компания хотела продемонстрировать в своём предложении, что у неё хватит персонала для выполнения этого проекта. Поэтому она наняла более тысячи разнообразных программистов, руководителей проектов, менеджеров и так далее. Военные, изучавшие различные коммерческие предложения, увидели кучу новых сотрудников, абсолютно незнакомых с необходимыми процессами, процедурами и требованиями, поэтому передали контракт другой фирме. Подрядчик, со своей стороны, уволил всю эту тысячу человек.

Спустя несколько месяцев возник ещё один подобный контракт. Компания снова наняла тысячу человек, чтобы показать, что у неё есть персонал. Ещё через несколько месяцев контракт снова был передан другому подрядчику, и компания снова уволила всю тысячу.

Читать дальше →

Обсуждение бесплатной лицензии PVS-Studio для проектов, размещённых на GitHub

Время на прочтение3 мин
Охват и читатели8.3K
Бесплатный PVS-Studio для всех, кто развивает открытые проекты на GitHub?

Предлагаю вниманию прототип статьи под названием «Бесплатный PVS-Studio для всех, кто развивает открытые проекты на GitHub». Прошу подойти к данной теме конструктивно и высказывать предложения и критику по делу. Интересно мнение, насколько предложенный вариант разумен и удобен? Что можно улучшить? Какие дополнительные ограничения можно добавить? Кто бы из вас воспользовался/не воспользовался и почему?

Ещё раз подчеркну, что статья является пробной и имеет своей целью организовать дискуссию. Если Вы наткнулись на этот пост в 2019 году, то просим перейти к новой версии статьи.
Читать дальше →

C++20 и Modules, Networking, Coroutines, Ranges, Graphics. Итоги встречи в Сан-Диего

Время на прочтение8 мин
Охват и читатели31K
До C++20 осталась пара лет, а значит, не за горами feature freeze. В скором времени международный комитет сосредоточится на причёсывании черновика C++20, а нововведения будут добавляться уже в C++23.

Ноябрьская встреча в Сан-Диего — предпоследняя перед feature freeze. Какие новинки появятся в C++20, что из крупных вещей приняли, а что отклонили — всё это ждёт вас под катом.


Читать дальше →

Какие свидетельства могут убедить математиков, если строгого доказательства нет?

Время на прочтение8 мин
Охват и читатели14K

Новая статистическая модель, кажется, подрывает давно принятые предположения из теории чисел. Насколько ей можно доверять, если на самом деле имеет значение только строгое доказательство?



Какие точки на эллиптической кривой y2 = x3 – 4x + 1 рациональные? Чтобы их найти, нужно провести прямые через пары рациональных точек. Все точки, через которые проходят прямые, также будут рациональными.

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

И это не биологи, климатологи или физики. В их научной области эмпирические модели не имеют права голоса касательно истины. Они – математики, представители дисциплины, чья стандартная валюта – неоспоримое логичное доказательство – обычно избавляет их от дебатов, поражающих другие области. И всё же вот они, со своей моделью, говорящей, что, вероятно, пришло время пересмотреть некоторые давнишние представления.

Текстовая версия доклада «Actors vs CSP vs Tasks...» с C++ CoreHard Autumn 2018

Время на прочтение23 мин
Охват и читатели11K
В начале ноября в Минске прошла очередная посвященная языку C++ конференция C++ CoreHard Autumn 2018. На ней был сделан капитанский доклад «Actors vs CSP vs Tasks...», где речь шла о том, как может выглядеть в C++ применение более высокоуровневых, чем «голая многопоточность», моделей конкурентного программирования. Под катом преобразованная в статью версия этого доклада. Причесанная, местами подправленная, местами дополненная.

Пользуясь случаем хочется выразить благодарность сообществу CoreHard за организацию очередной большой конференции в Минске и за предоставленную возможность выступить. А также за оперативную публикацию видеозаписей докладов на YouTube.

Итак, давайте перейдем к основной теме разговора. А именно к тому, какие подходы к упрощению многопоточного программирования в C++ мы можем использовать, как в коде будет выглядеть использование некоторых из этих подходов, какие особенности присущи конкретным подходам, что между ними общего и т.д.

Примечание: в оригинальной презентации к докладу были обнаружены ошибки и опечатки, поэтому в статье будут использованы слайды из обновленной и отредактированной версии, которую можно найти в Google Slides или на SlideShare.

«Голая многопоточноть» — это зло!


Начать нужно с многократно повторенной банальности, которая, тем не менее, все еще остается актуальной:
Многопоточное программирование на C++ посредством голых нитей, mutex-ов и condition variables – это пот, боль и кровь.
Читать дальше →

Настолько ли стар твой Windows?

Время на прочтение3 мин
Охват и читатели59K
Как показывает бурное обсуждение последних статей на Хабре, посвященных Windows системам, большое количество продвинутых и не очень пользователей отдает свое предпочтение «устаревшей» Windows 7 и не торопится переходить на Windows 10. Причины бывают очень разные — от недовольства политикой конфиденциальности и большим объемом телеметрии до банальной привычки и нежелания идти на поводу у маркетологов Microsoft.

В данной статье я хочу рассмотреть случай, когда Windows 7, да и более ранние версии, требуются разработчику для качественного решения своих рабочих обязанностей. Не секрет, что в корпоративном секторе доля Windows 7 все еще очень велика, а так как компания Microsoft продлила ее расширенную поддержку до 2023 года, в ближайшее время вряд ли что-то кардинально изменится. И это не говоря о том, что встречаются и совсем древние системы с Server 2003 и 2008, на которых работает какое-то старое, но крайне нужное ПО, портировать которое никто не берется исходя из принципа «работает – не трогай». Однако, обновить Вашу «устаревшую» операционную систему можно гораздо быстрее и проще, чем кажется.
Читать дальше →

C++: сеанс спонтанной археологии и почему не стоит использовать вариативные функции в стиле C

Время на прочтение18 мин
Охват и читатели26K
Началось все, как водится, с ошибки. Я первый раз работал с Java Native Interface и делал в C++ части обертку над функцией, создающей Java объект. Эта функция — CallVoidMethod — вариативна, т.е. помимо указателя на среду JNI, указателя на тип создаваемого объекта и идентификатора вызываемого метода (в данном случае конструктора), она принимает произвольное число других аргументов. Что логично, т.к. эти другие аргументы передаются вызываемому методу на стороне Java, а методы могут быть разные, с разным числом аргументов любых типов.

Соответственно и свою обертку я тоже сделал вариативной. Для передачи произвольного числа аргументов в CallVoidMethod использовал va_list, потому что по-другому в данном случае никак. Да, так и отправил va_list в CallVoidMethod. И уронил JVM банальным segmentation fault.

За 2 часа я успел перепробовать несколько версий JVM, от 8-ой до 11-ой, потому что: во-первых это мой первый опыт с JVM, и в этом вопросе я StackOverflow доверял больше, чем себе, а во-вторых кто-то на StackOverflow посоветовал в таком случае использовать не OpenJDK, а OracleJDK, и не 8, а 10. И лишь потом я наконец заметил, что помимо вариативной CallVoidMethod есть CallVoidMethodV, которая произвольное число аргументов принимает через va_list.

Что мне больше всего не понравилось в этой истории, так это то, что я не сразу заметил разницу между эллипсисом (многоточием) и va_list. А заметив, не смог объяснить себе, в чем принципиальное отличие. Значит, надо разобраться и с эллипсисом, и с va_list, и (поскольку речь все-таки о C++) с вариативными шаблонами.
Читать дальше →

Фулстеки — это вечные мидлы. Не идите по этому пути, если не хотите страдать

Время на прочтение4 мин
Охват и читатели137K


Когда я только начал учиться кодить, я поверил старым мудрым засранцам с их мантрой «язык программирования не важен». У меня появилась идея фикс — быть разработчиком, который может всё. Парнем, который переносит опыт использования одной технологии на другую и возносится над деталями. Но эта затея с треском провалилась.

Читать дальше →
IT-эволюция - шутка парадоксальная. Например, сначала на компьютерах моделировали нагрузку на АТС, затем программно управляли вызовами, а теперь телефония - это облачное решение, которое разворачивается за несколько минут и объединяет все корпоративные коммуникации. Кажется, между этими изменениями мало общего. На самом деле они стали возможными благодаря принципам программирования, заложенным полвека назад. И чтобы лучше увидеть эту связь, мы решили вспомнить историю С++ - одного из самых “взрослых” языков программирования. Он может быть и удобным инструментом разработки, и ночным кошмаром, и частью корпоративной истории. std::begin( )
Подробности — под катом

Карьерные стероиды. Собаки

Время на прочтение11 мин
Охват и читатели19K
Название этого карьерного стероида я взял из знаменитой матрицы BCG (Boston Consulting Group). Матрица простая, применяется для оценки и выработки продуктовой стратегии. Каждый продукт оценивается по двум шкалам – темпы роста рынка и доля на нем.

Всего там категорий четыре.

«Звезды» — продукты, которые имеют высокую долю на быстро растущем рынке. Звездами все хотят заниматься.

«Дойные коровы» — доля высокая, рынок растет медленно. Это, как правило, старые продукты, давно выведенные на рынок и приносящие стабильный доход. Все хотят сидеть на дойных коровах.

«Трудные дети» — доля мала, но рынок растет. Это новые продукты обычно, с которыми еще надо повозиться, но прогноз выглядит многообещающе. С опаской, но трудными детьми заниматься хотят многие.

И, наконец, наша аналогия — «собаки». Низкая доля на рынке, который не растет, или даже стагнирует. Такими продуктами заниматься никто не хочет – усилий надо приложить много, а результата полезного не предвидится.
Читать дальше →

Проблемные аспекты программирования на С++

Время на прочтение28 мин
Охват и читатели15K

В С++ достаточно много особенностей, которые можно считать потенциально опасными — при просчетах в проектировании или неаккуратном кодировании они легко могут привести к ошибкам. В статье приводится подборка таких особенностей, даны советы, как уменьшить их негативное влияние.



Читать дальше →

DeOldify: программа для раскрашивания чёрно-белых изображений

Время на прочтение7 мин
Охват и читатели53K
Если вкратце, задача этого проекта — раскрашивать и восстанавливать старые снимки. Я немного углублюсь в детали, но сначала давайте посмотрим фотографии! Кстати, большинство исходных изображений взято из подреддита r/TheWayWeWere, благодарю всех за такие качественные большие снимки.

Это лишь немногие примеры, и они вполне типичные!

Мария Андерсон в роли Маленькой феи и её паж Любовь Рябцова в балете «Спящая красавица» в Императорском театре, Санкт-Петербург, Россия, 1890


Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность