Showing posts with label IT. Show all posts
Showing posts with label IT. Show all posts

Уважаемые коллеги!
Приглашаем вас принять участие в Первой ежегодной международной научной конференция «IT + Биоинжиниринг», которая пройдет 26 мая при поддержке Веб Агентства "Техно Медиа" на базе Бизнес-инкубатора Тихоокеанского государственного университета.
В рамках конференции состоится презентация проектов студентов и молодых ученых России и КНР и будут организованы круглы столы на темы «Тенденции рынка приложений» и «Применение мобильных приложений для решения актуальных задач в области медицины», где и состоится обсуждение достижений и проблем, с которыми сталкиваются разработчики в данных сферах с целью обмена опытом и обнаружения совместных путей их решения. Результатом конференции является резолюция, которая будет направлена председателю Ассоциации вузов России и Китая (АВРИК).
Для принятия участия в конференции просим вас направить студентов и аспирантов смежных областей и интересующихся данной сферой. Заявки на участие принимаются до 15 мая. Желающие выступить с проектом просим сообщить тему до 15 мая для внесения в список выступающих на адрес: info@tmedia.pro
http://vk.com/itlifesciences

Профессии прошлого

1. Бухгалтер
Умные программы справляются с рутинными бухгалтерскими операциями быстрее и точнее живых сотрудников, не нуждаются в зарплате и пенсионных отчислениях.

Narrative Science превращает данные в истории автоматически. Искусственный интеллект уже сегодня

Генерирующее тексты программное обеспечение обыгрывает журналиста в тех случаях, когда конечный продукт — информационная заметка с большим количеством цифр и типовых данных. Так, американская компания Narrative Science с помощью программы, разработанной в Северо-Западном университете (штат Иллинойс), производит отчеты о бейсбольных матчах. А потом продает их профильным сайтам.
Сайт Narrative Science





Scalatron - Learn Scala With Friends

Bots
Scalatron is a programming game in which bots, written in Scala, compete against each other in a virtual arena.
Sounds like fun! How would that work?
…get together with some friends, set up a server, attach a projector, order some pizza and start hacking! A Scalatron hack-a-thon may be the quickest and most entertaining way to get a group of programmers into Scala.
The rules of the game are clearly explained in the docs, so you can figure out how to code the Master bot with his Mini-bots and their interactions with Fluppet, Snorg, Zugar, and Toxifera.
You can also checkout these samples to get a better feeling on how a bot would get coded.
A Scalatron evening sure sounds like fun, so checkout if there’s one happening in your area, or maybe even host one?

Новая подборка популярных статей

Уровень энтропии, доступный для данного клиента или сервера, может в некоторых случаях оказаться недостаточным.
[RFC4251]
Новая подборка популярных статей

Искушение интернетом

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

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

Tomcat - The Definitive Guide

Tomcat (в старых версиях — Catalina) — программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.
Tomcat
 позволяет запускать веб-приложения, содержит ряд программ для само-конфигурирования.
Tomcat разрабатывается фондом Apache Software Foundation под лицензией Apache License и является программой с открытым исходным кодом.
Tomcat
 используется в качестве Servlet-контейнера в сервере приложений JBoss.

Тест Джоэла: 12 шагов к лучшему коду

Автор: Джоэл Сполски
Переводчик: Марианна Евсеева
Редактор: Дмитрий Майоров
9 августа 2000

Вы когда-либо слышали о программе SEMA? Это весьма эзотерическая система, предназначенная для определения того, насколько хороша команда разработчиков. Нет,погодите, не ходите туда, а то потратите лет шесть только чтобы понять, что там написано. Я предлагаю вам свой собственный, совершенно безответственный и несерьёзный тест для определения качества команды разработчиков. Главное его преимущество в том, что он отнимет у вас от силы три минуты. Сэкономленного времени хватит на то, чтобы получить медицинское образование.

Гибкая цветная электронная бумага производства Plastic Logic и РОСНАНО

Специалисты британской компании Plastic Logic и российской РОСНАНО организовали совместную демонстрацию во время Technology Open Day. Презентация была посвящена рассмотрению гибких цветных дисплеев, также гибких дисплеев, предназначенных для просмотра анимированных изображений, основанных на технологии «электронной бумаги». Пока нечасто используются эти технологии для электронных книг, в основном они применяются для дисплеев, способных отображать несколько градаций серого, также дисплеев, не дружественных к анимации и видео.



Размер дисплея немного уступает формату А4, его особенности обеспечивают отображение 4096 цветов при разрешении 75 точек на дюйм. Участниками Technology Open Day были вице президент Plastic Logic по технологическому проектированию Питер Фишер, вице-президент Технологического центра в Кембриджском университете Питер Китчин, старший менеджер по вопросам разработки дисплеев Plastic Logic Дэвид Гэмми, старший научный руководитель из Plastic Logic.


Питер Фишер отметил, что производить данные цветные экраны в массовом порядке можно начать уже с этого года. Стоит отметить, что именно Plastic Logic принадлежит выпуск известного «школьного планшета» - электронной книги, которую пытаются внедрить в российскую сферу образования.





Искусство пасти котов - книга о лидерстве и руководстве

"Искусство пасти котов" - это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды программистов. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач. В таком случае без этой книги вам не обойтись. А может быть, вы - опытный менеджер, желающий пересмотреть свои принципы лидерства? Тогда, опять же, эта книга для вас. Вне зависимости от возраста, пола и социального статуса, она поможет вам укрепить свои позиции в роли лидера программистов. Материал изложен довольно компактно и легко укладывается в голове. Стоя в книжном магазине и раздумывая, что же купить, задайте себе один простой вопрос: "Нужно ли мне совершенствовать свои лидерские навыки?" Полагаю, вы ответите: "Да", - а значит, моя книга окажется для вас небесполезной.

Настоящая книга является уникальной по своему содержанию, поскольку посвящена достаточно важной теме – рассмотрению особенностей организации работы и взаимоотношений руководителя и разработчиков программного обеспечения. Несомненным достоинством книги является описание психологических особенностей лидерства и руководства в коллективах программистов, которых автор шутливо называет «котами». Рассчитанная на программистов и руководителей софтверных проектов, книга содержит многочисленные советы и практические рекомендации, которые ориентированы на успешное выполнение коллективных проектов.
How not to cat
Александр Леоненков:
Книга состоит из 10 глав, в которых на доступном уровне рассмотрены многочисленные особенности руководства коллективом программистов при разработке ПО. Стиль изложения материала является неформальным, что приближает книгу скорее к очеркам, чем к учебному пособию. При этом центральной фигурой в книге является собственно руководитель, который явно или неявно должен быть лидером на всех этапах разработки и создания ПО. Автор приводит анализ типичных ошибок, которые обычно допускают в должности руководителя бывшие программисты. При этом изложение материала поясняется наглядными примерами в форме врезок, содержащих описание забавных историй из жизни автора. Как сформировать в себе качества лидера и правильно проводить совещания, как организовать успешное выполнение проекта и конструктивные взаимоотношения с руководством компании – на эти и другие вопросы можно получить ответы на страницах книги. Мне понравился шутливый, граничащий порой с откровенным сарказмом, стиль изложения нетривиальных вопросов, связанных с выполнением современных IT-проектов. Можно без преувеличения сказать, что книга, содержащая детальное изложение многочисленных психологических аспектов процесса разработки ПО и практические советы автора, будет с интересом прочитана всеми категориями разработчиков программного обеспечения. При этом сам процесс чтения книги несомненно доставит эстетическое наслаждение.

Андрей (Санкт-Петербург, 30 лет):
Классная книга. Написана простым и живым языком. ОЧЕНЬ полезна для руководителей ай-ти компаний


Еще про котеек: http://vgrubber.blogspot.com/2013/12/blog-post_345.html

А лучше почитайте про информационные технологии

Другие интересные статьи:

Киборги в реальной жизни: человек заменил потерянный глаз беспроводной камерой (видео)

Разговор с Алексеем Кудриным про Стабфонд и Фонд Национального Благосостояния. С картинками.

Эмоциональное выгорание и как с ним бороться
Тест Джоэла: 12 шагов к лучшему коду

Статьи по теме "Информационные технологии"

Руководство по Scala для Java программистов

1 Введение
Этот документ дает возможность быстро ознакомиться с языком программирования и компилятором Scala.Этот документ предназначен для людей, которые уже имеют опыт в программировании и хотят посмотреть, что они могут сделать в Scala. При этом необходимо наличие основных знаний объектно-ориентированного программирования, особенно на Java.
2 Первый пример
Как первый пример мы будем использовать стандартную программу Hello world. Она не очень интересная, но позволяет легко продемонстрировать использование инструментов Scala без особого знания языка. Вот как она выглядит:
object HelloWorld {

def main(args: Array[String]) { println("Hello, world!" )
} }

Top 20 Web Frameworks for the JVM


Web application frameworks are designed to support the development of dynamic websites, web applications and web services, by alleviating the overhead associated with commonly performed activities, boilerplate code, etc. For example, many frameworks provide facilities for database access, templating, session management, and more. Since the early days of Java, there have been many frameworks and libraries that have tried to improve web developers productivity and this trend has continued with JVM languages like Groovy, Scala, JRuby, Clojure, and more.

Using the new community research tool, we at InfoQ want to get YOUR opinions on the relative importance and maturity of a variety of web frameworks that are targeted for the JVM. Please vote by dragging each practice across two dimensions – how important is the framework relative to the other frameworks, and how much is it actually used in real teams and projects.

This is an initial list - please tell us which other frameworks we should include in future versions of this community survey so we can improve the tool and provide information that will be useful to the community.

The frameworks are:
(*) Vert.x also supports JavaScript and Python.


The Winner is: Spring MVC

Лучшие шутки программистов (Best Programming Jokes)

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

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

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

Юная леди сидела и думала: "Я рада, что парень поцеловал меня, но жалко, что бабушка дала ему пощечину!"

Юный программист сидел с удовлетворенной улыбкой на лице. Он думал себе: "Жизнь хороша. Как часто парню выдается шанс поцеловать красивую девушку и врезать своему Проектному менеджеру в одно и то же время"

--

A young Programmer and his Project Manager board a train headed through the mountains on its way to Wichita. They can find no place to sit except for two seats right across the aisle from a young woman and her grandmother. After a while, it is obvious that the young woman and the young programmer are interested in each other, because they are giving each other looks. Soon the train passes into a tunnel and it is pitch black. There is a sound of a kiss followed by the sound of a slap.
When the train emerges from the tunnel, the four sit there without saying a word. The grandmother is thinking to herself, “It was very brash for that young man to kiss my granddaughter, but I’m glad she slapped him.”
The Project manager is sitting there thinking, “I didn’t know the young tech was brave enough to kiss the girl, but I sure wish she hadn’t missed him when she slapped me!”
The young woman was sitting and thinking, “I’m glad the guy kissed me, but I wish my grandmother had not slapped him!”
The young programmer sat there with a satisfied smile on his face. He thought to himself, “Life is good. How often does a guy have the chance to kiss a beautiful girl and slap his Project manager all at the same time!”
~~~~~~~~~~~~~~~~~~~~~~~~~
A computer science student is studying under a tree and another pulls up on a flashy new bike. The first student asks, “Where’d you get that?”
The student on the bike replies, “While I was studying outside, a beautiful girl pulled up on her bike. She took off all her clothes and said, ‘You can have anything you want’.”
The first student responds, “Good choice! Her clothes probably wouldn’t have fit you.”
~~~~~~~~~~~~~~~~~~~~~~~~~
If you put a million monkeys at a million keyboards, one of them will eventually write a Java program.
The rest of them will write Perl programs.
~~~~~~~~~~~~~~~~~~~~~~~~~

Закон Дырявых Абстракций


Автор: Джоэл Сполски
Переводчик: Семён Хавкин
Редактор: Маргарита Исаева
23 марта 2000

Есть в Интернете инженерное волшебство, на работу которого мы с вами полагаемся каждый день. Оно заключено в сетевом протоколе TCP, одном из основных кирпичей, из которых выстроен Интернет.
TCP — способ пересылки данных, который считаетсянадёжным. Это значит: если вы с его помощью отсылаете сообшение по сети, оно обязательно прибудет на место в неискажённом виде.
Мы все пользуемся TCP для повседневных нужд: загрузить страничку с веба, послать электронную почту. Надёжность TCP позволяет всякому Остапу Бендеру из Восточной Африки рассылать по миру спам наивысшего качества. О счастье, о радость!
Посмотрим теперь на другой, ненадёжный, метод пересылки данных под названием IP. Тут уже никто не обещает, что посылка доедет до места назначения, и что по дороге с ней ничего не случится. Отправляя через IP кучу сообщений, не удивляйтесь, если половина из них потеряется, а из остальных часть окажется совсем не тем, что посылалось: может, они будут содержать фотографии прелестных котят, но скорее всего — просто нечитаемый мусор, вроде столь любимого нами всеми тайваньского спама.
Волшебство же состоит в том, что TCP основан на IP. Иными словами, TCP обязуется работать надёжно, используя лишь ненадёжные детали.
Для иллюстрации волшебства, рассмотрим аналогичный, хотя и не вполне обычный, сценарий из реальной жизни.
Предположим, некая дама отправляла подводами из Петербурга в Москву диван, чемодан, саквояж и т.д. Часть подвод сломалась и до Москвы не доехала. Часть подвод опрокинулась по пути, разбив картину, картонку и зеркала. Подводы добирались до Москвы не в том порядке, в каком выезжали из Петербурга, поскольку некоторых задержали страшные лесные разбойники, и вообще возницы выбирали разные маршруты. А теперь представим, что даме предлагается новая услуга: Красная Стрела, которая гарантирует, что багаж (а) прибудет на место (б) в целости и сохранности (в) и в нужном порядке. Но волшебным образом Красная Стрела не использует, как вы подумали, железной дороги, а нанимает тех самых возниц с подводами. Красная Стрела организует работу возниц следующим образом. Состояние багажа каждой подводы тщательно проверяется. В случае повреждения диван, чемодан и проч. заменяются со склада точно такими же. Подводы выстраиваются в правильном порядке. Если страшные лесные разбойники сумели захватить Бологое и перерезать дорогу, то Красная Стрела перенаправляет подводы другим путём, и дама ничего не подозревает. Ей просто кажется, что багаж прибывает немного медленнее, чем обычно; а об ужасных событиях в Бологом даме знать необязательно.
Примерно так TCP и работает. По-учёному это называетсяабстракция: упрощённое описание процесса, механизм которого остаётся скрытым. На самом деле, значительная часть программирования заключается в построении абстракций. Что такое, допустим, строковая библиотека? Это способ сделать вид, что компьютеры умеют легко работать со строками, яко бы с числами. Что такое файловая система? Это способ сделать вид, что жёсткий диск состоит не из быстро вращающихся намагниченных тарелок, которые умеют сохранять биты в определённых местах, а якобы представляет из себя иерархическую систему папок внутри папок, внутри которых отдельные файлы содержат, в свою очередь, байтовые цепочки.
Вернёмся к TCP. Я тут для простоты слегка загнул, и у кого-то, может быть, от этого уже пар из ушей пошёл. Короче, я сказал, будто TCP гарантирует, что сообщение прибудет на место. На самом деле, это не так. Если ваш любимый хомячок перегрызёт сетевой кабель, так что никакие пакеты IP не дойдут до компьютера, то TCP ничего не сможет поделать, и сообщение не придёт. Если же вы поругались с сетевым администратором, который в отместку включил ваш компьютер в перегруженный хаб, то много пакетов IP потеряется, и хотя TCP будет работать, но так медленно, что за время пути собачка, сами понимаете, того.
Вот это я и называю дырявой абстракцией. TCP пытается абстрагироваться от ненадёжной сети полностью, но иногда эта сеть все-таки просвечивает сквозь дыры в абстракции, так что абстракция не всегда защищает от необходимости иметь дело с глубокими подробностями. Это всего лишь один пример того, что я назвал Законом Дырявых Абстракций:
Все нетривиальные абстракции дырявы.
В абстракциях обнаруживаются дыры. В одних немного, в других целая куча. Эти дыры постоянно просвечивают, протекают, абстракции не срабатывают. Вот ещё примеры.
  • Простой пример: итерация по большому двумерному массиву может идти с совершенно разной скоростью, смотря как он обходится: горизонтально или вертикально. Как и в случае с поленом, которое легче раскалывать вдоль волокна, а не поперёк, одно направление может вызывать значительно большеотказов памяти, чем другое, а отказы обслуживаются долго. Даже программистам на ассемблере приходится делать вид, что у компьютера большая плоская память, но в системе виртуальной памяти это всего лишь абстракция, в которой при отказе памяти образуется дырка, так что отдельные обращения к памяти могут занимать значительно больше наносекунд, чем обычно.
  • Язык SQL был создан, чтобы абстрагироваться от процедурных шагов, нужных для запросов к базе данных. Вместо этого он позволяет описать, что именно запрашивается, и пусть база данных сама догадается, какие процедурные шаги для этого нужны. Но в иных случаях некоторые запросы SQL в тысячи раз медленнее, чем другие, логически им эквивалентные. Известный пример: некоторые сервера SQL значительно быстрее отрабатывают запрос where a=b and b=c and a=c , чем where a=b and b=c , хотя результат, конечно, тот же самый. Программисту на SQL вроде бы и не следует заботиться о процедуре, только о спецификациях. Но иногда абстракция протекает, что приводит к страшным потерям в производительности, так что приходится лезть во внутренности планировщика запросов и смотреть, что там не так, и как заставить его работать эффективнее.
  • Хотя сетевые библиотеки, вроде NFS и SMB, позволяют работать с файлами на других машинах как на своей, иногда связь становится очень медленной или просто падает, и дальний файл перестаёт прикидываться местным; а ведь программисту надо писать код так, чтобы и в этой ситуации всё работало. Значит, в абстракции "всё равно, где лежит этот файл" естьдырки.Вот пример для системных администраторов Юникса. Если домашние директории лежат на дисках, подмонтированных по NFS (одна абстракция), а пользователи создают файлы .forward для автоматической пересылки почты в другое место (вторая абстракция), и сервер NFS падает, а почта всё прибывает, то никуда она не перешлётся, поскольку файл .forward будет недоступен. Так сквозь дырку в абстракции письма могут просыпаться на пол.
  • Строковые классы должны представлять строчки в виде граждан первого класса. Они абстрагируются от того, что строки — штуки сложные, и дают возможность работать с ними легко, ну прям как с числами. Почти все строковые классы C++ перегружают оператор +, и для конкатенации строчек можно писать s+"bar". Но как ни старайся, никакой на свете строковый класс C++ не даст вам написать"foo"+"bar", поскольку строковые литералы в C++ всегда имеют тип char*, а не string. Абстракция прохудилась так, что языком C++ её не заткнёшь. (Интересно, что историю развития C++ можно описать как историю затыкания дырок в абстракции строк. Уж не знаю, отчего бы не добавить к языку элементарный класс строчек.)
  • И ещё: несмотря на дворники, мощные фары, крышу и обогреватель, которые защищают (абстрагируют) от непогоды, под дождём быстро ехать нельзя; приходится иметь дело с водяной подушкой, а иногда ливень такой, что на дороге ничего не видно, и надо остановиться; так что и погоду, из-за закона дырявых абстракций, полностью не абстрагируешь.
Закон дырявых абстракций означает, к сожалению, что абстракции не так сильно упрощают нашу жизнь, как хотелось бы. Если я обучаю программистов C++, было бы здорово, если бы мне не нужно было рассказывать им проchar* и арифметику указателей, а можно было сразу перейти к строкам из стандартной библиотеки темплейтов. Но в один прекрасный день они напишут "foo"+"bar", и возникнут странные проблемы, а мне придётся всё равно объяснить им, что такое char*. Или они попытаются вызвать функцию Windows с параметром типа LPTSTR и не смогут, пока не выучат char* и указатели и Юникод и wchar_t и хедерные файлы TCHAR — все то, что просвечивает через дырки в абстракциях.
Когда я обучаю кого-то программированию COM, было бы здорово ограничиться визардом Студии и автоматической генерацией кода, но если что-то выйдет не так, у них не будет ни малейшего понятия, что случилось и как это исправить. Значит, надо рассказывать им про IUknown иCLSID и ProgIDS и... о боги!
При обучении программистов ASP.NET было бы здорово сказать: мол, дважды кликните мышом на штучку, а затем пишите код, который должен отрабатываться на сервере, когда пользователь кликнет на эту штучку. И правда, ASP.NET абстрагирует разницу между написанием кода HTML для отработки нажатия на гиперссылку (<a>) и кода для отработки нажатия на рисованную клавишу. Проблема: разработчикам ASP.NET пришлось скрыть тот факт, что в HTML нету способа отсылать форму из гиперлинка. Они обходят это, генерируя несколько строчек на JavaScript и добавляя к гиперлинку функцию onclick. Но эта абстракция дырява. Если пользователь отключит JavaScript, то приложение на ASP.NET не будет правильно работать; и если программист не знает, что именно абстрагировалось ASP.NET'ом, он не поймёт, в чём там дело. Из-за закона дырявых абстракций вот что получается: придумает кто-нибудь чудесный новый генератор кода, с которым у программиста работа наконец-то станет эффективной, а ему и говорят: "Сперва научись делать это руками, а потом уж пользуйся генератором, чтобы сэкономить время". Генераторы кода, абстрагирующие разработку кусков кода, так же дырявы, как и все прочие абстракции. А единственный компетентный способ залатать эти дыры - выучить, как работают абстракции, и какие подробности они скрывают. Итак, абстракции экономят наше рабочее время, но не экономят учебное время.
Отсюда парадоксальное следствие: в то время как инструментарий программиста забирается на всё более высокие уровни сложности со всё более развитыми абстракциями, подготовить высококвалифицированного программиста становится всё труднее.
Во время мой первой стажировки в Microsoft я писал строковые библиотеки для Макинтоша. Типичное задание: написать версию функции strcat, которая возвращает указатель на конец новой строки. Несколько строчек кода на C. Всё, что я делал, пришло прямо со страниц К&Р, одной тоненькой книжки про язык C.
Сегодня же для работы над CityDesk'ом мне нужно знать Вижуал Бэйсик, COM, ATL, C++, InnoSetup, внутренности Эксплорера, регулярные выражения (RegExp), DOM, HTML, CSS и XML. Всё это инструменты более высокого уровня по сравнению со старым K&Р, а всё ж таки мне и его надо знать, не то беда.
Десять лет назад можно было мечтать, что на сегодняшний день новые компьютерные концепции облегчат труд программиста. И правда: созданные за эти годы абстракции позволяют работать с проектами на порядки более сложными, чем десять или пятнадцать лет назад, типа программирования GUI и сетевого программирования. Но хотя замечательные инструменты, вроде современных объектных языков визуальных форм, позволяют сделать много и очень быстро, вдруг в один злосчастный день приходится искать течь в абстракции, и на это уходит пара недель. А когда вам нужно найти себе программиста восновном на Вижуал Бэйсике, совершенно недостаточно нанять программиста только на Вижуал Бэйсике, потому что каждый раз, когда абстракции Бэйсика потекут, он не сможет сделать ни шага.
Закон дырявых абстракций крепко держит нас за штаны.
Комментарии переводчика:
*) Отказ памяти у компьютеров происходит, когда искомого не находится в ближней памяти, и приходится лезть за ним в память более далёкую. Это может происходить на различных уровнях иерархии: если нужной информации нет в кэше, надо обращаться в оперативную память, при отказе оперативной памяти — во вторичную память (например, жёсткий диск), и так далее. Такой процесс проваливания на следующие уровни стоило бы по-русски назвать провалами памяти, но увы.
*) К&Р — так программисты нежно называют классическую книжку Кернигана и Ричи, «Язык программирования C». Джоель использует этот термин и в более широком смысле - как стиль программирования.

Текут абстракции? Хотите знать, почему?


Часто в обсуждениях или даже статьях можно встретить понятие «Дырявые (или протекающие) абстракции», которое описал в своей статье Джоэл Спольски. Понятие обычно применяется в моменты, когда что-то перестает работать, начинает выполняться очень медленно или совсем ломается.

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

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

Поясню, как я сам понимаю суть подобных утечек. На самом деле все просто и даже очевидно. Любое решение, любая вещь имеет область применимости и область применения. Так получается потому, что ресурсы ограничены, потому что жизнь коротка, потому что лень заниматься работой, которая все равно в 99,999% никому не будет нужна.

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

Какова причина протечек? Мы так увлеклись решением нашей задачи, что подошли к краю области применения решения. Это может быть и «медленный ORM», и «тормозящая Java», и «сложный Linux», и «ненадежный Windows». Появление протечек абстракций в ваших решениях — это признак того, что вы подошли к краю обрыва, приближаетесь к запретной зоне, возможно, идете не туда или выбрали неправильный инструмент (или неправильно его применяете) для решения для своих задач. Что будет при пересечении границы применимости? Может быть все, что угодно. Если нет четкой границы, есть риск незаметно ее пересечь и оказаться не в самом лучшем положении.

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

На изображении:
Это гравюра Гравюра Фламмариона (в оригинале она монохромная), которую раскрасил Хуго Хайкенвельдер.
… На ней изображён человек, одетый в средневековую одежду пилигрима с посохом в руке. Сквозь занавес небесного свода он рассматривает внутреннее устройство вселенной...

Методы, применимые при разработке

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

Impact mapping Это инструмент стратегического планирования, который помогает выстроить видение и предотвращает его потерю в “супе из фич” по ходу разработки. Карта влияний содержит цели бизнеса на следующую итерацию и помогает команде принимать решения в соответствии с ними. Также она защищает от недопонимания и ложных предположений о функциональности, помогает генерировать альтернативные идеи реализации, не требующие серьезных инвестиций в разработку.

User Stories Формат описания требований в виде Пользовательских историй удобен для приоритезации, хранения и “приглашения” к более детальному диалогу бизнеса и разработки. Такой диалог должен случиться по принципу JIT (“точно вовремя”), то есть в момент, когда решение о разработке функциональности должно быть принято. Это позволяет не инвестировать много времени в детальную проработку требований, которые, возможно, не придется реализовывать. Такой формат использует язык бизнеса, содержит информацию о Персоне и Бизнес-ценности требования, с тем что бы поддерживать фокус разработчиков на видении и целях продукта/релиза/итерации.

User Story Mapping Подход, позволяющий получить высокоуровневую модель требований, которая описывает типы пользователей и сценарии их взаимодействия с продуктом. Создание карты пользовательских историй может быть одним из типов мозгового штурма перед началом разработки продукта. Вместе с тем, этот инструмент может использоваться для планирования релиза и выбора функциональности которая в него войдет.

Kano Weighting Техника “взвешивания” требований, которая использует классификацию пользовательских предпочтений по 5-ти критериям удовлетворенности. Помогает ответить на вопрос — что является минимальным ценным объемом поставки продукта (MVP) и выбрать функциональность для реализации в следующей итерации.

User Story Hamburger Инструмент декомпозиции требований, который позволяет в визуальной форме обсудить технические детали реализации и выбрать оптимальный с точек зрения красоты/сложности/стоимости путь. Полезен владельцам продуктов и разработчикам, которые испытывают трудности в разделении сложных историй на более простые с целью ускорения поставки и получения обратной связи. Так же полезен для явного обсуждения “достаточно великолепных” решений, как с точки зрения людей бизнеса, так и с точки зрения разработчиков.

Specification by Example Инструмент организации приемочного тестирования, который влияет на процесс формулирования и управления требованиями. Позволяет улучшить взаимодействие бизнес-пользователей и разработчиков, повысить качество продуктов, снизить переобработку фич и “холостую” разработку на основе ложных предположений.

Другие интересные статьи:

Киборги в реальной жизни: человек заменил потерянный глаз беспроводной камерой (видео)

Разговор с Алексеем Кудриным про Стабфонд и Фонд Национального Благосостояния. С картинками.

Эмоциональное выгорание и как с ним бороться
Тест Джоэла: 12 шагов к лучшему коду

Статьи по теме "Информационные технологии"

Лучшие Сайты Веб Агентств

Лучшие Сайты Веб Агентств

Примеры Ладно Сложенных Сайтов Веб Агентств Прочитать больше

Это подборка сайтов, выигравших в рейтинге веб агентств

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

1 место















Веб Агентство «Техно Медиа»




2 место










Дизайн-студия Харизма




3 место 




















FIRON

Одна из лучших бесплатных CMS

Drupal (Друпал) — это система управления сайтом (CMS), а также среда для создания вебприложений (CMF).

Посредством этой системы можно строить сайты и вебприложения различного назначения и сложности. Интерфейс пользователя позволяет управлять сайтами на Drupal без знаний HTML, вебвёрстки и языков программирования. Drupal разрабатывается международной командой разработчиков, как программное обеспечение с открытыми исходными текстами, защищенными общественной лицензией GNU. Международный сайт проекта — drupal.org

Разместили для Чосу новые лендинги

Сегодня разместили несколько страниц для компании "Чосу", которая производит салаты.
Лендинги они сделали самостоятельно, но с большой любовью)

Основной: chosu.ru
Доставка: dostavka.chosu.ru 
Салаты: eurosalaty.chosu.ru
Выпечка: vipechka.chosu.ru
Кулинария: kulinarya.chosu.ru
Восточные салаты: vostochnyesalaty.chosu.ru
Овощи: ovoshi.chosu.ru
Мультиварки: multivarka.chosu.ru

Экзаменационные вопросы по курсу

Экзаменационные билеты включают в себя теоретические вопросы и практические задания по темам, изученным в течение семестра. Списки вопросов теоретической части и заданий для практической реализации являются составной частью КИМ УМКД и могут варьироваться по решению кафедры.
Банк вопросов для тестового контроля входит в состав УМКД и может со временем изменяться.

Ниже представлен список экзаменационных вопросов по курсу.
·         Формальные языки и грамматики.
·         Способы задания языков.
·         Классификация грамматик.
·         Регулярные языки и грамматики.
·         Автоматные грамматики
·         Преобразование КС-грамматик.
·         Нисходящий распознаватель КС-языков с возвратом.
·         Восходящий распознаватель КС-языков с возвратом по алгоритму "сдвиг-свертка"
·         Табличные распознаватели для КС-языков.
·         Нисходящий распознаватель без возвратов по методу рекурсивного спуска.
·         Нисходящие распознаватели без возвратов для LL(1)-грамматик.
·         Грамматики простого предшествования.
·         Транслятор, компилятор, интерпретатор. Общая схема работы транслятора.
·         Таблицы идентификаторов. Методы построения таблиц идентификаторов.
·         Лексический анализ.
·         Синтаксический и семантический анализ.
·         Грамматики операторного предшествования.