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

Перевод статьи LOSING LOOSE COUPLING

монстр-трак велосипед Когда меня просят присутствовать на собеседованиях, я обычно задаю один вопрос кандидату: «Что такое хороший код?». Тревожит, что часто можно услышать от недавних выпускников: «Наличие хороших комментариев». Это неправильный ответ. Кто учит их этому? Пугающе. Но я отвлекся… Не думаю, что есть правильный ответ на мой вопрос, однако я бы принял что-нибудь вроде «сильное сцепление (high cohesion) и слабая связанность (loose coupling)». По крайней мере это что-то говорит о коде. Но если это собеседование Java разработчика, я не дам бедняге уйти без нескольких дополнительных вопросов. Потому что Java разработчики полностью обезумели. Они одержимы желанием порубить код на супер-пупер мелкие кусочки. Мы рубим и рубим до тех пор, пока практически ничего не останется. Как только маленькие дорогуши разделены мы начинаем беспокоиться о том, чтобы они не трогали друг друга. Ох, малышки! Мы должны защитить их друг от друга любой ценой. Каждый маленький кусок кода получает свой собственный интерфейс, чтобы он не мог замарать свои руки дотянувшись до других частей напрямую. Мы связываем их магическими фреймворками. Которые используют абстрактные прокси, создающие фабрики и так далее.

Представьте велосипед, сделанный по таким принципам. Рама порублена на кусочки, длиной 1 сантиметр, соединенных по типу позвоночника. Будет ли она более гибкой? Определенно — да. Будет ли она практичной? Конечно, нет. Она будет дороже в производстве в сотни раз. Она также будет ломаться в сотни раз чаще. Такой велосипед приведет к большему количеству несчастных случаев, и не в последнюю очередь, будет странно выглядеть и на нем будет трудно ездить. Наша спина должна быть гибкой, поэтому позвонки имеют смысл. Велосипеды — нет.
Читать полностью »

18 декабря языку perl исполнилось 26 лет26 лет назад, в декабре 1987 года, Ларри Уолл выпустил первую версию языка в ничего не подозревавший мир. Ссылка на группу usenet comp.sources.unix , где впервые упоминается perl как замена awk и sed.
Кроме этого, можно сказать что perl дал сисадминам больше возможностей, чем shell, и более лёгкий способ достижения цели, чем C.
Потом, когда начали появлятся интерактивные сайты, perl застолбил себе нишу на этом поприще. Тяжело было бы делать сайты на CGI при помощи shell скриптов или писать обработку запросов и работу с текстом на C.
Знаменитый девиз perl — «всегда есть несколько способов достичь чего-либо», поскольку perl хорошо демонстрирует, что для любых задач можно найти хорошие решения, если взглянуть на них под другим углом.
Читать полностью »

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

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

Что вас ждёт под катом:

  • Избегаем вызовов макросов вместо функций, на примере max/min.
  • Вызываем оптимальную функцию, на примере std::swap и её специализации в разных пространствах имен.
  • Ускоряем вставку в std::vector.
  • Деструкторы в C++11.

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

image
Присоединяюсь к краудсорсингу перевода The Passionate Programmer от Chad Fowler. Правки пунктуации и неудачных фраз весьма приветствуются.

Глава 12. Изучите, как работает бизнес на самом деле

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

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

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

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

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

Если не хоите ходить по моим граблям, добро пожаловать под кат.Читать полностью »

Иногда бывает нужно из одной программы добраться до содержимого другой программы. Ну, например, получить из неё какой-нибудь контент, или автоматизировать действия. В случае классических приложений Windows эта проблема решается весьма просто — находим родительское окно через FindWindow, далее, зная его HWND, можем перечислить дочерние окна и элементы управления на них. А тут уже полная свобода — можем получить текст, написанный на этих элементах, изменить их размеры и положение, отправить сообщения для эмуляции клика мышью или набора текста с клавиатуры, даже удалить имеющиеся элементы и создать новые.

Доступ к контенту Modern приложения на HTML\JS из Desktop приложения под Windows 8Но для Modern-приложений всё иначе. Давайте возьмём, к примеру, приложение «Погода» из стандартного набора Windows8. Допустим, мы открыли его в боковой панели и хотим как-то узнать из нашего обычного (Desktop) приложения, а какую же оно показывает температуру. Если посмотреть на окно «Погоды» с помощью Spy++ мы увидим родительское окно типа Windows.UI.Core.CoreWindow и вложенное в него окно Web Platform Embedding. А значит перед нами Modern-приложение написанное на HTMLJs и живущее внутри встроенного компонента браузера. То есть вышеописанные манипуляции с Windows-контролами не имеют смысла — их в этом окне попросту нет, поскольку всё его содержимое рендерится целиком.

Но давайте же всё-таки попробуем вытащить из него текущую температуру.
Читать полностью »

Здравствуйте.

Недавно мне прислали ссылку на статью, где был показан пример реализации простой и в то же время культовой игры «Змейка» в контроллере семейства Siemens s7-300. И я подумал: все знают о таких монстрах, как Siemens, ABB и т.д. Но современные отечественные разработки остаются в тени.

В этой статье я покажу, как за полчаса реализовать алгоритм игры «Змейка» на российской АСУ ТП «КВИНТ 7», разработанной в НИИТеплоприборе. И для большего интереса игра будет целиком реализована на языке технологического программирования FBD, которому уделяется незаслуженно мало внимания.

Итак, начнем:
Читать полностью »

image

От переводчика

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

Данная серия статей рассчитана на тех, кто умеет писать на python в целом, но плохо представляет как этот язык устроен изнутри. Собственно, как и я три месяца назад.

Небольшой дисклеймер: свой рассказ я буду вести на примере интерпретатора python 2.7. Всё, о чем пойдёт речь далее, можно повторить и на python 3.x с поправкой на некоторые различия в синтаксисе и именование некоторых функций.

Итак, начнём.
Читать полностью »

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

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

Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше?
Читать полностью »


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