トップページ⇒tech
1001コメント338KB

Swift part2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/11(水) 14:42:15.02ID:+13mKJ0Z
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

Apple 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/
0286デフォルトの名無しさん2014/07/01(火) 09:14:05.17ID:Spoe+hFi
Swiftって、ヒアドキュメントも使えないのか
なんかモダン言語の特徴を取り入れたとか言ってるわりには、いろいろ糞だよね
0287デフォルトの名無しさん2014/07/01(火) 09:50:58.67ID:oY1WpWsO
ヒアドキュメントが必要になるのはとかコードとリソースを分離できてない証拠
書き捨て用途も多いスクリプト言語と違って、Swiftはアプリケーション構築が第一最大の目的だからそんなもの要らん
0288デフォルトの名無しさん2014/07/01(火) 10:45:28.17ID:FsIt2ttm
>>285 マルチポスト 新Mac板参照
>>286 これだけは仕様追加されるまで待つしかないな。 どうして最初から入れなかったのか不思議でしょうがない。
文字列関係は大幅な仕様追加が有るはず。 早ければゴールデンマスター辺りで第1段
0289デフォルトの名無しさん2014/07/01(火) 12:15:57.46ID:OoZ2DZwm
>>287
真面目なプログラムならその通りだが、
学習時やパイロット、簡易テストなんかの折にヒアドキュメントがあると楽だとは思うね。
0290デフォルトの名無しさん2014/07/01(火) 13:43:27.02ID:FsIt2ttm
>>287 HTMLを処理する時などあると便利で見やすくなる事が有るんだよね。
ちょっとしたThunk youメッセージとか、処理結果表示とか。

サーバサイドのプログラム用途ではかなり重要な機能だよ。
別ファイルにして一番困るのが埋め込み変数が評価されない事

例えば
var a=1

str="aは\(a)だよ" //今はインラインだから埋め込まれる
println("#1 a=\(a) "+str) //#1 a=1 aは1だよ
a=2
println("#2 a=\(a) "+str) //#2 a=2 aは1だよ

//「aは\(a)だよ」  と言うファイルを別に作ってstrに読み込んだとしよう
str="aは\\(a)だよ" //aは\(a)だよ と等価
a=3
println("#3 aは\(a) "+str) //#3 aは\(a)だよ  文字列としてしか評価されない

自分で埋め込み変数で分離して実行時に結合とかすれば似たような事は出来るが美しくない。
0291デフォルトの名無しさん2014/07/01(火) 14:24:10.63ID:oY1WpWsO
テンプレートエンジン使うだろ常識的に考えて
0292デフォルトの名無しさん2014/07/01(火) 14:49:41.78ID:B592/H3e
正規表現も言語レベルでサポートされてねーし、FileのI/O関数すら無ぇー
結局いろいろやろうとしたらCocoaの糞みたいなライブラリを使わなきゃなんねーみたいだな
Obj-C使うのと大して変わんねーじゃねーか
いや、むしろObjCとSwiftを行ったり来たりする手間が増えた分、糞度が増した感じだな
0293デフォルトの名無しさん2014/07/01(火) 15:11:46.08ID:H8OdYCOp
>>285
つutf16count
この名前にしたのは、UTF-16のカウントだよサロゲートペアは考慮しないよ、ってのを明確にするためだと思う。

サロゲートペア考慮した文字列をカウントするメソッドをlengthにすればいいじゃんと思うかもだが、NSStringがすでにlengthプロパティ持ってる。
0294デフォルトの名無しさん2014/07/01(火) 16:54:57.26ID:HKbfE0uo
Objective-Cのランタイムで動いていることを忘れて、
みんなワガママ言いたい放題だな。
0295デフォルトの名無しさん2014/07/01(火) 18:30:17.98ID:xH+GAfzK
AppleはそのランタイムもSwift言語も両方自由に弄れる立場なんだからワガママもクソもないわ
ScalaのJavaに由来する糞な部分を叩くのがワガママだというのとは訳が違う
0296デフォルトの名無しさん2014/07/01(火) 19:06:31.76ID:8cxNwtXU
>>259
Apple がランタイム(Cocoa)を自由にいじれる訳ないだろう
これまでの ObjC デベロッパを切り捨てるはずもない

Microsoft が Win32API/COM を捨て .Net を強く推そうとしても、
いつまでたってもデベロッパが .Net へ移行しないから
Win32API を切り捨てられないのと同じ

Swift の登場を受けて OSX/iOS 開発に初めて手をだした奴等が
ObjCランタイムにとまどうのは理解するけど、
従来からのObjCデベロッパにとって Swift の道は最良に近い選択肢
0297デフォルトの名無しさん2014/07/01(火) 19:07:30.23ID:8cxNwtXU
アンカを間違えた、>>259 ではなくて >>295 に訂正
0298デフォルトの名無しさん2014/07/01(火) 19:18:16.51ID:B592/H3e
Obj-Cのネーミング規則に迎合しちゃったから、SwiftからCocoaの呼び出しははいびつな仕様になっちゃったよね
しかも、型が違うもんだから、相互変換が必要とか
使う側は、今使ってる変数が、SwiftのStringなのか、NSStringなのか、Arrayなのか、NSArrayなのか意識しながら
コーディングしないといけない
このカオスっぷりは、結局、新参者を遠ざけることになるんじゃねーの?
0299デフォルトの名無しさん2014/07/01(火) 19:26:24.15ID:oY1WpWsO
Appleはレガシーをずるずる引きずったりしないよ
合理的な段階は踏むけど、出来る限り早くObjective-Cは捨てられると思うよ
いままでも色んな場面でそうして来た
0300デフォルトの名無しさん2014/07/01(火) 19:36:43.80ID:8cxNwtXU
>>298
いいんじゃねえの
ObjCプログラマなら、文字列変数の型が char * なのか
NSString なのかは、常に意識してるから慣れたものだし
C が Swift に代わっただけで、そのメリットは大きい

どのみちデータ型でつまずくようなレベルだと、
Java/C#/C++ の静的OOPに慣れたデベロッパには
Smalltalk由来のメソッド動的束縛は理解できないから、
消えてくれたほうが世の為
0301デフォルトの名無しさん2014/07/01(火) 19:41:21.00ID:B592/H3e
Swiftを使う事のメリットって、バグだらけのPlaygroundが使えることと、
強力なSwitch文とEnum、それとStructが使えることと、Genericsのサポートぐらいか
あと、Arrayのソートが早い?んだっけ? 試してないけど。絵文字変数とか別にどーでもいいし
その他はあまり文法的なメリットは感じないな。つか大して変わんない。
どっちみちアプリ作るにはCocoaのクラスがいるし。
クロージャにしても、Obj-CならBlocksがあるし、perform〜系の呼び出しや、callbackが素で使えるのもObj-Cの方が使い勝手がいい
Carbon APIの呼び出しもObj-CからTall-freeで呼び出せる
ん〜っ、なんだかなぁ
実際、どーなんだろ、同じアプリをObj-CとSwiftで書くなら、Swiftの方が何倍早いとかデータあるのかね?
Flapybirdのソース見たけど、あれObj-Cで書いても大して記述量変わんねーよね?ほとんどSpritKitの呼び出しだし
0302デフォルトの名無しさん2014/07/01(火) 19:56:30.70ID:9nsBHmdy
Obj-Cに微妙に挫折した身としては、JSとかに近い書き方できるだけでも嬉しいな
0303デフォルトの名無しさん2014/07/01(火) 20:07:43.29ID:B592/H3e
あ、あとタプルを忘れてた
0304デフォルトの名無しさん2014/07/01(火) 20:11:02.02ID:oY1WpWsO
安全性は確実に増すだろ
その分テストも減らせて開発スピードも上がるんじゃね
記述量とかどうでもいい
0305デフォルトの名無しさん2014/07/01(火) 20:32:54.59ID:FsIt2ttm
>>295 言語仕様を見れば、まだ作成途中と言うことが解るだろ。
これだけ基礎がしっかりしてれば後はお化粧の話。
Objective-Cのライブラリを当面そのまま使い、徐々にSwift likeに合わせて行くんだろ。
手始めにNSStringをStringの拡張として使える様にしてるから、Stringでフォーマットも使える。 言語仕様に入れられないのは若干のUnicodeの処理の違いを最終的にどう辻褄を合わせるかがきまらないからだろう。
0306デフォルトの名無しさん2014/07/01(火) 20:36:44.49ID:l9yjQtpJ
何がダメってセミコロンがねーところ
あと、条件式のかっこがなかったりとか微妙に違う感出してるとこ
ObjC残しとくくせに紛らわしいんだよ
0307デフォルトの名無しさん2014/07/01(火) 20:40:25.90ID:l9yjQtpJ
Obj-Cいろいろと不評だけど、OOP部分とレガシーな部分が明らかに違うことが
わかる表記になってて、個人的には、なれればむしろ、レガシーなCと共存関係が
わかりやすくて好きだったんだけどな
文字列の操作がめんどいって声があるなら、そこだけ+で出来るようにちょいへん
してくれたらよかった
0308デフォルトの名無しさん2014/07/01(火) 20:52:13.49ID:YM4fCUiI
セミコロンつけたきゃ勝手につけろよ
0309デフォルトの名無しさん2014/07/01(火) 21:05:05.42ID:B592/H3e
Swiftが後方互換性を残したまま進化してくれるならいいが、Deprecatedの嵐は勘弁して欲しいものだ
それでなくても、年1回のOSのバージョンアップとCocoaのDeprecated攻撃でもうへとへとなんだよ
0310デフォルトの名無しさん2014/07/01(火) 21:24:35.06ID:/YDQ45k+
>>309
いや、おそらくdeprecatedの嵐はいよいよ激しくなるんじゃねーの?
当分はSwift自体の拡張や仕様変更も相当あるだろうし
CocoaもSwiftベースに書き換えられるんだろうから。

もともと建て増し建て増しでどうにもならなくなったObjC2.0じゃ
この先進化のさせようがないってんでSwiftに乗り換えることにしたんだろうし。
0311デフォルトの名無しさん2014/07/01(火) 21:26:59.14ID:B592/H3e
勘弁してくれ
0312デフォルトの名無しさん2014/07/01(火) 21:30:55.29ID:oY1WpWsO
新しいことを学び続ける気力を失った瞬間が、そいつにとってのいわゆるプログラマ○才定年説というやつだろう
0313デフォルトの名無しさん2014/07/01(火) 21:39:04.99ID:B592/H3e
Deprecatedは、新しいことというより、初期設計時の先見性の無さの現れだろ
0314デフォルトの名無しさん2014/07/01(火) 21:56:32.31ID:pwV/PQsP
発表では乗り換えるなんて言ってないのになんでこの人の頭の中では乗り換える事になってんの?
0315デフォルトの名無しさん2014/07/01(火) 22:05:25.96ID:/YDQ45k+
>>314
Appleは乗り換えるとは言ってないけど、将来的には乗り換えるつもりだろうと思っているよ。
二つの言語を同水準でサポートし続ける理由がないし、
ObjCをこの先もずっとサポートしていくつもりならわざわざSwiftを導入して
移行に伴う混乱を誘発する理由もないから。

Appleが何も言っていない以上は違う意見の人を説得できるとは思ってない。
乗り換えるなんてことはありえないと思うなら俺とは前提が違うってことだね。
0316デフォルトの名無しさん2014/07/01(火) 22:17:11.06ID:l9yjQtpJ
かつてのCocoa-Javaが消え去ったように、Objective-Cも消え去るのだろう…。
0317デフォルトの名無しさん2014/07/01(火) 22:18:26.53ID:fEVjLc77
>>316
それ……消えるの……Swiftになるフラグ……
0318デフォルトの名無しさん2014/07/01(火) 22:27:11.00ID:B592/H3e
MacOSもiOSも既存のほとんどのフレームワークもObj-Cで書かれてんだろ?
Obj-Cを切り捨てるってことは今後最低でも10年は無いと思うけどね
C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
Appleがらみのライブラリだけでなく、Unixの膨大なライブラリもあるし
WWDCでも、Obc-Cの既存コードをSwiftで書き換えることはお勧めしないって言ってたし
それやるなら既存コードはそのままにして、新機能だけSwiftで書けって言ってたし
今の所はまだObj-Cが消える可能性より、Swiftが残る可能性の方があやしい
Appleがやっぱやめましたって言う可能性もあるし、ユーザーがついてこなくて自然消滅の可能性だってある
0319デフォルトの名無しさん2014/07/01(火) 22:40:41.30ID:FsIt2ttm
ID:B592/H3e あぼ〜んしたらすっきりした。

Object-Cと言う言語が消える事は無いが、ライブラリなど徐々にSwiftに移行していくだろうな。
当然の流れ。
今後のSwiftは言語の若干の手直し(拡張)とライブラリ群の整備だろうな。
0320デフォルトの名無しさん2014/07/01(火) 22:47:36.43ID:/YDQ45k+
>>318
ああ、俺もあとどれぐらいでObjCが消えるかなんて分からない。
10年より先かもしれないしもっと早いかもしれない。
今後の情勢次第でSwiftが消える可能性があるだろうと言われればそうかもしれないとしか言えない。
少なくとも現時点のAppleは、いずれ乗り換えるつもりでSwiftを発表したんだろうと思うというだけ。

あとWWDCで既存コードの書き換えが推奨されないというのは俺も知ってるけど
似たような話はretain/releaseを手動でやってるコードからGCへの移行でも言われていた。
「今問題なく動いているものをいじるな」というだけの話で、
AppleがObjCとSwiftを今後どうするつもりかという話とは関係ないと思う。
0321デフォルトの名無しさん2014/07/01(火) 22:51:53.67ID:l9yjQtpJ
>>318
>C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
これはほんとそうだよな
以前、Cでπの多倍長計算のコードを書いてたことがあって、それをCocoaアプリに
仕立て上げてみた時も、コアの計算アルゴリズムの部分はほぼファイルコピーで
UI部分だけObjective-Cで書いてアプリが出来上がったとき、Objective-Cの
素晴らしさを実感したことを今でも覚えてる

Cocoaは、最初Objective-Cって何だよっておもってCocoa-Javaから始めたくち
だったけど、Objective-Cが実はCなんだと(正確にはC+OOP)だと気づいたとき
一気に障壁が下がってそれ以降すんなりObjective-Cでコーディングできてた

Modernさという意味ではSwiftに劣るけど、やっぱObjective-Cが好きなのかも

.mファイルの中に、Cの関数とObj-Cのメソッドが並んでるコードは最初気持ち
悪かったけど、ある意味最も自然な形で拡張された素直な言語だなと思う
0322デフォルトの名無しさん2014/07/01(火) 23:08:31.21ID:yfeDN/3+
Swiftなんざ作るぐらいなら、素直にSmalltalk入れさせろよと思うがな。

#( 1 2 3 ) do:
[ :each |
].
Smalltalkなら20年前に出来てたこんな機能が、
Objective-C 2.0 で新機能扱いとかウンザリ。
0323デフォルトの名無しさん2014/07/01(火) 23:09:00.30ID:g+9FQYl7
俺は結構早めにSwiftに移行すると踏んでる。
iOS関連ってOSSが多くて(特にUI)、質も高い。
そして、OSS書いてる人たちが結構な割合で、少なくとも新規プロジェクトはSwiftで書くのではないかと思う。
0324デフォルトの名無しさん2014/07/01(火) 23:14:39.02ID:l9yjQtpJ
といいつつ、Objective-Cもすぐにはなくならなそうで少し安心したし、
おれもSwiftもちょっと嗜んじゃおうかなw
0325デフォルトの名無しさん2014/07/01(火) 23:21:33.88ID:Qf/S0Wzj
10年後も残ってるかどうかとか言うけどそれ全ての言語に言えるんじゃね
0326デフォルトの名無しさん2014/07/01(火) 23:23:50.43ID:B592/H3e
アクセス指定子も無いし、まだフレームワーク作りにはとっかかりにくいわな
Swiftで使う場合は、Obj-Cみたいにヘッダーだけ参照ってわけにいかないし
0327デフォルトの名無しさん2014/07/01(火) 23:24:59.14ID:tLoVbtUq
既存フレワとの互換レイヤ的なAPIやOSSがガンガン出てくるんじゃないの?
0328デフォルトの名無しさん2014/07/01(火) 23:28:23.59ID:l9yjQtpJ
今でもシェア高く実用されてるプログラミング言語で最も歴史のあるのってやっぱCだよね?
やっぱCってすげーって思う。それだけ蓄積されてる資産も大きいし
0329デフォルトの名無しさん2014/07/02(水) 01:50:36.64ID:gjMteLus
それはすごいことに気付きましたね
0330デフォルトの名無しさん2014/07/02(水) 03:22:32.57ID:0X8S8x1q
>>301
あのソース見て一日で書けたのはSwiftじゃなくてSpriteKitのおかげじゃんって思った
0331デフォルトの名無しさん2014/07/02(水) 05:58:15.54ID:wD3UzLWL
Cが残っているからObjCもアップル関係では残っていくのでは。
たぶん、Swiftでのみしか利用できない様々なAPIとか、環境とかがどんどん増えて自然にそっちに多数の人は誘導されてくんじゃないかな。
0332デフォルトの名無しさん2014/07/02(水) 07:18:04.99ID:Q2HfdUEv
>>325
Swiftの場合そもそもプラットフォームが残ってるのかという問題がなあ
iPhoneやMacが健在だとしても、もっとサーバーサイド比率が大きくなって
クライアント側は簡易なスクリプトが僅かに残ってるだけになってそう
0333デフォルトの名無しさん2014/07/02(水) 12:12:23.06ID:wD3UzLWL
まあ言えそうなのは、アップルの目論見くらいかなと。
0334デフォルトの名無しさん2014/07/02(水) 12:39:10.54ID:+LR919/Z
どうせリリースするなら、もうちょっとこなれてから出せよ
あと1年ぐらい待ってもよかっただろ
0335デフォルトの名無しさん2014/07/02(水) 12:43:55.14ID:W8x6b9d7
>>332
逆だろ
サーバ側はモデルに特化して、JSONだけ返す。
UIまわりはすべてクライアントサイドで実装が今の流れ。
0336デフォルトの名無しさん2014/07/02(水) 12:44:50.20ID:W8x6b9d7
>>334
実際にリリースしてから浮き彫りになる問題もある。
そんなこと言ってたらいつまでもリリースできない
0337デフォルトの名無しさん2014/07/02(水) 13:13:10.53ID:C0tb1eHd
Googleが、Java to Object-Cを出したり、iOS SDKを出したり攻勢に出てきているから守勢に回ったままではいけないから急ぐ必要があったんだろ。
Xamarinなどサードパーティーの開発ツールも台頭の兆しが有るからね。
急ぐ必要はないがSwing to Javaを出して反撃してほしい。
0338デフォルトの名無しさん2014/07/02(水) 13:19:16.62ID:DNTNWI96
敵はgolang
0339デフォルトの名無しさん2014/07/02(水) 14:04:29.37ID:C0tb1eHd
>>338 敵にはならないだろ。 何か違う所で踊ってるみたい。
golangは言語的には少し首をかしげる所が多い。
0340デフォルトの名無しさん2014/07/02(水) 15:23:20.05ID:7E/KXNMp
Object-Cやなくて、Objective-Cやで。プログラマなら間違えたらアカン
0341デフォルトの名無しさん2014/07/02(水) 16:47:11.64ID:3GppMyES
>>316-317
あれは面白いことにJavaじゃObjective-Cを代替するには役不足だったんで
サポート停止されたんだよなぁ。Swiftはそれを踏まえて作ってはいるみたいだし
0342デフォルトの名無しさん2014/07/03(木) 08:58:36.06ID:s8dcLjiN
>>341
「力不足」だよね?
0343デフォルトの名無しさん2014/07/03(木) 09:07:45.05ID:Q4dDnky3
誤用の指摘とかどうでもいいし
0344デフォルトの名無しさん2014/07/03(木) 13:00:11.80ID:ocaDq0om
>>341
赤っ恥www
0345デフォルトの名無しさん2014/07/03(木) 13:12:53.11ID:0tabs9DN
いや、誤用じゃないんでむしろ誤用だと思ってつっこんでる奴の方が…
0346デフォルトの名無しさん2014/07/03(木) 17:25:46.66ID:P7mc1MKH
>>345
必死だな。
0347デフォルトの名無しさん2014/07/03(木) 18:39:36.50ID:VyOuWYyM
2ch で誤字誤用の指摘をするのは恥ずかしいことだが、弁解や釈明や言い逃れをする恥ずかしさに比べれば無いも同然。
0348デフォルトの名無しさん2014/07/03(木) 18:57:04.96ID:bRkIiAVF
いや、バカが釣れるからどんどん指摘すべし。
0349デフォルトの名無しさん2014/07/03(木) 20:31:24.65ID:FhkBxcg0
javascriptive-cが最強だって
0350デフォルトの名無しさん2014/07/03(木) 20:41:48.37ID:ap5XVsa0
>>349
kwsk
0351デフォルトの名無しさん2014/07/04(金) 00:10:43.27ID:UzbhYlbZ
>>339
首を傾げるってどんなトコ?
個人的な使い勝手はJava超過Smalltalk未満なんだけど。
0352デフォルトの名無しさん2014/07/04(金) 00:37:01.19ID:msFVWI+x
>>351
Swiftはモダンで洗練されている、かつ大衆が好む言語
Smalltalkはモダンでもないし、大衆向けでもない。素晴らしいけどな

いいじゃん、個人的はって断わってるところ見ると自覚はしてるんだろ?
0353デフォルトの名無しさん2014/07/04(金) 01:39:34.04ID:Kc5FuQQY
現状swiftってDSLみたいなもんだし汎用言語と比べるのはあんまり意味がないんじゃね
0354デフォルトの名無しさん2014/07/04(金) 01:49:22.89ID:msFVWI+x
>>353
言いたいことは分かるが、SwiftはDSLでは無く汎用プログラミング言語な。
言語として汎用であるから、文法などを比較することに意味はあるよ
0355デフォルトの名無しさん2014/07/04(金) 09:35:51.65ID:ibPrybjY
>>345
じゃ、主張としては「JavaのほうがObject-Cより良い」ってこと?
だとしたら言い回しがおかしい
0356デフォルトの名無しさん2014/07/04(金) 10:35:40.73ID:55Iwzgg5
安定のゴミスレだな
0357デフォルトの名無しさん2014/07/04(金) 10:58:34.80ID:MI6unMOz
まーな
0358デフォルトの名無しさん2014/07/04(金) 20:11:26.61ID:ki9fyfkR
>>352
聞きたいのはswiftとgolangの批判だよ。
0359デフォルトの名無しさん2014/07/04(金) 21:06:13.84ID:AqR4CHdL
批判するなら「特に何も優れていない」ということに尽きるな
広く普及していて同じくらい優れた言語は既にたくさんあるわけで、
既存の言語じゃいけない理由がないならわざわざ新しく作るのはリソースを分断させるだけの迷惑行為だ
0360デフォルトの名無しさん2014/07/04(金) 21:07:23.38ID:RlFM+Deh
blub言語ってわけ
0361デフォルトの名無しさん2014/07/04(金) 21:36:09.61ID:UzbhYlbZ
>>359
非難じゃなくて批判(事実を突き合わせた上での判断)を聞きたいわけなんだが。
個人的な批判としてはgoのinterfaceと委譲は非常に出来が良かったと思う。
最もあのinterfaceは他の言語でsignatureとして実装されてたから、
真新しいものでも無かったんだけど。

それから、importの別名。これもC++なんかでusingとして
既に存在してた機能じゃあるが、
Javaなんかじゃ使えないからそれらの言語に比べりゃ便利だった。

goは全般的に実用的で、大半の言語よりは使い勝手が良い方だと見てる。
0362デフォルトの名無しさん2014/07/04(金) 21:54:25.59ID:PdXssMnS
>>359
既存の言語じゃいけないんじゃないの、アップルにとっては。

 ・Cocoaランタイムのネイティブコードを吐く
 ・アップルの意向でいつでも仕様変更できる

というニーズがアップルにはあるんだろうから、既存の言語で適当なのを見つけてくるのは大変だろうよ。
サードパーティにとって迷惑なのはわかるが、癖の少ない文法でまとめてくれたのは不幸中の幸いだわな。
0363デフォルトの名無しさん2014/07/04(金) 22:22:28.79ID:4r2s5G7/
なによりObjective-CやCとの相互乗り入れが出来る言語なんてApple以外が作る訳ないんだから、新言語以外は有り得ない。
将来を見据えた発展性のあるまとまった言語仕様だと思うよ。
まだ若干荒削りな所は有るけど整備されて行くだろう。
0364デフォルトの名無しさん2014/07/04(金) 23:34:18.36ID:6bXGoclV
どうせ1年か2年したらC/Objective-Cなんて切り捨てるだろうし互換性なんてどうでもいいだろ
パフォーマンス上げてついでにモダンにしたいんだったらC++でいいんじゃ?
オペレータオーバーロードも名前空間も型推論もクロージャもジェネリクスもあるし
0365デフォルトの名無しさん2014/07/04(金) 23:40:13.47ID:iKaePYIV
何をどうしたらそうなる。頭沸いてるのか
0366デフォルトの名無しさん2014/07/04(金) 23:57:02.00ID:BPBQ8Qlo
C++より後発でCと互換があって、より無難にオブジェクト指向的な拡張を施したがあるんだけどそれ使おうぜ
0367デフォルトの名無しさん2014/07/05(土) 00:20:46.36ID:pTDYhgjU
>>366 それでiOSアプリが開発できるなら使ってやるよ。
0368デフォルトの名無しさん2014/07/05(土) 00:28:00.53ID:3XcLVhBt
>>367
つまり今まで通りだな
0369デフォルトの名無しさん2014/07/05(土) 00:41:55.02ID:5PqNKKxq
>>361
go を批判/非難する気はないけど、
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
>>368 iOS周りは殆どの開発者が早い段階でSwiftに移行していくぞ。
年末位には本格的になってくるだろう。 殆どの開発者が歓迎してる。
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
>>370
メイン関数(メソッド)がない静的型付け言語って意外と少ないよな。大正義Scala先生もmainいるし。

形安全でサクサク開発という意味だと、1番いい言語化もしれない
0372デフォルトの名無しさん2014/07/05(土) 01:33:23.30ID:lG7Vks4t
いや、一行だけのプログラムで構文比較して軽いとかいうなよ
コードゴルフするわけでもあるまいし
0373デフォルトの名無しさん2014/07/05(土) 01:35:11.49ID:Hq9eeGT6
>>369
Goは元々システム向け言語だからな。AppEngineに採用されたり、Android上で(NDKとしてだっけ?)動かせたり、最近はアプリ向けにも動きがあるけど。

GoogleだとSwift的な役割な期待されるのは、Dartだと思う。JavaScriptの代替のイメージが強いが、開発担当によると、クライアント、サーバ両方で使える汎用言語目指しているらしい。
0374デフォルトの名無しさん2014/07/05(土) 01:36:50.25ID:Hq9eeGT6
>>372
最もミニマムなコードを比較することに意味はあるでしょ。だってそれ以上短くできないんだから。
そこに設計思想が現れるわけよ
0375デフォルトの名無しさん2014/07/05(土) 01:54:55.86ID:Mg3y7G5e
設計思想の嬌声が聞こえてきちゃうんですね
0376デフォルトの名無しさん2014/07/05(土) 02:20:02.33ID:pTDYhgjU
>>373 Dartは、あくまでもWebアプリ用だよ。
VMで実行するか、Javascriptに変換して実行するかの二つに一つ。
端末側アプリの開発用では無い。

端末は、Java, go
主流はJavaのままだろう。 Googleとしては、goに移行させたいかもしれないけど。
0377デフォルトの名無しさん2014/07/05(土) 02:28:47.28ID:Hq9eeGT6
>>376
まあこれ見てよ
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
>>373
>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:dvkFKgZc
これをSwiftに書き直したらどんな感じよ
type 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
>>374
カップラーメン:お湯を注いで3分待つ
お店のラーメン:家から出て歩いて店行って食券買って待つ

ほらこのようにラーメンが出てくる待ち時間を比べたら圧倒的にカップラーメンが早い!(キリッ
こうですか?><わかりません><
なんで食券のとこから比べないんですか?
0381デフォルトの名無しさん2014/07/05(土) 02:52:36.64ID:oVhlbldd
>>379の補足。
>>379の要点は、TinySVGは移動と線分の描画しかできないが、TinySVGに
移動と線分の描画だけあればBezier曲線を描画できる
OperationAdapterForTinyを取り付けることでOperation型に
適合しているところ。
0382デフォルトの名無しさん2014/07/05(土) 03:25:44.93ID:5PqNKKxq
>>381
Swift を勉強したいのなら、まず自分でコードを書いてみるのがいいでないの?
他人にやらせるんぢゃなくて....
0383デフォルトの名無しさん2014/07/05(土) 19:27:50.62ID:b45VDszC
ちょっと以下のコードを見て欲しいんですが

var dict:Dictionary<String,String>? = Dictionary<String,String>()
dict["a"]="abc" //<--ここでsubscriptメソッドがないって怒られる

変数宣言の部分を変えずにどうすれば代入できるか教えてくださいm(_ _)m
0384デフォルトの名無しさん2014/07/05(土) 20:20:31.31ID:b45VDszC
>>383

すんません自己解決しました

var dict:Dictionary<String,String>? = Dictionary<String,String>()
var dict2 = dict!
dict2["a"]="abc"
0385デフォルトの名無しさん2014/07/05(土) 20:37:13.38ID:zVIhfQ1o
>>384
もともとのdictの方の値は変わらなくていいの?
■ このスレッドは過去ログ倉庫に格納されています