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

Согласно отчету RedMonk за январь 2020 года, Python стал вторым по популярности языком программирования после Java Script. Ранее эту позицию на протяжении длительного времени уверенно удерживал Java, однако в начале года этот ЯП сместился на третью строчку рейтинга, который формируется на базе информации репозиториев GitHub. Если быть точными, то пара Java Script и Java удерживали топ-2 популярности языков программирования с момента начала формирования указанного рейтинга, то есть с 2012 года.

В начале этого года Python сместил Java и стал вторым по популярности языком программирования среди разработчиков - 1

Популярность JS и Java и их топовые позиции в рейтинге ожидаемы. Java Script — основной язык веб-разработки уже долгие годы, когда как Java — стандарт в разработке под Android и в сфере корпоративных приложений.
Читать полностью »

Добрый день. Прошло уже 2 года с момента написания последней статьи про парсинг Хабра, и некоторые моменты изменились.

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

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

Мы живем в неидеальном мире. Здесь код пишут люди, а люди по своей природе склонны совершать ошибки. Все бы ничего, ошибки можно отловить на этапе тестирования и не дать им никому навредить. Можно, если писать тесты. Чего люди делать почему-то не любят. Но возможно, есть надежда — автогенерация тестов из написанного кода.

Юлия Волкова хочет проверить идею в реальности и пробует переложить на машину создание тестов на основе кода, причем без использования дополнительных инструкций или контрактов. О том, какие открытия приносит путешествие в мир метапрограммирования, AST, синтаксического анализа и токенизации, и чего это все позволило добиться в автогенерации тестов, Юлия расскажет на Moscow Python Conf++. А пока я расспросил, откуда появилась сама идея — автоматизировать тестирование, что лежит в основе прототипа и с чем еще предстоит справиться.Читать полностью »

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

Например, есть такая абстракция, как KPI. Еще Scrum. Канбан. Корпоративная культура. Soft skills. И т.д.

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

Чтобы повысить эффективность работы программиста через Scrum, надо заставить его клеить стикеры и вставать на митапах. Так в методичке написано. В Канбане — переклеивать стикеры почаще. Чтобы сработала корп.культура, надо заставить программиста выучить гимн. Через soft skills — пусть учится говорить. И т.д.

Особо популярны три группы абстракций. Первая — методы серийного производства, вроде Канбана или даже конвейера. Рабочий, который годами точит одинаковые детали — тот же программист ведь, правда?

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

Третья — э-ге-гей-методы. Надо просто всех подружить, как в детском саду, шарики развесить, и код напишется. Ну а чё.

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

Всем привет, меня зовут Константин. Я занимаюсь разработкой на Java в Tinkoff.ru и люблю SOLID. В этой статье мы сформулируем принцип подстановки Лисков, покажем его связь с принципом Открытости-Закрытости, узнаем, как правильно формировать иерархию наследования и ответим на философский вопрос о том, является ли квадрат прямоугольником.

Принцип подстановки Лисков - 1

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

Привет. Я здесь писал еще не очень много, но успел попробовать несколько форматов статей. Здесь были интервью с некоторыми IT специалистами из компании в которой я работаю, переводы, гайды… Что-то зашло, что-то нет. И вот, сегодня я решил попробовать новый для себя формат.

Лучшие комменты в исходном коде - 1

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

Монады как паттерн переиспользования кода - 1

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

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

Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?

Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки. кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.

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

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

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

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

  • порядке проведения ревью,
  • скорости (и на что она влияет),
  • как правильно писать комментарии,
  • дискуссии в ходе ревью.

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

image
Иллюстрация, созданная для «A Journey With Go», из оригинального гофера, созданного Рене Френч.

С точки зрения производительности систематическое использование указателей вместо копирования самой структуры для совместного использования структур многим Go разработчикам представляется наилучшим вариантом. Для того чтобы понять влияние использования указателя вместо копии структуры мы рассмотрим два варианта использования.Читать полностью »

Последовательный fetch и 5 способов решения - 1

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


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