タグ付けされた質問 「portability」

8
CがC ++で不十分な言語の「バインディング」を提供するのはなぜですか?
私は最近、C ++を介してCを使用するタイミングを疑問に思っていました。幸いなことに、誰かがすでに私にそれを打ち負かし、しばらくかかりましたが、私はその質問に対するすべての答えとコメントを消化することができました。 ただし、その投稿の1つの項目は、検証や説明のような例なしで、何度も何度も対処されます。 「Cコードは、ライブラリに複数の言語バインディングが必要な場合に適しています」 それは言い換えです。複数の人がC ++で(いくつかのextern機能を介して)複数の言語バインディングが可能であることを指摘していることに注意する必要がありますが、それでも、その記事全体を読むと、Cが移植性/言語バインディングに理想的であることは明らかです。私の質問は:なぜですか? Cでライブラリを記述すると他の言語でのバインディングや移植性が向上する理由を具体的に説明してください。


19
実際のアプリケーションでは、128ビットのフラットアドレス空間が必要になりますか?
これは少し「1メガバイトあれば誰でも十分」ということですが、... 64ビットのフラットアドレス空間は、32ビットのアドレス空間よりも最大43億倍のスペースを許可します。これは17,179,869,184 GiBです。 明らかに、8ビットから16ビットへの移行は非常に迅速でした(80年代の10代で物事を表示していますが、これらのメインフレームとミニはすべて、エリートのポートを実行できなかったため無視しています)。16ビットから32ビットへの移行には少し時間がかかり、実際には32ビットがかなり長く続きました。 64ビットになりましたが、「17,179,869,184 GiBで誰にでも十分」と言うのは愚かでしょうか? プログラミングの観点を本当に念頭に置いているので、これはプログラマーの質問です。いつかコンピューターに一見無限の作業メモリーがあるように見えても、それはアプリケーションが一見無限のフラットなアドレス空間を見る必要があるという意味ではありません。 基本的に、プログラマーは安reliefのため息をついて「まあ、少なくとも整数や浮動小数点数が何であれ、少なくともポインターが成長することを心配する必要はない」と言うことができますか?

10
アプリケーション設定を保存する最良の方法
Windowsでは、デフォルトの方法はレジストリです。これにより、システム全体の設定とユーザーごとの設定を区別できます。 Unixでは、システム全体の設定に/ etcフォルダー内のテキストファイルを使用する必要があります(ユーザーごとの設定の規則は何ですか?)。 多くの新しいプログラム(特に、移植用に設計されたプログラム)はXMLファイルを使用します。 非BLOB設定を保存する最良の方法(および場所)は何ですか? 各システムのデフォルトに従うか、統合ソリューションを使用する必要がありますか? そして、最高のポータブルな方法は何ですか?

12
JavaがC ++などの他の言語よりも移植性が高いと考えられるのはなぜですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 Java開発者向けの「各プラットフォーム用の特定のJREの作成」とC ++向けの「各プラットフォーム用のC ++コンパイラの作成」の違いは何ですか?
16 java  c++  portability 

2
WinRTは本当に境界でのみ使用できますか?
Microsoft(主にHerb Sutter)は、WinRTをC ++ / CXとともに使用して、WinRTをアプリケーションの境界に保ち、アプリケーションのコアを標準ISO C ++で記述したままにすることを推奨しています。 私は移植性を残したいアプリケーションを書いているので、私のコア機能は標準C ++で書かれており、C ++ / CXを使用してMetroスタイルのフロントエンドを書こうとしています。ただし、このアプローチには少し問題があります。たとえば、ユーザー定義のC ++型のベクトルをXAML ListViewコントロールにプッシュしたい場合、ユーザー定義型をWinRT ref / value型にラップして、に格納する必要がありVector^ます。このアプローチでは、C ++クラスの大部分をWinRTクラスでラップする必要があります。 C ++で移植可能なネイティブアプリケーションを記述しようとしたのはこれが初めてです。このような境界に沿ってWinRTを維持することは本当に実用的ですか?プラットフォーム固有の境界を持つこのタイプのポータブルコアは、他にどのように処理できますか?
15 c++  portability  winrt 

5
プログラミングを学ぶときに自分自身を将来保証する[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 3年前休業。 必要に応じて、「将来を見据えた」方法でプログラミングする方法を学びたいです。Windowsが(今のところ)デスクトップOS市場を支配していますが、その言語、フレームワーク、APIなどを学ぶことには明らかに大きな価値があります。これは、新しいデバイスが登場したり、Windowsが足を踏み入れたり(Windows -Windows 8のプレビューはあまり魅力的に見えません...)。 GUI用のJavaなどの非常に移植性の高い言語と組み合わせて、バックエンドロジック/低レベルプログラミングなどのC / C ++に関する確かな知識があることは、ソフトウェア開発の良い基礎になると思いますか?それは、ほとんどのシステムで役立つでしょうか?-私はデスクトップPC、タブレット、電話を話している。
10 java  c++  c  portability 

1
依存関係をできるだけ少なくして科学ソフトウェアを配布するにはどうすればよいですか?
私の研究の一環として、他人に配布する必要のないPythonおよびMATLABコードを多数記述しています。ソフトウェアを配布する必要がある場合でも、PythonとMATLABの両方が解釈されるため、共有が比較的簡単になります。 今、私はC ++で配布したいソフトウェアを書いています。私は自分のマシンでソフトウェアをコンパイルする方法を理解していますが、他の人にソフトウェアを提供するために何をする必要があるかを理解していません。 まず、プロジェクトの詳細:視覚化を計算して表示するためのコードを書いています。プロジェクトはグラフベースなので、LEMONグラフライブラリを使用しています。視覚化を表示する目的でVTKとOpenGLの実装を調査しています。私のソフトウェアを使用できるように、それらの環境のユーザー向けにPythonおよびMATLABバインディングを記述したいと思います。また、WindowsおよびLinuxバージョンを作成したいと思います(OS Xについてはまだ考えていません...)。 それでは、レモングラフライブラリを例に考えてみましょう。これは、小さな共有オブジェクトを伴う一連のヘッダーです。開発システムでは、CMakeを使用してライブラリをコンパイルし、プロジェクトにリンクします。 次に、Windowsで実行している誰かにソフトウェアを提供したいとします。私は彼らがインストーラーをダウンロードし、ボタンを1つか2つクリックして、すべての面倒を見てもらいたいと思っています。レモンライブラリやOpenGLのインストールについて心配してほしくありません。彼らは意図的に何かをコンパイルする必要はありません。これは可能ですか? 私はそれを感じていますが、参照を検索するときに不足します。Windowsでバイナリをコンパイルすると、Windows OSを実行している誰にでもそのバイナリを配布できるはずだという漠然とした考えがあります。しかし、私が使用するライブラリはどうですか?Windowsでそれらを静的にリンクする必要があると思います。これで、依存関係の問題が解決されます。しかし、私の心の奥で、静的リンクは良い習慣ではないことを読んだことがあります(または、これはLinuxだけですか?) ご存知のように、私は少し迷っています。私は正しい方向に微調整し、何かを知っていたら読んだ参考文献をいただければ幸いです!

1
並列プログラミングライブラリ?(+いくつかの機能)
注:質問はスタックオーバーフローフォーラムには適さないと見なされており、ここに投稿する必要があったため、これは再投稿です。元のトピックはあります。 その作業を実現するために、マルチスレッド、並列処理、および現在利用可能なライブラリについてお話ししたいと思います。特に、この概念を実現するための使いやすいライブラリ(以下を参照)が既に存在するのか、それとも作成する必要があるのか​​、そしてそれがどれほど難しいのかについて疑問に思っています。 私が探しているライブラリの目的: エンジニアや高卒者だけでなく、ほとんどの開発者がアクセスできます(これは、開発者がそれを恐れずに使用したいことを意味します)。 C ++開発者が利用可能 ポータブル(Windows、Mac OS X、Linuxから始めて、モバイルデバイスに拡張) 軽量 使いやすい(アクセシビリティに関連) 私が探している最も重要な機能: タスクの並列処理 タスクのキャンセル(ソフトで突然の方法) タスクの依存関係 既存の関連ライブラリ: スレッドビルディングブロック:使用が非常に複雑で、制限のあるライセンス(GPL /商用)、これは私が見つけた唯一のライブラリで、探しているすべての機能が含まれています Grand Central Dispatch:現在移植性がなく、複雑すぎず、タスクのキャンセルなし(開始後)、タスクの依存関係なし、自動依存関係サポートなし(手動のみ) PFunc:Unixのみ、まだ少し複雑、タスクの依存関係なし、タスクのキャンセルなし Microsoft Task Parallel Library:MSプラットフォームと.NETのみ、ハードキャンセルなし、制限された手動のタスク依存関係(1つのタスクが他の複数のタスクを起動することはできません) OpenCL:現在、すべてのプラットフォームで使用できるわけではありません。GPU並列タスクライブラリほどではありません(希望するほど高レベルではありません)。 OpenMP:Visual Studioの無料バージョンを除いて広くサポートされており、タスクのキャンセルや自動タスクの依存関係はありません これらすべてについてどう思いますか?これらのニーズに対応するライブラリが少ないのはなぜだと思いますか?それとも私はいくつかの素晴らしい図書館を見逃しましたか?そして、それはそれを達成するにはあまりにも多くの仕事を意味すると思いますか?それとも十分に面白くないですか?私が書いた不足は、いくつかの検索で判明したものであり、私はこれらのライブラリの専門家ではありません。 このライブラリの最終的な目的は、たとえそれが夢であったとしても、シーケンシャルプログラミングで通常行うのと同じくらい簡単に並列化された方法でプログラミングすることです。 セイロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.