Swift part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/06/11(水) 14:42:15.02ID:+13mKJ0ZApple Developer
https://developer.apple.com/swift/
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/
iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
0342デフォルトの名無しさん
2014/07/03(木) 08:58:36.06ID:s8dcLjiN「力不足」だよね?
0343デフォルトの名無しさん
2014/07/03(木) 09:07:45.05ID:Q4dDnky30344デフォルトの名無しさん
2014/07/03(木) 13:00:11.80ID:ocaDq0om赤っ恥www
0345デフォルトの名無しさん
2014/07/03(木) 13:12:53.11ID:0tabs9DN0346デフォルトの名無しさん
2014/07/03(木) 17:25:46.66ID:P7mc1MKH必死だな。
0347デフォルトの名無しさん
2014/07/03(木) 18:39:36.50ID:VyOuWYyM0348デフォルトの名無しさん
2014/07/03(木) 18:57:04.96ID:bRkIiAVF0349デフォルトの名無しさん
2014/07/03(木) 20:31:24.65ID:FhkBxcg00350デフォルトの名無しさん
2014/07/03(木) 20:41:48.37ID:ap5XVsa0kwsk
0351デフォルトの名無しさん
2014/07/04(金) 00:10:43.27ID:UzbhYlbZ首を傾げるってどんなトコ?
個人的な使い勝手はJava超過Smalltalk未満なんだけど。
0352デフォルトの名無しさん
2014/07/04(金) 00:37:01.19ID:msFVWI+xSwiftはモダンで洗練されている、かつ大衆が好む言語
Smalltalkはモダンでもないし、大衆向けでもない。素晴らしいけどな
いいじゃん、個人的はって断わってるところ見ると自覚はしてるんだろ?
0353デフォルトの名無しさん
2014/07/04(金) 01:39:34.04ID:Kc5FuQQY0354デフォルトの名無しさん
2014/07/04(金) 01:49:22.89ID:msFVWI+x言いたいことは分かるが、SwiftはDSLでは無く汎用プログラミング言語な。
言語として汎用であるから、文法などを比較することに意味はあるよ
0355デフォルトの名無しさん
2014/07/04(金) 09:35:51.65ID:ibPrybjYじゃ、主張としては「JavaのほうがObject-Cより良い」ってこと?
だとしたら言い回しがおかしい
0356デフォルトの名無しさん
2014/07/04(金) 10:35:40.73ID:55Iwzgg50357デフォルトの名無しさん
2014/07/04(金) 10:58:34.80ID:MI6unMOz0358デフォルトの名無しさん
2014/07/04(金) 20:11:26.61ID:ki9fyfkR聞きたいのはswiftとgolangの批判だよ。
0359デフォルトの名無しさん
2014/07/04(金) 21:06:13.84ID:AqR4CHdL広く普及していて同じくらい優れた言語は既にたくさんあるわけで、
既存の言語じゃいけない理由がないならわざわざ新しく作るのはリソースを分断させるだけの迷惑行為だ
0360デフォルトの名無しさん
2014/07/04(金) 21:07:23.38ID:RlFM+Deh0361デフォルトの名無しさん
2014/07/04(金) 21:36:09.61ID:UzbhYlbZ非難じゃなくて批判(事実を突き合わせた上での判断)を聞きたいわけなんだが。
個人的な批判としてはgoのinterfaceと委譲は非常に出来が良かったと思う。
最もあのinterfaceは他の言語でsignatureとして実装されてたから、
真新しいものでも無かったんだけど。
それから、importの別名。これもC++なんかでusingとして
既に存在してた機能じゃあるが、
Javaなんかじゃ使えないからそれらの言語に比べりゃ便利だった。
goは全般的に実用的で、大半の言語よりは使い勝手が良い方だと見てる。
0362デフォルトの名無しさん
2014/07/04(金) 21:54:25.59ID:PdXssMnS既存の言語じゃいけないんじゃないの、アップルにとっては。
・Cocoaランタイムのネイティブコードを吐く
・アップルの意向でいつでも仕様変更できる
というニーズがアップルにはあるんだろうから、既存の言語で適当なのを見つけてくるのは大変だろうよ。
サードパーティにとって迷惑なのはわかるが、癖の少ない文法でまとめてくれたのは不幸中の幸いだわな。
0363デフォルトの名無しさん
2014/07/04(金) 22:22:28.79ID:4r2s5G7/将来を見据えた発展性のあるまとまった言語仕様だと思うよ。
まだ若干荒削りな所は有るけど整備されて行くだろう。
0364デフォルトの名無しさん
2014/07/04(金) 23:34:18.36ID:6bXGoclVパフォーマンス上げてついでにモダンにしたいんだったらC++でいいんじゃ?
オペレータオーバーロードも名前空間も型推論もクロージャもジェネリクスもあるし
0365デフォルトの名無しさん
2014/07/04(金) 23:40:13.47ID:iKaePYIV0366デフォルトの名無しさん
2014/07/04(金) 23:57:02.00ID:BPBQ8Qlo0367デフォルトの名無しさん
2014/07/05(土) 00:20:46.36ID:pTDYhgjU0368デフォルトの名無しさん
2014/07/05(土) 00:28:00.53ID:3XcLVhBtつまり今まで通りだな
0369デフォルトの名無しさん
2014/07/05(土) 00:41:55.02ID:5PqNKKxqgo を批判/非難する気はないけど、
go が普及しないのは >>359 が書いているように
「既存の言語じゃいけない理由がない」からだろ
おまけに「全般的に実用的で、大半の言語よりは使い勝手が良い」程度の
利点しか無い、言い換えるとバランスのとれた優等生だけど個性が無い
GoogleがAndroidの開発言語として(Java ではなく) go を採用していたら、
状況は変わっていたかもしれない
ちょうど UNIX の開発言語として C が勝ち Pascal族を排除したように、
Rails の開発言語として Ruby が有名になり Python に影がさしたように ....
Google がそうしなかったのは、Microsoft が C# を必要とし
Apple が Swif を必要としたほどには、Go が必要ではなかったってことさ
0370デフォルトの名無しさん
2014/07/05(土) 01:19:50.20ID:pTDYhgjU年末位には本格的になってくるだろう。 殆どの開発者が歓迎してる。
Obkective-Cだと敷居が高いけどSwiftなら始めてみたいと言う層も結構いそう。
これでMacの売り上げが上がるな。
言語間の構文比較 Swiftの軽さが際立つ。
Swift:--------
println("Hello, World!")
Go:----------
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Java:--------
class ArbitraryClassName {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Objective-C:----
#import <stdio.h>
int main( int argc, const char *argv[] ) {
printf("Hello World!");
return 0;
}
0371デフォルトの名無しさん
2014/07/05(土) 01:30:17.23ID:Hq9eeGT6メイン関数(メソッド)がない静的型付け言語って意外と少ないよな。大正義Scala先生もmainいるし。
形安全でサクサク開発という意味だと、1番いい言語化もしれない
0372デフォルトの名無しさん
2014/07/05(土) 01:33:23.30ID:lG7Vks4tコードゴルフするわけでもあるまいし
0373デフォルトの名無しさん
2014/07/05(土) 01:35:11.49ID:Hq9eeGT6Goは元々システム向け言語だからな。AppEngineに採用されたり、Android上で(NDKとしてだっけ?)動かせたり、最近はアプリ向けにも動きがあるけど。
GoogleだとSwift的な役割な期待されるのは、Dartだと思う。JavaScriptの代替のイメージが強いが、開発担当によると、クライアント、サーバ両方で使える汎用言語目指しているらしい。
0374デフォルトの名無しさん
2014/07/05(土) 01:36:50.25ID:Hq9eeGT6最もミニマムなコードを比較することに意味はあるでしょ。だってそれ以上短くできないんだから。
そこに設計思想が現れるわけよ
0375デフォルトの名無しさん
2014/07/05(土) 01:54:55.86ID:Mg3y7G5e0376デフォルトの名無しさん
2014/07/05(土) 02:20:02.33ID:pTDYhgjUVMで実行するか、Javascriptに変換して実行するかの二つに一つ。
端末側アプリの開発用では無い。
端末は、Java, go
主流はJavaのままだろう。 Googleとしては、goに移行させたいかもしれないけど。
0377デフォルトの名無しさん
2014/07/05(土) 02:28:47.28ID:Hq9eeGT6まあこれ見てよ
http://m.jp.techcrunch.com/2014/07/01/20140629googles-dart-programming-language-is-coming-to-the-server/
GoはC/C++の置き換えを目指しているのではないかと思う。一般的な例外機構を採用しなかったり、パフォーマンスとコンパイル速度に重きを置いている。
AndroidのサポートがSDKではなくNDKだしね。
これ以上はスレ違いだからやめとくけど
0378デフォルトの名無しさん
2014/07/05(土) 02:29:19.64ID:5PqNKKxq>Goは元々システム向け言語だからな。
そう、ただし Go は GCとスレッドをサポートしているから、
C というよりも Java や C# (および Swift)と真正面から競合する言語だね
だから Google が Android というOS記述言語に Go を採用しなかったのは、
メジャーな 「Java(= Oracle)を排除できるほど Go には魅力(優位性)が無い」と
Google が戦略的に判断したからじゃないのかな
Google はWebサービスに関しては巨人かもしれないけど、
Microsoft や Apple と比べれば「OS ベンダーとしては後発」になる
Go が普及しないのは、生まれの不幸といえるのかもしれない
遠い将来、Android がスマフォ/タブレット市場を独占し、
Apple が離脱するような時代が到来すれば、Go に再び陽があたるかもね
0379デフォルトの名無しさん
2014/07/05(土) 02:35:25.49ID:dvkFKgZctype TinyOperation interface {
MoveTo( target Point )
LineTo( target Point )
}
type Operation interface {
TinyOperation
QuadraticBezierTo( target, control1 Point )
CubicBezierTo( target, control1 control2 Point )
}
type OperationAdapterForTiny struct {
TinyOperation
/* その他略 */
}
func ( _ *OperationAdapterForTiny )QuadraticBezierTo( target, control1 Point ){ /*略*/ }
func ( _ *OperationAdapterForTiny )
CubicBezierTo( target, control1 control2 Point ) { /*略*/ }
type TinySVG{ /*略*/ }
func ( _*TinySVG )MoveTo( target Point ) { /*略*/ }
func ( _*TinySVG )LineTo( target Point ) { /*略*/ }
func Main() {
path := &OperationAdapterForTiny{ /*略*/ }
path.TinyOperation = &TinySVG{}
path.CubicBezierTo( &Point{ 1, 0 }, &Point{ 1, 2 }, &Point{ 2, 2 } )
}
0380デフォルトの名無しさん
2014/07/05(土) 02:40:10.84ID:765Tx3Gvカップラーメン:お湯を注いで3分待つ
お店のラーメン:家から出て歩いて店行って食券買って待つ
ほらこのようにラーメンが出てくる待ち時間を比べたら圧倒的にカップラーメンが早い!(キリッ
こうですか?><わかりません><
なんで食券のとこから比べないんですか?
0381デフォルトの名無しさん
2014/07/05(土) 02:52:36.64ID:oVhlbldd>>379の要点は、TinySVGは移動と線分の描画しかできないが、TinySVGに
移動と線分の描画だけあればBezier曲線を描画できる
OperationAdapterForTinyを取り付けることでOperation型に
適合しているところ。
0382デフォルトの名無しさん
2014/07/05(土) 03:25:44.93ID:5PqNKKxqSwift を勉強したいのなら、まず自分でコードを書いてみるのがいいでないの?
他人にやらせるんぢゃなくて....
0383デフォルトの名無しさん
2014/07/05(土) 19:27:50.62ID:b45VDszCvar dict:Dictionary<String,String>? = Dictionary<String,String>()
dict["a"]="abc" //<--ここでsubscriptメソッドがないって怒られる
変数宣言の部分を変えずにどうすれば代入できるか教えてくださいm(_ _)m
0384デフォルトの名無しさん
2014/07/05(土) 20:20:31.31ID:b45VDszCすんません自己解決しました
var dict:Dictionary<String,String>? = Dictionary<String,String>()
var dict2 = dict!
dict2["a"]="abc"
0385デフォルトの名無しさん
2014/07/05(土) 20:37:13.38ID:zVIhfQ1oもともとのdictの方の値は変わらなくていいの?
0386デフォルトの名無しさん
2014/07/05(土) 21:15:00.62ID:b45VDszC参照渡しだと思い込んでました
var dict:Dictionary<String,String>? = ["aaa":"bbb"]
var dict2 = dict!
dict2["a"] = "abc"
dict = dict2
ってことですね
0387デフォルトの名無しさん
2014/07/05(土) 21:20:56.81ID:zVIhfQ1oだから、いったんアサインしたらもう要素の変更や追加は出来なくなる。
ディクショナリをどうしてもオプショナルな変数として使ってあとで要素を変更したかったら、つどアサインし直すしかない
0388デフォルトの名無しさん
2014/07/05(土) 21:29:25.00ID:b45VDszCなるほどー。納得しました。
ということはこういう挙動になるのは
String,Array,Dictionaryくらいってことですかね。
0389デフォルトの名無しさん
2014/07/05(土) 21:41:09.53ID:zVIhfQ1oStringはそもそもイミュータブルだからあまり気にする必要はないと思うけど、ただアンラップは必要
var s: String? = "aaa"
s += "bbb" // ← これはエラー
s = s! + "bbb" // これはオッケー
0390デフォルトの名無しさん
2014/07/05(土) 21:45:19.44ID:xdz/XkUa多くて読みづらくて困る。ルー語じゃないんだから日本語にしてほしいなぁ。
任意型の配列や辞書は変更できなくなるらしい。
だから、いったん割り当てたらもう要素の変更や追加は出来なくなる。
辞書をどうしても任意型の変数として使ってあとで要素を変更したかったら、つど割り当てし直すしかない
0391デフォルトの名無しさん
2014/07/05(土) 22:05:51.00ID:zVIhfQ1o日本語の公式解説が無い今の時点で独自の和訳日本語を使うと後で混乱のもとになる。
任意型という表現が公式なものならいいが、そうでない場合、誤解を生む可能性がある。
あと、ディクショナリ、イミュータブル、アサインという言葉は、特にIT関係者の間ではもう十分に浸透してると思う。
イミュータブルを単に変更としてしまうと、changeやmodifyと勘違いされる可能性がある。
0392デフォルトの名無しさん
2014/07/05(土) 22:08:12.01ID:lG7Vks4t0393デフォルトの名無しさん
2014/07/05(土) 22:41:31.79ID:5PqNKKxq>イミュータブルを単に変更としてしまうと、changeやmodifyと勘違いされる可能性がある。
ミュータブル(mutable)とイミュータブル(immutable)の日本語訳は、
昔からそれぞれ可変と不変だろ
ミュータブルを変更を訳す人が無知なだけ
>>390だって「もう要素の変更(update)や追加(add)は出来なくなる」と
解釈するのが普通だと思うけどね
0394デフォルトの名無しさん
2014/07/05(土) 22:57:59.34ID:0zi9Gl/Qま、DictionaryなどのコレクションはOptionalにしない方が良いだろうな。
0395デフォルトの名無しさん
2014/07/06(日) 00:04:21.89ID:7pAe/j5J意訳だから辞書通りじゃなくていいでしょ。
日本語で判ればいいのよ判れば。
あとupdateは変更より更新じゃない?
downdateできちゃダメだから。
0396デフォルトの名無しさん
2014/07/06(日) 03:36:23.05ID:3qD8tN7V機能じゃなくて、それを実現しているアルゴリズムの名前付けちゃうのはだめって
カーニハン先生が言ってた
0397デフォルトの名無しさん
2014/07/06(日) 03:50:44.25ID:fVlVkcLxRubyは例外処理もrescueだのensureだの変な名前つけるし、後発だから奇をてらいたかったんだよきっと
勘弁して差し上げろ
0398デフォルトの名無しさん
2014/07/06(日) 04:04:37.77ID:GjvnhWDMrescue ensuerはSmalltalk由来だよ。
ちょいちょいSmalltalk由来の用語や機能があって
年々その色が濃くなってる。
0399デフォルトの名無しさん
2014/07/06(日) 04:10:19.27ID:GjvnhWDM辞書、可変、不変、割り当てって言葉も十分浸透してると思うぞ。
0400デフォルトの名無しさん
2014/07/06(日) 04:20:48.60ID:8W/9eoDcそれなら初めから全部カタカナで書いたほうが楽
0401デフォルトの名無しさん
2014/07/06(日) 06:44:45.70ID:pBYyLByMもうこれでいいや
optionalなarrayやdictionaryはimmutableになるらしい。
だから、いったんassignしたらもう要素の変更や追加は出来なくなる。
dictionaryをどうしてもoptionalな変数として使ってあとで要素を変更したかったら、つどassignし直すしかない
0402デフォルトの名無しさん
2014/07/06(日) 08:56:57.09ID:wroK/xvX0403デフォルトの名無しさん
2014/07/06(日) 12:18:34.54ID:vgKebaqN0404デフォルトの名無しさん
2014/07/06(日) 12:19:30.74ID:imSiv+lNSo once you assign a value to the variable, you can neither add nor update any items to the value.
If you want to use an optional value of that type and update the items of the value after it has assigned, you need to assign a new instance which include the new items every time.
0405デフォルトの名無しさん
2014/07/06(日) 12:26:30.27ID:WD1US8Yyエロい人が日本語の解説本だすまで待て
トップを走りたいなら英語勉強しろ
0406デフォルトの名無しさん
2014/07/06(日) 12:36:18.28ID:g9cBJIwiカタカナ英語は気持ち悪い。
0407デフォルトの名無しさん
2014/07/06(日) 12:56:53.22ID:kiq0BT0K本でも読んで正しい日本語訳とか何かを考えろよお前ら
0408デフォルトの名無しさん
2014/07/06(日) 13:43:23.01ID:MR0J7zgQ0409デフォルトの名無しさん
2014/07/06(日) 14:02:52.83ID:g9cBJIwi関数
参照
構造体
C言語の時代は良かったな
明治時代の魂が残ってた
0410デフォルトの名無しさん
2014/07/06(日) 14:13:25.10ID:EiccLsDu0411デフォルトの名無しさん
2014/07/06(日) 14:29:15.53ID:g9cBJIwi0412デフォルトの名無しさん
2014/07/06(日) 14:29:42.13ID:XSnNqaqG0413デフォルトの名無しさん
2014/07/06(日) 14:37:39.17ID:g9cBJIwi0414デフォルトの名無しさん
2014/07/06(日) 15:11:26.51ID:WD1US8Yy英語で意味を感じられればそれでいい
何てったって現地人はそうなんだから
0415デフォルトの名無しさん
2014/07/06(日) 15:14:04.09ID:UgKQDcKg0416デフォルトの名無しさん
2014/07/06(日) 15:28:58.82ID:uiO74oNfやっぱ先輩ぱネェっす
0417デフォルトの名無しさん
2014/07/06(日) 16:55:58.22ID:vf+otpu+現地人は外国語じゃなく母国語で理解してると思うよ。
0418デフォルトの名無しさん
2014/07/06(日) 17:48:50.09ID:4Al3+AY70419デフォルトの名無しさん
2014/07/06(日) 18:33:02.81ID:vf+otpu+Клас, ААП
?
???
自国語に訳せてない国ってやっぱ少ないのな。
0420デフォルトの名無しさん
2014/07/06(日) 19:35:34.29ID:6AiziFNr新しい概念を導入するなら無理に日本語で作る必要は無い。
0421デフォルトの名無しさん
2014/07/06(日) 19:44:55.59ID:BmWAhxas0422デフォルトの名無しさん
2014/07/06(日) 20:44:38.22ID:vf+otpu+じゃお役所言葉で日本語になってるものは日本語でいいよね。
0423デフォルトの名無しさん
2014/07/06(日) 21:28:06.85ID:wcmxE/LV0424デフォルトの名無しさん
2014/07/06(日) 21:30:12.91ID:q8UnPLrbさわさわ?
0425デフォルトの名無しさん
2014/07/06(日) 21:48:23.16ID:uI+Octwc0426デフォルトの名無しさん
2014/07/06(日) 21:50:23.05ID:c4JqBC4F0427デフォルトの名無しさん
2014/07/06(日) 21:58:15.04ID:eWlTyoxbインサイドマックは、横文字が横文字のままで英単語と日本語が混ざった
とても日本語の翻訳文書と言えるものでは無かったけどな。
あんな最悪な翻訳本はなかなか無いぞ
0428デフォルトの名無しさん
2014/07/06(日) 22:03:34.13ID:wcmxE/LV電影算盤とか?
0429デフォルトの名無しさん
2014/07/06(日) 22:10:41.39ID:XSnNqaqG遺伝的形質を受け継ぐ意味がよく伝わってイメージでわかるとは思ったかな。
継承だと持ち替えて渡してる感じだけどインヘリタンスは"伝統"みたいに
切れ目なく続いてるイメージの言葉なんだ、あれ。
0430デフォルトの名無しさん
2014/07/06(日) 22:12:34.62ID:wcmxE/LV0431デフォルトの名無しさん
2014/07/06(日) 22:45:18.45ID:eWlTyoxb0432デフォルトの名無しさん
2014/07/06(日) 22:45:48.32ID:eWlTyoxb電脳で良いんじゃない?
0433デフォルトの名無しさん
2014/07/06(日) 22:47:47.99ID:8W/9eoDc多態とか多相じゃね
0434デフォルトの名無しさん
2014/07/06(日) 22:52:26.14ID:vf+otpu+電算機とか
0435デフォルトの名無しさん
2014/07/06(日) 22:54:10.86ID:q8UnPLrb0436デフォルトの名無しさん
2014/07/06(日) 23:01:23.67ID:wcmxE/LV0437デフォルトの名無しさん
2014/07/06(日) 23:13:35.44ID:QMJgvLLE0438デフォルトの名無しさん
2014/07/06(日) 23:58:51.89ID:kiq0BT0Kvirtualは何がいいんだろう? 実質か?
0439デフォルトの名無しさん
2014/07/07(月) 00:04:07.19ID:S+o9LG15そういえば「文字変数」なんて変な日本を違和感なく使ってるな
0440デフォルトの名無しさん
2014/07/07(月) 00:09:06.82ID:q8c61ayr0441デフォルトの名無しさん
2014/07/07(月) 00:32:29.39ID:+HnIPqmo仮想で定着してるだろ
■ このスレッドは過去ログ倉庫に格納されています