Блог

Новые статьи на английском

За последние пару недель на сайте Hackish Code я выложил следующие статьи:

Кто пропустил эти статьи в книгах, но знает английский, есть шанс прочитать в сети.

Objective-C

Сегодня попробовал написать свою первую программу на Objective-C для iPhone. Надо немного потренироваться с языком и основами перед курсами. Курсы будут всего три дня, и не думаю, что кто-то будет нас учить с самых нулей до самого сложного.

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

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

Перспективы Objective-C

Вот изучаю сейчас Objective-C и боюсь что трачу время зря. Не уверен я ч будущем платформы Apple без Стива Джобса. Ну а язык по ходу дела используется только в Apple.

Язык был создан относительно недавно и почему-то он понравился Стиву Джобсу который лицензировал язык для своей компании NeXT. Тогда Стив не работал в Apple, это было в период, когда его вынудили уйти из созданной им компании и до великого возвращения.

Когда Стива Джобса решили вернуть в Apple, яблочный гигант выкупил NeXT. И не удивительно, что Objective-C стал основным языком Apple. Только будет ли он таким без Стива Джобса - большой вопрос. Язык не очень популярный и если перейти на Java или C#, можно получить на много больше программистов уже сейчас.

Отладка RSS

У меня на блоге в RSS закралась ошибка и XML нарушен. Возможно я где-то забыл закрыть тэг и теперь RSS не может отображаться в браузерах. Все браузеры лохи просто игнорируют RSS и никто не хочет показывать сообщение об ошибке. Только IE умочка вегда показывает, что RSS не может быть отображен, потому что у тебя там лажа с тегом.

Я попробовал RSS в Safari, Chrome и FF и никто из них не подсказал, в каком месте я лохонулся.

Пришлось вычислять, методом тыка. Оказывается RSS <DXFile.h> в предыдущем посте восприняла как тэг и не могла найти закрывающий тэг. Пришлось экранировать символ <

Шаблоны приложений

Что мне не нравится в С++, так это шаблоны. В компонентном программировании, таком как C# или Delphi при создании нового приложения в основном файле среда разработки прописывает для нас всего пару строк кода, которые должны инициализировать главную форму. Больше ничего нет. В самих формах окон среда разработки так же прописывает пустые классы, производные от формы.

Когда я начал знакомится с Objective-C, я увидел, что XCode при создании проектов или форм добавляет для нас в генерируемые исходные файлы кучу мусора. В принципе, создание новых проектов и файлов классов в С++ (не только XCode, но и Visual Studio) сопровождается банальным копированием определенного шаблона из недр среды разработки в ваш проект. И если Microsoft в своей Visual Studio скромничает, давая нам только реально необходимый минимум (если не считать шаблонов классического С), то Apple решила пойти своим путем. В свои шаблоны они помещают кучу кода и заготовок функций, которые по их мнению, могут нам понадобится.

Что плохого? За время моего обучения на курсах произошло два косяка, один из которых препод так и не смог решить. Мы выполняли по шагам инструкции, прописанные в его файле и у нас приложение не заработало так, как ожидалось. Я закончил первым и позвал препода, чтобы он показал, где я лох. Он минут двадцать не верил своим глазам, проверяя каждую строчку кода, но пример не работал как надо.

Microsoft MVC

На работе дали новый проект, чтобы я размялся от основного проекта, над которым работаю не покладая пальцев уже два года. В моем проекте мы используем корпоративную MVC, а тут для этого проекта нужно использовать MVC от Microsoft. В пятницу запустил устанавливать последнюю Web Developer и бросил компьютер включенным, ушел домой. Сегодня пришел, а программа установки предлагает установить еще кучу фуфла для Web Developer. Ну фиг с ним, я согласился. На установку еще 6 пунктов каких-то дополнений ушло еще 3 часа.

Парень на работе из нашей команды тоже должен работать над этим проектом и запустил ту же установку. У него она шла 5 часов и он не выдержал и остановил. Подозреваю, что нужно было отключить Mac Afee, потому что он может тормозить, но мы далеко не боги в системе и не можем останавливать антивирусы сами.

Отладка программ - метод утенка

Сегодня на сайте журнала хакер прочитал очень интересный метод решения сложных задач. Если не можешь что-то решить, то нужно делегировать задачу мысленному помощнику (резиновой желтой уточке для ванной). Вроде бы так советует делать какая-то книга "Программист прогматик". Лично я ее не читал, но метод в чем-то имеет смысл.

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

Objective-C

Сегодня получил интересный вопрос:

Здравствуйте Михаил! Хотел поинтересоваться, как идут дела с программированием на Objective-C? Вы ходили на курсы, отписывали как они проходят, но закончив курсы больше Objective-C не вспоминали, или я не прав?

Да, действительно я больше не писал про Objective-C, просто потому, что не использую его. Меня направили на курсы, потому что на работе предполагается много работы в этой сфере. Как я уже много раз говорил, в Канаде iPad менапопулярен и планшеты на андроиде я пока ни у кого не видел. Может мне так везет, но я специально ради спортивного интереса стал поглядывать даже в метро на то, чем пользуется народ. С удивлением на прошлой неделе заметил одного мужика с Asus на Windows, а в остальном вижу только iPad.

Перспективы программирования под Apple

Один знакомый программист сказал мне одну очень умную штуку. В наше время, большая часть разработки приложений уходит в Индию, где нормо-час дерьмопрограммиста стоит 18 долларов. Некоторые особо рисковые американцы идут на такой риск ради экономии, ведь в США нормо-час программиста до 10 раз дороже. В Нью-Йорке в серьезных конторах нормо-час программиста превышает 200 долларов.

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

Но что не пойдет в офшор, так это iOS разработка. Она пока ведется в основном на североамериканском континенте. Во первых, это связано с дороговизной разработки. В принципе, сама среда бесплатна, но для того, чтобы писать для iPad или iPhone, нужно как минимум купить компьютер Mac. Умельцы ставят MacOS на писюшное железо (благо процессор один и тот же), но слышал, что работает такое счастье нефантаново.

Первые пытки в Objective-C

В общем, пытаюсь писать под iOS и ощущаю реальную пытку, потому что не привычен для меня Objective-C. Некоторые файлы пересоздаю по два раза, потому что постоянно забываю добавить префикс к имени. В то время, как американцы хвастаются тем, что они смогли приземлиться на луну (ну я им очень сильно верю), они не смогли добавить в Objective-C такую банальную вещь, как пространства имен. Теперь приходиться именовать свои файлы и классы так, чтобы не дай бог не получить конфликт имен.

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

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне