Apple Swift — любимый инструмент разработчиков

52

Apple_Swift_Logo

Программирование — основа основ компьютерной техники. Корпорация Apple давно известна своим умением задавать тон развитию индустрии на годы вперёд, но учитывая постепенный уход купертиновцев с рынка профессиональных решений, надкушенное яблоко ассоциируется в первую очередь с потребительскими продуктами. Однако очередное исследование общественного мнения показывает, что разработчики ПО более чем довольны свежим предложением компании — языком программирования Swift.

Согласно информации ресурса Stack Overflow, почти 80 процентов профессионалов с удовольствием работали или планируют работать с выпущенным не так давно инструментом разработки от Apple. Исследователям удалось опросить целых 26 тысяч посетителей из более чем 150 стран мира. Около трети постоянно занятых в сегменте написания мобильного ПО респондентов работают в основном на платформе iOS, а несколько менее половины также занимаются созданием приложений для конкурирующей ОС Google, Android. 20 процентов опрошенных не смогли определиться с какой-либо основной системой, скорее всего, сюда входят специалисты, регулярно разрабатывающие программное обеспечение для различных платформ. Что касается компьютерных ОС, то рабочие места инженеров делят между собой OS X различных версий (22 процента), уже обогнавшая свободно распространяемую систему Linux (21 процент), а также Windows 7, которой пользуются целых 39 процентов респондентов.

12501-6461-Screenshot-2015-04-14-001454-l

Интересно, что текущая версия ОС от Microsoft, Windows 8, несмотря на активную поддержку производителем в течение более двух лет, вообще не вошла в список любимых программистами систем. Более того, в сам рейтинг фаворитов не попал очень популярный Objective-C, который, тем не менее, продолжает оставаться одним из самых доходных — средняя прибыль работающего на нём специалиста (в США) составляет, с учётом всевозможных бонусов, около ста тысяч долларов в год.

Напомним, язык программирования Swift был впервые представлен Apple вместе с iOS 8 на конференции WWDC в 2014 году. С тех пор новинку успели опробовать для своих мобильных приложений многие обладатели громких имён, включая крупнейшую авиакомпанию American Airlines и деловую социальную сеть LinkedIn, а также многочисленные разработчики игр для iOS. Текущая сборка системы под номером 8.3 содержит в себе и обновлённую версию Swift.

Кстати, некоторые программисты в шутку (а может, и всерьёз) отправляют заслуженную классику на заслуженный ею отдых. А вы уже научились программировать иначе?

Objective_trash

52 комментария

  1. 0
    Gogia Minas

    100%

    Потому что когда начинал писать на объектив Си — чуть не рехнулся. И это при прошлом опыте программирования. Когда вышел свифт — помолился три раза! )))(отправлено из приложения AppleInsider.ru)

    • 0

      Gogia, Не знаю как тебе, я не спешу на Свифт пересаживаться! Объектный С избыточен конечно, но по крайней мере, там не нужно заботиться о том, может ли переменная хранить нил. Мне немного не по себе от этого! Друг пересел как то легко! А я подожду малость

  2. 0

    Было бы не плохо, если бы был нормальный, переведенный учебник.(отправлено из приложения AppleInsider.ru)

  3. 0

    Говорят почти все apple’овские библиотеки написаны на objective c и программы написанные на этом языке работают быстрее.(отправлено из приложения AppleInsider.ru)

  4. 0

    У вас проблемы?

  5. 0

    Не суди по себе) нетрадиционный ты наш)(отправлено из приложения AppleInsider.ru)

  6. 0
    -NightWolf-

    Правильно ли я понял еще во время презентации свифта, что раз сам программный код раза в три короче, чем на с++, то и требования к железу раза в 2,5 ниже?

    Я полагаю, все действительно идет к тому, что на безмозглой appleTV скоро действительно игры на свифте появятся (в силу не требовательности к железу), если я правильно описал свои соображения выше.
    Поясните, пожалуйста, кто в курсе.
    Спасибо(отправлено из приложения AppleInsider.ru)

    • 0

      -NightWolf-, Да нет! Компилируемый код на выходе один и тот же практически! Просто Свифт позволяет некоторые конструкции выразить значительно короче в написании. Вот и вся разница! По сути, что объектный С, что Свифт — не более чем надстройки над языком. А на ТВ приставке игры могут быть и сейчас, как только компания позволит делать это разработчикам.

      • 0
        -NightWolf-

        InstaRobot, Спасибо за пояснения.
        Я-то думал, что конечный программный код будет короче.
        Тогда мне совсем непонятно вот что — раз результат на выходе один, откуда тогда берется понятие, есть поддержка свифта или нет на устройстве?? Я имею в виду iphone 4s, ipad 2, ipad mini, в восьмую операционку которых «забыли» встроить поддержку свифта(отправлено из приложения AppleInsider.ru)

        • 0

          -NightWolf-, Вы говорите за что то, что вообще не может иметь никакого отношения к устройству! Свифт — это просто язык программирования, но котором пишутся приложения для устройств. Единственное, что нельзя на этом языке написать программу, iOS версия которой менее 7.0!

          Устройства и не должны поддерживать Свифт, так как операционная система запускает бинарный файл, состоящий просто из набора команд для процессора устройства. А на каком языке изначально все создавалось — устройство и не знает, так как компилятор преобразует инструкции языка в инструкции, которые понятны самому устройству! А Свифт это или Объектный С — не играет роли! Просто Свифт — это язык программирования высокого уровня, ориентированный на работу с объектами, чтобы программисту не приходилось задумываться о том, что происходит на самом низком уровне! Я если честно, не знаю как Вам объяснить, что такое ООП )

          https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование

          Вот как то так!

          • 0
            -NightWolf-

            InstaRobot, Сорри, я видимо перепутал с Metal. Это Metal не поддерживается старыми устройствами (что это за хрень этот метал тоже остается только догадываться)(отправлено из приложения AppleInsider.ru)

          • 0
            -NightWolf-

            InstaRobot, Игры, в которых применяется Metal, не будут менее требовательными к железу?
            Или наоборот, Метал не поддерживается старыми устройствами, так как требователен к железу, но и игры круче на нем?
            Поясните, пожалуйста(отправлено из приложения AppleInsider.ru)

  7. 0

    Как по мне так С# на много ушел вперед и гораздо удобнее, читабельнее, и краток чем этот Swift.

    Более того меня просто бесят эти непонятные глюки в xCode, который просто может перестать реагировать на положение объекта window по отношению экрана в настройках. Или просто поменять авто-фокус объекта text field на другой, хотя тот должен фокусироваться по умолчанию…
    Короче, Visual Studio идеал по сравнению с xCode!(отправлено из приложения AppleInsider.ru)

    • 0

      wizardion, Не на виртуалке юзать пришлось? Мне так по барабану, что Свифт, что шарп. Вы не любите кошек? Вы просто не умеете их готовить! Объектный С — еще очень долго проживет!

      А иксы с глюками… По комменту видно, что и работать толком не приходилось! Ну может Джуниор с натяжкой. Нотификейшены зачем?(отправлено из приложения AppleInsider.ru)

      • 0

        InstaRobot, Причем здесь виртуалка? Причем здесь нотификейшн и объектный-с?
        Я про swift сейчас говорю, что ожидал я большего. И про нестабильную работу Xcode!(отправлено из приложения AppleInsider.ru)

        • 0

          wizardion, Что вы ожидали от Swift? Расскажите, интересно!
          И про нестабильность Xcode тоже интересно. Я работаю с ним каждый день и знаю только один глюк, когда около тысячи строк кода в одном файле и выбрана нестандартная подсветка кода, тогда курсор иногда прыгает по строкам сам по себе. Больше никаких глюков я не заметил. Никаких смен автофокусов не было ни разу, вообще не понятно что вы имеете ввиду. А вот это «просто может перестать реагировать на положение объекта window по отношению экрана в настройках» перефразируйте пожалуйста тоже, а то как-будто не по-русски.

          • 0

            Mihael, Cocoa application:
            В main.storyboard выбрал объект window, в инспекторе поставил initial position для окна. Добавил несколько text fields, добавил к ним actions написал несколько строк обработки текста.
            После этого, поменял initial position для окна, запустил билд, но позиция окна на старом месте.(отправлено из приложения AppleInsider.ru)

            • 0

              wizardion, Поменял initial position еще раз — позиция окна при запуске не изменилась.
              Убрал события у text fields — запустил — позиция окна при старте поменялась, причем код я не менял. Повесил события снова, все работает. Продолжил писать код. Поменял initial position еще разок (для проверки) — все работает.

              Такое не раз встречал(отправлено из приложения AppleInsider.ru)

              • 0

                wizardion, Окей, наверное вы говорите о desktop приложении? Потому что я последнее время пишу только для iOS и поэтому глюков с initial position окна не могу повстречать.
                Расскажите еще про то, что вы ожидали от Swift, но этого в нем не оказалось?

                • 0

                  Mihael, Наверное кнопки «Сдедать программу» и она сама рандомно прогу пишет(отправлено из приложения AppleInsider.ru)

                • 0

                  Mihael, Что ожидал, очень удобно было бы иметь метод toString() у объекта Object, или subString(int: index) у объекта String. Это действительно удобно.(отправлено из приложения AppleInsider.ru)

                  • 0

                    wizardion, А что мешает использовать категории для класса?

                  • 0

                    wizardion, Это теперь решается через extension. По ходу разработки, когда появляется необходимость иметь у объекта дополнительного метода вроде toString или subString, создаешь extension. У меня сейчас уже их много наработано, вот мой мастхэв для String:

                    extension String {
                        var length: Int { get { return count(self.utf16) } }
                        
                        func doesEmailValid(stricterFilter: Bool? = true) -> Bool {
                            let stricterFilterString = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
                            let laxString = ".+@.+\\.[A-Za-z]{2}[A-Za-z]*"
                            let emailRegex = stricterFilter! ? stricterFilterString : laxString
                            let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegex)
                            return emailTest.evaluateWithObject(self)
                        }
                        
                        func contains(what: String) -> Bool {
                            return rangeOfString(what) != nil
                        }
                        
                        func substringBetween(start: Int, end: Int) -> String {
                            return self[advance(self.startIndex, start)...advance(self.startIndex, end)]
                        }
                        
                        func substringAfterIndex(idx: Index, offset: Int? = nil) -> String {
                            var off = 1
                            if let o = offset {
                                off = o
                            }
                            let pos = distance(self.startIndex, idx)
                            let start = pos+1
                            let end = self.length-1
                            if start > end {
                                return ""
                            }
                            return self[advance(self.startIndex, start)...advance(self.startIndex, end)]
                        }
                        
                        func digitsAfterDelimiter() -> Int {
                            var formatter = NSNumberFormatter()
                            formatter.locale = NSLocale.currentLocale()
                            var range = self.rangeOfString(formatter.decimalSeparator!)
                            var digits = 0
                            if let idx = find(self, Character(formatter.decimalSeparator!)) {
                                println(self.substringAfterIndex(idx))
                                digits = count(self.substringAfterIndex(idx).utf16)
                            }
                            return digits
                        }
                        
                        func encodeBase64() -> String {
                            let utf8data: NSData = self.dataUsingEncoding(NSUTF8StringEncoding)!
                            return utf8data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))
                        }
                        
                        func decodeBase64() -> String {
                            let data: NSData = NSData(base64EncodedString: self, options: NSDataBase64DecodingOptions(0))!
                            return NSString(data: data, encoding: NSUTF8StringEncoding) as! String
                        }
                    }
                    
          • 0

            Mihael, Все верно. Ребята комментируют среду, которую не знают толком. Я знаю тоже всего один глюк с эмулятором и знаю как это лечится. И то глюк связан с параллельным использованием релизной и бета версий. Но это мелочи! Рассмешило про визуал Студио.(отправлено из приложения AppleInsider.ru)

        • 0

          wizardion, Я про то, что подписавшись на события, мы можете контролировать поведение всех объектов. А ваша проблема лечится комбинацией Cmd + Shift — K и удалением derived data(отправлено из приложения AppleInsider.ru)

          • 0

            InstaRobot, За (Cmd + Shift — K) спасибо.(отправлено из приложения AppleInsider.ru)

            • 0

              wizardion, Да не за что! Вы не ругайте среду! Есть сообщества, где всегда можно задать вопрос и получить ответ! Многие сидят в Slack, на http://stackoverflow.com — просто кладезь полезной информации. Во время постоянной работы приходят необходимые навыки, обрастаешь полезными плагинами и так далее!

              И еще, языки от яблока интересны в первую очередь тем, что соглашение именования методов уже о многом говорит разработчику. Можно ничего не зная о NSString посмотреть заголовки и найти нужный метод работы с классом ) В других языках я такого не видел! Хотя опыт разработки под разные платформы, даже экзотические!

              • 0

                InstaRobot, Спасибо большое. Наверно это просто мое первое впечатление о swift.(отправлено из приложения AppleInsider.ru)

                • 0

                  wizardion, Сочетания клавиш для тех или иных команд можно увидеть в контекстном меню, например если вы наверху нажмете Product и там увидите Clean напротив которого как раз будет написана данная комбинация Shift+Cmd+K. Больше комбинаций доступно в настройках Xcode->Preferences->Key bindings

    • 0

      wizardion, И да, на шарпе — много не заработаешь! Максимум фрилансить) интересно, что с шарпом станет, есть объект Нил повстречается?(отправлено из приложения AppleInsider.ru)

  8. 0

    Все говорят, винда глюченая, винда то, винда се… А на деле у восьмерки в сто раз меньше глюков чем у Yosemite. Более того, анимация восьмерки ооочень плавная, а в Yosemite какие то рывки, причем видно что это недоработка, т.к. не везде это встречается.(отправлено из приложения AppleInsider.ru)

  9. 0

    То что написано в статье это фантазии автора. Обж-с намного актуальнее свифта еще ближайшие пару лет будет. Но хорошая новость то что свифт и обж-с могут быть в одном проекте. Я довольно хорошо знаю свифт, и вообще не знаю обж-с, из за этого на рынке труда я никому не нужен. ) так что пока нет смысла учить свифт! Не повторяйте моих ошибок начинайте с обж-с.(отправлено из приложения AppleInsider.ru)

  10. 0

    Хотя в статье все верно. Язык прекрасен и его есть за что любить. Жалко он пока что не востребован. Прошу прощения у автора!(отправлено из приложения AppleInsider.ru)

  11. 0

    Я с 2011 пишу на obj-c и являюсь его фанатом, но последние полгода активно стал писать на Swift и обратно на obj-c уже не хочется.

    • 0

      Mihael, Да. Те кто привык, назад уже не хотят. Знаем. Но я пока не спешу перепрыгивать. Всегда успею, если реально нужно будет(отправлено из приложения AppleInsider.ru)

  12. 0

    Эх, зарекался же от беток дальше держаться, но сейчас ставить буду 8.4 на телефон, значит и иксу 6.4 придется быть на компе( Снова пляска с эмуляторами начнется!

Авторизуйтесь Чтобы оставить комментарий