• О проблемах транслятора Python и переосмысление языка

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


    В этой статье я хочу затронуть не столько сам язык, сколько детали реализации CPython и его стандартной библиотеки, которые гарантируют, что у вас не будет никаких простых способов сделать приложение на питоне ни многопоточным, ни быстрым, ни легко поддерживаемым, и почему было создано столько альтернативных реализаций (PyPy, Cython, Jython, IronPython, Python for .NET, Parakeet, Nuitka, Stackless, Unladen Swallow), половина из которых уже умерла; и мало кто понял, почему у альтернатив не было шансов победить в борьбе за выживание против других языков. Да, есть GDScript, который призван решить проблемы с производительностью, есть Nim, который призван решить вообще все проблемы, не обязывая при этом пользователя чрезмерно явно объявлять типы. Однако, учитывая огромную инертность индустрии, я осознаю, что в ближайшие 10 лет новые языки точно не займут значимой ниши. Однако, я верю в то, что питон возможно сделать эффективным, изменив стиль написания кода, по большей части сохранив оригинальный синтаксис, и полностью сохраняя возможность взаимодействия кода нового и старого стиля. Я буду концентрироваться на проблемах CPython, а не ближайшего его конкурента, PyPy, поскольку PyPy на самом деле прыгает вокруг всё тех же проблем CPython.

    Читать дальше →
  • Как Youtube и Instagram: интернационализация и локализация приложения на Python

      Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы поделимся опытом, как ускорить автоматизацию перевода и решить некоторые типичные проблемы в этой области.

      Читать дальше →
    • GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только

        Привет, Хабр!


        Две недели назад мы выпустили GoLand 2019.3.




        Этот релиз — особенный для нашей команды и отличается от предыдущих. С того момента, как GoLand из плагина вырос в самостоятельную IDE, прошло 2 года. Все это время мы старались добавить как можно больше разнообразной функциональности: от набора рефакторингов, интеграций с профилировщиками, качественной поддержки Go Modules, инспекций кода и кастомных тем до возможности загрузить и установить любую версию SDK прямо из IDE.


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


        Если коротко, то:


        • GoLand 2019.3 потребляет меньше ресурсов процессора и работает гораздо быстрее, чем раньше.
        • Расширили поддержку Go Modules.
        • Добавили множество новых быстрых исправлений и возможностей для рефакторинга.
        • Инспекции показывают только самые подходящие быстрые исправления для конкретного участка кода.
        • Теперь можно отлаживать приложения удаленно с помощью Mozilla rr на MacOS или Windows.
        • Появилась глобальная настройка File Watchers по умолчанию для всех новых проектов.
        • Поддержали MongoDB.
        • Добавили интерактивные уроки в IDE: с одной стороны, это альтернативный способ узнать о новой функциональности, а с другой — возможность сразу опробовать ее в действии.
        Читать дальше →
      • 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

        • Translation
        • Tutorial


        Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
        Читать дальше →
      • Программист-фанатик. Конспект часть 1. Почему нужно быть худшим и не слушать советы родителей

        Дошли руки до книги Чеда Фаулера «Программист-фанатик».

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

        Читать дальше →
      • Программист-фанатик. Конспект часть 2 + конспект-таблица. Рыба, гиганты и наставники

          В комментариях к первой части некоторые писали, что и конспект можно сделать короче. Но в таком случае где-то терялись бы логические переходы. Поэтому для тех кто хочет совсем коротко и только сжато самую суть я сделал конспект-таблицу. Она в самом конце статьи. Там же голосовалка с вопросом «Насколько удачен такой формат?».

          Читать дальше →
        • Обширный обзор собеседований по Python. Советы и подсказки

          Всем привет!


          Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


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

          Читать дальше →
        • Личный опыт: как ИТ-специалисту переехать на работу в США, надеясь только на себя



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

            Мой опыт не вписывается в эту схему и потому, как мне кажется, может оказаться полезным для других ИТ-специалистов — я переехал в США по визе O1, которая лишена некоторых недостатков традиционной американской рабочей визы.

            Сразу оговорюсь, что этот способ миграции предполагает достаточно серьезные денежные траты, месяцы на подготовку документов, а также наличие общей жизненной активности. Но при всем этом, данный способ предполагает, что гораздо больше зависит от самого соискателя, а не от везения.
            Читать дальше →
          • Python 3.8: Что нового и как этим пользоваться?

            • Translation
            Следующий перевод подготовлен специально для «питонистов», которым интересно наверняка интересно почитать о новых функциях Python 3.8. В преддверии запуска нового потока по курсу «Разработчик Python» мы не смогли пройти мимо этой темы.

            В этой статье мы поговорим про новые функциональные возможности, которые были введены в Python 3.8.




            Моржовый оператор (Оператор присваивания)


            Мы знаем, что вы этого ждали. Это ожидание восходит еще к тем временам, когда в Python намеренно запретили использовать «=» в качестве оператора сравнения. Некоторым людям это понравилось, поскольку они больше не путали = и == в присваивании и сравнении. Другие сочли неудобной необходимость повторять оператор, либо присваивать его переменной. Давайте перейдем к примеру.
            Читать дальше →
          • Понимание джойнов сломано. Это точно не пересечение кругов, честно

              Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


              Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


              Я так устал от этих ответов с пересечениями множеств и кругов, что даже перестал поправлять людей.


              Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

              Читать дальше →
            • В двух словах о привилегиях Linux (capabilities)

              • Translation
              Перевод статьи подготовлен специально для студентов курса «Администратор Linux».


              Привилегии (capabilities) используются всё больше и больше во многом благодаря SystemD, Docker и оркестраторам, таким как Kubernetes. Но, как мне кажется, документация немного сложна для понимания и некоторые части реализации привилегий для меня оказались несколько запутанными, поэтому я и решил поделиться своими текущими знаниями в этой короткой статье.



              Самая важная ссылка по привилегиям — это man-страница capabilities(7). Но она не очень хорошо подходит для первоначального знакомства.
              Читать дальше →
            • Действительно ли Python GIL уже мертв?

              • Translation
              Всем привет! Уже в следующий понедельник начинаются занятия в новой группе курса «Разработчик Python», а это значит, что у нас есть время для публикации еще одного интересного материала, чем мы сейчас и займемся. Приятного прочтения.



              В далеком 2003 году Intel выпустил новый процессор Pentium 4 “HT”. Этот процессор разгонялся до 3ГГц и поддерживал технологию гиперпоточности.
              Читать дальше →
            • Объяснение задачи на Python с собеседования

              • Translation
              Салют, хабровчане! В преддверии запуска нового потока по курсу «Web-разработчик на Python» хотим поделиться новым полезным переводом. Поехали!



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

              def f(x, l=[]):
                  for i in range(x):
                      l.append(i * i)
                  return l
              >>> f(2)
              >>> f(3, [0, 1, 2])
              >>> f(3)


              Вопрос: Что выведет этот код?
              Читать дальше →
            • О декораторах в Python

              • Translation

              Всем привет!


              Перевод статьи подготовлен для студентов курса «Web-разработчик на Python». Интересно развиваться в данном направлении? Запишитесь на День Открытых Дверей курса и пообщайтесь вживую с преподавателем: онлайн-трансляция 23 июля в 20:00 по мск.!



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

              Читать дальше →
              • +12
              • 11.8k
              • 5
            • Топ-65 вопросов по SQL с собеседований, к которым вы должны подготовиться в 2019 году. Часть I

              • Translation


              Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик»




              Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.

              Читать дальше →
            • Взгляд изнутри: процесс устройства на работу и адаптации в Google

              • Translation
              Перевод статьи подготовлен специально для студентов курса «IT-Recruiter».



              Google – одна из знаковых ИТ-компаний в мире. Она является крайне популярным местом работы. Согласно отчетам, компания получает около миллиона резюме каждый год. У Google должна быть надежная система, которая помогает сужать поток кандидатов и находить лучших на открытые позиции. Как выглядит этот процесс и какие уроки другие работодатели могут извлечь из него?

              Давайте поближе взглянем на то, как Google принимает сотрудников на работу, помогает новичкам адаптироваться, проводит внутренние проверки и как итог — принимает решения.
              Читать дальше →
            • 5 вещей, которые чаще всего не понимают новички в JavaScript

                Всем привет! В конце сентября в OTUS стартует новый поток курса «Fullstack разработчик JavaScript». В преддверии начала занятий хотим поделиться с вами авторской статьей, подготовленной специально для студентов курса.

                Автор статьи: Павел Якупов



                Превью. Хочу сразу отметить, что в данной статье разбираются темы, хорошо знакомые «ниндзям», и больше статья нацелена на то, чтобы новички лучше поняли некоторые нюансы языка, и могли не потеряться в задачах, которые часто дают на собеседовании — ведь на самом деле подобные таски никакого отношения к реальной разработке не имеют, а те, кто их дают, чаще всего таким способом пытаются понять, насколько хорошо вы знаете JavaScript.
                Читать дальше →
              • Топ 20 навигационных фич в IntelliJ IDEA. Часть 1

                • Translation
                Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам




                Продолжая серию статей, в которых я освещаю основные фичи IntelliJ IDEA (ранее я писал об основных возможностях дополнения и рефакторинга кода), я хотел бы поговорить о навигации, которая является еще одной возможностью повышения производительности IDE, которая экономит вам много времени, при условии, конечно, что вы используете ее правильно.
                Читать дальше →
              • Паттерны проектирования в JS: паттерны создания объектов

                  Итак, хабровчане, уже в этот четверг в OTUS стартует курс «Fullstack разработчик JavaScript». И сегодня мы делимся с вами еще одной авторской публикацией в преддверии старта курса.



                  Автор статьи: Павел Якупов


                  В этой статье мы поговорим о самых простых и распространенных паттернах проектирования в языке Javascript — и постараемся объяснить, какие из них когда нужно применять.
                  Что такое вообще паттерны проектирования? Паттерны проектирования это термин, который используется для общих, часто используемых решений для общих проблем в создании программ.

                  Говоря проще, паттерны проектирования — это удачные решения, которые используются достаточно часто. Паттерны проектирования как понятие сформировались еще в то время, когда языка программирования JavaScript не было в помине, в сфере software engineering паттерны проектирования были подробно описаны еще в 1994 году «Большой четверкой». Однако мы в нашей статье обратимся к реализации некоторых несложных паттернов именно на языке программирования JavaScript.
                  Читать дальше →
                • Топ 20 навигационных фич в IntelliJ IDEA. Часть 2

                  • Translation
                  Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам




                  Первая часть тут
                  Читать дальше →
                  • +18
                  • 10k
                  • 5