Swift

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Swift

Непрочитанное сообщение Lepton » 03 май 2016, 15:12

Swift — язык программирования от Apple.
http://www.apple.com/ru/swift/
Swift — это надёжный и интуитивно понятный язык программирования от Apple, при помощи которого можно создавать приложения для iOS, Mac, Apple TV и Apple Watch. Он предоставляет разработчикам небывалую свободу творчества. Благодаря этому простому и удобному языку с открытым кодом вам достаточно просто интересной идеи, чтобы создать нечто невероятное.
В 2015г. Apple анонсировала Swift как открытый язык программирования (с открытым исходным кодом) и теперь Swift доступен на Linux.
Бинарные версии представлены для Ubuntu 14.04 и Ubuntu 15.10:
https://swift.org/download/#releases
(там же описана и установка)

Для теста:
1) Распаковываем скаченный архив (прим. swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz) в любую папку
2) Пишем скрипт (прим. swift.sh):

Код: Выделить всё

#!/bin/bash
export PATH=./bin:$PATH
export CPATH=./include:$CPATH
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
swift
#gnome-terminal
3) Запускаем - попадаем в интерактивную среду разработки REPL (Read Eval Print Loop): пишем код на SWIFT и REPL выполняет его внутри интерактивной сессии.
SWIFT.png
Как вариант 2 - создать текстовый файл с кодом, расширением .swift (пример. hello.swift)
Открываем терминал через скрипт:

Код: Выделить всё

#!/bin/bash
export PATH=./bin:$PATH
export CPATH=./include:$CPATH
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
#swift
gnome-terminal
Выполняем

Код: Выделить всё

$ swift hello.swift
Hello, world!
Как вариант 3 - создать проект (swift build):

Код: Выделить всё

$ swift build --help
a) Создаем папку проекта и переходим в нее

Код: Выделить всё

$ mkdir Hello
$ cd Hello
b) Каждый проект должен иметь файл манифеста под названием Package.swift в корневом каталоге. Если файл манифеста является пустым, используются обычные значения по умолчанию. Создайте пустой манифест с помощью:

Код: Выделить всё

$ touch Package.swift
c) При использовании значений по умолчанию, менеджер проектов ожидает , что весь исходный код будет содержаться в подкаталоге Sources, создадим и его:

Код: Выделить всё

$ mkdir Sources
d) Создаем файл с именем main.swift в Sources директории с нашим кодом (прим. print("Hello, world!"))
e) Компилируем проект, выполнив команду:

Код: Выделить всё

$ swift build
После выполнения этой команды, результат ищите в .build каталоге.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 03 май 2016, 15:30

Lepton писал(а):Swift — язык программирования от Apple.
Русскоязычная документация (полный перевод оригинальной большого объёма) по Swift:
Изображение

И вообще там большой русскоязычный сайт относительно программирования в Swift ... с форумом, вопросами-ответами и т.д.:
Добро пожаловать на Стартовую страницу SwiftBook.ru
Изображение
SwiftBook - сайт, посвященный программированию на языке Swift под мобильную платформу iOS (самое популярное направление, позволяющее создавать и распространять приложения через AppStore и, конечно, на этом зарабатывать).

Swift является новым языком программирования. Он был анонсирован только в 2014г (Objective-C в 1983г!).
Swift Open Source. В конце 2015 года Swift был анонсирован как язык с открытым исходным кодом, что позволяет разработчикам всего мира учавствовать в улучшении языка совместно с разработчиками Apple.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 03 май 2016, 15:48

Swift против Objective-C: 10 причин почему будущее за Swift
Изображение
...
6. Swift быстрее

Удаление устаревших конвенций намного улучшило движок Swift. Тестирования производительности кода в Swift по-прежнему указывают на то, что Apple продолжает преданно улучшать скорость работы приложений на Swift.

В соответствии с данными Primate Labs, по показателям популярного теста GeekBench (кросс-платформенный эталонный тест для измерения быстродействия процессора и подсистемы памяти компьютера) Swift приблизился к эксплуатационным характеристикам C++ по ограничению скорости вычислений с использованием алгоритма Мандельброта в декабре 2014 года. В феврале 2015 года Primate Labs обнаружили, что Xcode 6.3 Beta улучшил производительность алгоритма GEMM в Swift (алгоритма ограниченной памяти последовательного доступа больших массивов (a memory-bound algorithm with sequential access of large arrays)) до коэффициента 1,4. Начальная имплементация FFT (алгоритма ограниченной памяти с рандомным доступом больших массивов) - улучшение производительности в 2,6 раза.

Swift показал и другие улучшенные показатели при дальнейшем тестировании: 8,5-кратное повышением для FFT алгоритма (оставив C++ только с приростом производительности в 1,1 раза). Также, Swift превосходит C++ для алгоритма Мандельброта, коэффициентом в 1,03.

Практически, Swift на одном уровне с C++ для FFT и алгоритма Мандельброта. В соответствии с данными Primate Labs алгоритм GEMM показал, что компилятор Swift не может векторизовать код так, как может компилятор C++. У C++ есть небольшое преимущество, но Apple обещают все исправить в следующих версиях Swift.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 03 июн 2016, 19:43

iDev Swift - ещё один русскоязычный сайт о Swift.
И здесь тоже перевод книги документации (книги той же, как я понял ... потому что по Swift в природе успели написать только одну книгу ... как Библия :lol: )
Документация Swift на Русском
2 июня 2014 года на конференции WWDC был представлен язык программирования Swift. Также было представлено бесплатное руководство по использованию языка объёмом в 500 страниц, доступное на сервисе «iBook Store» и в общем доступе на developer.apple.com

На сайте idev-swift.ru предоставлен перевод книги, автор перевода Сергей Югай

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 01 фев 2018, 17:14

Lepton писал(а): В 2015г. Apple анонсировала Swift как открытый язык программирования (с открытым исходным кодом) и теперь Swift доступен на Linux.
Бинарные версии представлены для Ubuntu 14.04 и Ubuntu 15.10:
https://swift.org/download/#releases
(там же описана и установка)
На сегодня там выложены релизы Linux:
- только для .DEB дистрибутивов;
- для Ubuntu 14.04, 16.04, 16.10 - на выбор
- только 64 бит

Код: Выделить всё

[olej@dell Langs]$ ls -l swift-4.0.3-RELEASE-ubuntu16.04.tar.gz
-rw-rw-r-- 1 olej olej 167297070 фев  1 15:29 swift-4.0.3-RELEASE-ubuntu16.04.tar.gz
На странице скачивания для установки под Linux указывается необходимым только:

Код: Выделить всё

$ export PATH=/path/to/usr/bin:"${PATH}"

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 01 фев 2018, 18:48

Lepton писал(а): Как вариант 2 - создать текстовый файл с кодом, расширением .swift (пример. hello.swift)
См. производительность языков программирования

Код: Выделить всё

$ swift --version
Swift version 2.2 (swift-2.2-RELEASE)
Target: x86_64-unknown-linux-gnu
Сейчас это:

Код: Выделить всё

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/speed.10/swift $ swift -version
Swift version 4.0.3 (swift-4.0.3-RELEASE)
Target: x86_64-unknown-linux-gnu
Тот код, который приводился и работал в той теме - fiboSwift.tar - сейчас заваливается на компиляции с ошибками:

Код: Выделить всё

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/speed.10/swift $ swift fibo_sw.swift
fibo_sw.swift:9:4: error: use of unresolved identifier 'Process'
if Process.arguments.count < 2 {
   ^~~~~~~
fibo_sw.swift:13:15: error: use of unresolved identifier 'Process'
    let arg = Process.arguments[1]
              ^~~~~~~
fibo_sw.swift:17:18: error: missing argument label 'n:' in call
       print(fib(argint))
                 ^
                 n:
fibo_sw.swift:5:20: error: missing argument label 'n:' in call
        return fib(n - 1) + fib(n - 2)
                   ^
                   n:
С того обсуждения не прошло и 2-х лет полных...
Т.е. с совместимостью версий у Apple сильно неважно. :-o (С/С++ сохраняют синтаксическую совместимость на протяжении уже лет 40!)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 01 фев 2018, 18:56

Olej писал(а): Тот код, который приводился и работал в той теме - fiboSwift.tar - сейчас заваливается на компиляции с ошибками:
Но:

Код: Выделить всё

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/speed.10/swift $ cat hello.swift 
print( "Hello, world!" )

Код: Выделить всё

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/speed.10/swift $ swift hello.swift 
Hello, world!
Это в виде простейшего примера в режиме интерпретации.
С компиляцией кода ещё нужно разобраться...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 02 фев 2018, 13:11

Olej писал(а):Т.е. с совместимостью версий у Apple сильно неважно. :-o (С/С++ сохраняют синтаксическую совместимость на протяжении уже лет 40!)
Теперь это короткое приложение вычисления чисел Фибоначчи будет выглядеть так:

Код: Выделить всё

func fibo( n: Int ) -> Int {
    if n < 2 {
        return 1
    }
    else {
        return fibo( n: n - 1 ) + fibo( n: n - 2 )
    }
}

if CommandLine.arguments.count < 2 {
    print( "Ups!" )
} else {
    let arg = CommandLine.arguments[ 1 ]
    var argstr: Int? = Int( arg )
    if argstr != nil {
       let argint: Int! = Int( arg )
       print( fibo( n: argint ) )
    }
    else {
       print( "Ups!" )
    }
}
После версии Swift 3.X Process. заменен на CommandLine.
Можете убедиться так:

Код: Выделить всё

var c = 0;
for arg in CommandLine.arguments {
    print("argument \(c) is: \(arg)")
    c += 1
}
Это выглядит так:

Код: Выделить всё

$ swift -o args args.swift && ./args fee fi fo fum
argument 0 is: ./args
argument 1 is: fee
argument 2 is: fi
argument 3 is: fo
argument 4 is: fum

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Swift

Непрочитанное сообщение Olej » 02 фев 2018, 13:13

Olej писал(а): После версии Swift 3.X Process. заменен на CommandLine.
Это не единственное изменений ... например, вызовы функций и др.
То, что они называют ярлыки аргументов:

Код: Выделить всё

return fibo( n: n - 1 ) + fibo( n: n - 2 )

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя