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

Swift part2

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0855デフォルトの名無しさん2014/07/18(金) 22:26:57.51ID:QEbII3eu
x.1までがベータ
0856デフォルトの名無しさん2014/07/18(金) 22:27:02.65ID:ox1sKAm6
Rubyなんざ開発開始から10年以上も経ってんのにこのザマだからな。
バグは減ったが相変わらず遅え。
4年でバグがあるなんて大したことねえよ。
0857デフォルトの名無しさん2014/07/18(金) 22:35:35.36ID:q8Shzk6v
>>856
Rubyが遅いのは仕様だろ
人間にめっちゃ優しい代わりに機械に厳しい
そういう言語
速さなんて求めちゃいけない
0858デフォルトの名無しさん2014/07/18(金) 22:37:26.79ID:DOB4ifCF
>>856 Ruby は松本氏一人で作ったんだぞ。 出来たから使ってくれと作者が言ったのを覚えている。
趣味で作った様な感じだった。
0859デフォルトの名無しさん2014/07/18(金) 22:41:12.32ID:aJ6CuKWd
Pythonなんざ開発開始から10年以上が経過しても
いまだにまともなクロージャを実装できないザマだからな。
たしかに4年でバグがあるなんて大した事ねえよな。
0860デフォルトの名無しさん2014/07/18(金) 22:42:30.03ID:Ouyc3HJ6
>>856
Rubyが遅い?寝言は寝て家
0861デフォルトの名無しさん2014/07/18(金) 23:21:22.07ID:AYfxGtzX
松本が、トヨタケーラムで就業時間中にコッソリ作って、盗み出したんだっけ。
0862デフォルトの名無しさん2014/07/18(金) 23:39:44.32ID:aJ6CuKWd
ほう、当時のトヨタケーラムでは
オブジェクト指向スクリプト言語を開発していたのか
それはそれは、すごいスクープだな(棒
0863デフォルトの名無しさん2014/07/18(金) 23:50:35.17ID:q8Shzk6v
Matz自身、速さを求めたら(一流のエンジニアが集まって最適化をしている)Javaには勝てない、
なので速さ(機械中心)じゃなくて読みやすさ、書きやすさ(人間中心)で設計したから成功した、
というようなことを語っていた気がする
>>862
トヨタケーラムが作ってたんじゃなくて、当時トヨタケーラムにいたまつもとが、暇すぎて、
じゃぁずっと作りたかったオレオレプログラム言語作るか〜って作ったのがRuby
0864デフォルトの名無しさん2014/07/18(金) 23:59:25.38ID:aJ6CuKWd
>>863
うろ覚えだけど、うなぎパイ産地の浜松にいた頃という記憶があるね

いずれにせよ、相手を貶めるためなら嘘を流しても正当化されるという
>>861の発想は、左翼系マスゴミと共通するものがあるな
0865デフォルトの名無しさん2014/07/19(土) 00:08:23.66ID:e9eDRNFj
>>859
クロージャがないんじゃなくて、匿名クロージャが無いだけだろ
0866デフォルトの名無しさん2014/07/19(土) 00:13:54.15ID:y0FLl86N
>>863
いや言語の性質がどうって話じゃなくて、単に開発リソースが足りないから言語の改良を優先してるだけ
最適化を頑張ってたら言語の改良に手が回らないし、最適化によって処理系が複雑になるほど改良や保守そのものが困難になる
0867デフォルトの名無しさん2014/07/19(土) 00:19:15.71ID:BlBRS1yh
君たちここはSwiftスレです、国粋主義言語Rubyの話はやめなさい
0868デフォルトの名無しさん2014/07/19(土) 01:01:05.54ID:eaRnxt2E
>>865
いや、
 「Python には(匿名関数参照はあるけれど)クロージャは存在しない」
というのが正しい
クロージャは単なるラムダ式ではなくて「局所環境」という概念を含む
局所環境とは、対象とするクロージャ内部だけで有効な変数や関数の宣言を意味する

Python のラムダ式の構文ではその定義に純粋な式しか許さず、なおかつ
関数型言語における let 式や where 節に相当する局所宣言構文が存在しない
だから、変数宣言を含むコードを関数の引数やリターン値として(=第一級市民として)扱いたい
場合には、ラムダ式(=匿名関数)は役に立たず、わざわざ名前のついた関数を宣言しなければならない

これに対して、まともなクロージャを備えるモダンな Swift/C#/Lisp/JavaScript/Ruby といった
言語では、クロージャ内部で局所変数を宣言できるから、たとえばソート・ライブラリ関数の
引数として渡す複雑な比較処理を、クロージャ内部のコードとして簡潔に表現できる
(なおクロージャという概念は、言語によってラムダ式/無名関数/ブロック等と名称が異なる)
結果として、プログラマは C# の LINQ や JavaScript の jQuery のような関数型プログラミングを
基礎としたメソッド・チェーンを何の苦も無く自在にプログラミングできている
(おそらく Swift でもクロージャを積極的に活用したプログラミング技法の情報が溢れるようになる)

まとめると、
 「クロージャの欠落したPython は(手続き型言語だから)関数型プログラミングには適さない」
と言える
0869デフォルトの名無しさん2014/07/19(土) 01:09:47.09ID:eaRnxt2E
>>867
ああスマソ、ジャグァとかメルツェデスみたいな言葉が大好きで
海外文化を心酔する舶来主義言語 Python の話題ばかりしていた

クロージャは Swift でも重要な概念だけど、くどかったかもしれないね
0870デフォルトの名無しさん2014/07/19(土) 01:15:38.46ID:BlBRS1yh
>わざわざ名前のついた関数を宣言しなければならない

そうだけど「わざわざ名前のついた関数を宣言しなければならな」くてもクロージャなんですよ。
関数オブジェクトがその生成点でのレキシカルスコープのEnvironmentを保持していればクロージャなんだよ。

Pythonが関数型プログラミングには適さないのは、まあそりゃそうだ。
0871デフォルトの名無しさん2014/07/19(土) 01:22:51.17ID:XBc61slo
関数内関数もクロージャなのん
0872デフォルトの名無しさん2014/07/19(土) 01:33:27.30ID:eaRnxt2E
>>870
>>867 からの批判もあるし、Swift とは直接関連しない Python に関する議論の続きは、
Pythonスレ、バトロワスレ、LL系関数型スレ等のいずれかでやったほうがいいんでないかな?
もし誘導してくれれば相手するよ

とりあえず、クロージャとは
 「局所環境を伴う匿名関数(=ラムダ式)」であって、それを識別子に束縛したものが関数宣言である」
というのが(手続き型言語 Python を除く)モダンな言語における一般的認識だと指摘する

# ということで、眠いから自分は落ちる
0873デフォルトの名無しさん2014/07/19(土) 01:46:10.04ID:GP+uZW4Y
お客様のなかにプログラミング言語理論の専門家はいらっしゃいませんか?
0874デフォルトの名無しさん2014/07/19(土) 02:02:36.86ID:GP+uZW4Y
SECDマシンすら実装したことない奴がクロージャを語るな
0875デフォルトの名無しさん2014/07/19(土) 02:20:09.97ID:60ExAOfp
>>873と>>874の間の約15分間になにがあったんだい?
0876デフォルトの名無しさん2014/07/19(土) 02:26:37.65ID:7rL7EX6a
これがいわゆるポリモーフィズム(多態性)である
0877デフォルトの名無しさん2014/07/19(土) 05:10:16.20ID:SmxhOcgK
ぜひ関数型言語の素晴らしさを語っていただきたい。
業務で関数型言語使ってるという人いるの?
関数型を使うとこんなに幸せって事例を聞きたい
0878デフォルトの名無しさん2014/07/19(土) 07:16:11.61ID:y0FLl86N
>>877
COBOLの置き換えにはいいかもね
IPO仕様がそのまま動くわけだから
0879デフォルトの名無しさん2014/07/19(土) 10:28:03.99ID:ati29DcN
>>864
ウソだと言い出したお前に、立証義務がある
rubyがトヨタケーラムのリソースを一切使用していなかった事を立証しろ

まず、rubyのリリース通知はトヨタケーラムのドメインからでていたが、
会社の許可はとっていたのか明らかにしろ
0880デフォルトの名無しさん2014/07/19(土) 10:31:28.27ID:icDb3AwV
>>879 アホか、
0881デフォルトの名無しさん2014/07/19(土) 10:53:04.54ID:AhQAimMt
テキスト処理なんかは関数型言語は得意だろう
逆にGUIになるとからっきしなイメージ
0882デフォルトの名無しさん2014/07/19(土) 11:04:11.31ID:ati29DcN
自白してるじゃねーか、ウソを流して相手を貶めてるのはどっちだ?

http://web-engineer.buyuden.net/interview/matz/
Matz:はい、仕事中もやってましたね。今じゃコンプライアンスがどうこうって言って難しそうですけどね。いい時代でしたね。
0883デフォルトの名無しさん2014/07/19(土) 11:17:51.88ID:Dgn7whGs
>>882
だから仕事中に作ってたとしてもそれを自分のものとして発表するのを「盗み出す」とは言わないんだって
会社が仕事として作れって言ってたんじゃないんだから。
仕事中に私物を作ってたのか!バカもん!と怒られることはあっても、それは会社のものだ!泥棒!と言われる筋合いはない。
0884デフォルトの名無しさん2014/07/19(土) 11:20:49.41ID:0s6Yl60V
契約次第
会社から金貰ってる以上
勤務中に違うことするのは
場合によっては業務上横領
盗みと一緒
0885デフォルトの名無しさん2014/07/19(土) 11:27:15.14ID:R4yDQs9r
>>884
契約次第ってのは嘘ではないが、一般的に労働契約は業務専念義務を伴う。
なのでまっつの行為は労働契約違反だが、使用者が大目に見てたってことだろ。

あと業務上横領ってのは大嘘。
横領という行為は「自己の占有する他人の物」についてしか成立しないので
どう構成しても横領にはならない。
0886デフォルトの名無しさん2014/07/19(土) 11:27:21.66ID:Dgn7whGs
>>884
もちろん、契約内容によってはそうだろう。
じゃないと研究職とか成り立たないからな。
でも、トヨタケーラムはそうではなかった。
でなきゃ、とっくに権利主張して裁判沙汰になってるだろ。
それで終わり。
0887デフォルトの名無しさん2014/07/19(土) 11:31:30.79ID:ati29DcN
>>883
会社から給料貰ってる就業時間内に会社のリソース使って開発したものを、
個人の所有と認めている企業なんて存在しない。

反論するなら実例あげてみろ。
就業経験の無いニートって奴は困ったもんだ。
0888デフォルトの名無しさん2014/07/19(土) 11:32:29.35ID:ati29DcN
>>886
アホ、研究職だってそうだよ。
0889デフォルトの名無しさん2014/07/19(土) 11:35:55.07ID:Dgn7whGs
>>885
横領についても、よく考えたらそうだな。
てか、 ID:ati29DcNは先に結論があって、それらしい言葉を並べ立てて無理やり論理を構築してるだけなので
何を言っても無駄
反原発と一緒
0890デフォルトの名無しさん2014/07/19(土) 11:39:22.89ID:60ExAOfp
最後の一文でだいなし
0891デフォルトの名無しさん2014/07/19(土) 11:46:14.53ID:ati29DcN
証拠が出てきたら屁理屈付け始めたか

他人のものを許可無く自分のものにすることを「盗む」と言うんだよ。
トヨタケーラムは盗まれた事、盗まれたものの価値を分からずに放置しただけ

訴えられてないからセーフとか万引き高校生か、お前は。W
0892デフォルトの名無しさん2014/07/19(土) 11:54:38.28ID:60ExAOfp
民事は警察も介入しないのはなんでなんだろうと。そこまで拘るのはなんで?
世の中にはお前の気に食わないことがいっぱいあると思うが、そこまでそれに拘るのはなんで?世直しの第一歩とか?w

焚き付けるならトヨタケーラムに裁判するように持ち込みなさいな。トヨタケーラムが無視するようだったら、お前はトンチンカン以外の何者でもない
0893デフォルトの名無しさん2014/07/19(土) 11:57:46.33ID:0s6Yl60V
権利主張は認められる可能性がある
0894デフォルトの名無しさん2014/07/19(土) 12:08:07.59ID:Dgn7whGs
民事と刑事の区別もついてない、
言葉の意味もわかってない、
馬鹿馬鹿しい、単にMatz叩きたいだけ
アップル信者ってこんなのばっか
0895デフォルトの名無しさん2014/07/19(土) 12:10:47.73ID:60ExAOfp
最後の一文付けるのはわざとなスタンスなのかww
0896デフォルトの名無しさん2014/07/19(土) 13:30:45.40ID:0TZ3km8d
硬いこと言えばそのとおりだが、従業員が仕事中に趣味で作ったものまで権利主張しない会社なんていくらでもある。
マドレーヌと一緒。
0897デフォルトの名無しさん2014/07/19(土) 13:49:31.25ID:9ljzGYTI
おまいら、Swiftの勉強しろよ。
色んな意味で滅多に無いチャンスだぞ。
0898デフォルトの名無しさん2014/07/19(土) 14:08:45.22ID:0s6Yl60V
>>897
goのときもDartのときも同じこと言ってた香具師がいた
0899デフォルトの名無しさん2014/07/19(土) 14:15:21.48ID:RW06H2gr
>>887
googleの1/10ルールって就業中のリソースで作るものでないの?
大企業で知識労働者を集約するとこだと、そういうの多いだろ
0900デフォルトの名無しさん2014/07/19(土) 14:19:05.66ID:qqkZh89L
チャンスはいつでも転がってるんだよ
滅多に無いなんてことはない
目に入ってないだけ
0901デフォルトの名無しさん2014/07/19(土) 14:25:56.67ID:9ljzGYTI
>>898 チャンスの大きさを自分で見極められるかどうかで力の入れ方を決める事は出来るだろ。

Swiftのケースは、GoやDartより大きなチェンジだろ。 その衝撃は全く違う。
チャンスは色々有るが、大きなチャンスと言うのは滅多に無い。
それを捕まえられる人間は一握りかもしれ無いけど、やって見る価値は有ると思う。
0902デフォルトの名無しさん2014/07/19(土) 14:47:12.30ID:Dgn7whGs
DelphiやC#、Objective-Cの歴史をみればわかると思うけど
一企業に独占された不自由な言語が普及することはまずない
Swiftも同じ末路を辿ると思う。江添亮さんも言ってる
0903デフォルトの名無しさん2014/07/19(土) 14:51:11.83ID:eaRnxt2E
>>874
クロージャを正しく理解するのには、関数型言語の処理系を
自分で書いてみるのが一番だという意見には同意するね
ただしSECDマシンの実装というレベルでなくても、
パーズした抽象構文木(AST)を直接的に評価する
単純なインタプリタで十分だと思う
(これは >>801 の 1.5 に分類されるインタプリタの実装方式)

たとえば単純な言語処理系におけるASTを評価した値のデータ型について、
関数型言語の一つである Stanndard ML(SML) による定義を以下に示す
 datatype value =
  Integer of int   (* 整数型の値 *)
 | Boolean of bool (* 論理型の値 *)
 | Primitive of prim (* '+', '-', '=' といった組み込み関数 *)
 | Closure of id * AST.expr * env (* クロージャ *)
 | (* 以下略 *)
ここで SML の datatype 宣言は Swift の enum に相当し、
直和型(バリアント型)のデータ型を定義する構文である(>>651)
日本語で表現すれば、「値(value)とは整数(bool)または論理値(bool)または
組み込み関数(primitive)またはクロージャ(closure)である」となる
クロージャについては、たとえば SML のラムダ式表現 fn x => x + 1 であれば
「識別子(id) x および式(expression) x + 1 および環境(environment)」と定義される
ここで x * y * z は Swift にもあるタプルのデータ型、いわゆる直積型を意味する

インタプリタ全体の設計については、以下で詳しく解説されている
・MLプログラミング入門(IV), コンピュータソフトウェア 12(4), 305-317, 1995-07-17
  http://ci.nii.ac.jp/naid/110003743870
学会誌特有の硬い口調、かつ整理されていないコードで読みづらいけど、参考になる

他にも関数型言語 OCaml による Ruby サブセット実装なんてのもある
・RubyのインタープリタをOCamlで実装してみた。 - yoshihiro503の関数的日記
 http://ocaml-nagoya.g.hatena.ne.jp/yoshihiro503/20090429
0904デフォルトの名無しさん2014/07/19(土) 15:18:57.00ID:YZuWtgiM
>>902
えぞえってSwiftの記事で爆死してたけど、何の釈明もないよね。
0905デフォルトの名無しさん2014/07/19(土) 15:21:03.98ID:PYFMBFkf
>>854
数人がせこせこやってたプロジェクトに社全体の未来を託していいのだろうか
最終的なGOサインを出したのはフェデリギ?
0906デフォルトの名無しさん2014/07/19(土) 15:25:27.28ID:I1ObDJCO
>>905
数人ってもメインがラトナーなわけで。
今は数も増えてるだろうし

つかLLVM/Clangにも同じこと言えるんじゃね?まあ、こっちは使う側はあまり意識しないでいいけど
0907デフォルトの名無しさん2014/07/19(土) 15:35:46.93ID:eaRnxt2E
>>877
まず、このスレにで対象とする話題は「関数型言語」ではなくて
「関数型プログラミング」というプログラミング・スタイルであり、
しかも Swift と関連したネタにしておいたほうがいいと思う

で、関数型プログラミングというスタイルであれば、>>868で書いたように
C# の LINQ や JavaScript の jQuery といったライブラリやフレームワークが
多くの業務プログラマの間で、すでに活用されている
今さら jQuery を放棄して、以前の DOM をゴリゴリ書き換えていく生活へ
返りたいと希望する JavaScript プログラマは皆無だろう

もちろん Ruby であれば、標準ライブラリはもちろんのこと、
業務アプリ開発にも採用される Rails では当たり前のように活用されている
たとえば最近の Rails では、(LINQ から影響を受け) SQL のクエリ文を
メソッド・チェーンを使って組立てるのが一般的スタイルになっている

これまで(手続き型言語である C をベースにした)Objective-C のプログラマにとって、
こうした関数型プログラミングは縁遠かった
これが新言語 Swif の登場によって、世間ではすでに常識化している
モダンなスタイルを使えるようになる、ってことだね

(Swift を含む)関数型ではない言語における関数型プログラミングの利点については、
以下の記事が参考になると思う(Ruby の記事だけど、他の言語にも当てはまる)
・Rubyによる関数型プログラミング
 http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
0908デフォルトの名無しさん2014/07/19(土) 15:35:54.32ID:RW06H2gr
>>897
古典AIでも勉強しなおす方がマシ
0909デフォルトの名無しさん2014/07/19(土) 16:06:30.52ID:b+p9VEiT
>>905
会社全体の未来を託すような基盤技術の立ち上げは凄く優秀な少人数に任せるに限るよ
最初から凡人を大量に投入したりしたら目も当てられないようなものができあがる
0910デフォルトの名無しさん2014/07/19(土) 16:54:45.57ID:T59/5GeD
>>871
Closure = gcc拡張の関数内関数
Closure != C++の関数内classの静的関数

因みにBorlandのC++だとこんなClosureがあった。

Example example;
int (__closure *function)(int) = &example::Something;

今のC#で言うdelegateだけど、これもClosure。
Closure != 無名関数
で有る点は意識したほうが良いと思う。
0911デフォルトの名無しさん2014/07/19(土) 17:14:00.06ID:T59/5GeD
>>907
あれは関数型プログラミングとは言えないと思う。
単なるSmalltalkへの回帰じゃん。

( 1 to: 10 ) select: [ :each | 5 < each ].
これと同じ。

関数型って言うなら

numberFor := [ :value | [ value value. ] ].
zero := numberFor value: 0 asValue.
one := numberFor value: 1 asValue.
two := numberFor value: 2 asValue.
array := [ :index | ( { zero. one. two} at: index value ) ].
array value: zero.
array value: one.
array value: two.

こんな感じで配列だろうが値だろうが全部関数として扱えなきゃ、
関数型Programingと言えないだろ。
0912デフォルトの名無しさん2014/07/19(土) 17:21:22.88ID:lyDv2rWU
>>906
ラトナーってそんな凄いのか
0913デフォルトの名無しさん2014/07/19(土) 17:26:17.41ID:T59/5GeD
因みにSmalltalkはLispの影響が強くて

a := 1 asValue.
b := [ 1 ].

c := a value = c value.

最初からこんな風に値を関数化する仕組みを備えてる。
0914デフォルトの名無しさん2014/07/19(土) 17:28:15.02ID:T59/5GeD
>>913の訂正

?
c := a value = c value.

○
c := a value = b value.
0915デフォルトの名無しさん2014/07/19(土) 17:42:09.74ID:dnFFlfmE
プログラマならSwiftやObjective-Cなんて2週間も遊べば大体わかるわけで
それよりCocoaとかのフレームワーク群に慣れ親しむほうがずっと重要だわさ
どんなプラットフォームでも言えることだけど
0916デフォルトの名無しさん2014/07/19(土) 17:49:53.87ID:Dgn7whGs
>>912
LLVMの理論つくった奴だぞ
21世紀のデニス・リッチー、または21世紀のリーナス・トーパルズって呼ばれてる
なんでアップルみたいな邪悪な企業に雇われて、Swiftなんて不自由言語作ってるのかわからん
フリーソフトウェア運動に加わればコンピュータ黎明史に未来永劫名を刻めるだろうに
0917デフォルトの名無しさん2014/07/19(土) 17:58:21.93ID:6ZRdCiPy
歴史に名を刻んだだけじゃ飯は食えんからな。
zipを開発したカッツの様に酒に溺れて死ぬ惨めな人生は歩みたくないだろ。
0918デフォルトの名無しさん2014/07/19(土) 18:01:48.17ID:1hzYIwWV
>>917
それは自業自得じゃね?
ま、名前が売れるのはプログラマ冥利に尽きるよ。Appleなら飯には困らんだろうし
0919デフォルトの名無しさん2014/07/19(土) 18:03:21.23ID:fcBWg80N
>>916
LLVMで効率的に動く言語としてSwift作った訳だが。
0920デフォルトの名無しさん2014/07/19(土) 18:05:02.39ID:7rL7EX6a
ID:Dgn7whGs を見て本の虫を思い出した。奴も似たような主義者だしな
0921デフォルトの名無しさん2014/07/19(土) 18:29:29.01ID:vMQWEed1
Swiftはオープンソース化される可能性がありそう
C#はMono実装がUnityとかで使われてるんじゃない? よく知らんけど
0922デフォルトの名無しさん2014/07/19(土) 18:32:06.45ID:60ExAOfp
>>920
ID:Dgn7whGsはどこまでネタで書いているのかわからんけどな。マジだったらヤバすぎw
0923デフォルトの名無しさん2014/07/19(土) 18:33:14.05ID:qyAKsTm0
>21世紀のリーナス・トーパルズ
それはいくらなんでも過大評価じゃ...
0924デフォルトの名無しさん2014/07/19(土) 18:54:33.09ID:d+Cj230E
江添さんも有名になったな
0925デフォルトの名無しさん2014/07/19(土) 18:57:09.32ID:OcOureUr
>>923
21世紀のリーナスとは初耳だが、LLVM功績はそれぐらい称えられてもいいと思うけどな。
iOSもAndroidもLLVMを採用しているし、その内LinuxもLLVM/Clangでコンパイルされるかもしれない
0926デフォルトの名無しさん2014/07/19(土) 19:02:58.36ID:y0FLl86N
C#もVBも十分普及してるし
JavaはAndroidとかいう海賊版が流行る前から圧倒的トップシェアだよ
まあJavaはIBMもいるけど、ライセンス方式なので昔から完全に一企業独占なのは変わりない
0927デフォルトの名無しさん2014/07/19(土) 19:06:45.57ID:d+Cj230E
GCCという「わざと」超複雑怪奇に作られたバックエンドしかなかった時に
彗星のごとく現われたLLVMさん
0928デフォルトの名無しさん2014/07/19(土) 20:13:47.48ID:71/bQDSL
リーナスなんてタダのパクリじゃないですかやだー
0929デフォルトの名無しさん2014/07/19(土) 20:14:49.24ID:9ljzGYTI
>>925 既にLinuxは殆どClangでコンパイル出来てる。 次のLinuxのバージョンは完全Clangコンパイルバージョンで出て来る予定。
やっとgccの束縛から解放される。

Visual StudioでもLLVMは動いてる。
0930デフォルトの名無しさん2014/07/19(土) 20:23:43.59ID:0TZ3km8d
>>916
なんかリーナスが21世紀に終わってるみたいに聞こえるだろw
0931デフォルトの名無しさん2014/07/19(土) 20:29:05.99ID:eaRnxt2E
>>911
まず「あれは ...」「これと ...」「こんな ....」といった代名詞だらけで、
主張したい事を自分自身の言葉で表現できていない
何度か議論していれば何を指しているのかを推測するけど、
単発カキコ他人には意味不明な文章になっている
書き直したほうがいいと思われる

とりあえず、2点を指摘しておく

まず Smalltalk の歴史を知らないみたいだから説明しておくと、
Smalltalk は関数型言語 LOGO をベースにシミュレーション言語 Simula の
影響を受けて誕生したオブジェクト指向言語の始祖である
LOGO をベースとしているのだから、Smalltalk が関数型プログラミングに
適しているのは、ごく自然な結論である
従って、もし回帰と呼ぶのなら Smalltalk のベースになった LOGO への回帰とすべきだろう
(なおクロージャという概念を Smalltalk ではブロックと呼んでいる)

次に「関数型」と「オブジェクト指向」をごっちゃに理解していると思われる
Smalltalk は純粋オブジェクト指向言語だから、配列だろうが単純値だろうが、
そしてメソッドであろうとも、全部オブジェクトとして扱える
それに対して関数型言語では、関数はオブジェクトとして(=第一級市民として)扱えるけれど、
(その逆に)関数以外のオブジェクトは関数として扱うことはできない
つまり関数型言語では、関数オブジェクトだけに適用(apply)を許すという特別な扱いをする
この違いを理解していないから、「関数型Programing」とやらの定義も間違えていると思われる
09329312014/07/19(土) 20:34:12.19ID:eaRnxt2E
>>931の日本語が変だったので訂正する

X: 単発カキコ他人には意味不明な文章になっている
O: 単発カキコでは、とうてい他人には意味不明な文章になっている
0933デフォルトの名無しさん2014/07/19(土) 20:35:51.54ID:emSpeoNV
[要出典]
0934デフォルトの名無しさん2014/07/19(土) 20:36:12.25ID:0s6Yl60V
>>902
ezoeもタマにはいいこと言うじゃん
0935デフォルトの名無しさん2014/07/19(土) 21:33:38.09ID:h1yXqgt1
>>931
LOGOは違わね?

print apply [[x] :x + :x ][7]

上記の様にLOGOはBlockを評価するにはapplyが必要で、
関数と互換性が全然ない。
関数とBlockの扱いが別でいいと言うなら
C++やJavascriptのように関数と無名高階関数を
同様に扱える言語は当てはまらないじゃん。

関数型Programingの方は言語機能というより、lambda計算の方を示したつもりだよ。
http://ja.wikipedia.org/w/index.php?title=%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97
0936デフォルトの名無しさん2014/07/19(土) 21:37:51.62ID:9ljzGYTI
で、Swiftについてはどう言う評価をするんだ?
他の言語はどうでも良い。
0937デフォルトの名無しさん2014/07/19(土) 22:01:40.35ID:emSpeoNV
[要出典]
0938デフォルトの名無しさん2014/07/19(土) 22:27:03.18ID:0W2JdBO/
次のbetaが楽しみだ
火曜には出るかなー
0939デフォルトの名無しさん2014/07/20(日) 08:24:32.80ID:+HQAUTTc
これからは関数型プログラミングがーーとわめいてる人はおっさんなのか
関数型のエッセンス取り入れるなんて今時あたりまえすぎて
殊更に言うことでもないだろう
0940デフォルトの名無しさん2014/07/20(日) 09:43:03.17ID:b2ADfW78
一番うれしいのはヘッダファイルが要らないことだったりする...
0941デフォルトの名無しさん2014/07/20(日) 11:03:25.26ID:QhoAtEXm
>>940
むしろメジャーな言語でヘッダがあるのCとC++とObj-Cだけですし...
0942デフォルトの名無しさん2014/07/20(日) 11:14:02.69ID:b1uNa6xY
ヘッダはまあ無くても良いけど、ソースからドキュメントを生成するルールとかも策定して欲しいぜ
ヘッダの代わりに
0943デフォルトの名無しさん2014/07/20(日) 13:41:45.35ID:ra/3lMl1
ヘッダは分割コンパイルのためにあるから、その分割コンパイルという概念がない言語にはありえないのでは?
0944デフォルトの名無しさん2014/07/20(日) 14:04:30.84ID:7Fl+zG/o
>>943
大抵のコンパイル言語にはライブラリを先にコンパイルしといて
あとでそれをリンクする仕組みがあるよね?
0945デフォルトの名無しさん2014/07/20(日) 14:17:44.10ID:NF3FNXda
ヘッダはプリプロセッサの為に有るんだよ。
プリプロセッサを無くしたSwiftに無いのは当然。
0946デフォルトの名無しさん2014/07/20(日) 14:27:34.21ID:2j39JLYE
プリプロセッサ無くなったの?
じゃあプリプロセッサマクロは使えなくなったの?
0947デフォルトの名無しさん2014/07/20(日) 15:06:08.48ID:wVC56iFt
プリプロセッサなくなってたら、コメントも使えないね^^
0948デフォルトの名無しさん2014/07/20(日) 15:23:32.02ID:NF3FNXda
>>946

ここにSimple Macro とComplex Macro , Condition compileについてのSwiftでの記述が有る。
https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/buildingcocoaapps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_20

Simple Macros
#define FADE_ANIMATION_DURATION 0.35
は、global Constantを使いなさい。
let FADE_ANIMATION_DURATION = 0.35

何故ならCやObjCで書かれたSimple Macro様の物は、global variable としてSwiftに読み込まれるから。

Complex Macros
対応する物はSwiftには無い。 代わりにジェネリックとfunctionで似た様なことが出来る。
だから、CやObjCで書かれたComplex Macro はSwiftで利用することは出来無い。

Build Configurations
Swiftはbuild configurations の評価に従ってコンパイルされる。
true false の値とcommand line flag, プラットフォームテストfunction を使う。
-D <#flags#>

#if build configuration
statements
#else
statements
#endif
0949デフォルトの名無しさん2014/07/20(日) 16:08:02.27ID:XG+cug7c
void*の扱いが面倒だけど、これは仕方がないか
let context:CGContext! = reinterpretCast(NSGraphicsContext.currentContext().graphicsPort())
0950デフォルトの名無しさん2014/07/22(火) 02:37:57.89ID:SMQ/MZMx
Xcode 6 beta 4
OS X 10.10 Yosemite preview 4
iOS 8 beta 4
出ました
0951デフォルトの名無しさん2014/07/22(火) 10:07:40.31ID:brrWCVo/
NSUInteger maps to Swift's Int type in iOS and OS X system frameworks and to UInt in !user code . (17473606)!
これどういう事? > UInt in !user code
0952デフォルトの名無しさん2014/07/22(火) 10:53:18.12ID:m0OGWg9n
beta4 でのコレ↓
var i: UInt16 = UInt16.max
++i
最適化無し(-Onone)でも実行時エラーが出るように修正されましたね
0953デフォルトの名無しさん2014/07/22(火) 10:53:39.33ID:pTtZ8nRg
アクセス修飾子キタ━━(゚∀゚)━━!
0954デフォルトの名無しさん2014/07/22(火) 11:02:19.27ID:m0OGWg9n
>>951
縁の下(framework)では Int って事にするけど、ユーザーが書くコード側では UInt
だからどこか深い部分に関わらない限りは気にしなくていいよって事かと
レス数が950を超えています。1000を超えると書き込みができなくなります。