• Swift не нужен?

    • Перевод
    Не перестаю задаваться вопросом — какие у Apple планы на Swift и Objective-C? Когда в 2014 году появился Swift, его создатель Крис Латтнер утверждал, что эти два языка смогут сосуществовать бесконечно долго. Из почтовой рассылки пользователям Xcode:
    3 Июня 2014
    McLaughlin, Michael P.
    Кто-нибудь знает, действительно ли Apple собирается прекратить поддержку С и С++? Fortran уже не поддерживается, хотя осталось еще много кода на Fortran, и сравнительно нового, как в MultiNest.
    Пожалуйста, скажите, что это не так. Не все считают, что «опытные пользователи» — это те, кто просто создает полнометражные мультики. Многие из них ученые и инженеры.

    Здравствуйте, Michael,
    Мы не строили планы на что-либо подобное. Swift — это просто новый вариант разработки под платформу. Мы не собираемся прекращать поддержку ни C, ни C++, ни Objective-C. Если вы разрабатываете на одном из этих языков, можете свободно продолжать его использовать.

    — Крис.
    Оригинальный текст письма
    > On Jun 3, 2014, at 5:45 AM, McLaughlin, Michael P. <mpm...@mitre.org> wrote:
    > Does anyone know, for real, if Apple intends to stop supporting C and C++?
    > That’s what it sounded like. They already do not support Fortran even though
    > there is a *lot* of Fortran code out there, even fairly new code like MultiNest.
    >
    > Please say it isn’t so. Not all of us consider “power users” to be just those
    > who create feature-length cartoons. Many are scientists and engineers.

    Hi Michael,

    We have no plans to do anything like that. Swift is a new option for developing
    on the platform. We have no plans to drop C, C++ or Objective-C. If you’re
    happy with them, please feel free to keep using them.

    -Chris


    Дело в том, что в это никто не верит. Крис Латтнер уже давно покинул Apple, и если его утверждение окажется ложным, он не сможет принять критику от лица компании. В целом разработчики согласились на том, что Apple в конечном итоге откажется от Objective-C, и Swift станет единственным языком «первого класса» для разработки Cocoa-приложений.
    Читать дальше →
  • Swift и TensorFlow

      Я не люблю читать статьи, сразу иду на GitHub

      Заранее прошу прощения за это неудобство.
      Все, что будет описано в данной статье тем или иным образом затронет несколько сфер computer science, но погрузиться в каждую отдельную сферу не представляется возможным. Заранее прошу прощения за это неудобство.

      Рассказывать о том, что такое машинное обучение и искусственный интеллект, в 2017 году наверное нет необходимости. На эту тему уже написано большое количество как публицистических статей, так и серьезных научных работ. Поэтому предполагается, что читатель уже знает, что это такое. Говоря о машинном обучении, сообщество data scientist и software engineers, как правило подразумевает глубокие нейронные сети, которые приобрели большую популярность по причине своей производительности. На сегодняшний день в мире существует большое количество различных программных решений и комплексов для решения задачи искусственных нейронных сетей: Caffe, TensorFlow, Torch, Theano(rip), cuDNN etc.

      Swift


      Swift — инновационный, protocol — oriented, open source язык программирования, выращенный в стенах компании Apple Крисом Латнером (недавно покинувшим компанию Apple, после SpaceX и обосновавшимся в Google).
      В Apple’s OSs уже были различные библиотеки для работы с матрицами и векторной алгеброй: BLAS, BNNS, DSP, впоследствии объединенные под крышей одной библиотеки Accelerate.
      В 2015 появились небольшие решения для реализации математики на основе графической технологии Metal.
      В 2016 появился CoreML:
      image
      CoreML способен импортировать готовую, натренированную модель (CaffeV1, Keras, scikit-learn) и далее предоставить разработчику возможность экспортировать ее в приложение.
      То есть, вам необходимо: Собрать модель на другой платформе, на языке Python или C++, используя сторонние фреймворки. Далее обучить ее на стороннем аппаратном решении.
      И только после этого вы можете импортировать и работать на языке Swift. На мой взгляд очень нагромождено и сложно.
      Читать дальше →
      • +10
      • 3,2k
      • 7
    • Делаем хорошо со Swift 4, Perfect, Protobuf и MySQL на Linux-сервере

      Можно долго смотреть на три вещи: как течет вода, как имплементируется CoreFoundation в Linux Swift, и как не обновляется документация Perfect


      Сначала кратко для тех, кто не в курсе:Perfect — это один из самых стабильных серверных фреймворков на Swift. (benchmark)


      Задача:


      Сервер Perfect на Linux c MySQL и Protocol Buffers для общения с приложением-клиентом


      Важное требование:


      Мы прогрессивные хипстеры со свифтом (sarcasm), поэтому дайте самую последнюю версию Swift 4.0.2

      Читать дальше →
    • SILVER: как я проектирую приложения для iOS

        Еще одна архитектура?


        В последние годы заметно набрала обороты тема альтернативных архитектур для создания приложений под платформу iOS. На доске особого почета уже закрепились некоторые силачи, известные как MVP, MVVM, VIPER. А кроме них есть еще множество других, не столь распространенных.


        Среди силачей, на мой взгляд, ни одна не является универсальной таблеткой для всех случаев:


        • если нужно сделать пару маленьких экранов со статическим набором данных, то вводить полноценный VIPER довольно затратно;
        • если не нравится реактивный подход, то MVVM с большой долей вероятности пройдет мимо;
        • если столкнулся с проблемой Massive в большом проекте, то MVC наверняка уже не подходит.

        Есть вариант использовать несколько архитектур, ибо многие позволяют в той или иной степени сочетать себя с другими, но это тоже не слишком удобно как минимум по трем причинам:


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

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


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

        Читать дальше →
      • Swift 4 — слабые ссылки

        • Перевод
        Вскоре после публикации исходного кода Swift, я написал статью о том как реализованы слабые ссылки. Время не стоит на месте и всё меняется, реализация слабых ссылок в Swift тоже. Сегодня я расскажу о новой реализации и сравню ее со старой. Спасибо Guillaume Lessard за идею для поста.

        Старая реализация


        Для тех из вас кто не помнит старую реализацию и кому лень пробежаться по предыдущей статье я кратко опишу ее здесь.

        В старой версии Swift объекты имели 2 счетчика ссылок: счетчик для сильных ссылок и счетчик для слабых. Когда счетчик сильных ссылок становится равен нулю, а слабых еще нет — объект уничтожается, но память не освобождается. Поэтому в памяти остается так называемый “зомби объект” на который ссылается слабая ссылка.

        Когда слабая ссылка загружается, среда времени выполнения (runtime) проверяет является ли объект “зомби”. Если он “зомби” то runtime обнуляет слабую ссылку и уменьшает счетчик слабых ссылок на 1. Когда счетчик слабых ссылок достигает 0 — память освобождается (deallocated). Это означает, что полностью объект удаляется только тогда, когда все слабые ссылки на него обнуляются.

        Мне нравилась простота этой реализации, но были у нее и недостатки:
        Читать дальше →
      • Три ошибки iOS-разработчика, которые могут дорого стоить


           
          Создание iOS-приложения – непростая задача. Разработчикам хочется как можно быстрее завершить этот процесс и наконец запуститься в AppStore. Но на этом все не заканчивается: впереди у создателей долгие годы исправления ошибок, улучшения функций и совместной работы с другими разработчиками. Мы бы хотели немного облегчить им жизнь и для этого решили разобрать три вещи, которые нужно избегать при iOS-разработке (спасибо Envato Tuts+ за информацию).
          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • API на Swift за пять минут. Лекция в Яндексе

            Есть мнение, что Swift — особенно благодаря развитию в опенсорсе — уже сейчас применим за рамками софта для платформ Apple. Наши коллеги из «Рамблера», включая разработчика Самвела Меджлумяна, даже пробуют этот язык в качестве серверного решения. На встрече сообщества CocoaHeads Самвел перечислил готовые продукты для построения сервера на Swift, сравнил их между собой и показал короткое демо.


            Читать дальше →
            • +35
            • 9,2k
            • 5
          • Swift Generics: cтили для UIView и не только #2

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


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


              Напомню, что основным элементом представленного способа задания стилей является обобщенное замыкание:


              typealias Decoration<T> = (T) -> Void

              Использовать данное замыкание для придания свойств UIView можно следующим образом:

              Читать дальше →
            • Опционалы в Swift

              • Tutorial

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

              Читать дальше →
            • MBLTdev 2017: amazing iOS-трек

                image

                Напоминаем, что 27 октября в пространстве Digital October пройдёт 4-я ежегодная конференция мобильных разработчиков MBLTdev 2017.

                Под катом: описания докладов iOS-трека, CodeLabs, небольшой опрос и подарки от JetBrains, Ray Wenderlich и Skyeng.
                Читать дальше →
              Самое читаемое