• Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ

    • Translation

    Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии.

    — Эдсгер Вибе Дейкстра

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

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

    Многие люди и раньше обсуждали проблемы ООП, и в конце этого поста я приведу список своих любимых статей и видео. Но прежде я хочу поделиться собственным взглядом.
    Читать дальше →
  • Практические задачи по Java — для курсов и прочих занятий

      Практические задачи по Java — для курсов и прочих занятий


      Несколько вводных слов


      Последние несколько лет я читаю курс по программированию на Java. Со временем он менялся — то добавлялись, то выкидывались разные части, менялась последовательность тем, менялся подход к построению плана самих занятий, и так далее. То есть, курс совершенствовался. Одной из основных проблем, возникших при подготовке курса — это задачи. О них и пойдёт речь.

      Дело в том, что каждое моё занятие состоит из двух частей. На первой я выступаю в роли лектора — рассказываю с примерами кода о какой-то новой теме (классы, наследование, дженерики и так далее). Вторая часть — практическая. Очевидно, что нет смысла просто рассуждать о программировании, надо программировать. Приоритет на занятиях — решение задач, то есть программирование чего-то как-то. Программирование на занятиях отличается от программирования дома, так как на занятиях можно задать вопрос, показать код, получить быструю оценку кода, комментарии по улучшению, исправлению написанного. Очень легко было найти задачи для самых первых занятий. Задачи на циклы, условные операторы, и ООП (к примеру, написать класс «Собака» или класс «Вектор»). Сервисы вроде leetcode позволяют даже проверить правильность решения таких задач сразу, онлайн. Но какие задачи дать студентам на занятии, которое было посвящено коллекциям? Потокам? А аннотациям? За несколько лет я придумал, или переработал несколько таких задач, и эта статья, по сути, является сборником этих задач (к некоторым задачам прилагается решение).
      Читать дальше →
    • Про одного парня

        История реальная, я все видел своими глазами.

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

        До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

        Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
        Читать дальше →
      • Бетонные блоки, расширяющие представления о древнем строительстве

        • Translation


        Каким образом за столетия до изобретения подъёмных кранов и грузовиков были созданы древние сооружения наподобие Стоунхенджа или статуй Моа́и на острове Пасхи? В своём новом эксперименте исследователи из Массачусетского технологического института (MIT) создали бетонные сооружения весом около 25-тонн, которые, несмотря на их вес, можно передвигать вручную. Таким образом, появился новый довод в пользу теории, согласно которой древние строители были мастерами равновесия и умело использовали рычаги.
        Читать дальше →
      • Смерть курьера «Яндекс.Еды» запустила волну жалоб на условия труда в компании



          Работа курьером в службах доставки еды становится богатым источником публичных драм. Иногда они милые и трогательные, вроде истории влюбленных парня и девушки, которые работали на соперничающие «Яндекс.Еду» или Delivery Club. Или женщину курьера с младенцем, которую завалили льготами и подарками после того, как ей пришлось выйти на работу с ребенком.

          Но не всегда все кончается хорошо. 17 апреля во время работы погиб 21-летний курьер «Яндекс.Еды» Артык Орозалиев, по предварительным данным, от остановки сердца. На следующий день система выставила курьеру штраф за прогул, что, конечно, не намеренно, но создает впечатление абсолютной бездушности. На волне новости в Твиттере скопилось много недовольства на плохие условия труда курьеров. Пользователь Доктор Далек написал тред, где собрал анонимные жалобы.
          Читать дальше →
        • Таблица Менделеева на школьной информатике

          • Tutorial
          (Управляющие карты)
          (Посвящается Международному году Периодической таблицы химических элементов)
          (Последние дополнения сделаны 8 апреля 2019. Список дополнений сразу под катом)

          image
          (Цветок Менделеева, Источник)

          Помнится, мы проходили утку. Это были сразу три урока: география, естествознание и русский. На уроке естествознания утка изучалась как утка какие у нее крылышки, какие лапки, как она плавает и так далее. На уроке географии та же утка изучалась как житель земного шара: нужно было на карте показать, где она живет и где ее нет. На русском Серафима Петровна учила нас писать «у-т-к-а» и читала что-нибудь об утках из Брема. Мимоходом она сообщала нам, что по-немецки утка так-то, а по-французски так-то. Кажется, это называлось тогда «комплексным методом». В общем, все выходило «мимоходом».

          Вениамин Каверин, Два капитана

          В приведенной цитате Вениамин Каверин мастерски показал недостатки комплексного метода обучения, однако в некоторых (может быть, довольно редких) случаях элементы этого метода бывают оправданы. Один из таких случаев — это Периодическая таблица Д.И.Менделеева на уроках школьной информатики. Задача программной автоматизации типовых действий с таблицей Менделеева наглядна для школьников, начавших изучать химию, и разбивается на многие типовые химические задачи. В то же время в рамках информатики эта задача позволяет в простой форме продемонстрировать способ управляющих карт, который можно отнести к графическому программированию, понимаемому в широком смысле слова как программирование с помощью графических элементов.
          Читать дальше →
        • Игры на программирование действий — развлечение или способ приобщить детей к алгоритмике и робототехнике

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

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

            image

            Ниже я приведу примеры игр на программирование действий (обучающих и не только), которые можно купить в России? Их можно и нужно применять, чтобы не только объяснить детям алгоритмику и даже робототехнику, но и просто весело и приятно провести время в кругу семьи. Ссылки умышленно не даю (это не реклама) — все игры ищутся в поиске по их названиям и их можно купить в разных магазинах (как онлайн так и оффлайн). Если не найдете — спросите меня в комментариях и я дам ссылки.
            Читать дальше →
          • Поиграем в книжки — что такое геймбуки и какие из них стоит попробовать


              Учить английский по играм и книгам — приятно и довольно эффективно. А если игра и книга объединены в одно мобильное приложение — еще и удобно. Так сложилось, что на протяжении последнего года я неспешно знакомился с жанром мобильных «геймбуков»; по итогам ознакомления готов признать, что это интересная, самобытная и не слишком известная широкой публике ветвь не то игр, не то литературы. В этой экспериментальной для Skyeng статье я тряхну «игрожуровой» стариной, сделав обзор наиболее интересных представителей жанра и их издателей.

              Читать дальше →
            • Как разработчики процедурно создали кучу «мусорных» мобильных игр и заработали 50 тысяч долларов

              • Translation

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

              На проводимой в этом году Game Developers Conference выступили два разработчика игр, способные написать новую главу романа-антиутопии о будущем: они рассказали историю о том, как заработали деньги, позволив делать всю работу роботам. В их случае этой работой была процедурная генерация игр для смартфонов.

              Участие в обычном гейм-джеме привело к созданию машины обработки данных, которой в результате удалось заработать приличную сумму: 50 тысяч долларов за два с лишним года. Спустя годы, имея на руках данные (и деньги), разработчики этой машины по изготовлению игр, которая создавала только «мусорные» слот-автоматы с моделью free-to-play, использовали GDC как трибуну, чтобы подать тревожный сигнал индустрии, в которой «правильное» поведение часто ограничивается вниманием к игрокам, заискиванием перед издателями и сбором положительных обзоров критиков. В случае этих разработчиков нарушение всех этих правил привёл к слишком успешным результатам, вызвав у них сильный дискомфорт.

              Побеждаем в «гонке ко дну»


              Вернёмся в 2013 год: в то время два разработчика видеоигр уже несколько лет пытались добиться успеха на растущем рынке мобильных игр. Один из них, Алекс Шварц, помогал в создании качественной мобильной игры Jack Lumber. (В прошлой жизни я даже написал о ней хороший отзыв в уже несуществующем журнале The Daily, работавшем только на планшетах.) Второй, Зиба Скотт, разработал приятную мобильную головоломку Girls Like Robots.

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

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

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


                Несмотря на акцент на болях в области поясницы в целом все написанное применимо в контексте болей и в других отделах позвоночника.
                Читать дальше →
              • Ад своими руками

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

                  Был у меня в жизни такой опыт автоматизации, за который долгое время было стыдно. Не потому, что система плохо работала, или метаданные кривые были, или ТЗ не соответствовала — ровно наоборот. Все красиво, быстро, с полным внедрением во всей компании. С точки зрения формальных критериев это был полный успех.

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

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

                  Обо всем по порядку.
                  Читать дальше →
                • Проблемы современной записи математических текстов

                    В недавней статье товарищ KvanTTT поднял вопрос:
                    Можете пояснить что вам не нравится в современной записи (математических положений и) формул и как ее можно улучшить?
                    Я постарался ответить в одном комментарии, но размер текстового поля не позволил закончить выкладки. Данная статья — чрезмерно развернутый ответ.

                    Сразу скажу, материал холиварный. Местами слишком эмоциональный. Очень спорный. Слишком личный — часто основан на собственном опыте, небогатом, хоть и разнообразном. Пост касается школьных и университетских текстов учебников: у «профессиональной» литературы своя специфика, своя аудитория. Решения у проблемы в текущих реалиях нет. При этом, часть «моих» наблюдений задолго до меня высказывали такие авторитеты, как Кнут и Хэмминг; чуть менее популярные ребята даже запилили инструкцию "Как читать математику".

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

                    • Translation


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

                    Когда твой парень - fullstack


                    Когда твой парень — fullstack


                    Работая программистом и проживая в пяти минутах ходьбы от офиса, крайне тяжело успеть «отойти» от работы, отойдя от работы.


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


                    Как бы не так!


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


                    И вот однажды она приходит к тебе и торжественно заявляет:
                    — Я готова! Готова учиться программированию! Давай!


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


                    О том, как я, не имея никакого практического опыта в обучении, решил ввести в программирование человека, объяснившего, что «ты же умный» и «всё у нас получится», расскажу под катом.


                    Добро пожаловать!

                    Читать дальше →
                  • Курс «Основы программирования»

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

                      Сразу отмечу, что данный курс не является "идеальным". В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!
                      Читать дальше →
                    • Моё разочарование в софте

                      • Translation

                      Суть разработки программного обеспечения
                      — Нужно проделать 500 отверстий в стене, так что я сконструировал автоматическую дрель. В ней используются элегантные точные шестерни для непрерывной регулировки скорости и крутящего момента по мере необходимости.
                      — Отлично, у неё идеальный вес. Загрузим 500 таких дрелей в пушку, которые мы сделали, и выстрелим в стену.


                      Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

                      Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

                      Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
                      Читать дальше →
                    • Книга о «Параграфе» на Хабре. Новая глава — о программистах-кооператорах: «Бета»

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


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


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


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


                        Главный герой этой главы — известный программист Антон Чижов.


                        image

                        Фото 1992-го года из журнала «Мир ПК»

                        Технически в книге — это четвертая глава, через одну после опубликованной две недели назад. В предшествующей речь идет о том, как Степан Пачиков при помощи Гарри Каспарова и вице-президента Академии Наук Евгения Велихова организовал в Москве детский компьютерный клуб. Благодаря этому клубу он обзавелся множеством новых знакомств в компьютерной тусовке.


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


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

                        Поехали!


                        Читать дальше →
                      • О правильной осанке, укреплении мышц и растяжке

                          Этот пост можно рассматривать как комментарий к двум статьям о правильной осанке и здоровом позвоночнике: раз и два.

                          И даже как комментарий к комментариям, в которых обсуждалось, как же быть с задней поверхностью бедра, которая не позволяет ровно сидеть и правильно сгибаться.
                          Читать дальше →
                        • Забытое искусство сгибания: как в других культурах берегут позвоночник

                          • Translation


                          Чтобы узнать, правильно ли вы нагибаетесь, проведите простой эксперимент.

                          «Встаньте и поставьте руки на талию», — говорит Джин Кауч, уже 25 лет помогающая людям избавиться от боли в спине в своей студии в Пало-Альто. «Теперь представьте, что я уронила вам под ноги пёрышко, и прошу вас его поднять, — говорит Кауч. – В этот момент обычно все наклоняют голову и смотрят вниз».

                          Этот взгляд изгибает позвоночник и отправляет сигнал желудку немного съёжиться. «Вы уже начали неправильно сгибаться – вы сгибаетесь в талии, — говорит Кауч. – Почти все в США сгибаются на уровне живота».

                          В процессе наши спины вырисовывают букву «С» – или, как говорит Кауч, «Мы становимся похожи на орехи кешью». Иначе говоря, когда мы сгибаемся, то становимся похожими на орехи. Но во многих других частях мира люди не похожи на орехи при сгибании. Там можно увидеть нечто совсем другое.
                          Читать дальше →
                        • Чтобы избавиться от боли в спине вам, возможно, придётся сидеть по-другому

                          • Translation


                          Когда я сижу, у меня болит спина.

                          Это происходит уже последние 10 лет. И неважно, где я нахожусь – на работе, в ресторане, даже дома на диване. Моя поясница кричит: «Прекрати сидеть!»

                          Чтобы уменьшить боли в спине, на работу я купила себе коленный стул. Потом стол для работы стоя. Потом вернулась к обычному стулу, потому что мне стало больно стоять.

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

                          Эти средства немного помогли – сначала. Но боль так и не ушла. Поэтому несколько лет назад я решила принять это как должное: сидячее положение причиняет мне боль, и так будет всегда.
                          Читать дальше →