Почему 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, не пожалеете.
Комментарии
Исключительно из чувства справедливости скажу пару слов про 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.
Сдаюсь, против правды не попрешь.
Но все же, если поставить себя на место работодателя, я скажу “нет” соискателю, пишущему на Objective-C, ибо для меня принципиально важно останется ли код поддерживаемым после ухода работника из компании или нет. Тем более, что специалистов по данному языку не так и много.
Думаю, что параллельное программирование на двух языках читателя только запутает, поэтому я сделал выбор в пользу более популярного решения.
Ну, это разумно, конечно, хотя сильно зависит от ниши, в которой работает компания. К Apple, например, неприменимо. Интересный, кстати, момент — каким образом они портировали Safari под Windows. То, что клей вокруг WebKit сделан на ObjC совершенно понятно (хотя сам WebKit я так понимаю C++, чтобы можно было таскать код туда-сюда с K, или они этого уже не делают?), но видимо у них ещё со времен QuickTime есть какой-то внутренний кроссплатформенный набор виджетов с интерфейсом Cocoa. Вот бы этот набор отдали народу под либеральной лицензией :) вообще все вопросы с портированием были бы сняты. Ведь оно же было когда-то под NeXT… хнык-хнык…
По поводу параллельного программирования: а как же дань моде :) ? Сейчас это очень модно — вон, например, торрент-клиент Deluge — ядро на C/C++, морда — чисто питоновская. В итоге работает подо всем, под чем только можно.
Тут бы премудрости одного языка постичь, а ты — два предлагаешь изучить. Неа :) И мне не нужно, чтобы работало подо всем. Нужно чтобы запускалось на Маке — это цель.
Ага! Вы сами себе противоречите (c)! А к чему тогда аргумент про кроссплатформенность? Давай уж тогда скорее рассказывай чем так хорош питон с т.з. философии программирования и, желательно, в сравнении с чем-то — про итераторы там всякие и т.п. И мы тебе поверим :)
P.S.Ура флейму в коментах!
Я хочу уберечь читателя от непродуманных и поспешных выводов в пользу objective-c как кроссплатформенного языка, поэтому я немного слукавил, не назвав его таковым. Объективно говоря, я ни разу не встречал чтобы на нем программировали вне привязки к компьютерам Apple, поэтому мое маленькое искажение правды можно простить:)
В одном комментарии о всех прелестях питона не расскажешь, нужен отдельный пост, но закинуть хук можно. Наслаждайся:)
open("output.dat", "w").writelines(s.replace("one", "two") for s in open("input.dat"))
В одной строчке кода реализовано чтение из файла, замена подстроки и запись в новый файл. Интересно было бы посмотреть насколько “элегантный” код вышел бы на других языках:)
А что, давай поиграем :) С меня для начала PHP5:
$s = file_get_contents(“input.dat”); $s = str_replace(“one”, “two”, $s); file_put_contents(“output.dat”, $s);
У тебя файл целиком читается в память. А-я-яй, представь что может быть :)
Слив не засчитан :) Если файл меньше ~12 Mb при настройках по-умолчанию PHP5, то ничего не будет. А если больше — будет exception. Но главное — это если у тебя в input.dat нет переводов строк, у тебя тоже файл целиком читается.
Ладно, хорошо, вот тебе то же самое с буферами:
ты знаешь, то, что говорит job.ru фигня полная. Конечно можно пойти по пути наименьшего сопротивления, выучить джаву и в любом большое городе утсроится программером и не парится. Вот только это “Think Different”. После того, как я начал вести блог на хабре, то от предложений программиста под Мак отбоя нету. С появлением айфона предложения участились.
hellraiser09? :) Если не секрет, какого рода приложения приходится разрабатывать на заказ?
Форма комментирования для «Почему Python, а не Objective-c?»
1)да 2)много чего просили: в основном игры, клиенты для веб-сервисов, клиент для интернет-радио, карту метро. Сейчас разрабатываю клиент для интернет-магазина, торгующего техникой для фотографов
Ага, клиенты для вебмагазинов и сервисов что-то вроде eBay клиента, продемонстрированного на WWDC? Установка программ, конечно, на джейлбрейкнутых телефонах? Ты не задумывался о том, чтобы получить сертификат разработчика от Apple?
я оставил заявку. Пришло письмо с подтверждением на прохождение. Иду по ссылке в письме, попадаю на страницу выбора страны, Украины там ессно нету. Написано, что если страны нету в списке, то пишите в саппорт. Писал раза 4. Не помогло. Сейчас думаю как оформить себе америанский адрес
В аналогичном положении. Только я надеюсь, что появится легальная возможность сделать оплату своего участия в программе. Тем более, витают слухи о появлении iTunes с января следующего года в России, что сразу решит проблему оплаты отечественными кредитками. Как с Украиной дела обстоят не наслышан. Но это ведь так долго — полгода… :)
я так долго ждать не могу. Проверено, что американскому Apple Store все-равно какая кредитка, главное, чтобы адрес был американский. Вот поэтому и думаю сейчас как сделать себе такой
Это не решит всех проблем украинского законодательства. К примеру, чтобы получать деньги за проданную программу в Application Store в нашей стране недостаточно просто счета в банке (или карточного счета). Просто физическое лицо не может вести экономические отношения вне страны, т.е. легальные способы получение денег для физ. лица в нашей стране — денежный перевод через WU, Money gram и т.д., либо пересылка чека.
Чтобы получать деньги на расчетный счет в банке, нужно оформится ЧП, следует предоставить копию контракта на двух языках, заверенную представителем Apple, и за каждый перевод денежной суммы, нужно предоставлять акт о выполненных работал, подписанный представителем Apple. Иначе валютный отдел банка завернет платеж.
Как планируешь решать данный вопрос?
просто. Программа, которую я делаю будет выклываться от ур.лица, зарегистрированного в США. На счет в США будут идти деньги.
а вообще наше законодательство — писец полный
Эх, а как же быть тем, у кого нет таких знакомств в США? :(
Да, писец, меня эта беготня с налоговой, банком и т.д. - запарила, но чего уж сделаешь…
В России, кстати, дела не сильно лучше :) Поэтому всякие Славикусы и качают деньги через Швейцарию на горе и ненависть Муртазина.
купить оффшор ?
расскажите подробнее, если можно
Обратись к юристам.