LINUX.ORG.RU

Swift — новый язык программирования от Apple

 , ,


0

1

Только что на своей ежегодной конференции для разработчиков WWDC'14 крупнейшая IT-корпорация мира Apple анонсировала новый язык программирования — Swift, призванный заменить Objective-C, являющийся основным в операционных системах компании последние двадцать лет.

Swift — объектно-ориентированный язык, компилирующийся в нативный код. Вместе с тем он включает в себя многие фичи, присущие функциональным языкам, в том числе:

  • сопоставление с образцом (pattern matching);
  • вывод типов (type inference);
  • замыкания (closures);
  • кортежи (tuples);
  • REPL.

Однако в новый язык не попали многие низкоуровневые вещи, обеспечивающие обратную совместимость Objective-C и C. Несмотря на это, заявляется, что по производительности Swift существенно обгоняет Objective-C.

Также сообщается, что Xcode — интегрированная среда разработки от Apple — уже обеспечивает полную поддержку нового языка, включая интерактивный playground.

Подробнее на Apple Developer Center

>>> Руководство по языку

★★

Проверено: Shaman007 ()
Последнее исправление: CYB3R (всего исправлений: 2)

Ответ на: комментарий от aidan

На вот почитай книжку: https://itunes.apple.com/gb/book/swift-programming-language/id881256329?mt=11

Очень крутой замес у них получился. Синтаксически — винегрет из сишарпа, го, хаскела и остального понемножку.

Ну и с фичами полный порядок. Даже алгебраические типы данных есть в некотором виде.

В общем, полный think different.

Apple-ch ★★
() автор топика
Ответ на: комментарий от Apple-ch

This book is available for download with iBooks on your Mac or iOS device, and with iTunes on your computer. Books can be read with iBooks on your Mac or iOS device.

Для меня это уж слишком different.

aidan ★★★★
()

сопоставление с образцом (pattern matching),
вывод типов (type inference),
замыкания (closures),

Ну вот, хипсторы и до ФП добрались

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Ну вот, хипсторы и до ФП добрались

iOS-разработчики в большинстве своем мало похожи на хипстоту. Как правило, это накачанные парни лет 25. По крайней мере в рашке.

API достаточно сложный, и манерные мальчики не могут в него.

anonymous
()

Swift eliminates entire classes of unsafe code. Variables are always initialized before use, arrays and integers are checked for overflow, and memory is managed automatically.

always initialized before use

arrays and integers are checked for overflow

restricts direct access to pointers

Где-то я это уже видел. Отключить это можно будет? Как мне в ногу выстрелить теперь?

Adonai ★★★
()
Последнее исправление: Adonai (всего исправлений: 2)
Ответ на: комментарий от resurtm

И как этот раздел новостей относится к данному сайту?

А что по твоему должно быть в новостях на этом сайте?

J ★★★★★
()
Ответ на: комментарий от J

И как этот раздел новостей относится к данному сайту?

А что по твоему должно быть в новостях на этом сайте?

Новости, связанные с Линуксом. Это же очевидно, разве нет?

resurtm ★★★
()

Язык заинтересовал, хотя где namespaces? Не нашёл в руководстве. А в остальном хороший шаг вперёд после Objective C. Ничего революционного, но все современные концепции собраны в хорошем виде.

Legioner ★★★★★
()
Ответ на: комментарий от resurtm

И зачем это нужно на LOR?

Язык разработан на llvm и скорее всего в скором времени будет доступен как open source проект.

Legioner ★★★★★
()

На первый взгляд кажется далеко не самым плохим язычком, но то что он от эпла значит что он не нужен

Debasher ★★★★★
()

Какой шанс что через пять лет этот свифт заменят новым языком?

loz ★★★★★
()

фичи, присущие функциональным языкам
сопоставление с образцом (pattern matching), вывод типов (type inference), кортежи (tuples), REPL

Какое отношение это всё имеет к функциональному программированию?

Gvidon ★★★★
()
Ответ на: комментарий от anonymous

Как правило, это накачанные парни лет 25.

It's fun to stay at the Y.M.C.A.
It's fun to stay at the Y.M.C.A.
They have everything for young men to enjoy
You can hang out with all the boys.

queen3 ★★★★★
()

что по производительности Swift существенно обгоняет Objective-C

А почему нельзя было прибавить производительности objc, зачем новый язык?

Lavos ★★★★★
()

Только анонсировано, а уже не нужно. Забавно.

Quasar ★★★★★
()
Больше, больше разного замесу!

Там питонов кучку и рубей.
Пыхов новых, разных го, 
Рустов, хацкелей и Vala...
Шарпов новых, паскалей...

Никому ведь и не нужно 
Что-то нужное ваять.
Просто. Софт. Для человеков.
???? Нееее, не выбор это наш.

Нужно новый высер вбахать.
И не меньше чем язык. 
С "новым лучшим лисапедом",
с "совсем без костылев"

А потом исчезнуть где-то, 
Что бы кто-то за тобой, 
Мозг долбал... "а накуя, 
надо было юзать это... Г.."
Denjs
()
Последнее исправление: Denjs (всего исправлений: 1)

Очень интересный язык

«If you assign an Array instance to a constant or variable, or pass an Array instance as an argument to a function or method call, the contents of the array are not copied at the point that the assignment or call takes place. Instead, both arrays share the same sequence of element values. When you modify an element value through one array, the result is observable through the other. For arrays, copying only takes place when you perform an action that has the potential to modify the length of the array. This includes appending, inserting, or removing items, or using a ranged subscript to replace a range of items in the array»

ИМХО, не самое очевидно поведение.

l0k9j8
()
Ответ на: комментарий от skam

Дык он еще якобы быстрее Сишки

Ну точнее ObjectiveC, а сравнение с Python выглядит вообще несколько странным. Одно дело нативный бинарник, другое python скрипт.

l0k9j8
()
Ответ на: комментарий от skam

Дык он еще якобы быстрее Сишки

Может быстрее ассемблера ещё?

resurtm ★★★
()
Ответ на: комментарий от l0k9j8

а сравнение с Python выглядит вообще несколько странным

Как сказали чуваки с Closed Circles, «не у петона то и про***ть можно!»

kravich ★★★★
()

сдается мне, яблоки смотрят на радости прогеров 1це.

Там тоже - сугубо собственный язык.

И проблемы с наличем программистов.

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

Они тоже создают стадо узкокалейных прогеров?

Denjs
()
Последнее исправление: Denjs (всего исправлений: 1)

А при чём тут линукс? Эппл выпустил язык, который будет поддерживать только Эппл.

vurdalak ★★★★★
()
Ответ на: комментарий от Adonai

Где-то я это уже видел. Отключить это можно будет? Как мне в ногу выстрелить теперь?

Дайте угадаю... Вы и есть автор Heartbleed (которому тоже было пофиг сколько и куда данных писать)? ;)

X-Pilot ★★★★★
()
Ответ на: комментарий от joy4eg

Кстати, либо от нас что-то скрывают, либо я что-то пропустил, но где thread'ы?! Я в документации не нашел. Ткните, если я пропустил, ну не может же такого быть, чтобы их не было.

l0k9j8
()

А мне жаль няшку Objective-C. Все-таки наследник Smalltalk'а, хоть и косвенный.
Наверняка Apple кинет все свои усилия на развитие этого бездушного Swift и о Objective-C через год все забудут. А ведь на нем писался легендарный NeXTSTEP.

EXL ★★★★★
()

Любопытно, качаю новый xcode, чтобы потыкать этот свифт.

unfo ★★★★★
()
Ответ на: комментарий от aidan

Для меня это уж слишком different.

Зайди по ссылке, скачай через iTunes, там обычная книга в формате epub. Не вижу проблемы прочитать её чем-либо, если надо сконверти calibri хоть в pdf.

kkk ★★
()
Ответ на: Очень интересный язык от l0k9j8

«If you assign an Array instance to a constant or variable, or pass an Array instance as an argument to a function or method call, the contents of the array are not copied at the point that the assignment or call takes place. Instead, both arrays share the same sequence of element values. When you modify an element value through one array, the result is observable through the other. For arrays, copying only takes place when you perform an action that has the potential to modify the length of the array. This includes appending, inserting, or removing items, or using a ranged subscript to replace a range of items in the array»

ИМХО, не самое очевидно поведение.

Всё очевидно, если немного подумать. Массив это struct { void *data, int length; }. При присваивании он копируется, указатель сохраняется на старом значении. При изменении длины указатель становится новым. Самая логичная реализация.

Legioner ★★★★★
()

каша какая-то получилась, получается тоже самое, если бы можно было бы писать и {} и begin/end

Int64 ★★★
()
Ответ на: комментарий от l0k9j8

Кстати, либо от нас что-то скрывают, либо я что-то пропустил, но где thread'ы?! Я в документации не нашел. Ткните, если я пропустил, ну не может же такого быть, чтобы их не было.

Треды в каком смысле? В библиотечном треды естественно будут. На уровне языка я не видел, чтобы многопоточность была уместной. Сам язык достаточно выразительный, чтобы библиотечная поддержка многопоточности выглядела достаточно удобно.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.