В еженедельном обзоре — новое интервью Юрия Зиссера о возможностях ИТ-индустрии, размышления об эльфийских и мейнстримовых языках программирования, методика изучения английского для айтишников, а также материалы по веб-безопасности, природе багов и устройству веб-сервера NGinx.
Читать далее
1. Интервью с Зиссером
Моя человеческая слабость невольно заставляет отслеживать судьбу Юрия Зиссера, над которым висит дамоклов меч нормализации. И вот из последнего, из наболевшего: что может, а чего не может отечественное ИТ:
Вспомним хотя бы недавнюю историю с предупреждением Минюста компании «ТУТ БАЙ МЕДИА» о незаконности риэлторского сервиса. Во-первых, это не мы его ведем, а Bling.by — мы их только рекламировали. Во-вторых, этим занимается полмира, но предупреждение вынесли только нам. Это просто абсурд.
Или история с сайтами знакомств. Декрет президента № 3 «О некоторых мерах по противодействию торговле людьми» от 9 марта 2005 года де-факто запретил сайты знакомств. Надо получать лицензию брачного агентства, а дальше — каждые три месяца сдавать списки иностранцев, которые знакомились на нашем сайте, а также номера паспортов всех беларусов, на нем зарегистрированных. Понятно, что эти требования невыполнимы. А у нас на тот момент было столько знакомств, сколько на Mamba. После предупреждения Генеральной прокуратуры мы были вынуждены закрыть этот сервис. В результате теперь все беларусы знакомятся на зарубежных сайтах, а наше государство от этого радуется и считает, что так правильно.
Есть еще пример — сервис интернет-такси UBER. Во всем мире он законен, а у нас, видимо, будут и с ним бороться.
А в это время, где-то в коридорах власти, наконец утвердили перечень государственных программ
научных исследований на 2016–2020 годы, где на ИТ завязано громадье планов. Вот краткий список того, что в Беларуси свершится в ближайшую пятилетку:
Исследование и разработка интеллектуальных систем анализа информации, в том числе сверхбольших объемов данных, искусственного интеллекта, когнитивных процессов и робототехники; распознавание и обработка образов, сигналов, речи и мультимедийной информации; разработка методов высокопроизводительных вычислений и «облачных» технологий; математическое и компьютерное моделирование и проектирование высокотехнологичных изделий и процессов.
2. Эльфийский язык программирования
Вечная, как жизнь, дискуссия о правильных языках программирования:
Как известно, если ты серьёзный программист, синтаксический сахар тебе не нужен, это баловство. Ещё несколько лет назад Python считался детской погремушкой именно из-за этого. Чем вам фигурные скобки мешали? Ребячество какое-то придумали: заменить фигурные скобки на отступы табуляции. Сказал солидный дядя. Мальчики согласно покивали, виновато глядя в потолок. Через год все работали в коллективах где Питон основной язык.
Правильное развитие языков какое? А вот какое.
Дальше речь от синтаксического сахара переходит к синтаксическому мясу. Для иллюстрации приведу два коммента оттуда, сначала выпад:
Думаю, язык программирования должен быть максимально приближен к человеческому, дабы понимание языка было простым и чистым как мысли программиста. А писать всякие закорючки и при этом помнить их все все равно что изучить еще японский (грубо говоря), а потом уже на нем начать программировать, то есть два языка учить.
Ответка:
Вы правы и неправы одновременно. Ещё раньше, чем мы начали программировать, мы брали листок бумаги и рисовали закорючки. Да и сейчас в офисе можно встретить доску на которой идёт брэйнсторм, и там в основном стрелочки и каракули. Это тоже очень по-человечески.
Тут уместно вспомнить про ФП как хорошую альтернативу всему, что мы учили в 20 веке, в связи с этим хороший момент набросить цитатой взятой отсюда:
Помните, было такое «структурное программирование»? Люди в чатиках конца шестидесятых с**лись на тему СП vs. GoTo, кричали «considered harmful!», писали посты на своих печатных машинках, такая движуха была. И где оно все, почему прекратились с**чи? Все основные языки впитали в себя (или взросли на) СП, и тема рассосалась. Наблюдая за интенсивностью тем об ФП на разных форумах, в ЖЖ, в журнале ПФП и прочих интернетах, в этом году могу констатировать аналогичную ситуацию: ФП как темы больше нет, расходимся. Все основные языки впитали в себя (или взросли на) ФП, по крайней мере полезные его части (первоклассные функции, ФВП, лямбды, замыкания, иммутабельность, произведение типов, копроизведение типов, экспонента, применение этого всего в первую очередь в виде map/filter/reduce), а бесполезные части оказались выкинуты на задворки, в уголке музея эзотерики на них всегда можно будет полюбоваться, но в основном только там. Думаете, другая часть ФП еще себя покажет, и расширение линз Кана вправо-вверх вдоль контравариантного функтора еще выстрелит? Не будет этого, dead end.
Фрагмент полемики из комментов:
Да в мейнстриме вообще всё плохо. Все только многозначительно кивают на какие-то «мейнстримовые языки», а копнешь — одно с убогим синтаксисом, отсуствием типизации и генерит тормозные бинарники размером больше, чем у хаскелла (и нет на мипсе), и устарело лет на тридцать в момент появления на свет, второе никак не родится, ломает совместимость и есть мнение, что слишком сложно для идиота и не слишком умное для не-идиота, т.е не найдет свою ЦА (и нет на мипсе), третье имеет причудливый синтаксис, убогую типизацию, медленно компилирует и вообще гвоздями прибито к JVM-у (и нет на мипсе)…
Короче — как был один Си, так и остался в этом вашем мейнстриме. Убогий, но прекрасный, как первая рыба, выбравшаяся на сушу.
В догонку:
- Как я нашел лучший в мире язык программирования.
- Сравниваем Nim и Rust.
- Программная транзакционная память в Scala.
- Семь смертных грехов разработки ПО.
3. Советы айтишникам, изучающим английский
Сама статья выложена здесь:
27 лет назад автор данной статьи поменял класс в школе с франкоязычного на англоязычный. Два летних месяца мне пришлось заниматься с опытным преподавателем, но зато осенью я был на голову лучше своих новых однокласников, которые уже «какбэ» 3 года зубрили эти диковинные заморские слова. С тех пор я успел и поучиться в Киевском Лингвистическом Университете, и соприкоснуться с мудростью одного из величайших лингвистов Констатина Тищенко (дай ему Бог долгих лет), говорившего на 90 языках, а также получить магистра по English Studies из немецкого университета, ну, и поработать с английским в ИТ на протяжении последних 10 лет.
С тех пор, учитывая, что я занимался не только английским, но и десятком других языков, включая латинский, санскрит и японский, в моей голове четко выкристаллизовалось ОНО, что я тут и представлю в виде расширеных советов.
Программисты предпочитают неформальное обучение — IT Expert http://t.co/HO3etVbxXZ
— Программер (@ProgrammerCody) June 12, 2015
4. Чёрный, как уголь, ИТ
Зарисовка из жизни современной Украины, имеющая противоположный конец нашей отечественной эпопее:
Как и в традиционной экономике, в интернет-бизнесе тоже есть светлая и темная стороны. В гэмблинге, порноиндустрии и проектах вроде Silk Road, чей основатель недавно получил пожизненное заключение, вращаются огромные деньги.
История про то, как киевлянин создал сайт с рекламой проституток и заработал $2 млн за два года.
Здесь было всё «по честному», но бывает наоборот:
Арестованы владельцы фальшивого сайта знакомств, где зарегистрированы 2,7 млн мужчин и только одна женщина. http://t.co/7k4CiHZS98
— Гиктаймс (@GeekTimes_ru) June 10, 2015
5. Неделя NGINX
На прошлой неделе была опубликована целая серия статей об отечественном веб-сервере NGinx:
- NGINX — История перерождения под Windows.
- NGINX изнутри: рожден для производительности и масштабирования.
- Увеличиваем производительность с помощью SO_REUSEPORT в NGINX.
- Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня.
6. Web-безопасность
Такая же пачка свежих статей по веб-безопасности:
- (Не)безопасный frontend.
- Под прессом. Ломаем и защищаем Wordpress своими руками.
- Топ-3 частых ошибок, обнаруженных при аудите безопасности сайта.
7. Про дивный PHP
Подборка двух свежих статей по специфике PHP — это не очередное унижение языка, а скорее просто более пристальное изучение его багофич.
Из последнего вытащил такой прикольный код — много думал:
$ php -r 'var_dump([] < new stdclass); var_dump([] > INF);' bool(true) // пустой массив меньше пустого класса bool(true) // пустой массив больше бесконечности
8. Новое поколение
После череды поколений яппи, хиппи и хипстеров, грядет новое якки, к которому в том числе относят программистов с их любовью к своему делу, ярко выраженному творческому подходу и непонятностью (чуждостью) для окружающих, и при этом приличными зарабатываемыми деньгами. По-русски про это рождающееся поколение можно почитать вот здесь.
Bahaha: D «Yuccies are the cultural offspring of yuppies and hipsters.» http://t.co/Gpjihthz55
— Kat Ingalls (@katingalls) June 13, 2015
Обобщая, можно сказать, что якки отчасти — это расширение отечественного «креакла». И, конечно же, без классического противопоставления «отцы и дети» никуда — более традиционные группы населения как минимум не понимают якки и их постмодерновую сферу деятельности, а как максимум — не любят за бешенные барыши, которые те, играючи, пожинают на ниве НТП.
9. Размышлизмы о багах
Цитирую далее материал При достаточном количестве денег все ошибки выплывают на поверхность:
Утверждение 1:
Эрик Рэймонд (Eric Raymond) в своем эссе «Собор и базар» сказал знаменитую фразу:
«При достаточном количестве глаз все ошибки выплывают на поверхность».
Имеется в виду, что программное обеспечение с открытым исходным кодом по определению содержит меньше ошибок, чем ПО с закрытым исходным кодом, потому что код доступен для изучения всем и каждому. Рэймонд назвал это наблюдение «законом Линуса».
Утверждение 2:
Это и есть основная идея. Если вы хотите найти ошибки в своем коде, на веб-сайте, в приложении, сделайте это старым добрым способом — заплатите за проверку. Другими словами, купите себе глаза.
Хотя я приветствую любые усилия, направленные на повышение безопасности, и абсолютно согласен с тем, что это битва, которую нужно вести сразу на нескольких фронтах, как коммерческих, так и некоммерческих, мне не дают покоя некоторые моменты, связанные с тем, что платить деньги за поиск ошибок сегодня становится нормой. Какие могут быть последствия?
И в самом деле, какие? Ответ вот здесь.
В догонку: Почему людям не нужна корректность и на 100% рабочих программ, похоже, вообще не бывает.
10. О среде обитания программера и его верных помощниках
Тяжела работа программиста и неказиста, поэтому в последнее время появилось много сопряженных с ним ролей, задача которых помочь кодеру не терять фокус на главном, частично разгружая его от всего второстепенного.
Сегодня статьи о двух подобных сопряженных ролях.
Бизнес-аналитики в Agile — зачем, почему, как:
Большинство людей считают, что для разработки какой-то программы нужны только программисты, ведь именно они пишут код и воплощают мечту заказчика в реальность. Но между тем, что говорит заказчик и тем, что в итоге сделает программист, — целая пропасть. Не потому что они — плохие люди или не хотят общаться и понимать друг друга, а потому что заказчик мыслит в масштабе цели, думает, что должна делать программа, для чего он хочет ее использовать. А программист обязан думать, как программа должна работать, откуда брать данные, как назвать новую колонку в таблице данных и т. д., проще говоря, думать о деталях реализации.
Поскольку и программисты, и заказчики — люди занятые, выяснение деталей проходит в форме раундов «вопрос — ответ», при этом нигде не фиксируется, когда и почему было принято такое решение или как оно изменялось со временем. Но главный минус такой коммуникации — разработчик спрашивает «как?», а заказчик может ответить только на «зачем?», а остальное его уже мало интересует. Более того, обычно, отвечая на «как?», заказчик заводит себя в тупик, потому что не может и не обязан знать, сколько вариантов существует для выполнения его потребности и какой оптимален. Программист же всего лишь делает, что ему сказали. В итоге складывается ситуация, когда недоуменный клиент спрашивает, почему приложение не вписывается в его картину мира, а недоуменный программист отвечает, что так и просили сделать.
С каким бы приложением ни была связана ваша работа и в каком бы качестве вы ни присутствовали в процессе, рано или поздно наступит тот момент, когда к вам впервые явится пользователь и, доверчиво моргая, спросит: а почему у меня пимпочка не пимпает? Чтобы пимпочка пимпала, — скажете вы, погибая от умиления (поставил! пользуется!), — нужно сперва покрутить крутёлочку.
К десятому пользователю умиления поубавится. К пятидесятому вы, вероятно, заведете пару-тройку шаблонов для ответа на наиболее популярные вопросы. К сотому наймете с полдесятка студентов на должность инженеров технической поддержки и вздохнете с облегчением — ровно до того момента, пока один из них не образуется у вашего рабочего стола с вопросом: а у меня тут пользователь пришел, и у него пимпочка не пимпает — почему? Крутёлочка? Какая крутёлочка?
Иллюстрации: twitter.com, avaxnews.net, nginx.com
*Мнение колумнистов может не совпадать с позицией редакции.
**В цитировании сохранены авторская орфография и пунктуация.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.