iPhones.ru

Язык программирования Swift от Apple разрабатывался 4 года

Никита Горяинов avatar | 30
FavoriteLoading В закладки
Язык программирования Swift от Apple разрабатывался 4 года

Новый язык программирования Swift стал самой неожиданной новинкой на WWDC 2014. Аудитория была в таком восторге, будто им только что представили новый iPhone. Дискуссии о возможностях и полезности свежего инструментария ещё долго не утихнут. Интересно, что сам проект находился в разработке с 2010 года, но только в 2013-м он стал одним из ключевых в планах компании на ближайшее будущее.

Не все сотрудники Apple связаны соглашениями о неразглашении по рукам и ногам. Крис Латтер, глава отдела инструментов разработки, открыто делится историей Swift в своем личном блоге на TechCrunch. Начало работы над языком было положено в середине 2010-го года, а в 2011-ом он начал обретать единую форму. Постепенно Swift стал одним из главных направлений работы отдела, которым руководил Крис.

Язык Swift является плодом усилий команды экспертов по языкам программирования, гуру справочных документаций, ниндзя компьютерной оптимизации и невероятно значимого внутреннего кружка тестеров, члены которого обеспечивали обратную связь для улучшения и тестирования идей в боевых условиях. Конечно, опыт работы с многими другими языками также существенно помог – с идеями, взятыми из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и многими другими по списку.

Функция мгновенной компиляции кода и отображения результата – Xcode Playground – вкупе с REPL являлась моей личной страстью, основанной на желании сделать программирование более отзывчивым и доступным. Команды, работающие над Xcode и LLDB, выполнили феноменальную работу, реализовав сумасшедшие идеи во что-то по-настоящему отличное.

Крис Латтер надеется, что с помощью Swift программирование станет более доступным и интересным. Для этого Apple выпустила объемную и бесплатную книгу-документацию по новому языку, которая доступна в iBooks уже несколько дней. Ради интереса можете попробовать прочесть её сами, даже если не знаете ничего по этой теме. [macrumors]

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (Проголосуйте первым за статью!)
undefined
iPhones.ru
Новый язык программирования Swift стал самой неожиданной новинкой на WWDC 2014. Аудитория была в таком восторге, будто им только что представили новый iPhone. Дискуссии о возможностях и полезности свежего инструментария ещё долго не утихнут. Интересно, что сам проект находился в разработке с 2010 года, но только в 2013-м он стал одним из ключевых в планах...
Здесь можно оставить комментарий! Для этого авторизуйтесь или зарегистрируйтесь на iPhones.ru.

30 комментариев

Форум →
  1. fedorez avatar
    fedorez 8 июня 2014
    0

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

    Войди на сайт, чтобы ответить
    Ответить
  2. cd_racer avatar
    cd_racer 8 июня 2014
    0

    Грустный язык… Возможность прямого доступа к свойствам объекта, что может быть страшнее. А как элегантно Objective-C работает с нулевым указателем, никаких segfaults при передаче сообщений.

    Войди на сайт, чтобы ответить
    Ответить
  3. Enlightened avatar
    Enlightened 8 июня 2014
    0

    Возможность прямого доступа к свойствам объекта? Что имеется в виду?
    Насчет элегантности нулевого указателя — ничего элегантного тут нет. Никогда не ясно, полагается ли кусок кода на то, что значение может быть nil, или нет. Потом из-за этого сюрпризы.

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @Enlightened, скажем так – это философия.

    Смотрим пример:
    «class SurveyQuestion {
    var text: String
    var response: String?
    init(text: String) {
    self.text = text
    }
    func ask() {
    println(text)
    }
    }
    let cheeseQuestion = SurveyQuestion(text: “Do you like cheese?”)
    cheeseQuestion.ask()
    // prints “Do you like cheese?”
    cheeseQuestion.response = “Yes, I do like cheese.»

    Отрывок из книги: Inc, Apple. «The Swift Programming Language.» Apple Inc., 2014-05-27T07:00:00Z. iBooks.
    Этот материал может быть защищен авторским правом.

    Посмотрите эту книгу в iBooks Store: (null)

    response – прямой доступ, а в obj-c четко через методы было.

    Ну и гораздо удобнее:
    [someObj sendMsg:xxx];

    которое никогда не даст вылета, нежели все на nil проверять (? в свифте ставить).

    Ох и пойдет глючных прогв в аппсторе.

    WhyN0t avatar
    WhyN0t8 июня 2014
    0

    @cd_racer, что касается неограниченного доступа – инженеры Эппл вроде как пообещали добавить механизм контроля: http://stackoverflow.com/questions/24003918/does-swift-have-access-modifiers

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @WhyN0t, видел, но это на усмотрение программиста. Зачем огород городить, когда в getter-setter это можно делать сразу? Ну и в генерируемых по-умолчанию нечто подобное делалось. В общем, настороженно я к таким штукам отношусь.

    progn avatar
    progn8 июня 2014
    0

    @cd_racer,
    >Ох и пойдет глючных прогв в аппсторе.

    из-за слабой типизации и низкоуровневости в ObjC куда больше глюков. В программе ждешь NSNumber, а в следствии ошибки допустим серевера в JSON прилетает NSString. Хотелось бы чтобы сразу, на этапе инициализации объекта была ошибка, а не где-то в глубине программы, в другом потоке (так что стектрейс ничего тебе на даст) вывалилось исключение – нет такого метода.

    Да и по поводу nil в objc не все так просто. При попытке вставить nil в словарь вывалется исключение. При попытке сравнения isEqualToNumber с аргументом nil тоже

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @progn, JSON – это в первую очередь вопрос к библиотеке: как сделана, так и работает. Тут просто получилась доп. прокладка, в некотором смысле квазибиблиотека. Уж не уверен, хорошо ли это. Так можно явно проверять перед преобразованием. Ну да, на этапе выполнения ошибка вылезет сразу рядом. Так, по-хорошему, всегда стоит заранее проверку делать на корретность получаемых данных – это хороший стиль.

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @progn, по поводу nil соглашусь: не все идеально, но будет еще хуже.

    Enlightened avatar
    Enlightened8 июня 2014
    0

    @cd_racer, да, проверять на nil. “?” это как раз очень элегантная синтаксическая обертка для maybe монада. А глючные программы как раз и глючные из-за того, что программа входит в неопределенное состояние, а не крашится сразу. И разработчик даже не знает, с какого момента она стала неправильно работать.

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @Enlightened, я боюсь, что в половине программ про такую проверку не подумают

    progn avatar
    progn9 июня 2014
    0

    @cd_racer, программа будет падать в этом месте, и это отлично, даже неопытный программист поймет по пришедшему стрекрейсу что он не учел этот момент, и или поставит проверку или поменяет код так чтобы этой ситуации не возникало. Это лучше странных ошибок которые могут произойти намного позже.

    jabbarish avatar
    jabbarish8 июня 2014
    0

    @cd_racer, вообще-то, это properties. в той же книге, которую вы процитировали, пишут что они могут быть stored и computed.
    фактически, это аналог synthesize, но без него. и правильно сделали, избавились от лишнего.

    пример из книги:

    var origin = Point() // stored
    var size = Size() // stored
    var center: Point {
    get {
    let centerX = origin.x + (size.width / 2)
    let centerY = origin.y + (size.height / 2)
    return Point(x: centerX, y: centerY)
    }
    set(newCenter {
    origin.x = newCenter.x – (size.width / 2)
    origin.y = newCenter.y – (size.height / 2)
    }
    }

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @jabbarish, я так понял, что не совсем. Опять же, пример из книжки привел

    Войди на сайт, чтобы ответить
    Ответить
  4. Astraport avatar
    Astraport 8 июня 2014
    0

    Изобретен велосипед и Apple этим гордится.

    mitim avatar
    mitim8 июня 2014
    0

    @Astraport, только этот велосипед ездит быстрее в 2 раза. при одинаковых усилиях кручения педалей.

    cd_racer avatar
    cd_racer8 июня 2014
    0

    @mitim, вопрос: почему быстрее. Потому что статическое связывание и порямой доступ к данным объекта? Сомнительный плюс. А если все по-уму сделать (с методами, проверками и тп), то скорость, навреное, будет той же.

    Alex12 avatar
    Alex128 июня 2014
    0

    @cd_racer, да, по текущим тестам Swift выходит значительно медленнее (иногда просто медленнее) Objective-C.

    Dmitrii avatar
    Dmitrii8 июня 2014
    0

    @Astraport, какой жутко недалекий комментарий…
    По вашему все что вышло после Plankalkül не стоило изобретать?

    iGeek avatar
    iGeek8 июня 2014
    0

    @Dmitrii, После ознакомления с синтаксисом сделал вывод,, что Apple сделала очередной Flappy Bird.

    Dmitrii avatar
    Dmitrii8 июня 2014
    0

    @iGeek, ну так чем проще тем проще. Мне синтаксис понравился – во многом схож с Python. Многое стало удобнее в разы. Ну это опять же личное мнение, но мне приятней стало кодить)

    Astraport avatar
    Astraport8 июня 2014
    0

    @Dmitrii, да я не против, пусть что хотят изобретают. Просто Свифт выходит самое значимое событие выставки, миллионы людей бъются в экстазе, революционное событие, переворот в сознании.
    А в результате обыденное событие, аналоги которому возникают по несколько штук в год.

    Dmitrii avatar
    Dmitrii8 июня 2014
    0

    @Astraport, Это эволюционная ступень развития Obj-C – и очень не плохая, и чтобы тут не писали в комментах – я нашел его для себя в разы удобнее.
    Аналоги не возникают по несколько штук в год. Не нужно преувеличивать. В действительности для нас был по большому счету только Objective-C.

    Войди на сайт, чтобы ответить
    Ответить
  5. plazmatex avatar
    plazmatex 8 июня 2014
    0

    А давайте скинесмся и переведем эту книженцую с описанием на русский язык?

    Astraport avatar
    Astraport8 июня 2014
    0

    @plazmatex, думаю, уже переводят. Подожди пару недель.

    Astraport avatar
    Astraport8 июня 2014
    0

    @plazmatex, https://hexlet.org/course/swift/
    Или вот даже видео уроки на русском.

    Dmitrii avatar
    Dmitrii8 июня 2014
    0

    @plazmatex, не хочу никого задеть, но как можно кодить не зная английского? Я не про «Hello, world!» говорю )

    Lantego avatar
    Lantego8 июня 2014
    0

    @Dmitrii, вот и у меня тот же самый вопрос возник.

    Войди на сайт, чтобы ответить
    Ответить
  6. Power & Control avatar
    Power & Control 8 июня 2014
    0

    Кто-то кричал (то ли тут, то ли на другом сайте), что типа без Джобса Эппл начал и язык свой создали, при этом назвав этот язык выкидышом. Так вот, кто сказал это, если ты читаешь это то, уткнись! Язык еще при Джобсе разрабатывался и было глупо думать, что они его за год написали. Что за тенденция пошла, все думают, что они за год все делают. Ну возьмите и сделайте сами все за год.

    Power & Control avatar
    Power & Control8 июня 2014
    0

    что в Эппл и язык свой создали*

    Войди на сайт, чтобы ответить
    Ответить
Помни о правилах — если начал оффтопить, то не удивляйся потом.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.