トップページ⇒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/
0797デフォルトの名無しさん2014/07/16(水) 18:23:40.75ID:f0ZKY8xo
DropboxのPC/Mac版アプリはPythonで書かれてるんだぜ。そのうち変わりそうだけど。
http://www.publickey1.jp/blog/13/dropboxpythonpycon_apac_2013.html
0798デフォルトの名無しさん2014/07/16(水) 18:32:10.46ID:2EKfnOIg
>>797
マジかっ!マジだった。自分の入れているアプリを調べたら結構汚染wされていた。そのうちどれだけまんまアプリなのか詳しくはみていないが
どうも。Pythonやるな。Swiftの紹介でもPythonが出されたのかこういうことか、とか
0799デフォルトの名無しさん2014/07/16(水) 18:51:25.51ID:Qi1kxior
>>798 何か勘違いしてい無い?
Pythonはあくまでも汎用言語で、スクリプトの様な使い方が出来るからと言ってスクリプト専用言語では無いよ。

スクリプト的な使い方が出来るのは、Swiftだって同じ。
0800デフォルトの名無しさん2014/07/16(水) 19:04:42.89ID:2EKfnOIg
>>799
サンプルとかこう使ってるというのを見ると、実際にアプリ作っているというのは目にしたことが無く、だいたいにおいてスクリプトとしてしか使ってないんだろうと思い込んでいた部分がありの
PyObjCがあるのも知っていたけど、興味本位でCocoa呼べる使えるーってので、それでってたらそれで終了なのがだったのでし。AppleScriptも同じ

ふつーにアプリ作成する手段か作れるけど作りはしない手段の違い的なw

あがいてみたが、俺が悪かった
0801デフォルトの名無しさん2014/07/16(水) 19:53:44.76ID:m0YcwmXR
>>786
3点、指摘する

まず 1. と 2. の間に、
「1.5 ソースコードを抽象構文木(AST)に変換し、これを評価することで実行される」
という分類が抜けている
これは、Ruby 1.8 までの実装が該当する(1.9 からは YARV へ移行)
また学校の演習課題で作らされる大半の LISP 処理系も、これに該当するだろう

次に、3. はコンパイラの定義であり、インタプリタの定義としては間違っている
3. には「実行時にリンクされ、」という記述があるけれど、
インタプリタはすべてのシンボルのアドレスが解決された中間コードを生成できるから
コンパイラのように外部シンボルを解決するリンカを必要としない
仮想マシン技術を基礎とするすべての処理系はインタプリタであるという
解釈は誤りであって、実行形態によってインタプリタとコンパイラへと分類できる
いいかえると、javac(コンパイラ) と java(仮想マシン処理系)という明解な分離のある
「Java言語処理体系はコンパイラ」であって、これをインタプリタとするのは間違い
なお「javaコマンドはJVMバイトコードのインタプリタ」である、という表現は正しい

最後に、削除した旧 3. に代わって、3'. の定義を追加する
「3'. ソースプログラムはマシンに依存しない中間的なコードにコンパイルされた後、
  マシンに依存するコード(機械語)へ再度コンパイルされてから実行される」
これは LLVM ベースのインタプリタ、たとえば MacRuby が該当する
0802デフォルトの名無しさん2014/07/16(水) 20:19:38.09ID:m0YcwmXR
>>797
DropBoxクライアントは元々 WxPython で書かれていたから、
OSX移植に PyObjC を利用するのは自然な流れだろうね
ただしこれは特殊なケースであって、Python が App Store で扱うような
「一般の OSX/iOS アプリ開発」にも適しているという結論にはならないのでは....
0803デフォルトの名無しさん2014/07/16(水) 20:43:30.79ID:m0YcwmXR
>>796
Ruby のケースだと、RubyMotion(旧 MacRuby) があるよ

旧世代の RubyCocoa や PyObjC では Cocoa をアクセスするには
いちいち ScriptingBridge フレークワークを中継する必要があった
これらに対して新世代の RubyMotion では
Ruby の Object クラスが ObjC の NSObject クラスとして実装されているから、
ブリッジを介することなく直に Cocoa フレームワークを利用できる

結果として、すでに Rails が代表的なWebフレームワークとして
世界で認知されているように、RubyMotion も OSX/iOS 向けの
サードパーティ製スクリプト言語処理系として絶対的な存在になろうとしている
なお RubyMotion は(Swif のような)Apple純正の処理系ではないけれど、
その作者は(Cocoa の内部を知り尽くした?) Apple 所属の社員になる

現実には、プロトタイピングとして RubyMotion を使い
アプリをサクッと作ってはイジってコワすというプロセスを繰り返し、
仕様が固まったら Swift で書き直すという流れが多いだろうと思う
そして Ruby と Swift はどちらもオブジェクト指向はもちろんのこと、
普通のクロージャ(ブロック)を備えるなど関数型プログラミングにも
適しているという共通の特性があるから、両者の相性も良い
0804デフォルトの名無しさん2014/07/16(水) 20:48:45.66ID:PJMDKlZs
Swiftが登場した今プロトタイピングでもわざわざRubyで書く意味はないわ
0805デフォルトの名無しさん2014/07/16(水) 20:50:54.39ID:e7m+LwGU
>>801 正しいと思ったらWikiPediaを修正しておいてね。

http://ja.wikipedia.org/wiki/インタプリタ
0806デフォルトの名無しさん2014/07/16(水) 21:11:25.88ID:m0YcwmXR
>>805
原文の英語だと
  1. parse the source code and perform its behavior directly
と正しく記述されているのに、それを翻訳したと思われる日本語版だと
"parse ..." (... を構文解析する)という動詞が抜け落ちて
  1. ソースコードを直接実行する。
という意味の異なる間違った文章になってしまっているね

結果として>>786みたいに日本語版の一部をコピペして恥を晒す
可哀想な人があらわれるから、まったく困ったものだ(自業自得かな?)
教訓としては、「Wikipedia を鵜呑みにするなかれ」ではないかと思われ
0807デフォルトの名無しさん2014/07/16(水) 21:57:04.70ID:m0YcwmXR
>>806 を補足(蛇足?)すると、日本語版の翻訳者は後に実装例として挙げられる
Tiny Basic の知識不足から誤訳を犯してしまった可能性がある
たしかに Tiny Basic の先祖で最も有名な処理系である Palo Alto Tiny Basic、および
それから派生した東大版 Tiny Basic は、まさに「ソースコードを直接実行」していた
だから翻訳の過程で原文の要点であった動詞 parse が抜け落ちてしまったと思われる

なお、Texas Tiny BASIC と派生した東京版 Tiny Basic はソースコードを中間言語へ
コンパイルしてから実行しているから、>>786 であれば 2. に該当する
(この処理系の中間言語における命令は MCALL/ICALL/JUMP/TEST のたった4つしかない)
その意味では、原文(英語版)の記述も(間違いではないが)不完全とも言える
0808デフォルトの名無しさん2014/07/17(木) 06:49:58.42ID:/y/RnBj0
>>804
しかも有料だよね。
まざわざRubyで書きたいっていうのはなんか理由があるの?
Railsみたいな革新的なライブラリがついてくるとか?
別にObjective-CだってARC以降はプロトタイピング向きな言語な気がするんだけど。
(xcodeで補完効きまくりですし)
Swiftも
0809デフォルトの名無しさん2014/07/17(木) 09:17:15.71ID:+5AP17pr
Swiftは自前の標準ライブラリを備えないのかな、
あくまでFoundationを使えってか?
0810デフォルトの名無しさん2014/07/17(木) 09:26:15.01ID:JY1J2GGq
他にやることあるから後回しにしてるだけだよ
0811デフォルトの名無しさん2014/07/17(木) 09:45:14.65ID:o/1vn53B
>>809
> Swiftは自前の標準ライブラリを備えないのかな、

何言ってんだこいつ?
0812デフォルトの名無しさん2014/07/17(木) 09:56:48.14ID:ngwyrowy
FoundationのクラスやCのstdlibやシステムコールを利用しないと
ファイルも開けない状況にあるってことだよ
もちろんそういう思想で設計されててもいいわけだけど
0813デフォルトの名無しさん2014/07/17(木) 10:05:46.96ID:scWoSQot
低能な811は libswift_stdlib の stdlib の意味が分からない
0814デフォルトの名無しさん2014/07/17(木) 10:13:51.57ID:if1Me/3q
今のところ文字列のエンコード機能すらまともに実装されていないけど
実装できるようにプロトコルが整備されてたりするから
これからちゃんと整備されていくと思う
0815デフォルトの名無しさん2014/07/17(木) 10:20:50.09ID:Uj+1kpFl
基本はヤドカリ的な言語ということで
0816デフォルトの名無しさん2014/07/17(木) 10:26:43.55ID:Ux+wv01Z
動作環境が、MacOSXとiOSの2つだからなあ
0817デフォルトの名無しさん2014/07/17(木) 10:45:42.13ID:rlU5V3za
Objective-Cからやってる人にはあたりまえすぎる話なんだけど
Objective-Cは言語仕様を拡張するのではなくフレームワーク(クラス)で
機能を拡張して、それを空気のように利用するのが標準の世界だったので
Swiftもすぐ俺が欲しいこういう機能が"言語仕様"の変更で追加されるさ!
っていうのはえらい違和感のある思考だなと。
0818デフォルトの名無しさん2014/07/17(木) 10:49:58.15ID:o/1vn53B
>>813
何言ってんだこいつ?w
0819デフォルトの名無しさん2014/07/17(木) 10:54:05.93ID:FTaCnKxi
Swiftは言語仕様ができましたってレベルのものなんだから、
ライブラリだのAPIだのフレワだのってのはこれからだろ。
0820デフォルトの名無しさん2014/07/17(木) 11:09:08.53ID:S5pGSZlh
ム板の言語スレってほとんどコードが出てこないんだな
0821デフォルトの名無しさん2014/07/17(木) 11:49:00.16ID:q6z1PJAH
>>814 実装もへったくれもないんだよ。 ライブラリで提供できるようなものは言語仕様には取り込まないと言う方針なだけ。
何処で説明しようが同じ。 
基本はシンプルが良い。 将来にわたって成長し続ける言語に足かせをはめる必要はない。
例えば、sortやreduce等はライブラリ。

今でも使いたければ使えば良い。 正規表現でもMathでも

>>819 既にObkective-CやC標準ライブラリなどで整ってるだろ。
多少のお化粧直しは徐々にやって行くだろうが基本はすでに出来上がっている。
だからこそ何万と言うProjectが動き出し使われ始めている。

この記事は良く書かれている。
Why Apple’s Swift Language Will Instantly Remake Computer Programming
http://www.wired.com/2014/07/apple-swift/?mbid=social_fb
オープンソースになる事も信じていると書かれている。
0822デフォルトの名無しさん2014/07/17(木) 12:09:10.21ID:sNTaX6ES
>>820
著作権者が2ちゃんに帰属してしまうからな
0823デフォルトの名無しさん2014/07/17(木) 13:56:27.81ID:PhzSxWx+
>>797
あー、それがDropboxのクライアントアプリが糞な原因だったか
0824デフォルトの名無しさん2014/07/17(木) 16:44:35.90ID:Q42QanQb
でもいままで気づかなかった>>823
0825デフォルトの名無しさん2014/07/17(木) 21:23:32.30ID:QyTpwaqK
>>174
C#は型推論があるから

list.Sort((t1, t2) => (t2.Item1 - t1.Item1));

って書くしAddしなくてもListを作る時に直接中身も書き込めるし
C#ではまずTupleなんか使わん
だいたいListじゃなくて配列使うよね 型推論使って

var list = new[]{ a, b, c } みたいに

ずいぶん意図的なコードだは
0826デフォルトの名無しさん2014/07/17(木) 21:28:58.09ID:lkXmPqNZ
C言語のコードと簡単に連携できるのはSwiftの良い点だなあと思う
速度が必要な部分だけCで書くってのは他の言語だと面倒なのよね
0827デフォルトの名無しさん2014/07/17(木) 21:50:31.65ID:YfxyUNf+
>>821
記事長い。3行で
0828デフォルトの名無しさん2014/07/17(木) 22:30:50.47ID:rGkVfvvx
Stringから中間のsubstringを切りだすのはこうするしかないのかな?
"hello, world".substringFromIndex(1).substringToIndex(4)
0829デフォルトの名無しさん2014/07/17(木) 23:03:27.20ID:o/1vn53B
面倒だな。

extension String {
subscript (r: Range<Int>) -> String {
get {
let subStart = advance(self.startIndex, r.startIndex, self.endIndex)
let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex)
return self[Range(start: subStart, end: subEnd)]
}
}
}

let str : String = "Hello World!"
let str2 = str[Range(start: 1, end: 5)]
println("str2: \(str2)")

参考:http://stackoverflow.com/questions/24044851/how-do-you-use-string-substringwithrange-or-how-do-ranges-work-in-swift
0830デフォルトの名無しさん2014/07/17(木) 23:16:04.71ID:ef5hHmVV
内部表現がUCS4ならランダムアクセスできるだろうけど
そうじゃないのは、NSStringとの兼ね合いかな
0831デフォルトの名無しさん2014/07/17(木) 23:18:10.92ID:o/1vn53B
可変バイト数の文字列を切り出すのはコストがかかると言うことを意識させる設計なのかね?
素直に substring を作らせないのは。
0832デフォルトの名無しさん2014/07/17(木) 23:29:03.42ID:q6z1PJAH
Charactor関連は大幅改定が有るらしい。 
なんと言うんだっけ、仮名の濁点込みの2文字を1文字とみなすような処理を入れる。
ヨーロッパのウムラウトとか。

その辺りがはっきりして周辺を公開するんだろう。
0833デフォルトの名無しさん2014/07/18(金) 00:39:33.98ID:+ss85pLs
ubuntuとwin7しか持ってないけどおれもswift書きたいなー (〃’дσモジモジ
0834デフォルトの名無しさん2014/07/18(金) 00:46:01.41ID:l87SXbW6
>>778
並列処理ならSmalltalkの方が楽だっりするけどねぇ

その1
[
 Transcript show: 'hello'.
] fork.

その2
thread := Thread with: Example.
thread example: 'message' example: 'message'.
0835デフォルトの名無しさん2014/07/18(金) 00:52:13.74ID:jJjfVEWg
忘れられた Grand Central Dispatch
0836デフォルトの名無しさん2014/07/18(金) 00:53:40.63ID:+ss85pLs
俺はswiftもobjective-cも知らないけどswiftだけでアプリ作れるの?
両方知らないと書けないはちと辛い。

>>778
androidってメインスレッド以外からui触れないんじゃなかったっけ。
0837デフォルトの名無しさん2014/07/18(金) 00:55:26.79ID:YBUygO17
var i:UInt16 = ~0
i += 1
// Arithmetic operation '65535 + 1' (on type 'UInt16') results in an overflow)
だとコンパイルエラーで弾いてくれる
i++ は素通りして 0 になる。
これは仕様どうり?それとも未定義動作なんかね?
0838デフォルトの名無しさん2014/07/18(金) 00:58:06.22ID:r9KeFm24
構文の仕様はリファレンスに書いてあるけど、動作の仕様は出てないだろう
0839デフォルトの名無しさん2014/07/18(金) 01:01:21.02ID:jJjfVEWg
>>836
サブスレッドで何らかの計算をして、終わったら、メインスレッドに通知してUIを更新するんだよ
Androidだけじゃなくて多くのプラットフォームはメインスレッド以外でのUI操作を禁止している
0840デフォルトの名無しさん2014/07/18(金) 01:02:38.24ID:YBUygO17
それとは別に、
~0 なんて書かなくても、 UInt16.max で最大値拾えるのは偉いですね
0841デフォルトの名無しさん2014/07/18(金) 01:51:24.41ID:lVzblgew
>>837
++i はIncrementableプロトコル?のメソッドを呼びだす(これがoverflow検出をしていない)
i + 1 のほうは、@llvm.uadd.with.overflow.i16(i16 %0, i64 1) を呼ぶのでちゃんと落ちる
最適化をONにすると ++i のほうも、@llvm.uadd.with.overflow.i16になるのでちゃんと落ちる
0842デフォルトの名無しさん2014/07/18(金) 05:53:25.15ID:COVjDTzr
単なるインクリメントだけですごい量のコードが実行されてるのね...
http://codepad.org/zD3osbLE
0843デフォルトの名無しさん2014/07/18(金) 07:52:58.79ID:YBUygO17
Optimization Level: Fastest[-O] にすると
実際のエラー箇所(i++)からズレた所にエラー出る場合があり
var i= Int.max
i++
println(i)
var dic = ["Objective": "C", "Jonathan": "Swift"] // ← EXC_BAD_INSTRUCTION
for (k,v) in dic {
 println("Key: \(k), Value:\(v)")
}

さすがにXcodeのバグかな? β版だし
0844デフォルトの名無しさん2014/07/18(金) 09:19:56.83ID:LjrJMd1h
ベータ版という名のもとの甘え
こんだけ不備や不満が多けりゃ正式版出ても使いもんになりそーもねーな
0845デフォルトの名無しさん2014/07/18(金) 09:51:01.02ID:DOB4ifCF
おめえ、リンゴを知ら無いな。 虫がつくリンゴほど美味しい。
マークのリンゴもかじられてるだろ。
0846デフォルトの名無しさん2014/07/18(金) 11:29:30.98ID:1qUti6yQ
>>844
お前出来たての言語触ったこと無いだろ
底辺プログラマ乙
0847デフォルトの名無しさん2014/07/18(金) 13:08:45.42ID:LjrJMd1h
出来たての言語という名の甘え
いわゆる、ゆとり言語
0848デフォルトの名無しさん2014/07/18(金) 13:12:56.57ID:4QtDR5Vb
頭悪そうなのを競う遊び?
0849デフォルトの名無しさん2014/07/18(金) 15:38:58.36ID:qSGRIP8i
4年間開発してましたとかほざいてるけど
開発リソースが投入され始めたのはごく最近だろうな
AppleのLLVMチームの能力に乞うご期待
アンチよ刮目せよ
0850デフォルトの名無しさん2014/07/18(金) 16:00:15.70ID:vSuYMOCy
よその部署のプロジェクトなんて知らない人がほとんどだしな
だからAppleのエンジニアもWWDCで何が発表されるのか楽しみにしてる
0851デフォルトの名無しさん2014/07/18(金) 16:00:59.41ID:vSuYMOCy
リソースの投入の話ね
0852デフォルトの名無しさん2014/07/18(金) 18:01:01.78ID:qSGRIP8i
超デスマーチだろう
何人死人が出るか
0853デフォルトの名無しさん2014/07/18(金) 20:31:35.45ID:wvajd9D1
らとなーさんが思い付いて着手してからの年月よりは、チーム組んで製品化目標が決まってからどんくらい経つのかを知りたい所だ

まあObj-Cが安定してる手前、言い方悪いけど遊ぶ側からすりゃ焦る必要は何もないんだけどもw
秋に出すにはあと正味何日くらい計上できるのかな
他人事ながらそわそわする
0854デフォルトの名無しさん2014/07/18(金) 22:21:45.41ID:DOB4ifCF
>>853 本格的になったのは、2013年7月からだろ。
2011年からそれまでは数人のメンバーでやってた。
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
硬いこと言えばそのとおりだが、従業員が仕事中に趣味で作ったものまで権利主張しない会社なんていくらでもある。
マドレーヌと一緒。
■ このスレッドは過去ログ倉庫に格納されています