Pull to refresh
17
0
Илья @namespace

Я делаю разный софт на Go, Python и C++

Send message

Кому и зачем все-таки нужен Go?

Reading time4 min
Views177K
image
Здарова! Короче, последнее время на хабре было много срачей вокруг Go: хороший-плохой, нужен-ненужен, много сравнивали с питоном, много сравнивали с растом, divan0 даже додумался перевести высер «Go vs Haskell» ну и в таком ключе. У меня сложилось ощущение, что из-за хайпа и агрессивного маркетинга языка некоторыми Иванами Данилюками очень мало кто понял, кому и зачем вообще Go может пригодиться, зачем его делали и стоит ли вообще его учить. Я тоже долгое время участвовал в этих срачах, принимая посменно сторону «фанов» языка и сторону оппозиции, но в конце-концов допер, в чем фокус. Сегодня немного потупил у дивана в посте и решил написать вот эту заметочку.

Давайте, пацаны, проходим в пост.
Читать дальше →
Total votes 208: ↑133 and ↓75+58
Comments252

Почему Go — это плохо продуманный язык программирования

Reading time9 min
Views87K
Это перевод статьи юзернейма tucnak с Medium, которая получила обширное обсуждение на reddit.com/r/programming.

image
Окей, заголовок действительно несколько громкий, признаю. Cкажу больше: я прусь от громких заголовков, все из-за внимания. В этой блогозаписи я постараюсь доказать тот факт, что Go это ужасно продуманный язык (спойлер: это так). Я уже играюсь с Go уже на протяжении нескольких месяцев, первый helloworld собрал, кажется, в июне. Математик из меня никакой, но с тех пор прошло уже что-то около 4 месяцев и я даже успел залить на Github несколько репозиториев и собрать немного звезд! Стоит также упомянуть, что у меня совершенно нет опыта применения Go в продакшне, так что любые мои слова о «поддержке кода» или «деплое» не стоит принимать за единственноверную истину.

Я люблю Go, я полюбил его как только впервые попробовал его. Я потратил несколько дней на то, чтобы принять идиоматику, смириться с отсутствием дженериков, разобраться с откровенно странным способом обработки ошибок и вы знаете, всеми этими классическими проблемами, так или иначе связанными с Go. Я прочел Effective Go, много статеек из блога Dave Cheney, следил за всеми новостями из мира Go. Я даже могу сказать, что я достаточно активный участник сообщетсва! Я люблю Go и ничего не могу с этим поделать — Go просто замечательный. Тем не менее, я считаю, что Go это ужасный плохо продуманный язык, который делает совершенно не то, что «продает».
Читать дальше →
Total votes 140: ↑114 and ↓26+88
Comments289

Начинаем любить Go

Reading time5 min
Views27K
Если что, это вольный перевод статьи из блога Jeremy Mikkola.

Эта статья о том, как некоторое время спустя я распробовал и таки полюбил язык Go (аки golang).

Жалобы

Еще год назад у меня было полно жалоб на тот или иной аспект Go. В основном я жаловался на то, что при том, что ты не можешь использовать Go как «настоящий системный язык» (в плане написать-на-нем-операционку), тебе все равно приходится думать о том, о чем обычно приходится думать в системных языках: например, использовать тут указатель или нет. Система типов лежит в непродуктивном ущелье между достаточной строгостью, чтобы стать «автоматичной» (привет адептам Haskell!) и достаточной динамичностью, чтобы не отвлекать (как в Python). Какое-то время я тупил на таких вещах, как проход по юникодовой строке не символами, а байтами, и всякое такое. Я обвинял Go в том, что он так-то не всегда следует своему принципу простоты, так как в нем есть много разных узких штук, вроде make(). И конечно же я жаловался на то, что при работе с Go постоянно приходится повторять блоки if err != nil { return err }.

Поначалу я точно не мог назвать себя фанатом Go.

В техническом плане я согласен с тем, что большинство моих жалоб корректны. Я согласен с тем, что систему типов можно было бы придумать и покруче, а от указателей не помешало бы немного абстрагироваться. Но как только я начинаю понимать, что (не все, но многие) проблемы, на которые я жаловался, на самом деле вроде как даже и не непрягают. В действительности это напоминало нытье на целый лес, из-за пары некрасивых деревьев. В повседневном использовании языка большинство вещей, о которых я так волновался, вообще не давали о себе знать. Я ни разу не встречал баг, так или иначе связанный с проходом по строке. В реальном коде ты почти не кастишь interface{} так часто, как хотелось бы тем ребятам, которые дрочат на системы типов. Ах да, нет беды в том, чтобы вызывать make() в одном месте и new() в другом. Больше всего я ругался на те архитектурные решения языка, которые усложняли создание абстракций. Ты не можешь просто так сделать структуру данных, которая станет альтернативой к встроенным структурам данных (привет кодогенерации!). Без обобщений ты не сможешь строить большие обобщенные абстракции. Скорее всего, это сделано намеренно.
Читать дальше →
Total votes 61: ↑43 and ↓18+25
Comments73

Почему Go и Rust не соперники, а чертовы враги

Reading time2 min
Views49K
Прим. переводчика — это всего лишь перевод статьи, которая отражает альтернативную точку зрения на тему «Go против Rust». Вовсе не обязятельно показывать свое несогласие с мнением автора на карме переводчика, спасибо.

Эта статья — небольшой ответ к записи в блоге Дейва Чейни «Почему Go и Rust не соперники». Я настоятельно рекомендую вам почитать его доводы! Вероятно, вам также понравится замечательная дискуссия на реддите.

На самом деле, Go и Rust решают одну и ту же самую проблему: оба пришли в наш мир, чтобы сделать жизнь программистов проще. Go до безобразия упростил концепт конкурентного (ака многопоточного) программирования и мне кажется, сделал программирование приятным занятием, ведь код на Go действительно приятно читать. В то ж время, Rust подарил нам мощные zero-cost абстракции… для паттерн-матчинга. Звучит оправданно, не так ли? Шутки-шутками, но Rust действительно сделал многие непростые штуки проще (частое заблуждение: он не избавился от них). Его дьявольская система типов позволяет гарантировать безопасность памяти, и в том числе, избавиться от состояния гонки, что звучит очень заманчиво.
Читать дальше →
Total votes 65: ↑43 and ↓22+21
Comments132

Почему Go и Rust не соперники

Reading time2 min
Views20K
В этом небольшом посте я расскажу, почему я считаю, что Go и Rust не являются соперниками.

Почему некоторые считают, что Go и Rust соперники?

  • Rust и Go анонсировали в примерно одно и то же время. Разработку языка Go начали в 2007 и в ноябре 2009 он уже увидел свет. Rust появился несколько месяцев спустя, в 2010, тем не менее Грейдон отмечает, что разработку начали гораздо раньше. В любом случае, у обоих языков достаточно явно различаются влиятельные предшественники. В случае Go, это CSP Хоара, Alef, и Newsqueak Пайка. Rust рассматривается, как расширение семейства ML-языков.
  • Что Rust, что Go — оба считаются безопасными (по части управления памятью). В то время, как это утверждение абсолютно правдиво, оба языка не поощряют использование unsafe кода; что более важно, сегодня мир просто не примет язык без подобных гарантий надежности. Просто так получилось, что Go и Rust — это первые языки, которым удалось доказать, спустя десятилетия доказательств, что в реальности программисты просто не могут безопасно обращаться с памятью вручную.
  • Оба очень молоды: Go достиг 1.0 в 2012, а Rust в середине 2015 года. Оба более, чем амбициозны и явно готовы потеснить «старожил».

Читать дальше →
Total votes 56: ↑39 and ↓17+22
Comments21

Высокоуровневый С или пару слов о Cello

Reading time5 min
Views18K
imageCello — это библиотека, которая сделала высокоуровневый C возможным! Обобщения (generics), параметрический полиморфизм, интерфейсы, конструкторы/деструкторы, сборщик мусора (по желанию), исключения и рефлекция. Да-да, ты не ослышался, все эти плюхи в одном флаконе. Так как Cello построен в пределах стандарта С, в сухом остатке ты получишь все, что нужно живому человеку на земле: высокую производительность, мощный инструментарий и гибкие библиотеки.

Talk is cheap, show me the code!

#include "Cello.h"

int main(int argc, char** argv) {

  /* Stack objects are created using "$" */
  var i0 = $(Int, 5);
  var i2 = $(Int, 3);
  var i2 = $(Int, 4);

  /* Heap objects are created using "new" */
  var items = new(Array, Int, i0, i1, i2);

  /* Collections can be looped over */
  foreach (item in items) {
    print("Object %$ is of type %$\n",
      item, type_of(item));
  }

  /* Heap objects destructed via Garbage Collection */
  return 0;
}

ШОК! Зачем же мне теперь все эти ваши Go/D/Nim/<впиши>, если С на стероидах решает все проблемы рода человеческого?! Хочешь узнать о готовности Cello к продакшну и увидеть еще больше кода? Добро пожаловать подкат.
Читать дальше →
Total votes 54: ↑32 and ↓22+10
Comments58

Go как язык для обучения программированию

Reading time5 min
Views29K
tl;dr: Go достаточно многословный и строгий язык программирования с очень предсказуемой и стремительной кривой обучения, что делает его крайне удачной технологией для обучения программированию новоприбывших!

Я только приехал из штатов, после Google Code-In 2014 Grand Prize Trip, отдохнувший и веселый. Какое-то время думал написать отчет о том, чем призеры там занимались, как нас приняли в Mountain View и обо всем этом, но в какой-то момент понял, что все это совершенно бесполезно. Совсем недавно я по воле случая должен был помочь своему товарищу с домашкой по информатике (там было что-то вроде selection sort). Реализация требовалась на паскале, а я паскаль знаю очень плохо, как впрочем и другие неактуальные, по большей мере, языки программирования, вроде Ada.

В меня ударила молния и укусил гофер, после чего мое тело мутировало в какую-то кунг фу Go хренотень. Иными словами, я задумался о возможном потенциале моего любимчика среди новых технологий, Go, в качестве языка для обучения программированию новоприбывших (читай: школьников). Мне кажется, у Go есть все, что в принципе может быть нужно подобной программе и даже чуточку больше (например, в школе могли бы затрагивать тему параллельного, ни в коем случае не concurrent, программирования, которую не затрагивают, просто потому что FPS вообще не умеет гонять два куска кода одновременно). Под катом, собственно, мои мысли на этот счет. Кстати, пользуясь случаем, хочу передать привет divan0! Большое спасибо за твою просветительскую деятельность в тематическом хабе: Go действительно нуждается в огласке, ведь много людей до сих пор считают, что это какая-то страшная поделка уровня Plan9 из 80-х и к тому же, без обобщенного программирования (в каждой шутке есть доля шутки), а ты рассказываешь людям очень правильные вещи на понятном для них языке! Никакого дисклаймера не будет, но я настоятельно не рекоммендую воспринимать содержимое статьи абсолютно серьезно, ведь я человек, у которого есть целых два гофера: синий и розовый!
Читать дальше →
Total votes 50: ↑35 and ↓15+20
Comments96

KDE проводит кaмпанию по сбору пожертвований

Reading time2 min
Views5.4K
image
Фотография с недавнего спринта команды KDE PIM в Барселона

Привет!

Впервые пишу на хабр гиктаймс, с тех пор, как произошел раскол ресурса. Дело в том, что в данный момент и до 15 января 2015 года, KDE проводит кампанию по сбору денежных средств на развитие проекта. Ни для кого не секрет, что на гиктаймс сидит достаточно много людей, которые активно используют KDE в своей жизни и работе. Разработчики этой организации работают бесплатно и из года в год дарят вам релизы K Desktop Environment, а также уйму других приложений, которые находят свое применение.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments4

Почему я люблю Qt и вы все тоже должны его любить

Reading time5 min
Views279K

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

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

Последнее время я не мог не обратить внимание на популярность темы Qt на хабрике, но тем не менее, в комментах продолжают встречаться люди, которые говорят откровенно лживые и непонятные вещи. Этим постом я хотел развеять малость заблуждений о Qt и рассказать, почему же ты должен пересесть со своих Java/Obj-C/.NET на мягкий и пушистый Qt.

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

Ну, что, поехали?
Поехали!
Total votes 254: ↑138 and ↓116+22
Comments191

Qt 5.2.0 вышел в свет!

Reading time1 min
Views44K


Habrahabr::instance()->sup(tr("Good morning, %1").arg(username));

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

Qt — кросплатформенный фреймворк для разработки приложений и пользовательского интерфейса на С++ с использованием технологий QML (декларативного языка на манер JavaScript & CSS). Ранее поддерживался Trolltech, пока его не купили Nokia, которые продали его Digia — замечательной компании, которая открывает кьюту невероятные возможности.

  • Полноценная поддержка Android *
  • Полноценная поддержка iOS *
  • Десктопные Qt Quick Controls доработаны
  • Баги виджетов исправлены (+ пара новых няшных элементов)
  • Qt Windows/Mac Extras — интеграция с нативным кодом для этих платформ
  • Поддержка Bluetooth на Linux
  • Увеличена производительность рендера Qt Quick (QML)
  • Множество фиксов для OS X Mavericks
  • Модуль Accessibility доступен и на Android


* — за исключением пару очень узких функций, которые недоступны из-за лицензий/правил/etc

Полный текст релиза: blog.qt.digia.com/blog/2013/12/12/qt-5-2-released-the-best-qt-yet
Узнать все о вкусняшке и скачать ее, собсно, можно тута: qt-project.org

P.S. В голове не уложилось, когда позавчера собрал свое десктопное qml приложение под Android, затем под iOS-cимулятор и все это добро работало — начинается новая эра...
Читать дальше →
Total votes 103: ↑92 and ↓11+81
Comments235

Перехват загружаемых ресурсов в QtWebKit или как я оседлал единорога под дабстеп

Reading time7 min
Views14K

Habrahabr::Instance()->hello();


Я давно ничего не писал на хабр, достаточно давно. Но на прошедшей неделе я изрядно пот**хался с модулем QtWebkit 5.1 и решил, что хорошим тоном было бы рассказать вам какой мрак ждет вас там, в случае, если вы захотите попробовать захватить изображение с экрана или что-то в этом роде.

На самом деле, моя задача лежала в том, чтобы сделать браузер, который сохраняет все изображения со всех страниц, которые он браузит. Элементарная задача, на первый взгляд: повесить обработчик на отдельный поток, который перебирает все QWebElement по селектору “img” и отрисовывает их содержание (QWebElement::render()) через QPainter на QImage, который, в свою очередь, сохраняется в файл.

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

Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments16

Сборка Qt 5.1 приложений под Android на Mac, seriously?

Reading time2 min
Views33K
image
Привет, QHabr.

Сегодня хотел бы рассказать вам про адъ, который кроется за сборкой Qt 5.1 приложения для андрюши на Mac OS X. Чтобы никто их хабралюдей ни в коем случае не попал туда на 7-8 часов, я решил сделать подробный step-by-step гайд. Ну что, приступим к делу.

Совсем недавно, Qt Project анонсировал Qt 5.1 RC1. Это пока достаточно рабочий свежак, но с неплохими нововведениями. Одно из них — поддержка кросс-компиляции Android. Замечательно, не так ли? Они даже любязно предоставили нам сборку кьюта под android… для Linux. Но как же быть тем, кто использует Mac, или куда более ущербный Windows для разработки? А ничего, собирайте сами.

Но сборка последнего Qt из Git, с нужными параметрами под маком, не говоря о Windows — это адъ. Сегодня я помогу вам спасти свои души!
Читать дальше →
Total votes 55: ↑44 and ↓11+33
Comments14

Отчет с финала Google Code-In, Калифорния

Reading time6 min
Views50K


Привет, Хабрахабр.

Начнем с предисловия. Меня зовут Илья Ковалевский, я ученик 8-Б класса киевского лицея. Недавно я принял участие в конкурсе по разработке опенсорсного ПО Google Code-In 2012. Получил победу и стал финалистом от KDE. Гранд-призом была поездка в США, а если быть точнее, в Сан-Франциско, а после в Мантин-Вью (подробнее в предыдущем моем посте). Перелеты, перемещения, проживание оплачивает Google.

Я решил, что буду писать этот пост по мере моих приключений в Штатах. К сожалению, тут находиться я буду только 5 дней, но это не страшно :)
Читать дальше →
Total votes 207: ↑196 and ↓11+185
Comments61

ACE: самый функциональный редактор кода

Reading time8 min
Views88K


Здравствуйте, господа!

Я был достаточно приятно удивлен, когда узнал, что проект Ajax.org, именуемый Ace почти ни разу не упоминался на хабре. Ace — это веб-редактор исходного кода нового поколения. Он поддерживает уйму различных функций, среди которых: наличие режимов подсветки синтаксиса для более чем 60 языков программирования, поддержка сумашедшего количества цветовых схем из различных популярных IDE, функций, среди которых: широкая кастомизация, проверка синтаксиса для нескольких скриптовых языков. Так уж получилось, что эта статья скорее всего будет разносторонняя, т.е. содержать материал для веб-разработчиков и С++ программистов, которых я так успешно агитирую в сторону Qt. Итак, что вы можете прочитать в этой статье?

  • Быстрый старт с Ace. Где я могу использовать Ace? Почему?
  • Портирование Ace на Qt и обертка его API: How-To для создателей Qt5-based библиотек (таких как мой порт Ace — Novile

Сейчас позволю себе показать пару скриншотов example-приложения, которое использует мою библиотеку Novile:

Читать дальше →
Total votes 85: ↑66 and ↓19+47
Comments44

Google Code-In 2012 — как это было?

Reading time4 min
Views33K

Привет, хабрик!

Так уж сталось что в этом году я стал призером Google Code-In. Это конкурс для школьников со всего мира, в котором они соревнуются в разработке опенсорсного программного обеспечения. Мне удалось попасть в список Grand Prize Winners, так что думаю что стоит написать этот отчет.

У меня есть много информации, советов и всего интересного.
Читать дальше →
Total votes 116: ↑109 and ↓7+102
Comments30

Что нам стоит Git настроить!

Reading time3 min
Views106K

Дарова, хабр! (ничего оригинальнее не придумал)

Сомневаюсь что эта заметка тянет на полноценный пост, но я все же оставлю ее здесь. О чем же пойдет речь?

Все мы слышали о Git. Все мы знаем что он — хорош. Но лишь немногие пытаются что-то с ним делать, как-то его протвикерить. Сразу говорю, тут не будет ничего паранормального, только немного работы с файлом .gitconfig. Да-да, именно с тем файлом, который так трепетно пылится у вас в домашней директории.

Так, мне уже немного надоело писать этот, по сути, бессмысленный вступительный текст, так что давайте уже начнем что-то делать.
Читать дальше →
Total votes 188: ↑155 and ↓33+122
Comments41

И еще один релиз: Qt 5.0 RC

Reading time1 min
Views15K
Привет, мой, космос Хабрахабр!
image
Ровно неделю назад я написал пост о выходе Qt 4.8.4, а сегодня нас ждет новый релиз! Поздравляю!

На сегодня это Qt 5.0 RC (первый релиз-кандидат). Подробности, собственно-говоря, под катом.

Читать дальше →
Total votes 51: ↑47 and ↓4+43
Comments16

Qt 4.8.4 уже здесь!

Reading time1 min
Views22K
Привет, хабр!
image
Сегодня я хочу сообщить хабракоммьюнити что команда разработчиков Qt вынесли Qt 4.8.4 в состояние релиза.

Это очередной patch-релиз (были исправлены баги, бинарная совместимость с Qt 4.8.x). Cписок достижений этого релиза под катом.
Читать дальше →
Total votes 48: ↑39 and ↓9+30
Comments12

Qt Coding Style

Reading time5 min
Views42K
Qt Coding Style по версии Qt
Привет, хабражители!

Сейчас какой-то спец с многолетним опытом работы с Qt подумал: «Что за фигня? Хабр — для вещей покруче!». Но ведь даже спецам с многолетним опытом иногда надо читать вот такие статьи про простые вещи, ведь это — важно. Код — это одна из самых важных составляющих программирования. А наша задача — держать его в чистоте. Эта статья посвящена всем Qt программистам которые стремятся к идеалу.

Конечно есть статья на Qt Project — Qt Coding Style. Только вот там материала ценного меньше…
Все-таки решили почитать? Ну тогда - поехали!
Total votes 69: ↑52 and ↓17+35
Comments109
1

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity