Swift part10 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/02/20(月) 10:00:13.40ID:ChbPWtRt0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift Part4
http://potato.2ch.net/test/read.cgi/mac/1484763495/

[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1484217623/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part9
http://echo.2ch.net/test/read.cgi/tech/1476758084/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/03/16(木) 12:53:53.08ID:bRh67wE3a
とか
1.
《副助》例をあげて並べるのに使う。 「A―B―の記号」
2.
《普通は下に「言う」「聞く」などを伴って》 《連語》内容が不確かであることを表す。 「橋沢―いう人」


>>191の場合は、「2.」の用例だろ
つまり、
「日本語でおk」だったか、「日本語でOK」だったか、「日本語でおっけー」だったか不確かだけど、そんな風な言い方
ってこと
197デフォルトの名無しさん (スップ Sddf-8YZg)
垢版 |
2017/03/16(木) 13:04:00.85ID:fylU8k5ad
>>196
内容が不確かな事を書かれても、不確かなのだから、何を書きたいのか解らないよ。
2017/03/16(木) 14:04:38.09ID:B/XDf7Uvp
じゃあ、日本語でおk で
2017/03/16(木) 19:08:04.75ID:AMKOKIXm0
>>197
>>191の言いたいことは、”日本語でおk”のネタさえ知ってれば通じるだろ
通じなかったとしたらネタを知らないか、アスぺなだけだろ
2017/03/17(金) 09:04:36.10ID:CVisIQCrd
>>199
この人はこのスレに住み着いて「とか」だけに反応する可哀想な人だから
みんなでとかとか使いまくってもっと可哀想にしてやろうよ(いじめの提案)

>>197
不確かであることを明示して話を進めることはよくある事だよ
主に明確化に意味が無い、あるいは主題を明確にするために枝葉部分を意図的に明確定義しない、などの用法がある
2017/03/17(金) 17:40:08.81ID:OpOSLOXG0
>>191のとかは不相応の程度を強める際の「なんて」と可換なニュアンスだろう
例 ハゲとか無理
2017/03/18(土) 01:27:16.65ID:6ina02vGd
日本語とかでおk
2017/03/18(土) 02:26:45.14ID:6b/Lj0PJ0
必ずしも日本語じゃなくてOKってことね
よかった
2017/03/18(土) 10:00:01.78ID:T7L2R5qRd
とかに無理やり絡めると
省略あるいは不明確を示すとかはワイルドカードなんだと思う

とりあえず早い事perl like構文で使える正規表現をサポートしてほしい

Swiftのガッカリポイントの一つがまだ純正で正規表現が使えないというところだったから
205デフォルトの名無しさん (ワッチョイ 035b-QFag)
垢版 |
2017/03/18(土) 10:52:24.54ID:h03j8lZL0
>>204
String#range(of:​options:​range:​locale:​)

options のところに .regularExpression を使えば、searchString で正規表現を利用した文字列(例えば “2ch+*" とか)が使えます。
206デフォルトの名無しさん (ワッチョイ 035b-QFag)
垢版 |
2017/03/18(土) 10:55:36.95ID:h03j8lZL0
typealias String.CompareOptions = NSString.CompareOptions

に注意ね。
2017/03/18(土) 11:50:49.28ID:T7L2R5qRd
>>205
うん、しってるんだけどさぁ、これってNSStringにブリッジしてそっちのregex使ってるんじゃなかったっけ?
内部的にutf16になっちゃうので使いにくかった気がする

Swift2の頃の記憶だからSwift3では違うのかな?
Swiftではregex使わないようにしてたので、久しぶりに使ってみるかな?


それと、perlみたいにregexの結果をイテレートしてとか
そういう使い方したい
208デフォルトの名無しさん (ワッチョイ 035b-QFag)
垢版 |
2017/03/18(土) 12:05:47.32ID:h03j8lZL0
import Foundation
let str: NSString = NSString(string: "Charlie Brown")
let a:NSRange = str.rangeOfString("Brown")
print(a.location)
print(a.length)
print(NSNotFound)
var ar: NSArray
do {
let reg: NSRegularExpression = try NSRegularExpression(pattern: "Brown",
options: NSRegularExpressionOptions.UseUnicodeWordBoundaries)
let str0 = str as String
let match: NSTextCheckingResult? = reg.firstMatchInString(str0,
options: NSMatchingOptions.ReportCompletion,
range: NSMakeRange(0, str.length))
print(match)
print(match!.range)
} catch {}
ちょいと前に保管したsnipet
2017/03/18(土) 12:32:40.53ID:vKa31hq6d
>>208
さんきゅ
あとで試してみる

しかし、やっぱりperl並みのお手軽さが欲しいところ
2017/03/18(土) 12:51:59.51ID:15tZ92u+p
少し前のDev MLで正規表現を言語仕様に組み込む話題があったような
あって困るものじゃないから入って欲しいね
2017/03/18(土) 12:54:59.80ID:XXqg+DqY0
議論はあったけど4には入らんと思う

> Addressing Regexps in Swift proper is out of scope for Swift 4, because
> there's simply no time to design and add the necessary language features.
2017/03/18(土) 14:54:04.70ID:CoM5VADKa
Obj-Cもそうだけど、Swiftで正規表現使おうとするたびに、使い方をググってるわ
Perlだとすぐに書けるんだけどな
2017/03/18(土) 15:26:50.32ID:eyWXYpAT0
Swift 4が最終ステージに(白目)
https://www.infoq.com/jp/news/2017/03/swift-4-release-process
2017/03/18(土) 15:51:30.64ID:XXqg+DqY0
日本語版InfoQはいつもネタが一ヶ月遅い
2017/03/18(土) 16:03:29.07ID:h03j8lZL0
>>213
ABIって見るたびに、なんの略だったっけ?となる。

BI = Binary Interfaceだよね?
What does “A” stands for?
2017/03/18(土) 16:33:29.93ID:L7+Dd5xH0
>>215
"A" for Application
2017/03/18(土) 17:10:49.00ID:61cBFpsD0
APIの派生
ソースレベル互換→バイナリレベル互換
2017/03/18(土) 18:08:39.34ID:L7+Dd5xH0
なかなかAPIとABIとシステムコールとライブラリとフレームワークという言葉ををきちんと分かった上で使い分けるのが難しいんだよね
うちの若手とか

>>213の文脈だと
以前からあるライブラリとかと再コンパイルしなくてもリンク出来る
ってのがABIレベルでの互換性だろうね
2017/03/18(土) 18:39:09.49ID:61cBFpsD0
システムコールは置いといていいでしょ
普通の開発者は直接的には使わないんだし
2017/03/18(土) 19:27:50.95ID:15tZ92u+p
これと言ってることが微妙に違うのはInfoQの情報が古いのか、こっちの更新が遅れているのか
https://github.com/apple/swift-evolution/blob/master/README.md

はよABI安定させてlibSwift.soをiOS, macOSのシステムライブラリに保存してくれよなぁ
Swift 3でABI安定させるって理想だった頃はその構想だったのかもしれんが、ABI安定時期が不透明な今はもう諦めてるのかもしれん
2017/03/18(土) 20:06:24.89ID:L7+Dd5xH0
>>219
いやさ、printf()で済むところをwrite()とか、put()とか使いたがる人が居たりするんだよ

ライブラリ関数とシステムコールの違いが分かってないのよねん

説教したくなるのをグッとこらえて、システムコール使うと遅くなるしメンテナンスが大変になるんだよと言ってもなかなか納得してくれない
2017/03/18(土) 20:38:16.85ID:GFFJDG7E0
Objective-Cでおk
以上。
おつでした。
2017/03/18(土) 20:39:58.56ID:61cBFpsD0
>>221
printf()もシステムコール使ってるよ
write() put()はシステムコールでなくラッパー関数でライブラリの一部
遅いのはシステムコールやチェック処理の回数差でバッファリングに起因する
2017/03/18(土) 22:12:10.15ID:h03j8lZL0
>>221
システムコールって遅いの?逆なんじゃない?
つまり、ライブラリ関数より早い。

だって、ライブラリ関数はシステムコールのラッパー関数なんでしょ?

俺、arc4random_uniformとか、atofとか使いまくってるんですけど。
2017/03/18(土) 22:21:36.55ID:h03j8lZL0
>>223
write()ってのは、何を指しているのでしょう?
ライブラリの一部というのだから、
FoundationライブラリString#write(to:)の事でしょうか?

なら、printfよりも遅いですよね。

put()はなんの事でしょうか?
2017/03/18(土) 23:27:27.95ID:61cBFpsD0
>>224
システムコールは特権レベル変更に伴うコンテキストスイッチなどのオーバーヘッドのため
ユーザーモードで完結するものより遅い
atofはシステムコールしない、arc4random_uniformは再シードのときだけシステムコールするようだ

>>225
>>215-219はSwiftやiOSに限らない一般的な話, >>221,223はC言語標準ライブラリまたはPOSIX
putはputsやfputcなど

通常のプログラムからラッパー関数はcdeclなどで呼ぶ
ラッパー関数はシステムコール番号などをレジスタにセットして
int 80hやsyscallなどのCPU命令を実行する
2017/03/18(土) 23:30:26.08ID:61cBFpsD0
長々書いたけど swiftdoc.org やAppleの開発ドキュメントを
見てたら多分支障無いから気にしなくていい
228デフォルトの名無しさん (ワッチョイ 035b-8e1h)
垢版 |
2017/03/19(日) 00:02:51.00ID:X9SioAAy0
>>226
なるホドォ
2017/03/19(日) 00:11:01.40ID:WMiUvz/ea
まさかこのスレにシステムコールのオーバーヘッドを気にするようなスピード狂がいたとは
2017/03/19(日) 02:31:51.49ID:MM3vmS8Q0
1,000バイトの読み書きをするのに、1バイトずつ、
syscall * 1,000回すると遅いから、

ライブラリ内でバッファを確保(バッファリング)して、
1,000バイト貯まったタイミングで、syscallを1回だけ呼ぶと、速い
2017/03/19(日) 08:50:33.86ID:BHsM6TZ60
Dispatchの良いドキュメントってありますか?英語でもいいです。mpiのparallel forと同じようなことがしたいんですが、よくわからないので勉強したいので
2017/03/19(日) 09:06:36.45ID:X9SioAAy0
>>231
Apple Gudes and Sample Codeで探せば!
Concurrency Programming Guide
とかヒットするけど。

Dispatch Queues, Dispatch SourceのSectionを参照。
2017/03/19(日) 09:46:45.92ID:QbTcqaOM0
システムコールのオーバーヘッドを気にするような人がSwiftのようなモダンな高級言語を
使うとは胸熱だな

速度をちゃんとコントロールしたいならObjective-Cじゃないと無理だろ...
2017/03/19(日) 09:55:06.98ID:yi8Y0/pHp
ObjCもlibobjc.soとかのランタイムを食わせないと動かないからダメだろ
Swiftよりはランタイム総容量は小さいけどObjCにもランタイム/ラッパー関数は必要なんだぜ?
システムコール呼び出すC関数呼ぶだけならSwiftでもできるから同じ土俵
2017/03/19(日) 10:08:01.66ID:X9SioAAy0
system callの呼び出し履歴を表示する、dtrussってコマンド見つけた。
trussのdetails版らしいけど、trussってなんの略だ?
2017/03/19(日) 10:10:39.12ID:X9SioAAy0
trussはmanのsection 1にあるはずなんだけど、documentが、ない。
なぜだ?
2017/03/19(日) 10:12:54.40ID:X9SioAAy0
truss = trace user signal and system callかな?
2017/03/19(日) 10:35:19.35ID:QbTcqaOM0
>>234
>システムコール呼び出すC関数呼ぶだけ
C言語に頼るwithout CなSwift
2017/03/19(日) 16:43:04.63ID:BRUWii050
文法はwithout Cだけど、機能はwith CのSwiftすごい!!
Modern Objective-Cとかいう微妙に時代遅れなモダン言語(笑)とは違うな
2017/03/19(日) 17:04:16.85ID:QbTcqaOM0
Swift:「文法はwithout Cだけど、機能はwith CのSwiftすごい!!」
C:「それじゃあ結局のところSwiftは文法的な見た目をモダン()にしただけの言語ってことになっちまうじゃねぇか...」
Objective-C:「」
2017/03/19(日) 17:13:15.07ID:zGHcaEctH
juliaも忘れんとって
2017/03/20(月) 10:21:19.90ID:QillsqV80
つまりインラインでC言語が書けるObjective-Cが最強ってことだな。
SwiftもC言語埋め込めるようにすれば最強になれるで。
243デフォルトの名無しさん (ワッチョイ bfd4-pP+o)
垢版 |
2017/03/20(月) 11:09:21.86ID:KXLYvEOG0
じゃあ、swiftにObjective-Cを埋め込めれば、真の最強じゃね?
2017/03/20(月) 11:21:56.39ID:XcCZvFx20
至高の言語Swiftにひざまづけ愚民ども
2017/03/20(月) 11:38:00.54ID:9CFcUwN1d
without Cにする必要性について
2017/03/20(月) 11:42:15.65ID:0inF6e9Oa
ソースが汚くなるから
王室に乞食を招き入れるわけにはいかんだろ
2017/03/20(月) 11:42:37.51ID:IesYv4al0
>>242
文法はwithout Cで機能はwith CのSwiftの最強
何が不足なのか分からんぞ?

ObjCに比べてランタイム容量がアホほど大きいデメリットは分かる
2017/03/20(月) 11:42:54.31ID:9CFcUwN1d
>>242
まあObjective-CはCのスーパーセットだからな
Cそのものを含んでると言っていい
CでできることはObjective-Cでも100%できる
249デフォルトの名無しさん (スッップ Sddf-8YZg)
垢版 |
2017/03/20(月) 13:24:38.46ID:es7jdWbid
俺はObjective-Cで、かつ、省略しない方が好き。

Swiftは、なんか、いろいろ中途半端。
あと、省略可能なのは良いけれど、省略した時にどうなるかを、考えなさすぎ。
省略時の動作は、最終的にコンパイラの実装依存になる。
よってコンパイラが変われば、全く期待した動作にならない場合だってあるんだよ。
2017/03/20(月) 13:32:26.07ID:LSRu7fHya
Swiftに、省略時の曖昧な動作なんてあったっけ?
2017/03/20(月) 13:39:46.35ID:MLqjE/IfF
>>242
Swiftでも直接Cの関数呼べるけどなんか問題ある?
このスレでも少し前にdup2()呼ぶサンプル書いてる人いたよ

個人的には
"C":{}とかで囲んで明示する必要がいるくらいには敷居を上げておいて欲しかった
今だと普通に呼べすぎて、swiftの関数なのかCの関数なのか見分けがつかない
2017/03/20(月) 14:21:57.88ID:EvEkzDYt0
>>250
型推論の事言ってんじゃないか?
別に省略してる訳じゃないのにね。

あるいは、syntax sugarの事かも。
Array<Int>を[Int]とか書いたり。
2017/03/20(月) 14:48:23.91ID:G0HPo1ICp
見分けがつかないからなんだってんだよ
2017/03/20(月) 15:03:51.36ID:OmtBFJ4n0
Swiftってザ・意識高い系って感じの言語だな
C言語の関数呼べるようにする必要ないくらいじゃないと言語とは言えんし
2017/03/20(月) 16:30:53.49ID:E6+3UOyx0
Bridging Headerもmodulemapも言語の機能じゃ無いよ
2017/03/20(月) 17:05:35.61ID:OmtBFJ4n0
without Cを謳っておいてCの関数を呼び出す
仕組みを用意してるのって滑稽だねってだけだよ
2017/03/20(月) 17:06:20.49ID:fEdZO0mtp
>>254
比較対象がVM言語やインタプリタ言語かよ
意識低いなw
2017/03/20(月) 17:13:00.01ID:G0HPo1ICp
without C を謳うのは建前
でもcが使えちゃうのは本音

日本人ならわかるだろ?
2017/03/20(月) 17:31:37.32ID:qt6rA4Ca0
>>254
Javaだけど呼んだ?
2017/03/20(月) 17:36:09.37ID:5DkpfNMbd
gccがgasコードを吐くように、swiftもObjCコードを吐けばいいんじゃね?w
2017/03/20(月) 17:43:37.75ID:EvEkzDYt0
>>260
それは難しいだろう。
associatedtype付きのprotocolとかObj-Cに移植できるの?
2017/03/21(火) 07:36:52.81ID:9HZnXlk90
gccがgasコードを吐くように、clang/swiftcがLLVM IRコードを吐く件

>>251
Swiftコード中に書くC, ObjC関数は、.swiftヘッダファイルに同名で再定義されたswift関数だから見分けつかない
Swiftフレームワークライブラリの中に入ってる.swiftヘッダ見るとC,ObjC,Swiftの全ての関数が同列に並んでてこんなことしてるのかよwwwって笑う
2017/03/21(火) 07:41:09.49ID:JY9T0YVB0
JavaのJNIだとCを呼び出すための敷居が高すぎるんだよな

でもswiftだと敷居が低すぎる

なんてワガママな俺
2017/03/21(火) 07:54:24.70ID:nRmSmnIrd
C言語の関数呼び出さないとやりたいこと出来ないわけ?
2017/03/21(火) 08:21:33.84ID:9HZnXlk90
やりたいことを出来ないんじゃなくて、>>238のように出来ることを煽りたいんだと思う
それが煽りになってるのか分からんけど

最初は(システムコールを扱う時に)SwiftだとObjCほど性能でないwwwって煽ろうと思ったら同レベルで引くに引けなくなった感じがする
単純にSwiftランタイムのばかでかさに依る性能劣化を煽ってればその通りなのにね
ランタイムのロードとか関数マップテーブルからのAPI検索とか、システムコールだと差分ないけど一般利用時に性能悪いのは必然だもの
2017/03/21(火) 09:14:33.95ID:XLp7uPXRF
Swiftでないとダメな5つの理由
とか誰か書いてよ
2017/03/21(火) 09:21:56.02ID:hTMAmD++d
1.学習コスト
2.生産性
3.スタイリッシュ性
4.流行
5.信仰心
2017/03/21(火) 10:36:30.52ID:H55j2XV7d
>>264
さあ?
あなたの作るプログラムで必要であれば必要だし
必要でないなら必要ない

うちの場合OpenCV使うのにC++ブリッジ使ってる

あと、無限ループで延々九九と答え吐き出すコンソールアプリ作っておいて
Ctrl+Cを押されたら「知るかボケ!忙しいんじゃ」と吐き出して、そのまま無限ループを続けるプログラムを作りたかったら
俺はSwiftだけで書く方法を知らないのでCの関数(と言うよりはPOSIX API)を呼び出す


どうして全部Swiftでできるようにしないのか?と言う問いに対しては
Javaプロジェクトが一つの答えだと思う
OSのAPI層までを言語と標準ライブラリに取り込もうとする意欲的な試みは
20年以上かけてある程度成功したが、柔軟性を失わせる副作用と言語の肥大化をもたらした
そしてJavaからCを呼び出す仕組みであるJNIは未だに必要とされている

全部をプログラミング言語に取り込むのではなく既存の仕組みとうまく連携するのがバランスの良いとの判断なんじゃないかな?
2017/03/21(火) 10:46:19.71ID:MDnLMEwZd
swiftは初めからjavaのようなマルチプラットフォームを目指しているわけでもあるまい
270デフォルトの名無しさん (スプッッ Sddf-pP+o)
垢版 |
2017/03/21(火) 11:08:08.11ID:CAHXK6Wdd
Floatを引数にとる関数で、その引数の場所で(1+n)とかやると、
Binary operator '+' cannot be applied to two 'Int' operands
ってエラーが出て嵌った。
http://stackoverflow.com/questions/40557214/swift-operator-throwing-error-on-two-ints
エラーメッセージが不親切過ぎる。
271デフォルトの名無しさん (スプッッ Sddf-pP+o)
垢版 |
2017/03/21(火) 11:11:47.89ID:CAHXK6Wdd
上のリンクでは
Binary operator '*' cannot be applied to two 'Int' operands. Expecting two 'CGFloat' operands.
ってエラーメッセージの方が良いと書いてるけど

Binary operator '* -> CGFloat' cannot be applied to two 'Int' operands. Expecting two 'CGFloat' operands.

だと、まだ分かりやすかったと思う。
2017/03/21(火) 11:20:38.39ID:g+RWoDDLM
>>246
王とはCのことか
273デフォルトの名無しさん (スッップ Sddf-8YZg)
垢版 |
2017/03/21(火) 12:12:24.85ID:PXKTLJIMd
>>266
「Swiftでないとダメな5つの理由とか」の「とか」は、「Swiftでないとダメな5つの理由」以外の何?
2017/03/21(火) 12:13:48.48ID:1Za/GAk+p
Objective-Cこそ王族の言語(信仰心

>>266
ダメな理由なら3つほど
1. 小さなランタイム(笑)
2. 頻繁に破壊される言語仕様
3. 不完全なエコシステム(ビルドツール)

これらはメリット/デメリットが双方あるものじゃなくデメリットしかないから煽ってもおk
この辺はswiftユーザはもう諦観して苦笑しながら使ってるデメリットだけども
2017/03/21(火) 12:16:06.38ID:1Za/GAk+p
>>273
「swiftがダメな3つの理由」とか
2017/03/21(火) 12:19:09.63ID:H55j2XV7d
>>273
お、久しぶりに出てきた

全部の「とか」に反応するわけじゃなくて
選択的に反応してるのか?

しかしその選択基準がまだよく分からないな
2017/03/21(火) 12:37:34.87ID:H55j2XV7d
>>269
うん、

マルチプラットホーム対応を言語レベルでは行わない選択をした=実行環境ネイティヴ(多くの場合はCで提供されている)とのインターフェースが必要

だと思ってる

without CなのにCが必要wwwって煽ってる人は
言語仕様とネイティヴインターフェースを混同しているおバカな自分をアピールしたいんしゃないかな?
278デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
垢版 |
2017/03/21(火) 12:39:40.14ID:huV0U58I0
>>269
Multi-platform目指してると思うよ!
Linux, macOSとで動くし。
Windowsでもそのうち動く様になる。bash, vimが動く様に。
279デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
垢版 |
2017/03/21(火) 12:41:05.23ID:huV0U58I0
>>270
A + BでそのError Occuredの場合、
大抵は、
Int(A) + B
ってするとOK
2017/03/21(火) 12:45:05.87ID:MDnLMEwZd
>>278
動く、使える=swiftがswiftプラットフォームとしてマルチを目指しているではない
2017/03/21(火) 12:52:34.12ID:1Za/GAk+p
>>278
cygwinポーティングはとっくに公式にマージされただルルォ
Androidでも動くしコミュニティの愛すべき馬鹿どもは頑張ってる

>>279
それ、Int(A)がキャストじゃなくコンストラクタ呼び出しで生理的に気分悪いよな
どこまで最適化走るか不明瞭だけど普通に考えて性能悪化を手助けしてる
2017/03/21(火) 12:59:01.94ID:I3nNj3Lbp
オプショナル型ちょ〜便利
型類推もちょ〜便利
文末にセミコロン不要なんてサイコー
letとvarの使い分けがありがたすぎ
switch文が強力すぎて鼻血でたー
enum構文がおいしすぎてよだれ出るぅ
Playgroundが便利すぎぃ
他にもまだまだたくさんよりどりみどりぃ
283デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
垢版 |
2017/03/21(火) 13:52:46.38ID:huV0U58I0
>>281
キャストとは、Superclassを同じくするインスタンスどおしの型変換。

IntとCGFloat間でキャストできる方が気分悪い。
2017/03/21(火) 14:19:23.23ID:H55j2XV7d
>>278
あ、ごめん、スレチかと思って説明しなかったんだけど、


Javaはバイナリレベルでのマルチプラットホームを旗印にしてたんだ
"Write Once Run Anywhere"をスローガンにして
つまり一度コンパイルして作成したアプリとかは、macでも、winでも、unixでも、携帯でも、再コンパイルすら必要なく同じ動作するよ!って
そのためにAPIやABIなど今までOSの役割だったところをJavaという仕組みの中に取り込んでいった

もちろん、そんなにうまくいくはずもなく"Write Once Debug Everywhere"と揶揄されることになった


それに対して伝統的なUnix系の考え方は、再コンパイルして動けばオッケー
動作が違う?OSとかの環境が違うんだから当然だよね、ソースでifdefしよう!
って感じのマルチプラットホーム

これですら、PosixやSUSとかの活動によるAPIや実行環境レベルでの統一化や
gnu automakeなどによる実行環境とビルド環境の調査とそれに対応したビルド
などでかろうじて維持されているレベル


C言語とかで書いたプログラムがmacでも、winでも、Linuxでも動くというのは
言語がマルチプラットホーム対応しているわけではなく、後者の意味でいろんなプラットホームで動くようにプログラムやビルドシステムを書いているから

Swiftも今の所後者に属してると思うよ
2017/03/21(火) 14:49:45.32ID:LQyko2ZP0
>>283
お前それプリミティブ型のintとfloatでも同じ事言えんの?

基本的な数値型をプリミティブ型として一般的に提供しないSwift
プリミティブ型ではなく構造体型で全数値型を提供する意義は分かるが性能劣化してるんだよなぁ
286デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
垢版 |
2017/03/21(火) 14:49:46.32ID:huV0U58I0
>>284
THX

Single UNIX Specificationってのがあるのね。
287デフォルトの名無しさん (ブーイモ MMdf-S3kY)
垢版 |
2017/03/21(火) 15:22:22.74ID:vtLrbY1LM
なんでここCのシンタックスを外したことをwithout Cって言ってるのに
without CつったらCの機能が呼べないようにならないとおかしいだろ?
とかとんちんかんなこと言う奴しかいないのん?
ラトナーが草葉の陰から泣いてるぞ
2017/03/21(火) 15:40:06.05ID:DXgiF4dPp
日本語でおk
289デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
垢版 |
2017/03/21(火) 15:50:06.39ID:huV0U58I0
>>285
Swiftの高速演算に対する思想。高速演算必要ならClangで書いてね。Frameworkって仕組みを用意するから、Clangのソースをemmbed inしてね。って事なのだ。例:RxSwift/RxCocoa/Runtime

高速演算したけりゃ、その部分をClangで書いてSwiftから呼べば良い。
2017/03/21(火) 16:06:44.92ID:p7k0dZ7/0
>>285
@_transparent付きで中でビルトインの変換呼んでるだけだからCやC++と比べても性能劣化なんて皆無だと思う
実際にIR見ても別に無駄にジャンプしたりしてない
素でsitofpとかしてるだけ
ナローイング変換はprecondition入るけどそれも最適化されるし
2017/03/21(火) 16:27:53.04ID:MDnLMEwZd
Clangっていうとコンパイラしか思い浮かばないんだが
2017/03/21(火) 17:51:22.44ID:pxhdVPhBp
> Frameworkって仕組みを用意するから、Clangのソースをemmbed inしてね。って事なのだ。
Swift Package Managerがクソな完成度でSwift Framework LibraryにC言語のソースはembed inできないんだけど...
まぁそもそもアレはFramework Libraryを生成するコマンドとしても成り立ってないから論外なのかもしれんが

Swift公式として真っ当な技法を提供してなくて、バッドノウハウとしてRxSwiftやRxCocoaがやってることをやれってことなんだろうな(ウボァ
293デフォルトの名無しさん (スッップ Sddf-8YZg)
垢版 |
2017/03/21(火) 18:48:58.62ID:PXKTLJIMd
>>284
「一度コンパイルして作成したアプリとか」の「とか」は、「一度コンパイルして作成したアプリ」以外の何?

> macでも、winでも、unixでも、携帯でも
macはハードウェア
win、unixは、オペレーティングシステム
携帯は動詞

「C言語とか」の「とか」は、「C言語」以外の何?
2017/03/21(火) 19:25:34.11ID:I3nNj3Lbp
一度コンパイルして作成したアプリとか
一度コンパイルして作成したアプレットとか
一度コンパイルして作成したサーブレットとか

C言語とか
C++とか
Pascalとか
2017/03/21(火) 19:42:18.10ID:jxZBoDQT0
>>293
NG: macはハードウェア
OK: OSはmacになり、ハードウェアはMacのまま

揚げ足取るのって楽しいの?
アスペなの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況