Рубрика «Программирование»

Когда я только знакомился с принципами SOLID, я искал понятные статьи на Хабр. При этом пришлось прочитать не одну статью, и полное понимание пришло сильно позже. Хотелось бы, чтобы новички на более простых примерах смогли почувствовать, о чем эти принципы:

Что такое SOLID и зачем оно надо?

При написании кода программисту следует руководствоваться определенными правилами. Часто эти правила написаны если не кровью, то слезами разработчиков, которые потом стараются исправить ваш код. Если это вообще возможно :)

Принципы S.O.L.I.D.Читать полностью »

На скриптовых языках удобно разрабатывать… И на этом удобство заканчивается. Вне машины разработчика начинаются проблемы. Особенно если вы пишете какой-то прикладной тулинг — cli-утилиты, вспомогательные приложения в вашем SDK и прочее. Вы даже не можете рассчитывать на то, что у пользователя будет pip, чтобы он смог поставить все ваши зависимости, вам все нужно организовать самостоятельно.

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

Читать полностью »

Стресс и выгорание в мире разработки ПО - 1

Автор: Sow Ay

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

Если вспомнить конкретно 2017 год, то он стал для меня весьма неприятным. Я регулярно испытывал панические атаки, сидел на релаксантах и пытался писать код, находясь под серьёзным давлением дедлайнов и новых ответственностей. Тогда я как раз унаследовал от своего предшественника должность главы отдела информационных технологий. Теперь я отвечал за небольшую команду разработчиков. При этом наш стартап дал многим партнёрам множество обещаний. Моей же задачей была их реализация, и я мог их либо нарушить, либо выполнить. У меня получилось и то и другое.Читать полностью »

image

Друзья! Много ли платформ вы знаете, где для написания пользовательских приложений используется стек… веб-технологий, причём это единственный нативный способ писать программы? Услышав о HTML5 + CSS + JS, на ум приходит разве что webOS — которая используется в современных телевизорах от LG (а ранее использовалась ещё и в Palm Pre — уникальный смартфон, единственный в своём роде), а олды вспомнят ещё и про FireFox OS, в которой вся оболочка (включая многозадачность, шторку уведомлений и все приложения) также была реализована на JS. Но ни webOS, ни FFOS в своё время не суждено было стать массовыми ОС на смартфонах: сказывались аппаратные ограничения устройств, да и проблемы с портированием уже существующих приложений с других платформ (например, игр). Однако несколько лет назад, проект FireFox OS был форкнут и на свет появилась новая система, предназначенная для… умных кнопочных телефонов с LTE! И имя ей — KaiOS. Вероятно, многие мои читатели слышали о ней и о новых умных кнопочниках от Nokia. Но что из себя представляет система под капотом и чем она может быть интересна гику? Читайте в новом материале!Читать полностью »

Не бойтесь бросать свои пет-проекты - 1

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

Тем не менее ко мне часто обращаются начинающие программисты за советом, и в последнее время их всё чаще беспокоит то, что у них не получается реализовывать пет-проекты так быстро или так часто, как хотелось бы. И такая тревожность абсолютно понятна. Когда в среде разработки господствует культура сверхактивности и концепция «непрерывной поставки», а на технических собеседованиях кандидатов зачастую оценивают на основе результатов их «внештатного программирования» (имеются в виду хакатоны, клубы программистов и прочее, — прим. пер.), заброшенные пет-проекты перестают казаться чем-то забавным. И мне это не нравится.

Мы слышим столько историй об успешных личных проектах, но что, если более открыто говорить о тех, которые провалились? Многие из нас проводят ретроспективный анализ на работе, но не в отношении пет-проектов. А почему бы нам не пролить свет на всё то время, которое было вложено в начинания, которые так и не ожили? На заброшенное ПО, которое в своё время казалось хорошей идеей. По нашим средам разработки до сих пор скитаются духи захороненных каталогов node_modules.

И здесь я хочу рассказать о своём недавнем пет-проекте, который забросил в тот же день, в который запустил. Читать полностью »

Предисловие

Здравствуйте. Это моя первая статья, и она будет о разработке собственной операционной системы. Если в процессе чтения заметите какие либо ошибки или у вас более глубокие познания в этой области, пишите комментарии и я внесу правки. Автор ещё учится этому непростому ремеслу. Полный исходный код ОС будет приведён в конце статьи. ОС написана полностью на Netwide Assembler</p>" data-abbr="NASM ">NASM, для архитектуры процессоров Intel x86-64.

Вначале было слово...

Для более полного понимания процесса запуска компьютера советую прочитать статью.

Читать полностью »

Эффект Монреаля: почему языкам программирования нужен Царь стилей - 1


Давайте представим нереалистичный сценарий, где вы выбираете язык программирования для проекта, который в перспективе станет очень большим. Допустим, это будет набор сервисов в монорепозитории, над которыми работает более 100 человек. Чтобы сделать этот сценарий ещё менее реалистичным, предположим, что вы игнорируете типичные ограничения, например, не учитываете, сможете ли использовать сборщик мусора, и впишется ли поставленная задача в конкретный стек технологий.

Пусть это будет мысленный эксперимент. Подыграйте мне. Если вы читали мою прошлую статью (англ.), то должны правильно предположить, что я бы предпочёл экспрессивный язык, ориентированный на профессионалов. Так и есть. Но в гибком языке программирования есть серьёзная проблема с масштабированием – слишком много стилей оформления кода и способов его написания. В итоге просто не обойтись без руководств по стилю, которые помогут сориентироваться в правильной реализации.

Какое подмножество C++ или Kotlin вы используете? Что вы предпочтёте: project.toml или requirements.txt? Теперь у вашего языка есть возможность поэтапной типизации с помощью аннотаций типов. Хотите ей воспользоваться? Как вы реализуете конкурентность: с помощью многопоточности, Tokio или std::async?

Чем более экспрессивный язык, тем сложнее всё становится. И здесь на сцену выходит Go. И речь не только о gofmt, но и о его стандартной библиотеке и согласованности. В Kotlin вам приходится гадать, что лучше использовать для ошибок: исключения или объекты Result? В случае же Go вам всё ясно – ищем err. Да, это многословно, но зато предсказуемо.

Экспрессивные языки прекрасны, но часто создают путаницу. Вы можете использовать богатый и комплексный язык, поддерживающий миллион способов реализации одного и того же. Именно это я хочу вам показать. Как же сохранить всю эту мощь, но уменьшить беспорядок? Как избежать возникновения 500 поддиалектов? Но прежде, чем переходить к решениям, обсудим Scala.Читать полностью »

Делаем код-ревью правильно - 1


В начале своей карьеры я как-то работал над одним заказом, создавая платформу сентимент-анализа для социальных сетей. В то время Twitter ещё был Twitter’ом. Наша команда состояла из семи человек, среди которых я был джуниором. Мы были молоды и полны энтузиазма. Наш девиз можно было описать как: «Мы гибкие, быстрые и всё ломаем!». Да, мы действительно гордились своей скоростью. Код-ревью? Я вас умоляю. Мы считали эту практику бюрократическим пережитком корпоративного мира.

И что вы думаете? Через несколько месяцев наша база кода стала подобна минному полю. Причём баги нас волновали меньше всего, хотя их была уйма. Реальная проблема заключалась в том, что никто не мог понять код, написанный другими. У нас во многих местах дублировалась логика, и в модулях использовались разные стили кода. Всё было очень печально.

Тогда до нас дошло! Нужно взять всё под контроль. Код-ревью реально помогают сохранять код читаемым, обслуживаемым и масштабируемым.

Итак, в двух словах: если вы не проводите код-ревью, или делаете их «для галочки», то обрекаете себя на боль, пусть не сразу, но в конечном итоге однозначно. Это можно сравнить с возведением дома на фундаменте из песка. Какое-то время он, может, и простоит, но явно недолго. А в мире стартапов второго шанса у вас может уже не быть.Читать полностью »

Как программировали в 1969 году - 1

Я провёл это интервью со своей матерью Марианной Эрнерфельд в декабре 2018 года. В посте приведён немного урезанный перевод. Полное интервью на шведском языке можно прочитать здесь.

Почему ты захотела стать программистом?

Я решила стать программистом в 1965-66 годах. Прочитав статью, где на иллюстрации была показана блок-схема, я подумала: «это моё». Когда я выпустилась из старшей школы в 1967 году, не было ни одного университета, обучающего программированию, но существовал полугодовой курс в Сольне [прим. пер.: Сольна — коммуна в Швеции], который превратился в годовой курс, и на него могли выдать студенческий заём. Поэтому я подала на него заявление.

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

Однако у SJ оказалось 700 кандидатов на 50 мест, поэтому они устроили суровый процесс отбора с различными тестами. И мне удалось пройти их! Мне нужна была зарплата, чтобы оплачивать собственное жильё, так что я приняла предложение.

Выяснилось, что руководство SJ было очень недовольно тем, что брошюры о стажёрской программе рассылали студентам и мужского, и женского пола! Хотя в программу приняли и не так много девушек, но их всё равно было приличное количество.
Читать полностью »

Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга.

Как я обработал один миллиард строк в PHP - 1

Моё участие в проекте было мотивировано присутствием в нём двух моих коллег, которые достигли лидирующих позиций.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js