The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Компания Apple представила язык программирования Swift 3.0

20.09.2016 09:39

Компания Apple объявила о выходе языка программирования Swift 3.0, первом значительном выпуске после открытия исходных текстов проекта. Официальные сборки подготовлены для Linux (Ubuntu 14.04, 15.10) и macOS (Xcode). Исходные тексты распространяются под лицензией Apache 2.0.

В новом выпуске отмечается значительное расширение порта для платформы Linux, в состав которого включён ранее недоступный для Linux набор библиотек Swift Core Libraries. Версия для Linux не привязана к Objective-C Runtime, что позволяет использовать язык в окружениях, в которых отсутствует поддержка Objective-C. В основной состав также включён пакетный менеджер Swift Package Manager, предоставляющий средства для распространения модулей и пакетов с библиотеками и приложениями на языке Swift. Пакетный менеджер включает средства для управления зависимостями, систему автоматизированной загрузки, сборки и связывания компонентов.

В сам язык также включена большая порция изменений, в том числе нарушающих совместимость с выпусками Swift 2.2 и 2.3. Например, удалена поддержка синтаксиса определения функций "func foo(x: Int)(y: Int)", удалена возможность применения выражения "var" в блоке аргументов функций, прекращена поддержка операторов "++" и "--", прекращена поддержка циклов "for" в стиле языка Си, проведена унификация API (переименовано большинство функций) и полностью изменены средства для импорта Objective-C API в Swift.

Напомним, что реализация Swift построена с задействованием технологий свободного проекта LLVM. Для обеспечения высокой производительности Swift-программы компилируются в машинный код, выполняемый в тестах Apple на 30% быстрее кода на Objective-C. Вместо сборщика мусора в Swift используются средства подсчёта ссылок на объекты. Язык Swift наследует лучшие элементы языков C и Objective-C, и предоставляет объектную модель, совместимую с Objective-C (Swift-код может смешиваться с кодом на С и Objective-C), но отличается использованием средств автоматического распределения памяти и контроля переполнения переменных и массивов, что значительно увеличивает надёжность и безопасность кода. Swift также предлагает множество современных методов программирования, таких как замыкания, обобщенное программирование, лямбда-выражения, кортежи и словарные типы, быстрые операции над коллекциями, элементы функционального программирования.



  1. Главная ссылка к новости (https://swift.org/blog/swift-3...)
  2. OpenNews: Компания Apple представила Swift 2.2, первый выпуск с поддержкой Linux
  3. OpenNews: Компания Apple открыла реализацию языка Swift и реализовала поддержку Linux
  4. OpenNews: Компания Apple объявила о скором переводе языка Swift в разряд открытых проектов
  5. OpenNews: Попытка создания свободной реализации языка Swift, продвигаемого компанией Apple
  6. OpenNews: Компания Apple представила язык программирования Swift, основанный на LLVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45177-swift
Ключевые слова: swift, lang, apple
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (70) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, омномномнимус (?), 10:08, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >набор библиотек Swift Core Libraries

    ура, можно не использовать сторонние костыли.

     
     
  • 2.5, anonimous (?), 10:27, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +37 +/
    > ура, можно не использовать сторонние костыли.

    Такие, например, как язык Swift?

     
     
  • 3.8, омномномнимус (?), 10:40, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    такие как сторонние базовые библиотеки, петросян.
     
  • 2.58, НоНейм (?), 19:24, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Воуу.. воу придержите лошадей!
    Только objectiveC решился учить :)
     
     
  • 3.59, Andrey Mitrofanov (?), 19:28, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Воуу.. воу придержите лошадей!
    > Только objectiveC решился учить :)

    Решительнее надо. GNU Guile -- и пнеслась!

     

  • 1.2, Аноним (-), 10:13, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    > "func foo(x: Int)(y: Int)", удалена возможность применения выражения "var" в блоке аргументов функций, прекращена поддержка операторов "++" и "--", прекращена поддержка циклов "for"

    Попахивает 3,5 миллимитровым портом

     
     
  • 2.12, Аноним (-), 11:15, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вот мне интересно, почему и отчего дезигнерам новомодных поделок так свербит от операторов инкремента/декремента ?
     
     
  • 3.13, A.Stahl (ok), 11:39, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Пытаются, вероятно, избавиться от частных случаев.
    Хотя мне становится грустно когда я представлю себе смещение по указателю или итератору без этих операторов. Но, возможно, в Swift нет ни указателей ни итераторов?
     
     
  • 4.66, None (??), 09:43, 21/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Я так понимаю, когда компьютеры были большими, а компиляторы не очень оптимизирующими, эти операторы позволяли задействовать автоинкрементный/автодекрементный режимы адресации.
    Сейчас-то видимо уже пофиг.
     
  • 3.14, Аноним (-), 11:40, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    клоун: в основном их использовали в циклах, если цикл записывается по другому, то и особой необходимости в них нет.

    Си:
    for(int i=1; i<=10; i++) {}

    Swift в стиле Си:
    for var i=1; i<=10; i++ {}

    Swift:
    for i in 1...10 {}

    Они создают свой синтаксис, который при нормальном написании кода, более удобочитаемый. А оператор "++" к удобочитаемым не относится. Си вообще - вещь в себе. Если привыкнуть, то язык удобный, но к нему ещё нужно привыкнуть.

     
     
  • 4.20, freehck (ok), 12:27, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Они создают свой синтаксис

    Скорее заимствуют. В лиспах уже 30 лет как (for ((i (in-range 10))) <block>).

    > А оператор "++" к удобочитаемым не относится.

    Неужели. i++ и inc(i) - такая большая разница?

     
     
  • 5.31, Аноним (-), 13:46, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    клоун: ++а-а++ по-твоему читаемо? И ты точно помнишь приоритет операций в Swift и сможешь сказать результат выполнения выражения, если а=1?

    Другой пример:

    (а++)+(а++)

    В Swift реализована классическая схема, когда в процессе вычисления выражения значения переменных не изменяются. Это упрощает понимание логики и позволяет избегать ошибок.

     
     
  • 6.33, iPony (?), 13:48, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    http://lh5.ggpht.com/_0W-IrdaBLsY/Sbl7jupRAMI/AAAAAAAACiI/sQ6v1m4srRo/0_22686
     
     
  • 7.36, Andrey Mitrofanov (?), 14:36, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >/0_22686_824d2f76_L.jpg

    Лошадиным хьюмором -- по клоуну. Богато.

     
  • 7.47, hhg (ok), 15:30, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    три тупака!
    i расположена в области памяти портов вывода.
    нормальная такая цветомузычка на пинах будет :-P
    а вообще, это операция передёргивания..
     
     
  • 8.50, eganru (?), 16:33, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    i i расположена в области памяти портов вывода i - swift не имеет целью взаим... текст свёрнут, показать
     
     
  • 9.52, hhg (ok), 16:42, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    при чём тут свифт смотри рисунок про трёх тупых укурков ... текст свёрнут, показать
     
  • 8.77, ы (?), 16:58, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    результат постфиксного оператора не меняет операнд, и он имеет больший приоритет... текст свёрнут, показать
     
  • 6.35, Crazy Alex (ok), 14:00, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть вагон всяких нечитаемых конструкций. на то есть review и статический анализ. Потому что критерии "нечитаемости" для всех разные.
     
     
  • 7.40, Аноним (-), 14:49, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    клоун мы о разном говорим Взять японский, в котором у каждого слова миниму... большой текст свёрнут, показать
     
     
  • 8.51, Аноним (-), 16:34, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    do-loop и while-wend - это Visual Basic, а не Паскаль А появился VB гораздо поз... текст свёрнут, показать
     
  • 8.71, Аноним (-), 01:27, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Клоун, разные чтения у иероглифов, а слова читаются однозначно ... текст свёрнут, показать
     
  • 6.42, freehck (ok), 15:01, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > клоун: ++а-а++ по-твоему читаемо?

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

    > В Swift реализована классическая схема, когда в процессе вычисления выражения значения переменных не изменяются.

    Ага, как же.

    <-- prog
    var a = 0
    func incr () -> Int {a = a+1; return a}
    print("first: ", (incr()+a))
    print("second: ", (incr()+incr()+a))

    --> output
    first: 2
    second: 8

     
     
  • 7.44, Аноним (-), 15:06, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    клоун: ты привёл конструкцию, в которой программист сам захотел это сделать. Также это можно было сделать, создав функцию с передачей параметра по ссылке или функцию с отложенным вычислением.

    ЯП не мешает тебе косяпорить, но оберегает от возможных косяков.

     
     
  • 8.45, freehck (ok), 15:13, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в процессе вычисления выражения значение переменной изменяется ... текст свёрнут, показать
     
  • 8.46, freehck (ok), 15:19, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы бы посмотрели, что ли, на Haskell Чтобы там накосяпорить, надо очень, очень ... текст свёрнут, показать
     
     
  • 9.78, твою м (?), 17:02, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    использование хацкеля само по себе тот еще косяк... текст свёрнут, показать
     
  • 6.70, Аноним (-), 01:23, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Клоун, это undefined behavior. Только эксперты с опеннета не знают этого в 2016 году.
     
  • 4.23, Аноним (-), 13:00, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Подскажите, как в Swift сделать шаг цикла переменной длины?
     
     
  • 5.24, Аноним (-), 13:02, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вам это не нужно. Think different, мля.
     
     
  • 6.25, Аноним (-), 13:05, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наверное так:

    for i in 1...10 { j = i * cycle_step; foo(j); }

    Через задницу конечно, но это же яблочники у них все так.

     
     
  • 7.37, Andrey Mitrofanov (?), 14:38, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > for i in 1...10 { j = i * cycle_step; foo(j); }

    'cycle = random()' -пропустил! Внутри цикла. Переменной же длины.

    > Через за

     
  • 5.34, Аноним (-), 13:50, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    for i in stride(from: 0, to: 10, by: x)
     
     
  • 6.60, Аноним (-), 20:16, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Даааа, ЭТО конечно читабельнее чем C чего уж там.
     
  • 4.62, Аноним (-), 00:51, 21/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вернись в свой убогий цирк под колеса..
     
  • 3.69, абвгдейка (ok), 21:08, 21/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    так не от операторов, а от x = y++ ++z
     
     
  • 4.74, Аноним (-), 11:24, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так никто на практике и не пишет.
     
     
  • 5.79, абвгдейка (ok), 19:53, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Так никто на практике и не пишет.

    ну не совсем так, но x = ++y бывает и не надо за всех :)

     

  • 1.3, A.Stahl (ok), 10:21, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Да никто не будет использовать этот язык вне Apple инфраструктуры.
    Objective C не использовали, не будут и Swift использовать.
    Это телодвижение бессмысленно и сродни тому, как Microsoft что-то там открывает и портирует.
     
     
  • 2.6, АНонимБ (?), 10:28, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    У Аппле хватит денег что-бы заинтересовать других разработчиков.
     
     
  • 3.7, A.Stahl (ok), 10:35, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Сомневаюсь. Единственное применение я вижу лишь в том, что разработчики привыкшие к инструментам Apple, которым вдруг стало нужно написать что-то под Линукс, смогут использовать привычный инструментарий. Это сродни тому, что я не стал изучать Яву, а пишу под Андроид на Си++. Если бы такой возможности не было, то разобрался бы в Яве. А раз она есть, то я доволен. Т.е. это не заявка на успех и расширение своей сферы влияния, это просто помощь своим родным разработчикам.
     
     
  • 4.16, fail (?), 12:13, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Сомневаюсь. Единственное применение я вижу лишь в том, что разработчики привыкшие к
    > инструментам Apple, которым вдруг стало нужно написать что-то под Линукс, смогут
    > использовать привычный инструментарий. Это сродни тому, что я не стал изучать
    > Яву, а пишу под Андроид на Си++. Если бы такой возможности
    > не было, то разобрался бы в Яве. А раз она есть,
    > то я доволен. Т.е. это не заявка на успех и расширение
    > своей сферы влияния, это просто помощь своим родным разработчикам.

    Кстати, удивляют лица, оcoбeннo физические,
    ваяющие аппликухи (ocoбливо) общего назначения под закрытые плaтфopмы vеndоro'ff.

    Где их софт - по настроению левой пятки "любого департамента"  могут "вышвырнуть на мороз или аполитично грохнуть".

     
     
  • 5.18, A.Stahl (ok), 12:18, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ты про Андроид? А некуда от него деваться. Ему пока нет альтернативы. Во всяком случае лучшей альтернативы.
     
     
  • 6.21, fail (?), 12:33, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ты про Андроид? А некуда от него деваться. Ему пока нет альтернативы. Во всяком случае лучшей альтернативы.

    И не только..

    Cкopее про так называемый механизм "marketa" в глобальном смысле этого слова - AppStore, GoogleMarket, PlayStore и прочая подобная игра слов.

    К всему, к чему прикacaются наши нaглocaксонские кaмpaды, к-рые нам совсем не камрады, или подыхает (см. Nokia с N9, Meego, Maemo), или пpeвpaщается в "бaзap".

     
     
  • 7.22, A.Stahl (ok), 12:49, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Какой такой базар? Что именно ты имеешь в виду? И кто эти "вы", которым англо-саксонцы не друзья?
     
     
  • 8.26, Аноним (-), 13:06, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное разработчики славянского ПО ... текст свёрнут, показать
     
     
  • 9.28, fail (?), 13:12, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    можно и финского нарда и совта добавить ... текст свёрнут, показать
     
  • 8.27, fail (?), 13:11, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    его величство рынок в вульгарном смысле игра слов - имеется в виду, Я как по... текст свёрнут, показать
     
  • 5.53, _ (??), 17:08, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Кстати, удивляют лица, оcoбeннo физические, ваяющие аппликухи (ocoбливо) общего назначения под закрытые плaтфopмы vеndоro'ff.

    А чего удивительного в людях желающих сделать копеечку?!
    Вот когда с опенсорса бабла попрёт столько же - они все тут будут. МатреализьмЪ рулит.

     
     
  • 6.61, fail (?), 22:47, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >А чего удивительного в людях желающих сделать копеечку?!

    да не в "копеечках" дело, не была уловлена суть моего поста

    самое поверхностное:
    просто vendors в любое время, по любой, с потолка, причине, могут:
    - у пользователя грохнуть аpp
    - а девелоперское лицо/аккаунт с "программной нетленкой" проводят на выход

     
  • 4.49, Яблочный Ононим (?), 15:52, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Мусье наверное судит по себе? Но в Омериге и прочих "цывiлiзованных" краынах разработка для огрызка очень популярная заба и хорошо оплачиваемая. Поэтому swift будет очень популярен, в своё время. Современные ЯП тот же товар и большинство современных погромистов это хипстеры гонящиеся за стильным, модным, молодёжным.
     
  • 2.75, anonymous (??), 11:28, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тыц
    http://www.ibm.com/cloud-computing/bluemix/swift/

    Тыц
    https://swiftlang.ng.bluemix.net/#/repl

    Тыц
    https://github.com/IBM-Swift

    Вобщем ЦЫЦ!

     

  • 1.4, Аноним (-), 10:25, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вон даже web-фреймворки делают: https://github.com/vapor/vapor
     
  • 1.9, Аноним (-), 10:49, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    че у него с работой с бд/ui?
     
     
  • 2.10, омномномнимус (?), 10:53, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для макос - нативно, для остального - ничего нет. Как всегда ;-)
     
     
  • 3.32, НяшМяш (ok), 13:46, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну на гитхабе есть ребята, которые не ноют, а пилят биндинги.
     

  • 1.11, nazarpc (?), 11:03, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ubuntu 15.10 ж уже не поддерживается, почему не 16.04?
     
     
  • 2.30, Аноним (-), 13:45, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    iPacket?
     

  • 1.54, Аноним (-), 19:08, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это так и должно быть, что весь софт нужно переписывать каждый релиз свифта из-за несовместимостей на уровне синтаксиса?
     
     
  • 2.57, Andrey Mitrofanov (?), 19:23, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это так и должно быть, что весь софт нужно переписывать каждый релиз
    > свифта из-за несовместимостей на уровне синтаксиса?

    Ну весь PHP ж переписывают?  И ничего!

     
     
  • 3.68, Аноним (-), 17:22, 21/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В PHP оставляется обратная совместимость. Если не бежать впереди паравоза и не использовать фичи сразу, как только они появились, то код будет работать долго. php4-style конструкторы удалили только в php7.

    Код же на свифте надо переписывать КАЖДЫЙ код.

     
  • 2.73, Аноним (-), 07:10, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Пока да. У Swift еще не поддерживается сохранность API и ABI между версиями.
     

  • 1.55, Аноним (-), 19:09, 20/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    че только не придумают лишь бы не писать на джаве
     
     
  • 2.56, Я. Р. Ош (?), 19:21, 20/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    толсто
     
     
  • 3.76, Аноним (-), 10:42, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > толсто

    Толсто и тормозит.

     

  • 1.63, Отражение луны (ok), 03:05, 21/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем нам ЭТО, если идеальный язык давно уже есть? Да, как вы уже догадались, я про яваскрипт.
     
     
  • 2.65, Аноним (-), 08:02, 21/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    не смешно
     

  • 1.64, Анонимаус (?), 06:41, 21/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Вместо сборщика мусора в Swift используются средства подсчёта ссылок на объекты.

    И че, посчитали, а удалять кто будет? В JVM тоже считают, вроде. Так почему один GC а другой не GC?

     
     
  • 2.72, Аноним (-), 01:36, 22/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Уважаемый эксперт, в жвм не считают ссылки. Там вариации на тему mark&sweep сборщика, который обходит всю кучу и ищет недостижимые объекты.
    А подсчет ссылок - это не сборка мусора, потому что, как написали выше, циклы не удаляет.
     

  • 1.67, Аноним (-), 13:19, 21/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В JVM тоже считают, вроде

    Наверное swift не справится с циклическими ссылками, поэтому не GC.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру