パスワードを忘れた? アカウント作成
12019141 story
プログラミング

前置インクリメント(++x) よりも後置インクリメント(x++) のほうが高速? 129

ストーリー by headless
演算 部門より
insiderman 曰く、

C/C++には「++x」(前置インクリメント) や「x++」(後置インクリメント) のようなインクリメント演算子がある。前者はxをインクリメントしてからその値を返すのに対し、後者はxの値をコピーしてからxをインクリメントし、コピーした値を返す。後置インクリメントは値をコピーする分遅いと言われていたそうなのだが、これとは逆の主張が話題になっているそうだ(闇夜のC++)。

これによると、前置インクリメントはインクリメント処理が終わるまで値を返せないのに対し、後置インクリメントはインクリメント処理が終わる前に値を返すことができる。そのため並列処理が可能になるなどのメリットがあるという。ただし、オブジェクトをコピーするコストについては議論されていないとのことなので、コピーに必要なコストが大きい場合は逆に処理が遅くなる可能性もある。

そもそもタレコミ子は前置インクリメントと後置インクリメントの処理の違いについては把握していたが、処理コストの違いについては知らなかったので非常に勉強になった(言われれば確かにそうだと理解できるのだが)。

記事で話題となっている書籍の英語版「Game Engine Architecture, Second Edition」は、該当部分をGoogleブックスで閲覧できるので、参照してほしい。

12013259 story
Java

Java SE 7系で最後となる予定のリリース「Java SE 7 Update 79」リリース 31

ストーリー by hylom
ついに 部門より
あるAnonymous Coward 曰く、

Oracleが14日、Java SE 8 Update 45とJava SE 7 Update 79をリリースした。ともに脆弱性の修正を含む定例アップデートとなる(窓の杜)。

Java SE 7のOracleによるサポートは4月30日に終了するため、今回のリリースが最後のパブリックアップデートとなる予定。以後は新たに脆弱性が発見されても、一般には修正パッチはリリースされない(INTERNET Watch)。

12012944 story
マイクロソフト

Microsoft、LLVMベースの.NET向けコンパイラをリリース 16

ストーリー by hylom
本気で.NETを他プラットフォームにも広げたいのか 部門より
insiderman 曰く、

Microsoftが、.NET中間言語(MSIL)をネイティブバイナリに変換するオープンソースのコンパイラ「LLILC」をリリースした。LLVMをベースとしたコンパイラで、現時点ではJITコンパイラとして利用できるという(SourceForge.JP Magazine)。

Microsoftは.NETの実行エンジンであるCoreCLRをオープンソース化しているが、LLILCではLLVMの技術を利用することで、LLVMがサポートするすべてのターゲットやプラットフォームに向けたコード生成が可能になる(可能性がある)としている。

また、AOTコンパイルのサポートも計画されているようだ。

12012865 story
Linux

Linuxカーネル 4.0リリース 24

ストーリー by hylom
ついに4へ 部門より
headless 曰く、

4月13日(日本時間)にLinuxカーネル 4.0「Hurr durr I'ma sheep」がリリースされた(メーリングリストでのアナウンスPhoronixSlashdotSourceForge.JP Magazine)。

既報の通りカーネルのライブパッチ機能が追加されており、ドライバの改善やハードウェアサポートの追加も行われているが、本リリースはかなり小さなリリースとなる。既知の問題点はなく、実験的な新機能も搭載されない。Linus Torvalds氏曰く、「solid code progress」リリースだという。一方、linux-nextから判断すると、次のバージョンは大きなリリースになるとのことだ。

12009831 story
プログラミング

7歳の子供にプログラミングを教えるには? 56

ストーリー by hylom
そこはファミリーベーシックだ 部門より
あるAnonymous Coward 曰く、

7歳の子にプログラミングを教えるのによい方法はあるだろうか?との問いがSlashdotにて投げかけられている。

子供の頃からプログラミングをしており、今ではそれを職としているという投稿者は7歳の息子にプログラミングの楽しさを教えたいという。息子は既にRobloxやMincraftでよく遊んでおり、コンピュータの使い方にも慣れているとのことで、まずは何か小さなゲームを作らせるのがよい出発点かと投稿者は考えているそうだ。子供向けのプログラミングリソースリストなるものがあるのも知っているがあまりの選択肢の多さに圧倒されてしまうといい、Slashdotterにアドバイスを求めている。

SlashdotのコメントにはScratchやKoduを勧めたり「やはりBASICから」といったコメントや、「読み書きや算数もままならないうちになぜプログラミングをさせたいのか?」といった意見、また「MinecraftやRobloxとプログラミングは別物であり、プログラミングを押し付けるのはどうかと思う」といったコメントが寄せられている。

子供にプログラミングを教える事、またその教え方などについて皆様はどうお考えだろうか。

12005379 story
プログラミング

Stack Overflowが開発者に対し行ったアンケート調査結果を発表 17

ストーリー by hylom
JSが人気なあたりがStack-Overflowっぽい 部門より
headless 曰く、

Stack Overflowが2015年のDeveloper Surveyの結果を発表している。アンケート調査には157か国から26,086人が参加しているが、日本からの参加者は63人。参加者が多かったのは米国(4,745人)、インド(2,461人)、英国(2,402人)などとなっており、英語での回答にちゅうちょしない開発者にバイアスのかかった調査結果になっているとのこと(Stack Overflow Developer Survey 2015Slashdot)。

Stack Overflowへのトラフィックは25%を米国からのアクセスが占め、インド(12.5%)、英国(5.5%)、ドイツ(4.2%)と続く。ただし、人口1000人当たりのアクティブユーザー数をみると、ルクセンブルクが最も多い39.8人。続いてアイスランドとスウェーデンが35人で並び、イスラエル(33.4人)、フィンランド(33.0人)、シンガポール(31.7人)が続く。比較的人口の少ない国が上位を占めているようだ。「Geography」の項目に記載された数字から計算すると、日本は2.5人だった。なお、この数字に英語版以外のStack Overflowへのアクセスが含まれるのかどうかは不明だ。

回答者の性別では男性が92.1%を占める。プログラミングの経験年数は男性では2~5年が最も多い31.2%で、11年以上(23.8%)、6~10年(23.0%)と続くのに対し、女性では2年以下が37.1%と最も多く、2~5年も30.1%を占めている。年齢層は25~29歳(28.5%)、20~24歳(24.6%)、30~34歳(17.8%)が多数を占める。プログラミングをどのように学習したのかという設問では、独学が最も多い41.8%で、大学のコンピューターサイエンス学部または関連する学部(37.7%)、仕事を通じた学習(36.7%)が続いている。

人気の高いテクノロジーはJavaScript(54.4%)、SQL(48.0%)、Java(37.4%)で、最もよく使用しているデスクトップOSはWindows 7(33.8%)、Mac OS X(21.5%)、Linux(20.5%)、Windows 8(19.5%)の順。テキストエディターはNotePad++(34.7%)とSublime Text(25.2%)の人気が高く、Vim(15.2%)が続く。タブかスペースかという設問ではタブが45.0%で、33.6%のスペースを上回っている。このほか、国別・職種別のカフェイン摂取量やテクノロジー別・国別の収入額なども調査されている。詳しくは調査結果を参照してほしい。

12004408 story
プログラミング

GitHub、「Git Large File Storage」を発表 13

ストーリー by hylom
GitHubユーザー的には便利かも? 部門より
insiderman 曰く、

GitHubがGit Large File Storage(Git LFS)なるソフトウェアを公開した(GitHubのリポジトリ)。Webサイトの説明によると、オーディオや動画、データ集、グラフィックといった大きなファイルをGitで扱いやすくするためのソフトウェアだという。

Gitでは、バージョン管理対象のファイルをリポジトリ内に圧縮された形で保持している。そのため、バイナリデータをバージョン管理しようとするとリポジトリのサイズが大きくなったり、各種操作に時間がかかるようになってしまう傾向がある。Git LFSではバイナリデータを別のストレージ(Git LFS Server)に分離して保存し、そこへの参照(ポインタ)のみをリポジトリ内に格納することでこの問題を解決するというもののようだ。

Git LFSはGitのプラグイン(機能拡張)として作成されており、「git lfs」サブコマンドで機能が利用できるようだ。なお、利用には別途Git LFSサーバーが必要となる。スタンドアロンで動作する「lfs-test-server」が公開されているほか、GitHub自身もGit LFSサーバーのホスティングをサービスとして行うようだ。

12000011 story
ソフトウェア

イースターエッグは消えていく運命なのか 62

ストーリー by hylom
そもそもApp-Storeで配信するようなアプリには組み込めないし 部門より
headless 曰く、

ソフトウェアの機能とは無関係な「イースターエッグ」の組み込みを禁止する企業が増加しているそうだ。イースターエッグはなくなってしまうのだろうか(BBC NewsSlashdot)。

Apple Macintoshの初期のモデルには設計者の写真や名前がイースターエッグとして潜まされていた。しかし、1997年にAppleに復帰したスティーブ・ジョブズ氏は、時間やディスク容量の無駄であり、競合他社がプログラマーの引き抜きに使う可能性もあるなどとしてイースターエッグを禁止した。当初は多数のイースターエッグをプログラムに組み込んでいたMicrosoftも、2002年に中止しているという。

イースターエッグがいずれは消えていくものとする意見の中には、プログラミングが企業のものとなるに従って公式な機能と無関係なコードを含めるのは困難になっていくといったもののほか、脆弱性を含む可能性やバックドアが組み込まれる可能性を指摘するものもある。また、趣味のプログラミングでもプロのプログラミングテクニックを導入することで、イースターエッグを組み込みにくい状況になっているという。

一方、ベテランプログラマーの中には、イースターエッグが消えていくというのは誇張され過ぎていると考える人もいるようだ。また、Webページに埋め込まれるイースターエッグは増加しており、Googleのようにマーケティングの一環としてイースターエッグを組み込む企業もある。

イースターエッグは遊び心なのか、セキュリティーリスクなのか、どちらだろう。皆さんは自分のプログラムにイースターエッグを組み込んだことがあるだろうか。

11998781 story
Mozilla

Rust 1.0.0 betaがリリースされる 23

ストーリー by hylom
一歩一歩 部門より
y-stm 曰く、

Mozilla発のプログラミング言語「Rust」バージョン1.0.0-betaが2015年4月3日にリリースされた(アナウンスリリースノート)。

アルファ版のリリースから3ヶ月と、当初のスケジュールだった「6週間でベータリリース」には至らなかったものの、目立った障害も無く開発は続いている(ちなみに6週間後に1.0.0リリースの予定)。

アルファ版のリリース後も(当初のプラン通り)破壊的な変更が加えられ続けていた。そのため、

  • ユーザーリポジトリから入手した他人のライブラリが修正しないとコンパイルできない
  • ナイトリービルドを落とし続ける必要がある

といった手間があったが、今後はバグフィックスやエラーメッセージの整備等を中心にアップデートを行う方針のため、ナイトリービルドではなくベータ版で動作確認するように推奨されている。

前日に動いていたコードが翌日にエラーを出すなど、開発の動向を注視していないと酷い目に遭うといった経験があるので非常に喜ばしい。一度試してみてはいかがだろうか。

11996450 story
マイクロソフト

Visual Studio 2015ではLinuxアプリケーション開発が可能になる? 60

ストーリー by hylom
作業フローはどうなるのだろう 部門より
あるAnonymous Coward 曰く、

Microsoftは米国時間3月31日、2015年に出荷を計画している同社の次世代統合開発環境となる「Visual Studio 2015」の製品ラインアップを発表した。新たに用意された紹介ページには「Build for iOS, Android, Windows devices, Windows Server or Linux」という一文が追加されており、クロスプラットフォーム化が進められているようだ(マイナビニュースSlashdot)。

この説明どおりであれば、「Visual Studio 2015」シリーズにはLinuxバイナリを生成する機能が装備され、Visual Studioを使用するより多くの開発者がLinux向けのソフトウェアを開発できることにつながる。ただし、Linuxについて記載されているのはこの一文のみであり、実際にものを見るまではどういうものかは判断しにくい。

11983625 story
プログラミング

コードを特に良いものとするのは何? 98

ストーリー by headless
品質 部門より
本家/.「Ask Slashdot: What Makes Some Code Particularly Good?」より

何がソースコードを特に「良い」ものとするのかについて開発者が話すとき、一握りの特徴が繰り返し言及される傾向がある(動作する、読みやすい、テストできる)。皆さんなら何をリストに加えるだろうか。

元記事のITworldでは良質なコードの特徴として、以下の8つを挙げている。

  1. 正しく動作すること
  2. 読みやすいこと
  3. テストできること
  4. メンテナンスしやすいこと
  5. きれいに整形されていること
  6. 変更しやすいこと
  7. シンプルであること
  8. 効率が良いこと
11982953 story
プログラミング

Dart VMはGoogle Chromeに統合されない 20

ストーリー by headless
方針 部門より
あるAnonymous Coward 曰く、

3月26日にバージョン1.9がリリースされた Dart言語だが、前日の25日にDartプロジェクトはDart VMをChromeに統合しないことを発表している( Dart News & Updatesの記事マイナビニュースの記事TechCrunch Japanの記事)。

DartはJavaScriptに替わるWebプログラミング言語として開発された。いずれはChromeにDart VMが搭載され、他のブラウザもそれに追従すると期待されていたが、方針の転換が行われたようだ。今後Dartは、JavaScriptへのトランスパイル言語の一つとしての活躍が期待される。

Dartを使用する開発者のフィードバックには、JavaScriptとのよりよい統合を求める意見や、開発したアプリをすべてのモダンブラウザで容易にデバッグや最適化を実行できるようにしてほしいとの要望がみられたという。そのため、Google ChromeだけでなくユーザーとWebにとって最も良い方針として、DartのJavaScriptへのコンパイルに注力することを決めたとのことだ。ChromeにDart VMは搭載されないが、開発者向けツールやサーバー、モバイルアプリ向けのDart VMの最適化や改善は引き続き行っていくとしている。

11982168 story
プログラミング

メモリー上で処理するよりもディスクに直接書き込む方が高速? 86

ストーリー by headless
効率 部門より
ソフトウェア開発者の間では一般的に、ディスクアクセスを避けてできるだけメモリー上で処理することが実行時間の短縮につながると考えられているが、これに逆行する研究結果をカナダ・カルガリー大学とブリティッシュコロンビア大学の研究チームが発表した(論文: PDFITworldの記事本家/.)。

実験はJavaおよびPythonを使い、WindowsおよびLinux上で1バイト、10バイト、1,000バイトの文字列をそれぞれ100万バイトになるまで繰り返し結合し、結果をディスクに書き込むというもの。比較対象としては同じく1バイト、10バイト、1,000バイトの文字列を結合せずに計100万バイトになるまで直接ディスクに書き込んでいる。また、同じコードにより100万バイトの文字列を処理する実験も行っている。

その結果、Javaで1バイトの文字列を結合処理してからディスクに書き込んだ場合、ディスクへの直接書き込みと比べて約9,000倍の時間がかかったという。PythonではJavaほどの速度低下は見られなかったものの、直接書き込みの方がメモリー上での処理よりも数百倍高速だったとのこと。また、Linux上で実行したPythonのコードでは、元の文字列に新しい文字列を結合する方が新しい文字列に元の文字列を結合するよりも高速だったとしている。

論文ではこのような結果になった原因として、OSによるバッファリングがあるためにディスクへ直接書き込んでも速度がそれほど低下しないと指摘。また、OSのメモリー管理がメモリー上での処理を低下させる原因になる可能性もあるとし、開発者はOSやライブラリーなどについてより多くの知識を持つことでパフォーマンスを改善できるなどと結論付けている。ただし、論文の最後に掲載されているコードを見ればわかるように、文字列の結合には「+=」または「+」を使用しており、効率の良い処理を選択しているとはいえない。論文には「JavaではStringBuilderやStringBufferといったミュータブルなデータ型を使用すれば結果が大幅に改善する」といった記述もある。本家/.では結論に合わせた結果が出るように実験したのではないかとの指摘もみられるが、皆さんはどう思われるだろうか。
11982076 story
PHP

次期PHPでは、引数や返り値のスカラー型宣言が可能に 33

ストーリー by headless
宣言 部門より
あるAnonymous Coward 曰く、

やや旧聞となるが、PHPコミュニティは数年にわたる議論と幾度もの投票の果てに、PHPの次期バージョン(PHP7)で関数の引数や返り値でintやstringなどのスカラー型の宣言を可能にする提案を3月17日に可決したという(PHP RFC: Scalar Type Declarations東北ギークの記事)。

今回導入が決定された機能は「スカラー型宣言(Scalar Type Declarations)」と呼ばれるもので、これまでオブジェクトや配列でしか使用できなかった型宣言(タイプヒンティング)を拡張し、新たにint, float, string, boolのスカラー型も指定できるようにするもの。PHP7では元々返り値の型宣言の導入も予定されていたため、スカラー型宣言は引数と返り値の両方で使用可能となる。

興味深いことに、スカラー型宣言には暗黙の型変換を行うデフォルトの「弱い型検査」の他、ファイルの先頭でモードを宣言する「厳密な型検査」が搭載されるという。これは元々コミュニティに弱い型検査を求める人々と厳密な型検査を求める人々がおり、RFCが2010年頃から何度も提出されつつも双方が対立して可決に必要な3分の2に達しなかったことから、共倒れを避けるため両方の仕様が採用されたためとのこと。

11981558 story
ソフトウェア

開発者とAppleへの恐怖 72

ストーリー by headless
恐怖 部門より
本家/.「Developers and the Fear of Apple」より

UIデザイナーのEli Schiff氏が、ソフトウェア開発コミュニティーでのAppleに対する「恐怖の風潮」について記事を投稿している。記事では開発者が気軽に批判した発言が記録され、その発言を撤回する結果になることが多い点や、公表された適度な批判が追従や宣伝に終わることが多い点などを指摘する。

さらに、利益を生むためにはAppleの閉ざされた庭に依存していられないことに業界が気付いている点を指摘。不透明なレビュープロセスや価格競争、App Storeでの適切なアプリ紹介をAppleが拒むことにより、より大きな組織やベンチャー企業に個人のアプリ開発者を追いやっているという。AppleはAndroidで先にアプリをリリースした開発者に対する連絡を絶つことでも知られている。また、「恐怖の風潮」はジャーナリストにも影響する。否定的な記事を書いたジャーナリストはAppleから拒否されるだけではなく、Appleファンや他のジャーナリストからアンチAppleとして扱われるようになるとのことだ。

typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...