Главная iPhone Mac OS X Форум О себе

Почему Python, а не Objective-c?

Те, кто хоть немного слышал о программировании под Mac OS, могли задаться вопросом: почему я выбрал именно Python, а не Objective-C, являющимся основным языком, на котором пишутся программы для Мака? Ниже я постараюсь аргументировано доказать правильность своего выбора.

Objective-C нигде кроме как на Маке вам не пригодится. Вас это устраивает? Лично меня — нет. Если повезет и мои программы будут приносить мне хорошую прибыль, то разницы на чем писать действительно нет, и даже более правильно писать на нативном Objective-C, который вполне ожидаемо будет чуточку быстрее и более оптимально скомпилированным, чем программы написанные на Питоне (хотя это тоже стоило бы проверить). Но если вам в будущем надоест писать под яблочную платформу или этот опыт окажется для вас неудачным, то вы рискуете оказаться в ситуации, когда знания, полученные при создании программ на ObjC, вам будет применить негде.

Давайте заглянем на на два популярных сайта по подбору персонала job.ru и hh.ru, и посмотрим сколько вакансий мы найдем по слову “Objective-C” (выборка за месяц, регион — Россия): одна открытая вакансия на job.ru и три на hh.ru. А теперь сделаем выборку по слову “Python”: 30 и 83 соответственно. Если вас это мало убедило, посмотрите программистов на каком языке Яндекс ищет на работу: C, Java, Perl и Python!

Python, в отличие от Objective-C, кроссплатформенное решение. Одна и та же программа свободно запускается на Mac’е, линуксе и в Windows. Да что и говорить, если в поставку Mac OS X и большинства дистрибутивов линукса входит интерпретатор Питона по умолчанию, а сами дистрибутивы содержат немало софта, написанного на этом языке.

Да, на Питоне можно строить как stand-alone приложения, так и веб-сервисы и веб-сайты (напомню, что данный блог бежит на движке byteflow, написанном на Питоне). Язык действительно очень приятный, и я считаю, что потребность в специалистах, работающих на нем, будет только расти. Python имеет реальные шансы стать очень популярным в будущем.

Вообще, Питон оставляет приятное впечатление от работы с ним. Язык очень гибкий, простой (настолько упрощена работа с указателями, что вы будете удивлены), но мощный, требует нестандартного мышления для использования всех его возможностей в полной мере. Он немного напомнил мне Lisp, с которым я имел шапочное знакомство в AutoCAD’е. Кроме того, что Питон развивается сам, он вбирает в себя лучшие стороны и функционал других языков. Правда, придется принять новую веру: если вы раньше писали в VisualBasic стиле, то придется немного привыкнуть к другому стилю написания программ.

Надеюсь я вас убедил в правильности своего выбора. Если вы думаете “что бы такое еще изучить” или существует потребность в создании гибких, расширяемых приложений, но ваш текущий язык не устраивает, — возьмите python, не пожалеете.

Комментарий

Комментарии

ZYV 1.07.2008 1:11

Исключительно из чувства справедливости скажу пару слов про Objective C (в пику земноводной тематике блога, но раз уж тут такая провокация наметилась…). Objective C — это строгая надстройка над C, т.е. компилятор Objective C скомпилирует любую программу, написанную на C. Это сделало возможным реализацию этой надстройки над известными и уже оформившимися компиляторами C, а именно GCC, малой кровью. Собственно, с какой бы то стати одним из главных контрибьюторов в GCC была Apple, производящая ПО с закрытым исходным кодом :) ? Сердце XCode — набор компиляторов GCC. А раз так, программу на Objective C можно скомпилировать под любую платформу, которая числится в списке targets у GNU Objective C.

Единственная некросплатформенная часть Objective C — это классы, относящиеся к Cocoa. Но тут уж никто не мешает ядро писать на Objective C, а морду делать через питоновские биндинги. Вот так вот — питон — раб ObjC =) Так что по пункту кроссплатформенности слив не засчитан :)

С приветом Гидо ван Россуму, Z.

ответить
Evgeniy Krysanov 1.07.2008 12:47

Сдаюсь, против правды не попрешь.

Но все же, если поставить себя на место работодателя, я скажу “нет” соискателю, пишущему на Objective-C, ибо для меня принципиально важно останется ли код поддерживаемым после ухода работника из компании или нет. Тем более, что специалистов по данному языку не так и много.

никто не мешает ядро писать на Objective C, а морду делать через питоновские биндинги

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

ответить
ZYV 1.07.2008 13:07

Ну, это разумно, конечно, хотя сильно зависит от ниши, в которой работает компания. К Apple, например, неприменимо. Интересный, кстати, момент — каким образом они портировали Safari под Windows. То, что клей вокруг WebKit сделан на ObjC совершенно понятно (хотя сам WebKit я так понимаю C++, чтобы можно было таскать код туда-сюда с K, или они этого уже не делают?), но видимо у них ещё со времен QuickTime есть какой-то внутренний кроссплатформенный набор виджетов с интерфейсом Cocoa. Вот бы этот набор отдали народу под либеральной лицензией :) вообще все вопросы с портированием были бы сняты. Ведь оно же было когда-то под NeXT… хнык-хнык…

По поводу параллельного программирования: а как же дань моде :) ? Сейчас это очень модно — вон, например, торрент-клиент Deluge — ядро на C/C++, морда — чисто питоновская. В итоге работает подо всем, под чем только можно.

ответить
Evgeniy Krysanov 1.07.2008 16:35

Тут бы премудрости одного языка постичь, а ты — два предлагаешь изучить. Неа :) И мне не нужно, чтобы работало подо всем. Нужно чтобы запускалось на Маке — это цель.

ответить
ZYV 1.07.2008 16:46

Ага! Вы сами себе противоречите (c)! А к чему тогда аргумент про кроссплатформенность? Давай уж тогда скорее рассказывай чем так хорош питон с т.з. философии программирования и, желательно, в сравнении с чем-то — про итераторы там всякие и т.п. И мы тебе поверим :)

P.S.Ура флейму в коментах!

ответить
Evgeniy Krysanov 2.07.2008 10:50

Я хочу уберечь читателя от непродуманных и поспешных выводов в пользу objective-c как кроссплатформенного языка, поэтому я немного слукавил, не назвав его таковым. Объективно говоря, я ни разу не встречал чтобы на нем программировали вне привязки к компьютерам Apple, поэтому мое маленькое искажение правды можно простить:)

В одном комментарии о всех прелестях питона не расскажешь, нужен отдельный пост, но закинуть хук можно. Наслаждайся:)

open("output.dat", "w").writelines(s.replace("one", "two") for s in open("input.dat"))

В одной строчке кода реализовано чтение из файла, замена подстроки и запись в новый файл. Интересно было бы посмотреть насколько “элегантный” код вышел бы на других языках:)

ответить
ZYV 2.07.2008 11:17

А что, давай поиграем :) С меня для начала PHP5:

$s = file_get_contents(“input.dat”); $s = str_replace(“one”, “two”, $s); file_put_contents(“output.dat”, $s);

ответить
Evgeniy Krysanov 23.07.2008 21:21

У тебя файл целиком читается в память. А-я-яй, представь что может быть :)

ответить
ZYV 24.07.2008 0:06

Слив не засчитан :) Если файл меньше ~12 Mb при настройках по-умолчанию PHP5, то ничего не будет. А если больше — будет exception. Но главное — это если у тебя в input.dat нет переводов строк, у тебя тоже файл целиком читается.

Ладно, хорошо, вот тебе то же самое с буферами:

$in = fopen("input.dat", "rb"); $out = fopen("output.dat", "wb");
while (!feof($in)) { fwrite($out, str_replace("one", "two", fgets($in)); }
fclose($in); fclose($out);
ответить
Игорь Евсюков 4.08.2008 15:10

Давайте заглянем на на два популярных сайта по подбору персонала job.ru и hh.ru, и посмотрим сколько вакансий мы найдем по слову “Objective-C” (выборка за месяц, регион — Россия): одна открытая вакансия на job.ru и три на hh.ru. А теперь сделаем выборку по слову “Python”: 30 и 83 соответственно. Если вас это мало убедило, посмотрите программистов на каком языке Яндекс ищет на работу: C, Java, Perl и Python!

ты знаешь, то, что говорит job.ru фигня полная. Конечно можно пойти по пути наименьшего сопротивления, выучить джаву и в любом большое городе утсроится программером и не парится. Вот только это “Think Different”. После того, как я начал вести блог на хабре, то от предложений программиста под Мак отбоя нету. С появлением айфона предложения участились.

ответить
Evgeniy Krysanov 4.08.2008 15:48

hellraiser09? :) Если не секрет, какого рода приложения приходится разрабатывать на заказ?

ответить
Игорь Евсюков 4.08.2008 16:29

1)да 2)много чего просили: в основном игры, клиенты для веб-сервисов, клиент для интернет-радио, карту метро. Сейчас разрабатываю клиент для интернет-магазина, торгующего техникой для фотографов

ответить
Evgeniy Krysanov 4.08.2008 16:36

Ага, клиенты для вебмагазинов и сервисов что-то вроде eBay клиента, продемонстрированного на WWDC? Установка программ, конечно, на джейлбрейкнутых телефонах? Ты не задумывался о том, чтобы получить сертификат разработчика от Apple?

ответить
Игорь Евсюков 4.08.2008 16:49

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

ответить
Evgeniy Krysanov 4.08.2008 16:58

В аналогичном положении. Только я надеюсь, что появится легальная возможность сделать оплату своего участия в программе. Тем более, витают слухи о появлении iTunes с января следующего года в России, что сразу решит проблему оплаты отечественными кредитками. Как с Украиной дела обстоят не наслышан. Но это ведь так долго — полгода… :)

ответить

Форма комментирования для «Почему Python, а не Objective-c?»

Обязательное поле. Не больше 30 символов.

Обязательное поле

captcha image Пожалуйста, введите символы, которые вы видите на изображении

Игорь Евсюков 4.08.2008 17:04

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

ответить
Daemon 8.08.2008 12:41

Это не решит всех проблем украинского законодательства. К примеру, чтобы получать деньги за проданную программу в Application Store в нашей стране недостаточно просто счета в банке (или карточного счета). Просто физическое лицо не может вести экономические отношения вне страны, т.е. легальные способы получение денег для физ. лица в нашей стране — денежный перевод через WU, Money gram и т.д., либо пересылка чека.

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

Как планируешь решать данный вопрос?

ответить
Игорь Евсюков 8.08.2008 14:30

просто. Программа, которую я делаю будет выклываться от ур.лица, зарегистрированного в США. На счет в США будут идти деньги.

а вообще наше законодательство — писец полный

ответить
Daemon 8.08.2008 14:36

Эх, а как же быть тем, у кого нет таких знакомств в США? :(

Да, писец, меня эта беготня с налоговой, банком и т.д. - запарила, но чего уж сделаешь…

ответить
ZYV 8.08.2008 14:37

В России, кстати, дела не сильно лучше :) Поэтому всякие Славикусы и качают деньги через Швейцарию на горе и ненависть Муртазина.

ответить
alex 3.09.2008 22:21

купить оффшор ?

ответить
ALee 8.10.2008 0:58

расскажите подробнее, если можно

ответить
ZYV 8.10.2008 16:05

Обратись к юристам.

ответить
.